Welcome to office hours. I'm prime your host.
Uh,
we're gonna be answering questions about Resonate for
the next sort of half hour or so.
If you would like to, um, take a look at, uh, you know, answering a question,
asking a question even, uh, go ahead and drop them into the questions thread.
I have linked the questions thread in a variety of places.
Um, if you still can't find them, uh, do let us know we'll get them to you.
Go ahead and tag office hours again.
Let people know that we're starting, and then I'll go straight on to the questions.
So office hours, uh, we're starting.
I got 19 in the audience. Fantastic. Thank you for showing up, guys.
Um, OK, let's take a look at questions. Um, peach clover. Do you code resonate? Yes.
Take a look at the update notes. You'll see me coding resonate all the time. Um,
it's really difficult in like a start up land to tell you what certain people do.
Like it's clear what fruits does, right? Fris does programming.
But fris also does a lot of the business stuff now because they're the only, um
Czech National that's part of our business, right?
So sometimes there's just stuff only they can do.
Um, but when it comes to prime, I do everything, everything,
whatever. I can help.
If I do, I make sure that, like I give other people the opportunities to do it,
Uh, but if it's a problem that needs solving, I can probably solve it. So I, I did that,
um, going down to exos question which is next. Which is, uh,
I've heard there's some dependency in the industry.
Render is what's keeping us from using.net. Eight.
Will unity need to be ditched before we can
upgrade to.net eight and a process based architecture?
Strangely, process based architecture can be achieved without.net eight.
Uh, we could do that in a different way.
Um,
what that would essentially mean is that we have
a host process that's running inside of unity,
and process based architecture would be running in.net eight.
That's possible.
Um,
the unity part that is preventing us from going up to.net
eight is that unity runs on mono and not C sharps,
um, like.net.
It's difficult to talk about. Sometimes Cos like
CRP itself is a language that isn't owned by anyone.
Um,
and Then.net also really isn't owned by anyone cos there's a foundation behind it,
but C# plus.net you basically get like in quotes Microsoft C#. Right.
Uh, but then there's also mono, which is an alternative C# run time.
And that's what unity uses. So we need to,
um, get off unity, and then we can stop using mono.
Basically, we've got to remove mono from our our tree.
Most like new.net products, um,
projects you can actually just run them using the.net CLI command
on in Linux. I'm not quite sure.
Like if there's a.net run time for Linux
now or something.
Um, but it was just working, which was great.
I think I swapped one of our services from mono to.net.
Um,
yeah. Do they just build it? On.net?
Yeah. We should see what we can do. Um,
that might allow, uh, like, better performance in some cases.
Like we could, uh, for example, we could make the, um,
LNL nodes like.net eight or whatever.
Not that those have any performance problems, but, you know,
like we could we could push buttons and make it happen.
Uh, Kis,
what are your personal favourite things you use in resonate. Anything simple?
Um, so when it comes to simple, I mean tools. I mean, uh, utilities. I mean options.
I even mean mods.
Um, I'm, like, really agitated by complexity,
and I do see a lot of complexity in the things that people make.
And it's just, like, make make stuff fun moving towards to Ozzie's question.
And if you interested any interesting factors you have about L and L, Um,
it's one of the interesting ones. Like when I was learning networking.
Um, there's always the concept of broadcast address.
You put like the Mac, uh, bits in one octet of an IP address.
It turns into a broadcast, um, address, which basically says,
like anyone on this subnet,
I'm sending this message. Pick it up if you want.
And when I was learning that in in networking,
uh, because I was learning it in the vein is like Cisco, right? And networking and
switches and network address translation.
Everyone was like, You don't need that like that's not gonna be used.
You don't need to worry about it. You don't need to learn it like no one uses it.
I tell you who uses it
UDP like UDP uses it a lot. Um, so there's a a strange part of UDP where you can,
uh, send a message to another server without opening a connection.
You can just, like, fart a packet at it.
And then, um, the server can just far to pack it back,
and there's no connection overhead.
It's just sort of,
um, fly by wire invisible. This,
uh, it's very good in that regard. Um, uh, that's how the relay negotiation works.
Um,
you go through the list of relays that are returned from the network node endpoint,
and you ping them and they respond to a pong, and that all happens over ODP
unconnected messages.
There's a really cool file sharing application that uses, uh, UDP
broadcasts to, uh, communicate with other devices on the network.
And it basically goes like, Hey, uh, your phone's here.
Do you want to send a file to your phone and the phone goes, Sure, I'll take the file.
And I like that file sharing programme because once again, it's simple.
Like there's no accounts.
There's no real, even Internet it doesn't technically require.
It does require a network, but it doesn't require an Internet so if you didn't have
a W A But you had a LAN provided the LAN supported UDP broadcast,
you'd be able to transfer files.
Um, pretty much anywhere.
I have a ping and another discord.
So whilst I wait for more questions, I'm gonna go and take a look at that ping.
Or as that ping dealt with, um, I'll be back to the questions.
Uh, Aaron says, uh, networking stuff scares the heck out of me.
Yeah, just ask questions. It's like it scares the correct crap out of me.
Um, Thomas Steve, Uh, 83 says is one a prime number.
I forget, Uh,
the current theory on that one prime numbers gonna be valued by one of themselves.
One fits the description of that.
But sometimes, uh, like, edge cases actually don't fit the description
like there's gotta be, like exclusivity in a prime number as well as, um,
those mathematical rules.
So it like, depends what we're talking about.
Um, euphoria says where are slots ex exactly stored when their parent is null.
Um, so everything in in Reina is just like a synced humongous Jason blob. Right? So
you create a cube and there's a new piece of Jason adage which goes like cube here.
And you send that to someone else and they go, OK, cube here.
And then they've put a cube there.
Um,
but what that does is it creates two layers.
There's the data model layer, which is anything that is synced.
And then there is the local layer, which is anything that is not synced, uh,
common examples of this being like, uh,
for most settings or like check boxes on components.
In some cases, we make a, um, private variable, you know, prefixed of underscore
and that will store the actual nonne network synced value of a particular, um,
entry.
So let's say it's like a number or whatever.
There'll be the number which is a sync float,
and that one's synced. But there'll also be, like underscore in that variable name,
and that one isn't synced, and we try and keep them up to date.
Um,
but it's just how we sort of take pressure off the
data model for when stuff doesn't need to be synced.
Um,
Anyway,
um, the answer to your question there is that, uh,
depending on the client that got the null
parenting or how the null parenting was achieved.
Um, there are no reference
to that slot within the world hierarchy.
Um, because some of those underscore variables I mentioned unconnected.
Uh, so they they still exist in memory,
but we have no way to get them there.
But because they still exist, they still get rendered.
It's really weird.
I saw one area where we do deliberately know a parent,
but we're meant to protect from it like there's a bunch of, like,
protections in order.
Uh, I can probably write tests in the area if I have enough time.
The answer is, like sort of in the world,
sort of not. They're just like they're hard to reach as there is why they misbehave.
Um, Kat says, What do you suggest new users get, uh,
to do to get used to the way Resonate works?
Don't build anything.
Don't build anything so you can go and resonate and you can hang
out with your friends and you can hang out and chat with people.
And you don't need to build anything. That's what you need to do.
Um, just think about VR chat, right?
You you didn't make content When you first started VR chat,
you just played VR chat eventually dabbled in content.
I want you to have that same experience over on resume,
Uh, but it's really difficult, too,
because you're going to average world and someone will be
like There's a dev tool and then they like,
explode your brain as they do live mesh editing in front of you.
Uh, Thomas, Steve says res. Not on GameBoy colour. Unlikely.
Although if you can somehow convince the GameBoy colour to purely act as a display
and then you can like down sample or or do
I don't know what it would be like Downing code
um, the data output of resonate into a GameBoy colour screen.
You'd be able to do that.
That's essentially what happens with,
um, doom. Like when they ran deep on a pre
test rate.
They're they're running the source code of doom, but for the display layer,
they don't have enough bandwidth.
So they're just like it's a drawing of a gun, like an outline drawing of a gun.
And that's like all they can do, uh, moving forwards to.
Actually, I skipped Neil's question. Sorry. Um,
yeah, I skipped Neil's question. I'm sorry. Uh,
Neon says, uh, rudiment
for collection support is being utilised for some components, uh,
for list and such.
But a lot of them still claim marines currently not supported like particles.
Uh, what's stopping these components from being able to use the collections?
While some are able to, uh, we need a generic collection support.
So where you can see collections or lists where you can add them,
It's usually using the bag data type, which I always forget,
why we've got so many different collection data types.
But like, um, those are easily to be editable by the inspector.
Um, if they're hooked up correctly
when we say collections, we mean everything,
rather than giving you a particular way to do something with collections, instead,
we go Here is
everything that you could possibly dream of to do with collections.
That's what's holding up.
Um, it's like
holistic comes to mind the word holistic, right?
So the the collections that you see right now, they're non holistic.
They're edge cases is that are programmed in
specifically to help you out of specific examples.
Um, whereas collection support will be fully holistic and no matter what you do,
you'll you'll be able to use this,
All right? Checking for additional questions.
Now, I don't see any additional questions. I, uh, think we're good.
Cat asks, Do you think there'll be a way to move a
unity package? Uh, such as an avatar into the game without extra hassle?
Um, there's always going to be some hassle,
but we do want to make tooling around that bit, Uh,
a little bit easier.
Um,
a good example of what I mean by it's always going to be
a little bit of a hassle is we don't have the same components.
We can make transition layers which convert
community stuff into resonate stuff.
But those are always going to have gaps or something. A
good example be I don't know. You download from a VR chat marketplace.
You download the latest and greatest, uh,
gesture manager pose manager. Whatever you mean, go go. Loco
is the one that people use right now. Um,
go go
loco
would never, ever be supported by resume. We'd not be able to support that,
so we wouldn't be able to,
um, support that.
And that means that there will be some hassle
in sort of dealing with that kind of circumstance.
Um, so a lot of cases when people are asking for unity,
importing they're actually asking for, like, easier avatar flows on our end.
We still don't think that, um, unity is a long-term way to make avatars.
Um, so if we can make our avatar creator better,
maybe people would stop asking people.
We'll have to see dog get off.
Uh, peach clover says it's been a while since I tried to,
but how do I whitelist the brush tools?
Uh, in the perms for the non builders.
Uh,
use the class name in tool permissions and make sure it's on the whitelist setting,
and you should be fine.
Has to be the class name of the brush, though,
Uh, I've got videos on that which I think go over that.
If you're still not sure, let me know. I'll take a look. Doc, I told you off, off, off.
He does this thing where he climbs up my legs and I'm like, uh, you need to ask, right?
You can't just, like, be on my lap.
You gotta, like,
ask cos like I'm gonna stand up in a minute and I go get another drink and
he if he's on my lap, I'll have to put him down. Right? So he's gotta ask.
Euphoria says are the fine
child um
straight parent node iterators? Uh,
do you mean like in C# land?
00, Jeremy.
Alright. Where are we find
child by name. Still the bindings, it's still the bindings.
That's the non-binding version. W?
Uh, no, they're just four lips.
Do you feel they're just four loops?
There's a bit of, like, stuff around them because of the synchronisation,
but they're just four loops
and yeah, the dog's name is feta.
Uh, that was fixed. Thank you, XO, for for pointing that one out.
Uh, with the recent mod to fix the, uh, stuck, uh, hitching when people law, uh,
join a session,
Uh, is the team looking at similar fixes, or are you looking at a diff?
A different approach?
Uh, we're never looking at exactly for what the mod provides.
It's usually a hacky approach that doesn't make sense.
There's actually a great disclaimer on the mod that solves that problem
about hacks and and mods and why this might not be ideal.
We're always looking for ways to improve the engine.
Um,
but sometimes mods are able to do it in a way which
is faster or more permissible for them because it's it's their computer.
It's not like the entirety of our user base,
so they can make risks and and changes quickly.
Um, we're always looking for ways to improve, um, our support,
though. So we don't need
any things like that.
Ozy asks. How do your body nodes, uh, work in regards to some nodes?
Not being there for some avatars EG finding the
foot body node for head and hand avatars.
Does that cause performance problems?
Uh, no, not performance problems, but just like
Ms Right, um,
take a look at our body node slot handles Noel's body node slot
body slot,
which is?
Yeah, it's performing same performance as if the foot was there.
We, uh, asked the biped rig right? And the biped rig knows all it's it's not that.
Perform it at all.
Um, if you ask what the temp slot is used for, I used to know I don't know.
Luckily, it's really easy to find code like that, cos you just do unsc describe.
It's called temp in the search
and you find it.
Uh
uh.
All right. It's used in the default avatar helper and,
uh, um, part of the default avatar helper to do with filling empty slots,
which is something to do with the avatar. Um, like creation and management
stuff. I'm not entirely sure how that works.
Uh, but if it needs, like, the the temp slot, that's that. That's what it's doing.
It seems to me like it should maybe be deleting the temp slot once it's done with it.
Uh, I also don't know why I couldn't use anywhere else, but
absolutely,
I have on it right now. Sorry, Fielding. I'm quite tired. Um,
cat says, What's one of the hardest hits you had? Coding resonate.
It's always like the weird things that
get me right cos everything's so complicated.
There's a bunch of like steps to make sure that everything is working correctly.
And if you forget one of those, you'll just end up going crazy.
Um, so
I didn't know why code wasn't running, and it turned out that
I was looking in the wrong place because I had two identical log messages,
and that was fun.
Um, once I inverted a a bullion to make a, um, exit early.
Um, sort of style structure, uh,
exit early or bail early is where you know,
if you know something's wrong in a method you bail out the moment,
you know it's wrong because there's no point continuing.
Uh, it makes the curd a lot less nested. So II I prefer it.
But sometimes when I'm converting a programme from sort of with the curlies to,
um,
you know, Bale early style,
um, code style,
I, uh, mess up the the, um I mess up the logical operators, cos I you know,
I have to invert them.
And then that leads to weird behaviour.
Like I disabled the entirety of LNL Nat on my
computer yesterday for two hours and couldn't figure out why.
Uh, due to a mistyped variable says,
What were you doing when you corrupted your Dev in store?
It's just constantly corrupted.
Like, uh, let me explain to you like emergency resonant
some people might do this. I don't know if you're one of the creation groups.
That's got a lot of, uh, business or traffic coming in. Maybe you're a commissioner.
for avatars, accessories, et cetera.
Uh and you know, you've gotta, like, do a lot of stuff quickly,
but certainly when you're a Dev, you've sometimes gotta just run,
resonate as quickly as possible and not really worry about the consequences.
Cos you're testing something obscure like, say,
I'm testing registration or login.
I don't need to be logged in to test both of those things.
I just need the car to park itself on the road so I can take a look and make sure it's OK.
Um, so, you know, getting that stuff done is, is, is
what always leads to that corruption happening.
It's it's and my computer's just a mess. There's, like six copies of Re
and I. I need to tidy them up. Um, but you just you can't find time for these things.
Sometimes it's like, Well, it works now,
and it's like, Well, how long would it take to to adjust it so that it it it works better
Way too long? Way too long?
Uh, eventually we will, of course, uh, jev Forge says, Does pro
flux have any sort of just in time compiler
to make code work faster once it's used enough.
Uh, there is some form of of compiler.
I don't I don't like calling it a compiler because a I don't understand it.
I haven't read it. B like it gives the wrong impression.
Um, your proto
frox tree, which is a collection of nodes, um is sort of, uh,
compacted and and and represented internally in
a data structure that is more performant.
I don't want to call that compiling cos I don't know enough details to say either way.
Um, but it is not something that you'd probably be able to jit maybe be doing um,
jit on proto
flux later. But, uh, it's not something that we can go that low level. I
believe that's all the questions We have seven more minutes of questions.
Uh, please go ahead and get those sorted.
I am gonna go ahead and and slurp some water off mic for a second.
All right? I was looking through the code to answer the update order thing.
I'm still not certain. I gotta take a look into it. More I.
I can't answer that one right now off the top of my head.
Uh, moving forward to XO. What software stack. Does the resonate website use?
Uh,
raw HTML? We don't have any back end or anything like that. It's just raw HTML.
The HTML is exported from webflow,
which is what chrome is more comfortable than using to make the website.
But that sort of like doesn't matter because it it's
just it's like HTML that comes out of that that,
um, webflow system
goes straight on the website.
If you in another area of our infrastructure. I'm happy to answer that.
But you ask red. So So
that's what you get. Website
Nitra asks. What does high priority integration do?
Yeah, I would love to know myself
find references for high priority integration.
Ah, there we go.
Yeah, I'm not sure on that one either.
I'd have to look at that goes into unity lens, so I'd have to take a look at that one.
yes.
And you can reorder slots in a context menu or things
like that by messing with the update order of the slots.
When doing that, I recommend if you set one update order for a slot,
I recommend you set them all just so that they never flip accidentally.
So if you want to make stuff ordered by 123 Don't do one. Skip two and go to three. Do 12,
uh, moving forwards.
To Kat's question, uh,
what you believe is the big difference
between VRC and Resonate regarding social aspect.
I'm I'm not gonna answer that because I don't think there is any
difference.
There's differences right now because of how small that we are.
But like if we grew to the scale of VR
chat like I, I like I, like everyone wouldn't be saying that, you know,
there would be clubs, there would be events,
and there would be tinkerers and and developers
in their own sorts of corners as well.
Uh, we need as many people as we can get to to to like us and continue using us. So,
uh,
limited to one audience.
We have three minutes more of questions, and then I'll be, uh, I'll be heading off. So
do keep them. I,
uh,
two minutes, two minutes.
Uh, emergency temporal shift. Asks our dog, uh,
dog's good.
Dog's a bit grumpy, cos I've I've been busy all day,
so I haven't really paid much attention.
I'll fix that at some point, uh, cat asks, What's the end goal of resonant?
I don't think we have an end goal like it's difficult to say when, um
uh,
when would be complete or whatever? Cos like we we would just add more to it. Right?
Uh,
me
nipple shift does Do we have a percent to complete wiki? No,
Uh, never Wiki will never be complete.
Um, it's that's just a mentality thing that you need to shift.
The wiki is a community project. It's gonna have mistakes in it for years.
Um, you're gonna hit and need to edit them.
And if you don't want to contribute, that's absolutely fine.
But please don't complain about the wiki being complete
if you're not going to contribute, Fourier says.
In your opinion, what is the most powerful and versatile component in the game? An
active collider which people refuse to use because one
day someone told them that they were bad.
They're not
how much they prove.
Still, never basic pages never done. Never
we can get close, but we can never get, like, exactly done or 100% perfect, because
there's just too much to, like cover everyone else talks about the value.
I hate the value.
The value gradient driver illustrates to me that our animation
tooling it's terrible and we need to improve it.
That's what the value Radian driver does to me.
I was watching, you know, some M MC entries, quite a lot of the narrative ones,
and just in general, where you know,
they wanna animate a character walking and speaking
like as they go through a room.
And it's just that should not, like, be as complicated as it currently is.
Uh, Nitra says, will resonate ever be viable as a serious game
for making a setting games? We hope so.
We hope so.
Um,
I mean, meta movie is the like first project that kind of built.
I mean, it's not a game.
It's like an interactive movie,
but it's still kind of a game like interactive movie game.
They built it on Resonate they sell it.
Uh, we also have, uh, the ability to, uh,
customise the splash screen and all sorts of stuff like that.
There's even a way to overwrite the entire bootstrapping of the engine to be like,
no doubt, way do this stuff differently.
Don't even connect to the cloud just play this experience,
at which point it is a single player game that can be distributed on steam.
We just have to figure out the licencing for that which we are working on.
Uh,
actually sent a screenshot of a random folder of their inventory and is
asking me to evaluate whether they take up file storage or not,
Um, can't possibly tell from just a screenshot. Unfortunately,
uh,
emergency temple shift says,
if you're given an elephant and can sell it or give it away, what you to do with it?
That elephant is turning into glue.
With that, we are at 32 past. I've gotta
jump off, get some stuff done.
I will answer Peach Clover's question, though, because I, uh,
started talking about the questions being closed whilst they were typing it.
Uh, peach Clover says. What is the current programming project?
That question is too broad.
It's one of the collapse of questions,
which I don't like and in some cases might respond of a snarky comment.
I will try not to. Today, though,
uh,
I am currently working on L and L difficulties within a large corporate network.
It is the
most inanely complicated and and insane, insanity inducing thing I have ever seen.
Um,
the easiest way to fix this problem would to be to just open the corporate firewall,
but that that isn't gonna happen.
So we gotta figure out a solution for that
that's involved, Basically, just opening up the LNL connection area and the code.
And every time it makes a decision,
um, like adding additional logging and telemetry and metrics just so we can, like,
figure out what's going on.
And with that, we're done. I'm gonna go ahead and shut off the recording here,
and I will speak to you soon.