It's 4 p.m. we're gonna get started.
Uh,
we have,
uh,
4
questions here.
Uh,
we'll get through them and remember that you can ask questions
as many as you want in the office hours thread.
Please get them in there.
I'll answer the order that they appear.
Um,
let's get going.
Uh,
Jesus,
how are you doing?
I'm
kind of tired.
I know I answer this like the same every week,
but that's just like,
that's just the way life works right now.
What the dog is asleep on the couch.
Um,
and they just woke up and now they're staring at me.
That's,
that's,
um,
I've still got two dogs for a little bit.
Um,
uh,
the other dog is being picked up tomorrow,
so I'll be back down to one dog,
which should be good because they,
uh,
they've been,
um,
it's not,
not haunting.
They've been like staring at me endlessly.
Oh,
come on.
I wanted to say hi.
Apparently the webcam won't work today.
Come on,
switch words to,
uh,
OK,
first actual question.
Uh,
when you write a value to a variable,
is that value networked if there is no change,
like writing a,
a boolean false that's already false?
Don't know on that one.
Um,
I,
there is a deduplication mechanism that sort of tries to limit the amount of
signalling that needs to go across,
so it might be covered in that,
but like I don't know.
Uh,
you can kind of test that one yourself though,
cos what you do.
If you look at the the updates,
so you look at the traffic and you,
you figure out like,
hey,
did,
did anything actually happen on this one?
Hi Fenner,
could you stop licking me,
please?
I don't wish to be lick.
This is non-consensual licking,
dog.
Stop.
Yeah,
just be good.
You just burp at me,
rude,
rude.
Uh,
OK,
so Jay has given me
like a meme post.
No,
uh,
poulticist causes like Run Doom,
yeah,
sure,
um,
you just have to sort of figure out exactly how to do it.
I don't think it would be complicated.
Connor says,
any,
uh,
new interesting background,
backend statistics on Gaussian sports?
Yeah,
so we got the,
the metrics dashboard has them.
Um,
that dashboard is available to everyone.
And I,
I put all the spat stuff on there.
I don't know actually,
I was reading the update notes for the update that just went out.
I don't know if uh VRAM is on.
Yep,
there it is.
Uh,
so we've just got
VRAM uh support as well,
and that means that uh
18 times less VRAM,
18
times
less uh resources.
Uh,
let's move on to is clarifying the,
uh,
already
the value that's the same,
if that'll be networked.
Uh,
most of the times it won't be networked,
it'll be ignored.
There's a specific cases where it's forced to trigger a change though.
Yeah,
there's a couple of mechanisms where it's like,
I don't care,
like,
seriously,
bro,
this is false.
It's like,
OK,
we'll send it.
Uh,
Colin's asking about when tasks fail,
so the important thing to know about failures is it doesn't mean assets are failing,
it means attempt at assets are failing.
So,
um,
each asset gets like 32 attempts,
um,
in the main queue before it hops over to poison.
Um,
and so what that means is like those failures you need to kind of like
divide them by 32 to get like the number of assets that might be failing.
As for why assets fail,
uh,
sometimes it's because you guys give us stuff that is invalid,
um,
so we get,
you know,
like corrupted images,
corrupted models,
corrupted Gaussian splats,
all sorts of stuff like that.
And um
when a failure occurs,
it's basically a tri-catch block.
And so if any exception that we haven't handled
uh goes,
then they end up failing and they get reported there.
Uh,
as for the,
the failures currently,
you know why the graph I've got is like messed up,
but there we go,
let's see.
Yeah,
it's still like,
hey,
zero fail,
hold on,
I might have to look at the graph,
there might be a problem on the failure graph,
I don't know,
but uh.
Yes,
so it looks like uh
600 bitmaps are failing,
and
so yeah,
divide that 600 number by about 32
and you'll get the actual number.
Um,
and it looks like the majority that are failing are actually
BC3
and ETC2,
which is,
is very interesting.
I talked about it previously,
um,
I don't know,
like which tool to use.
I'm probably gonna,
uh,
stick it on top of the.
Existing grafina instance,
but we can do what's called log aggregation,
uh,
here's grafina Loki.
Uh,
well,
there's also like,
well,
the problem as well is like,
you know,
like some of our stuff's in Azure and Azure has its own sort of log aggregation stuff,
and I,
I don't quite know
like which is better,
cheaper,
easier,
uh,
so I'm trying to figure that one out cos,
uh,
whatever.
But anyway,
the point being is that like any failure could end up in that log
aggregation and would be a lot easier to look at than right now.
Right now I would have to go to the machine.
And run a bunch of commands or look at the files.
Instead we can just like
shoot the logs over into Grafi Loki and um I can even alert on them as well.
So let's say like the same asset fails
a lot or the failure rate increases a lot,
we can,
we can alert on that and and and get some insight.
But more importantly than that,
let's say that there's an asset that's that's failing,
like you're in resini and you make a bug report and the bug report says,
Um,
this picture of a cat just won't load.
I could take the asset signature,
that's the ResDB,
um,
link,
and I could search it through the log aggregation and I could be like,
oh,
here we go,
here's how it's fixing,
um,
here's what needs to happen.
We could do that in the past,
but not to that level,
right?
We would just have to,
like,
periodically we would run
the asset worker with the poison cue enabled,
and we would observe the failures,
and from the observed failures we would make some improvements.
Um,
it's,
it's impossible to get that failure rate down to zero because,
uh,
it's just like
there's just weirdness going on.
You can see in devlog where I'm trying to sort of reduce
the weirdness that might occur by setting up what's called snapshot testing.
Um,
that means we're able to sort of keep,
uh,
the code that generates,
uh,
variants.
We're able to keep it fresh
and,
and validate it that it even runs,
right?
So the first thing Snaplot testing gets us is the code manages to run,
and then the second thing it.
gets is that the code outputs the the um
desired output.
Like if we give it the same identical picture of
a cat and we say generate a variant of it,
the same binary data should come out.
And so by monitoring the,
the difference
of that.
Um,
of that asset,
we can then figure out like is there a problem with the code,
or did our algorithm change somehow.
Uh,
I'm also looking into,
cos you can do,
well it's an actual picture,
like if you see like crunched or compressed on some of our assets,
those can't be read normally,
you have to decompress them before you can read them.
Um,
but some of the formats that we have in the asset variant system
can be read without decompression.
And so what we can also do with those is validate a bunch of just the sort of
bit mappy code in our um in our engine as well.
And we can do that by basically saying like,
take this source PNG,
load it into Ressonite's engine,
and then save it back out again as a new PNG.
And then
diff those two PNG's and they should be
like pretty identical,
right,
cause we've just gone through and out the other side.
Uh,
and again that tests like does the code work?
Uh,
does image handling work?
You know,
is there something weird?
A while ago,
I don't know if the,
I don't know if Cyra posted them in Devlock cos I don't remember how long ago it was,
but Cyra was working on
some sort of hobby project.
But an image library of some kind.
I don't remember what type of images it was,
but
they would put it through their,
you know,
their work in progress code and then they would open it in a,
in a photo viewer,
and it would be like
rainbow and upside down and back to front
and like really weird and esoteric looking.
And that's the sort of thing that can be caught
when uh when you do this kind of testing,
so I'm excited to do that.
Uh,
fruits I got a note on the failures as well,
which is when assets don't compute,
it doesn't prevent the assets from being loaded in most cases,
it prevents the most optional version of the asset loading,
but resinite will load,
uh,
less optimal versions instead.
Yeah,
you can think of it like a sort of preference hierarchy
where resonates like,
hey,
I know what type of computer you're on,
I know what available to you.
Uh,
I'm gonna request this optimal version of this picture of a cat,
and if Resson says like,
hey,
sorry guys,
that's not available right now,
it'll go,
OK,
well,
have you got this one,
you got this slightly less good version,
and Res will go,
yeah,
sure,
here you go.
So it's interesting that the failure rate on ETC2 is is higher because that's a very
That's mostly used for mobile apps
and we actually defer that one,
so ETC2 goes to the back of the queue.
So it's kind of cool.
Uh,
cool to see those being processed,
but also like puzzling to see them failing.
I don't really know
why.
Hi,
wake up.
Oh,
you've got sneezing,
you sneezing again?
No one sneeze.
I can see another one.
There you go.
You get another one?
Here you go.
You know sneezing?
Oh,
you're back to licky,
yeah,
hello.
All right,
we have another question here.
As fellow tries to settle down,
are you good?
Do what you want,
dog,
do what you want.
If you want to get off,
get off,
doesn't matter.
Uh,
Wenport says,
I know it's been brought up by Yos before,
but could you explain why
cool relay and async Coolray seem uh to be so weird functional,
like for instance,
I recently found out
their workaround for the issue in 1467.
Uh,
let me take a look and familiarise myself with 1467.
I need a picture.
Yeah,
I don't know,
this would unfortunately be a freaks question.
Uh,
Protofox internals are like very spooky to me.
You're right,
fella.
Are you OK?
What's wrong?
Are you stuck?
Yeah,
you put your legs around that way.
There you go.
Sometimes he's turning round,
he doesn't know how to finish it.
I,
I don't wish to be late,
thank you.
Uh no,
no,
no.
Do we have any additional questions?
Does anyone want to look at the,
actually I should look at the
look at the tech tree based on the,
the last update that we,
oh jeez,
you're right,
doc.
Come on,
take it easy.
Uh,
uh,
let's take a look.
Um,
yes,
asset work is now running splatz,
I think that's blue.
Whoa.
Uh,
blue is
blue is in progress,
green is complete.
Yes,
so I'm going green both of these now.
There may be some updates and changes,
but like the majority of the work's done.
Let's take a look and see what we've got,
uh,
around here.
Uh,
so I have,
ah,
yes,
I do have sir on physics sweeps.
Good,
good.
Alright,
I see a new post in there.
Oh yeah,
it's,
it's very satisfying.
Let me just uh let me see what I can do here.
It's weird as well,
uh,
so Fris is talking about how it's like really cool that the worker is,
you know,
crunching all these splats down.
I also find it weird when I'm doing like human things.
Like if I'm like,
I don't know,
walking the dogs or something
or I'm eating food,
I'm just like,
that code I wrote ages ago is,
is still
on a machine somewhere in the world,
just like handling crap,
and I don't need to worry about it anymore.
So that that's that's really,
it's like very strange.
Uh,
I was going to show you the asset workers' logs,
but um
there are no
there are no tasks in the queue right now.
It's just finishing off some
and um
here we go,
some are coming in.
It's a really quiet period though,
so I won't,
I won't show that,
sometimes it's like really,
really loud.
Once I turn on this log aggregation,
um,
I will be lowering the logging level on the actual machine.
Um,
down to error,
and the reason is like I don't need thousands of log files that basically say
everything's good,
bro,
right?
I don't need that.
I just need a log that shows like any problems,
and then the log aggregation can be for for any of the successful logs cos it'll do.
With like retention on them and everything like that.
I got a question for Fruits.
When we extend an asset computation task,
this appears in the logs
and
all of the bits are like A,
except like
the end bits.
It's usually like,
what is that?
I think it's like a queue token or something like that,
but it's always
AWA blah blah blah and then like sort of towards the
last tail end of it you'll actually get some unique characters.
Let me get my screenshot it open and I can get you guys a block of them.
We wouldn't recommend chair of the publicly,
got it,
yeah,
no worries.
Um,
you can have one.
By the time you figure out like what to do with it,
it'll be done.
But yeah,
there's
like sometimes it just,
it looks like the asset work is literally screaming because it's just like oh
like
again and again and again,
particularly when it splats,
right,
cos,
uh,
those will be extended quite a while.
The way that the extension works is um.
We know that some tasks are gonna take a little bit longer.
So uh what we do is periodically we say to the cloud,
we say like,
hey guys,
we're still working on this,
and that's what extend computation task means.
It's interesting that Fruit says that they're opaque as well.
Um,
the opaqueness of that token makes me just relaxed,
right?
Because once someone tells you that an opaque,
a token is opaque,
you don't need to worry about how it works.
It's weird,
yeah,
like,
it looks weird.
I can probably figure out what's going on if I took another look at it.
But the moment that like a service provider says,
hey,
that's opaque.
You don't need to like waste any energy on it.
Take a look at any additional questions.
Uh,
Colin says,
is it OK to use the wiki for documentary and creations.
It is OK to use the wiki for pretty much
anything,
and if that still isn't clear,
then I need to do a better job,
cos,
uh,
we have like fiction on there,
we have like satirical articles,
we have
worlds,
people documenting their own stuff.
It's,
it's great,
like whatever you want to put on there,
put on there.
The only like exception to that is anything that
would break our terms of service or our rules,
of course,
and obviously don't go like mixing subject matters.
So like,
uh,
your,
your own creation is great,
fantastic,
but does information about your own creation belong on the main Protofox page?
Probably not.
But does it belong on a cool protofox creation page?
Absolutely,
and that page can be linked from the main Protofox page.
Benport says,
have you thought about making any spats of your own prime?
Yeah,
I'm actually specifically
looking,
um,
I'm specifically looking for,
and I don't really quite know like
if this is something that's that's that's.
Logical.
I'm looking for small splats and I don't mean in terms of like the subject matter,
I mean in terms of file size.
And the reason why I'm looking for small splats is because those will be
easy to put into the testing that I've been talking about in Devlog.
I can put larger splats in there,
but the larger the splat that is,
the longer the code takes to to run and the longer the test takes to run.
But I don't know what factors into the file size of a splat.
So I'm trying to figure out how to create
small splats.
Another issue is that like
all I
all I try and make splats with I don't like.
Um,
I've got
like
Scanniverse I think I've got installed.
I don't like that one.
it does all the processing on the phone,
takes forever,
um,
so I don't like that one.
So I gotta look into some better tooling there.
Uh,
freak says the variants kind of the bigger spots.
I do agree,
and I'll put some bigger ones in there,
but it'll be good just to have like a,
a smaller one to validate that like
the bare minimum works.
That's what I'm also doing with the images,
right?
I say,
here's a icon,
like a 128 by 128,
just crunch this down to BC1.
I know it's not like
logical that you need to do that for an icon,
128 by 128.
But if that one fails,
it means that we don't need to run the next test in the in the tree,
which is
take this 4K image
and make it
1080p.
The bare minimum will break with small ones,
interesting.
I'll have to see what I can find and a stick of human.
Just turning them into SPZ shouldn't,
shouldn't break them if they're small.
Oh,
I'll take a look.
We can,
we can figure it out.
Um.
Yeah,
I'll have to look at some of the variant identifiers.
Um,
the clustering one's good to know though.
I did put,
it was one of your ones through cos I put it through my,
the test workflow I've got in Devlog,
and it took like half an hour,
and then I took the dogs out for a walk and I came back and it was still going,
so it's like probably something wrong there,
probably something wrong there.
I'll look into that one.
let's see,
30 minutes?
Yeah,
that,
that's why I'm looking for like a smaller one.
Like even if the output isn't ideal,
like
putting a smaller one through before you do the big one lets the tests fail faster,
basically.
It also lets you build up on functionality,
like,
can we read a splat?
Yes,
can we process a plat to spur?
Yes,
can we cluster a splat?
Yes,
like a chain of of tests.
Uh,
let's see.
Ny is asking where cloud spawning is on the tetra.
I don't know if it's on there,
let's add it.
um.
Where the tool's gone,
oh they're up here,
of course,
yeah,
let me just copy me that.
Ah,
I see.
I'll see what I can do.
I,
I'll see what I can do,
but 128's a good,
a good number.
I'll see,
I'll see what samples are available.
I,
I could record my own for the testing,
but like,
I just wanna like,
much like the images I posted in Devlog,
like I just,
I needed a lot of them,
uh,
so if you look at,
let me post it across here,
um.
That
was just like a really great find.
It was like all all images I could ever need.
And if he asked about sweep casting,
yeah,
physics,
uh,
sweeps,
that's uh yeah,
we've achieved maxim.
We need the
the
the.
Yeah,
let's,
let's get out of there we go,
uh,
do this stuff,
yeah,
IPV6 still there.
Alright,
we're nearing a half hour,
so guys keep those questions coming or I'll have to land early.
We've got another dog back.
There we go.
So this is,
this is the other dog,
this is Leo.
Leo goes home tomorrow.
What is the biological reason for your tail to be like this dog?
It's crazy.
Look at this.
What is this?
Why is it like
90% of the fluff on your dog is on this test?
I see a lot of people typing,
but no questions,
so
uh I guess dog showcase,
here's a dog showcase,
look.
Ah,
new message alert,
hell yeah.
So Leo here is a long-haired chihuahua.
They're also purebred chihuahua,
they're a pedigree or whatever you call it,
um,
and they have what's called an apple head,
so you can see that they're,
you know,
they're short snout cos their whole head is like the
size of an apple.
And then a fellow who's over here barking for some reason,
come on.
Feder is a short-haired chihuahua,
but he's also mixed with like 15
bloody other breeds,
but
you see they actually have a snout,
and that's a deer-headed so there you go,
there's some chihuahua education for you today.
Ny asks,
and as you can see,
I'm having difficulty here with.
This dog's putting their ears in my nose.
Um,
do you have any thoughts on the weird proto fox I found last time?
On the new avatar pedestals,
I have a UIX form,
which sets position,
location,
and scale,
a trio of dynamic variables.
As it's basically 3 floats,
which have to be turned into float 3s and float cus,
I have them driving dynamic variables.
fields from Pretofox last night when I was trying
to build a system to set the pedestals,
values to copy others for automated updates,
I realised I could still change the dynamic variable from other fields,
despite the driver,
and if I,
if I used fire and change from a dynamic.
From a
dynamic variable input to write new values,
uh,
to the UIX input fields,
it would basically complete the loop for me
and my script to copy the values worked.
That's a dynamic variable,
right?
uh can overwrite a driver is very interesting to me,
but I worry it might be a bug.
What are your thoughts?
It's not a book.
Um,
so
you gotta remember.
That the,
the dynamic variable components,
they just,
oh my God,
they just represent a like look up
to the dynamic variable manager that exists within the world.
And so occasionally there can be some
oddities there involving driving and writing,
where if you're not doing it
correctly is the wrong word,
but if you're not doing it in a way that like would be expected,
you will see stuff like that.
um,
everything that you're describing.
Is like,
I don't know,
more complicated than I thought it should be for just setting the position,
location and the scale
of an object though,
um,
but yeah,
what what like what you're saying is like intended.
What you're meant to do is
really only have one sort of main storage of a dynamic variable within a system,
be that a dynamic field,
which means that the value is stored elsewhere,
or a dynamic value variation.
which means that the,
the,
the value is,
is stored on the actual value.
The,
the rest of the places you're meant to use dynamic variable input,
which can't update the value
or the write and read dynamic variable nodes.
And then that way,
um,
you don't have like two
fields that can be written to
that are outside of the dynamic variable system.
Yeah,
it's not a bug,
it's just a sort of weird quirk.
Fanport's talking about using a
protoflux local with a dynamic variable,
you're putting like three different systems on top of each other there and
trying to sort of reason about what the approach should be.
So we've got
dynamic variables which is like,
you know,
system one.
We've got local protoflux variables,
that's systems 2,
and then you've got driving,
that's systems 3,
and you're like,
uh,
putting all of those together,
trying to see what happens.
Um,
I,
I don't really know.
Carlin is asking how unstable is it to
use the primitive mender member editor in general.
Avoid it wherever you can.
Um,
passing strings,
there are pass functions for that,
there are also pass components for that.
Um,
float text editor parser in text editor parser or whatever those are called,
um,
and the par nodes,
there's a whole host of par nodes that exist in Protofox that you can try to use.
Uh,
there's something else on the end there that you had,
or create text fields for vector components.
That one you can
probably get away with,
uh,
but
there's another way to do that.
I guess you could hook that up through a A
pack operation either via components or protofox so that you had
3 separate fields and then you hook on to a grumpy
must you let me sure requirement Flox driver is unidirectional?
Oh,
you want,
oh,
you want a bidirectional link?
Yeah,
OK.
Yeah,
maybe primitive.
OK,
bye.
Thank you for depositing
like
so much fluff all over my sweater,
like
so much fluff.
We are generating some um Gaussians right now.
We got a,
where is it?
uh norm 11.
Hold on,
reformatted my window,
I can read it better now.
Yeah,
norm 11 and rotations are packed norm 10,
and scales are norm 6,
and colours are norm
X times 4.
Fet,
no thank you.
Uh,
Nooky,
speaking of ref hacking,
I was looking at how the inspectors handle float threes
I noticed it was the ref hacking component with.
I,
I get why that sentence is worded like that,
but it makes my head hurt.
Um,
so
the primitive member editor component,
clue being in its name,
is meant to be used to edit primitive members.
Of which float 3 is included,
and so the way that inspectors handle float 3s is correct right now,
but the,
the problem with,
with that approach is that all of that is generated on the fly by us,
right?
So when you open up an inspector and you load into a field that has a float 3 on it,
we generate that hierarchy that makes.
The,
the primitive member editor and hooks it up so that you can edit the float through.
So while it is correct right now in order to edit a float 3,
it might not be correct in the future.
So once again,
the same warning applies,
which is that like,
hey,
it might break in the future,
but sure,
knock yourself out.
But let's not call it the ref hacking component.
Let's call it the primitive member editor,
which can be used for ref hacking,
because that's a,
that's a healthier way to talk about it in conversation.
Benport asks what's my next big project?
I don't
really know right now.
Um,
we've got a bunch of like business stuff
that that that's like here,
um,
uh,
third party clouds,
like I actually have to visit a client
in Europe at some point this year to do third party clouds,
uh,
which is like.
Uh,
cos it's a like it's a business feature and it's probably
like one of our most expensive business features as well,
cos what we're saying in this one is like,
hey,
we'll put you our intellectual property
on your servers,
and
that requires like that's a,
that's a lot of money that you have to pay for that one.
I'm really excited about
IPv6 because I've got,
I've got code that's sort of
on its way to having a complete unit testing
of LNL and what that means is we'll be able to again have
something in the cloud running that will periodically,
let's say once a day or once a week,
whatever,
it'll be able to run that test and it'll be like,
hey.
LNL
LNL is working.
And then like one day when we make like a really weird change,
let's say we,
you know,
update Gaussian splats one day and we haven't foreseen
this occurring,
but it does occur,
um,
LNL breaks.
The tests will give us an entry point to figure out why.
Those two systems should be unrelated,
but like,
hey,
with the test we'll be able to figure out what's going on.
Isn't there like a pass type node?
Like a type input node?
Like
type input?
Doesn't type input exist?
Like there's type input,
I'm sure there's a type input.
Yeah,
OK,
I see,
so like what you want is like the type input string
uh one but like a a pass version of it.
Ah,
it should be easy.
I could totally put this on my plate
um by assigning it to myself right now.
uh,
and then I,
I promise you I won't get to it,
um,
this week or probably next week or probably the week after,
but I'll,
I'll put it on my plate
and I'll go ahead and I'll stick it in my fun list as well.
Noki says that previous answer about the primitive editor in the inspector,
I mean the old inspectors saved in worlds may 1 day break.
No,
cos we'll probably auto upgrade them.
Um,
it,
it really does like depend on all that stuff and how all of that stuff works though.
Uh,
some of the problem there is like I don't know if Freaks's ideas on it.
But when you say any feature to Freaks,
like their brain just like opens up this gigantic room full of like a cave of wonders.
It's full of magic
because they've been thinking about it for a long time,
but like
I,
I don't,
I don't have that in some cases.
In some cases I'm just like,
you know,
just over here in Business land
trying to just like make everything work.
I need to add some more stuff to Business land,
hold on.
Oh yeah,
universe settings we uh.
Discontinued working on that one cos it wasn't as important as we realised,
uh,
they want easier avatar set up.
Uh,
business themed.
I think it's very important that I put business themed there
or like maybe someone else can come up with better wording.
Um,
because like this,
this,
this one isn't what you guys want,
it's,
it's what the business wants.
Uh,
what the business wants is that
we take their,
uh,
employee like photo
that's on their like staff badge,
and we run it through like
a Vant term or Ready Player me automatically for them
and so that when they log in,
they're like automatically in a Ready Player me avatar that looks
like them and I know that sounds a bit creepy.
That's why it's just for the business and not for anyone else.
Although you'll be able to use it depending on how we build it,
um,
but
they mentioned that once and,
and they haven't mentioned like the the businesses,
I haven't mentioned it again,
so
that's cool.
Uh,
let me see,
there is one other thing,
it's just a bug,
I think it's on my like uh work board right now,
but it's like
local home or saving or something like that it's broken.
Uh,
the reason why that's important for business is because what we do is.
At home when we're connected to our great internet connection,
we can go ahead and save a bunch of worlds to our local home,
and then when we take the laptop to our crap internet that's in a
business building somewhere,
we don't
need to worry about the internet.
Oh,
we just load into those worlds,
but I've got to look into that more.
Uh,
so like it asks,
uh,
the last few times I've logged into Resinate during.
The loading phase,
after face tracking and other stuff is loaded,
there seems to be a 3 to 5 minute period of just seemingly nothing happening.
Uh,
you'll have to put a bug report on that one.
When you do do a bug report on that one,
make sure it has log files,
and then,
um,
if you're capable of,
we'll get someone to help you or DM me,
we can sort it out.
Look at the log file cos it have time stamps,
right?
So
if it really is 3 to 5 minutes,
then what you'll be able to see in the log file is
like a log line that has a time stamp,
and then 3 to 5 minutes later there'll be more logged lines,
and it's that bit in the middle that we'd need to look at in more detail
because it means like whatever's there in the middle is taking 3 to 5 minutes.
Um,
but I can't know that without a log file.
Uh,
Colin asked,
why do I end up often end up in the default
Avatar and joining the world instead of my favoriteed one,
that we thought we'd fixed that.
We thought we'd fix that.
Um,
and then it got to the point where like Frus couldn't reproduce it,
so Frucs,
uh,
disengaged with that bug.
I can reproduce it every single time with a very particular headless,
so I need to get together with them and and get their logs,
cos the the problem with that particular issue is
ideally we need logs from both parties just to kind of line up a few things.
But a lot of the times when that's reported,
we only get the client logs,
and the client logs are less useful for that particular
one because when you first load into a world,
it's the,
the
session host that loads your avatar on your behalf and if anything in that
area goes wrong,
then that's why you don't end up in
um your our particular avatar.
I can reproduce it 100% of the time
on uh the resync lounge,
so I need to just like,
you know,
get some time together,
get their log files when I'm joining and,
and figure it out.
Uh,
I do get the,
the issue which is that when Fruits was last working on it,
they couldn't reproduce it,
so
it makes sense that
that no one's looked at it,
but I can reproduce it,
so.
When I can,
it's great.
I have noticed that it's more common in headlesses as well,
so that's something we need to look into.
If I spend like weeks looking at that one,
and it's because headless users don't have heads again,
I'm probably gonna scream.
cause like it's always that with headless these days
these days like 2 or 3 bugs have been fixed
because we were assuming that headless users had heads and they didn't have heads.
He.
Feder feder,
uh,
slightest says it's probably shortly,
it's very important
when you're like quoting times,
particularly when it's like frustration about time.
So like
something takes longer to load,
uh,
it takes a long time to do this,
that you try to be as specific as possible.
It's better to say I don't know or I haven't timed it than to,
to make an estimate that might be wrong.
Um,
because,
like,
if you said to us,
like,
hey,
it freezes for 30 seconds,
it'd be like,
yeah,
sure.
My resinite freezes for 30 seconds sometimes when it opens too.
But if it really truly is 3 to 5 minutes,
that's something that we need to take more of a look at.
So
just try and be specific as well.
I've been timing startup times recently because we have had
some um business feedback about how long those takes.
And it's like
regardless of my settings,
so I do like a business themed run of
resinite and then a regular steam run of resinite.
It's,
it's 1 to 2 minutes to load.
It is significantly faster if we don't load the cloud home.
So for uh business clients,
we usually like don't load while there or we load specifically the.
Uh,
business world that they want to go to and not the cloud home.
Uh,
but yeah,
it's about like 1 to 2 minutes
on even my computer.
I would love if that was 30 seconds,
but that that isn't gonna happen.
Um,
maybe after the performance update we can
take a look at
that in more detail or as part of the performance update,
but
yeah.
I still don't think 1 to 2 minutes is that bad.
Like it should,
of course it could be a lot better,
but I still don't think it's that bad.
That's another thing that we can eventually test,
right?
Um,
I don't know
like the exact like matrix of testing here,
or if we could do it or how much it would cost,
but this is something that a larger company would do.
They would say like,
hey,
a new build of Resin is available,
spin up a
reasonably
performant VM,
a shit VM,
and like an Alienware VM.
And automatically start that new build to resinate on it,
take screenshots every few seconds,
send them back to us
as part of a build report,
and it can be like,
yo guys,
everything looks good,
smoke testing,
it's beautiful.
Particularly those screenshots are great as well cos we can s.
Ice through them across different
um computer specs
and sort of see like,
oh,
that's interesting.
So it looks like,
you know,
this particular spec
spends longer here based on screenshots,
so we can take a look at it.
It's also gonna be really good for like graphical stuff as well eventually.
Um,
if we can get,
like,
put a red cube and a blue sphere in a scene,
take a photo of it and save that screenshot.
Smoke testing using that is beautiful,
right?
Every single build it'll be like
blue cube,
red sphere,
whatever I said,
take a photo of it,
compare to the previous build,
and then suddenly it'll be like,
hey,
this build,
the,
the red cube or whatever I said,
is now pink,
and then we know,
01 of the shadders has failed for this build.
It's it's like it's really cool.
You don't know what temperature it is where I live right now.
Let me just grab my phone and see.
11,
you can also have.
Look at this little man.
Yeah,
2 minutes from hitting start on Steam,
that,
that's quite,
that's quite normal.
I think we're going to leave off here as questions are,
are diminishing.
Um,
if you got any final statements,
please do type them.
I'll still get to them,
but I'm,
you know,
announcing that we're starting to close now.
Also,
you've got two dogs.
Look,
dog 2 right there over my shoulder,
dog one.
I don't answer cheese questions,
Colin.
It's like a meme.
I'll tell you what,
let's go through a log file right now,
Slager.
It won't,
it won't take long.
We'll just go through a log file right now.
Not your log file,
just my log file,
like a random log file,
right?
Um,
let me share my screen.
All right,
can you guys see this?
Sorry that it's light mode.
I don't have much time.
Um,
so
the first thing to note
is that you've got
the time stamps here.
You can see I work late pretty much every this is 3 here.
I've got,
god damn it.
OK.
So you see this one here and then there's 2 here.
These are the initial startup,
um,
they're called phases,
I think,
and there are like 32 of them.
At last check,
so I have to clean up some of this as well.
So you can see here we're at 21,
26,
27.
30,
and it'll say 30 initialization done.
And so what you can see
in your log file,
and by the way,
you should just post this to a bug report without looking into it,
but you can look into it if you want to help us out and be like,
hey,
I took an initial look and it looks like
between 29 and 30,
there's a gap of 3 minutes.
That might help us out a little bit,
but do post that original file as well,
just so you can
double check your findings.
Uh,
let's see if there's an example here.
Uh,
these are all pretty quick,
so let's.
OK,
that that's,
that's enough to like make a point,
right?
So
here we started loading the light database
at
3:17 15,
and then we were
configuring it
at
317 16,
processing it 317 17,
right,
so you can tell that
loading it,
configuring it and processing it took about 2 seconds.
Um,
but yeah,
look for
initialization done and then you've got stuff like that.
Uh,
once initialization's done,
if you look for bootstrap here,
uh,
bootstrap is the process that like makes you have a dash and stuff.
It does a bunch more stuff than that,
but like you can see here,
bootstrap loading local home,
uh,
network and its start means like,
hey,
we've actually started running in network stuff.
Uh,
oh,
someone opened a bug report for that which is great,
cos,
um,
yeah,
I wanted to
get rid of that one.
I need to need to
do a PR for that one.
And then if you look for engine ready,
engine ready is when the um
when the splash screen disappears
is is when engine ready is signalled,
so you can look for that as well.
So what you see what you can do is you look for engine ready,
that's at 3:18,
we can go back to the start
and we can say,
hey,
3:15,
but it is 3:15 52,
so basically 316 and 318,
that's about 2 minutes
30,
but yeah,
look for 30,
31,
that's when it like stops initialization.
I hope that's helpful,
like there there is a lot of stuff in there that like.
You know,
I could do a like full
YouTube video or I explain what various numbers and
bits and pieces mean in the log files.
But just having that,
that information that,
you know,
here's the time,
here's the loading phase,
it,
it'll help you to take a look.
And with that,
I think we're gonna leave off.
But slower,
it's absolutely fine.
Um,
startup times is,
is something which,
like I think is like super important,
and I want to actually measure it.
Somehow I don't know how to get it measured,
but I want to like measure and track it somehow,
but I want to track it a different way,
which is
time until first meaningful interaction.
So first meaningful interaction would be the first
time that you use your mouse or your
VR controllers to do something that you want to do rather than you need to do.
So that might be load into a world,
speak to a friend,
etc.
How long does it take you from starting it on Steam
to being able to message a friend,
to being able to
join that,
that event that you're trying to get to,
um,
and keeping track of that is,
is very important.
Like if that was,
let's say that was 10 seconds,
like,
so Resonate takes 10 seconds for you to
get to your first meaningful interaction with Resinate.
Beautiful.
That would be amazing.
Like guarantee
that would have an effect on um how many users stick around with us.
Like guarantee,
like everyone would be all over
um social media with like Rosa know it takes 10 seconds to load.
Whoop whoop whoop whoop,
right?
It would be really good.
So,
you know,
it's a good metric to take a look at.
But let's say that we take a look at it now and it's like 2 minutes,
like we
saw and proved in the log file.
And
Fruits does that performance update that they're planning and it goes down to
1 minute or 30 seconds.
That's great,
and we can track that
because we can look at those log files and see.
I'm gonna go ahead and leave off here and I will speak to you again soon.