The Resonance/2025-02-02/Transcript

From Resonite Wiki

This is a transcript of The Resonance from 2025 February 2.

This transcript is auto-generated from YouTube. There may be missing information or inaccuracies reflected in it, but it is better to have searchable text in general than an unsearchable audio or video. It is heavily encouraged to verify any information from the source using the provided timestamps.

0:07: post post and last one posting here and we should have

0:15: people trickling in hello

0:20: hello okay hello hello oh no I had it on so I was hearing myself there we go no

0:29: messages yet sad oh there we go SN it I the answer the answer to that

0:37: one is a I'm going to mark it as answered so

0:45: hello uh hello everyone people should be piling

0:51: in how's everyone doing today I hope you all oh how am I doing

0:58: yes oh I'm I'm eating I am as eating cereal as I'll ever be right now ah I

1:04: literally inhaled lunch before this I was like I was playing a game and I was

1:10: like oh like I should start preparing for a stream but I'm hungry it's going to be two hours so I heed lunch and as

1:16: I'm hitting the lunch I'm prepping stuff and I'm like shoving into my

1:21: mouth and then like I get on here and my controll is not working so I'm like I

1:26: guess I need to restart and I have to speedrun to setup again

1:34: I was kind of similar um I woke up and I was like man I'm tired and then like I I

1:40: like took my meds and I like played on my phone for like an hour and then an hour passes and I'm like oh my God it's

1:46: like 30 minutes before the stream and then I have and I get up and I go brush my teeth and I get my Froot Loops and

1:52: I'm a tornado of chaos yeah I mean f Loops we'll see we'll see what the chat is going to be to R of chaos today

2:01: let's see let's see how many questions we get and how many interesting ones we can I simplifi the set up today so like

2:07: we in front of the board so if there's anything you know that requires drawing diagrams it's

2:12: like right there yeah we just we just magnetized to the board yeah we just go

2:18: we're there ground says he's got to he's got

2:27: to get a silly question oh that was the not it thing I don't know how to answer

2:32: it but I don't know what it means and we should give a good amount of people in today uh so hello everyone

2:38: welcome to the a resonance I kind of stopped tracking which episode it is uh think it's like 10th or something but um

2:46: what it is essentially it's like my office hours uh combined with like a podcast so you can ask any question you

2:53: want about Rite um we'll do the best our ability to answer those questions uh

2:58: some of them we might just give like a general overview and like you know ask you to bring it to other office hours like especially for example it's like

3:05: moderation matter uh the moderation team they holding off his hours uh like an

3:10: hour and a half before this one so like some of you probably came from there and in case you missed it you know there's

3:16: going to be another one next week uh but yeah like whatever you want to ask about there night like whether it's technical

3:21: whether it's like you know how the platform is going like what's his history what's it future like what I doing on the team like anything related

3:29: to resite like feel free to ask uh the one thing make sure uh you put a question mark at the end of the question

3:36: um that way like it pops out on our thing and uh we don't lose the track of it if you do ask some followup questions

3:44: uh or follow up like clarifications please include the context and the message because sometimes it takes a bit

3:49: to get to your followup and by the time like before forgot like what the original question was um so with that

3:57: like we should be ready to start it uh also so other the questions like you know we might like talking about uh um

4:04: uh we might like you know talking like a little bit deeper into stuff and kind of rumbling about it depending on how time it goes and also forgot like we have a

4:11: Cyro our um one of people from engineering team here as well so he's kind of here to help me like answer some

4:17: questions especially on I forgot about me too don't worry

4:24: um I also found that schnit doesn't seem to really mean anything but has gained

4:31: the colloquial me meaning of um to suddenly disintegrate at the thought of

4:37: something oh my God what would be what would be a thought of something that would make us suddenly

4:44: disintegrate or it's a um I guess oh I know what I disintegrate

4:51: at sometimes I dis integrate at the thought of ref hacking when people are like I'm going to put ref hacking in

4:58: this thing and I'm going to make a public and then I'm going to share it around and then I'm going to I'm going

5:03: to drink I'm going to drink your tears when you cry when it breaks oh that's

5:09: that's that's some I don't know if it's dark or like but that's that's

5:16: that's yes y'all better look out yeah it's like is like one of those

5:24: things where it's like like we TR like V we have like you know this like fil opy of like it's

5:31: platform for thinker so if you were like you know thinker you know then thinker way play around with things and explore

5:37: but also you should understand you know the impact of some things and some features you know they are designed uh

5:44: to be supported for long term which means if you use those features for the internet purpose um we give you certain

5:50: guarantees that your stuff is you know not going to break and if it does break that we're going to spend some time you know like fixing it but there's like you

5:57: know other shakes where L of them like also like will tell you specifically don't do this this is you know you're

6:03: kind of exploiting an implementation quir or you like you know um trying to get around like you know some things and

6:10: those bits can change and often times they will change without warning because we might change like you know one system and then it's up like influencing how

6:17: some other system behaves and the outward behavior of the uh design Parts

6:23: you know stays the same but like how they work under the hood might change and if you depend on how they work under

6:28: the hood your stuff will explode and in those cases we will you know not

6:34: necessarily spend the time fixing that because like we were like this is something we don't intend to like you

6:40: know keep working the way it is and you shouldn't be relying on it so if you

6:45: want to thinker you know like play with it you feel you're like you know free to do so like we're not going to we're not

6:51: going to forbid it but at the same time you need to understand you know the risks that come along with it and we

6:58: also appreciate if you know if you talk about it with other people that you share those risks with others so you

7:03: know what to expect because it's one of those things you know you feel like it's fine and then it like breaks and if we have like you know some tool set or

7:09: workflow that's built upon it um and S that goes spof you know we might not be

7:16: like because we have like other kind of priorities at a time like we might not like make proper replacements for what

7:21: like you're using it for which means you might be left without a solution or might be likeing scrambling and so on so

7:28: as long as understand that's a risk of what you're doing you know I feel it's fine but like the problem is of time is

7:35: like people don't talk about a risks of it or don't like really understand them and then you know then they get upset

7:42: that like when stuff breaks so um the best thing is you know just

7:47: stay informed about like you know things like know what's good practices whats to be avoided um we do have a section on

7:54: the wiki that actually says things to avoid that specifically calls out some of these things and tells you these are

8:00: risky things to use these are not going to you know this can like explode at you at any moment without a volid

8:06: replacement for whatever you try to do um so just keep it in mind you know as we going to play in build

8:13: systems yeah basically like if you use something like you know ref hacking your

8:18: creation and it breaks one day we're probably not going to Auto upgrade it for you yeah lot of times we also can't

8:26: because like sometimes like what do you depend on how on specific you know how certain system works if we wanted

8:34: to keep that we would essentially be loged to how that particle system

8:40: functions and doing that like that essentially you know ties our hand to

8:45: upgrading those systems and improving them or even optimizing them um like one one actual example I can give is like

8:51: people used to or maybe they still do like I don't actually know uh they used to like you know par the reference IDs

8:58: to figure out the user um and the way it works because the reference IDs right now they're kind of

9:04: partitioned where eight bits of it uh are for the allocation ID of like you

9:09: know whichever user and they would like you know parse it out have to figure out like a user that like allocated an item

9:16: the problem is that's an implementation detail the reference IDs they're meant to be opaque which means it's just an

9:22: identifier but like it doesn't necessarily tell you like you know more on itself its structure is subject to

9:29: change so if you build something that you know assumes those 8 Bits are the user and then we change how it's

9:34: represented which we actually will in the future because it being 8 bit that limits it to like

9:41: 256 users or 55 I forget like this um one of um but like once we do like you

9:49: know the big Ser things like where we can do domains and so on there might be a lot more users and the allocation

9:54: might be more Dynamic it might you know not even have like allocated part of it like to be the specifically the user in

10:01: my do system where there's like a location manager and like you know other things and it's becomes more complicated

10:06: and suddenly the system you built is not going to work and it's just going to break on one thing we actually did in

10:12: this particular case because we saw you want to figure out which user allocated something we made a node uh which like

10:20: where plug uh I think it plug what does it take like the word element I think you plug a word element and it tells you

10:27: this is the allocating user what this does is because the node it kind of

10:32: abstracts away it essentially abstracts away the idea that you want to figure out which user allocated this element so

10:40: right now internally it will actually use the reference IDs because that matches once we change that

10:45: implementation you know how reference IDs work there's going to be different ways to figure out who allocated

10:51: something we can change the internal of the node so it uses the new system but its out Behavior will not change

10:59: on on the out like you know on on from your perspective you still give award element and you still get the user who allocated it you don't care what happens

11:06: inside because we can upgrade inside but if you sort of build the system yourself

11:12: reparse it out and figure out the user that way there's not really a reasonable

11:17: way for us to upgrade that system for you um and that's kind of you know the general principle weal ask people is

11:24: like if you're abusing s you know for something that's not necessarily it's intended purpose

11:29: it's better ask for this to be a feature uh look into it and see you know like

11:36: sometimes we will tell you like you can actually already use this system this is intended for

11:41: this but if you kind of like you know just try to like hack things out and so on like that's that's what where it

11:48: should give you a pause and be like is this like meant to like do this kind of thing and you know if you make good

11:54: issue about it like we sometimes we'll say like you know no we actually want to introdu system for this this is not going to

11:59: keep working the way it is um or you know we all you no you can feel free to

12:05: use this system the system is designed to be supporting long term so just kind of gives like an a better idea on like

12:13: how to make things so they support her like you know long term and they kind of keep working and they don't break on

12:20: you yeah um and I I won't I won't hold up this topic too much longer but it's

12:25: kind of funny to because there's a similar parallel in the C sharp with um

12:30: oh what was it it was get like get yes this a good one there's a similar thing in C where

12:38: you can get the hash code of like an object or whatever um and it'll it's

12:43: it's kind of like at that time like a unique identifier of like what it

12:49: is the do you want me to tell this one all you can tell it you can tell it hey

12:55: so in C like every object implements good hash code uh which is a way to

13:01: obtain like a hash which is sort of like a fingerprint of an object it is not guaranteed to be unique uh but is often

13:07: time used you know for various collection like dictionaries you know hashsets and so on is when you want to

13:13: like do a quick identification so for example if you're storing a bunch of objects you know in a dictionary and you

13:18: want to have a fast lookup one way to do it is you get a hash and then you store object under that hash or you still

13:25: multiple so when you're when you didn't want to query object based on the key you get HH you find whatever is under

13:31: that HH and it could be like you know either just one object in which case you know the job is done there could be multiple objects in which case we have

13:38: to kind of then filter them through and you know figure out which one is the one we actually want uh because we can have

13:43: you know hush collisions but um the problem was that

13:49: if you for example take like a piece of string like a piece of string like text is your key and you say you have the

13:55: word test and then you have the word fruit say the war test would end up like

14:00: with a hash that's a number seven and then the the fruit would end up with

14:06: number 42 um one thing the developers would do is they would actually like they would

14:12: build like a dictionary you know with these hashes and they would save it the problem is the actual number you get the

14:19: specific number is implementation detail and it could change at any moment unexpectedly which means if you as a

14:25: developer you save some data using those hashes and you assume they never change and then they do change your thing will

14:32: explode because suddenly the numbers don't match so in order to discourage people from doing this what the

14:39: developers of like you know C and cor language on time did they actually made every time you start C application those

14:46: hashes are randomized so like you will get you will essentially get like a different one so

14:52: like on one startup for the v test you get seven on another startup you get you know

14:57: 1,735 or something something you know there probably going to be more complicated numbers but you know hope

15:03: that kind of illustrates the point and because they kind of forcefully randomize at every startup you know if

15:10: if you what like use it like where you P like you know you save to the to your dis the pairings of like hashes with the

15:17: objects your application will break immediately on the next startup and you realize oh I should have been doing that

15:23: this is this doesn't say stay say the same I need to find a different mechanism that like you know

15:29: guarantees that it's persistent over multiple like launches and implementation changes if they just kep

15:35: it as it is the problem is a lot of developers would not realize until you know they upgraded like NET Framework

15:40: you know to like a new major version and then the application would break and at

15:45: that point you know it's much harder to figure out like why did it even break because like you're you might have implemented the thing like a year or two

15:52: ago so and we've kind of done something similar like with refence ideas we kind of like scrambled them a bit and so we

15:59: make it oh your microphone died oh

16:10: no what uh technical difficulties people

16:16: will wait for fre to get his mic back hello this one to I don't know microphone's doing I was look on the

16:21: charger right before this uh but yeah like we kind of scramble it we kind of make it harder to use them just so like

16:27: you know when you try to do stuff like you know to give you pause and be like is this something I'm supposed to be

16:33: doing like like it's it's sort of like you know sort of there like to tell you like

16:39: you know this is maybe something that's hacky and like you shouldn't be relying on

16:44: this yeah that's kind of that's kind of why um some of the like Proto like

16:50: protox or older like Logics colors and stuff used to get screwed up um because

16:56: some of the type colors used to rely on the hash code

17:01: heads be we can of still use the hases for

17:08: some of them it's just like ones that like where it doesn't matter specifically which color it is the

17:14: colors are there more just to like so it's easier to tell this like on at

17:19: first like glance but also like the colors get kind of limited because there's like thousands even not dozens of thousands of types and you're not

17:26: going to be able to like distinguish that many color so like one thing we do with that one is like some of the common

17:32: types like we assign them explicit color so they're very Vivid and very easy to distinguish and all the rest we just we

17:39: just like use it this system that just scrambles the colors and gives you different colors just to make it easier

17:45: to like distinguish them but like still should like check which type it is yes

17:50: um so um okay I it's kind of funny because

17:56: like you know like literally we went into our first round humble and the question was schnit is how to pronounce

18:02: it so congratulations Grandy Like Your Meme question actually end up like you know in the long

18:08: ramble yeah it's it's we're like Peak efficiency today yeah we did actually

18:15: also get some other questions coming in there's been questions piling out but like I'm kind of like and P for a bit

18:22: because I feel I feel this was an important PSA it's fun you know given the original

18:27: question but yes in tldr feel free to like you know think

18:33: around but please be like responsible with it and make sure like you know you understand which systems are designed

18:38: for which purposes and which ones are designed to like you know have long time support and which things you will break

18:43: on you so that's pretty much it and we should get to the we should get you know to the questions so the first one that's

18:52: actual question is from Jack the fox author um I also have a good first question haha Jes like the actual first

19:00: first question was schnit it didn't it probably wasn't meant to be but it turned out that way

19:07: but anyways uh do you notice MMC in the cloud statistics oh there was actually a thing like during the launch like uh let

19:15: me see if you actually go to metrix uh metrix uh yellow is it metrix

19:21: or no it's metrix does.com um there was an increase of

19:27: like users um around like where the ceremony was happening let me actually grab this this

19:34: is kind of juny way but um I can I can just screenshot my page

19:40: and my Dash and just bring it here um so see like around here like when it

19:47: sharply increases that's like you know this is around like where the opening

19:52: ceremony started and kind of stayed and load a bit and I think was like the normal like weekend thing so they're

19:58: like noticeable things um this is uh this is like accessible to everyone so

20:04: if you go if you go to the URL you know you can like play around with these grabs yourself and you can check for

20:09: yourself um I haven't checked like the other ones like super much um it's not

20:15: like like if you like Zoom it out a bit more it's like not too too crazy like

20:20: out of like you know what we normally get on weekends so I i' have to like poke around some more but um make sure

20:27: see if I can do lot last 30 days it it is a bit noticeable like bump

20:35: uh let me see I can do this one just screenshot

20:40: this come on come on there we

20:46: go so you can kind of see like these are like these are like usually weekends

20:51: that's like where we get most people and this is you know the MMC opening so there's definitely noticeable bump in

20:57: the users um so yeah that is

21:03: noticeable so go around go go to metrix uh do.com perhaps like made this like

21:09: super fancy uh and play around with the G like it's kind of fun you know looking for

21:14: insights uh next question is do you want to this one yeah so game the cop dog

21:20: asks question for syyro how did you get around the issues preventing any CPU compilation uh in particular I mean

21:29: uh I assume you mean for the Headless uh just for the the rest of people watching

21:34: um it actually wasn't that hard I think I might have just been screwing something up the first time um cuz I a

21:44: while back I ended up refactoring like our whole build process to make it more like streamlined and more buildable on

21:51: like other platforms uh like Linux and stuff but in doing so um since we

21:56: switched to the new like project stock it kind of messed up some of the dependencies for like the Headless and

22:04: um I didn't know how to fix it in that moment and so I was like okay I'm just

22:11: going to make this compile for like Wix 64 just so that it like retains the old

22:16: behavior um so that least at least we have a working headless um but yeah I

22:22: think I might have just been screwing something up there because when I changed it to compile for any

22:27: CPU uh um the it seems to work just fine now um

22:32: and I don't I'm logged in the Headless works fine you know I'm doesn't crash

22:37: and I just included the I ended up just the only thing I needed to do really was

22:42: just include the the steam API like native library and that was it in like

22:47: the runtimes folder because the Headless can actually since the Headless runs on

22:53: uhet um like like the proper modern net it can actually choose like which Native

22:59: libraries it needs to load for the platform it's running on so if it's running on like arm it'll it'll load all

23:05: the arm libraries if it's running on you know 64-bit machine it'll load the the 64-bit libraries if it's specifically

23:11: Linux it'll load the Linux you know 64-bit libraries and stuff like that but

23:18: um yeah now since since it seems to work fine now um we can compile it uh with

23:25: that in mind and uh it should be much easier to make the Headless run on uh

23:34: different platforms just by giving it like the native libraries it needs and especially if we get like arm you know

23:40: continuous integration we could actually just like you know officially support arm at that point and j4 has been like

23:46: making a bunch of like PRS like recently I haven't like been able to like look at them like in detail yet but like it feels like it's there like they

23:55: close yeah out to j4 like for death yeah big big big shout out to j4 he's been

24:02: doing some great work with um doing like the continuous integration on GitHub and

24:08: making all the libraries build by themselves once you you know like push updates to them and and whatnot and it

24:14: sure saves us a lot of headache so thank you so much cuz I oh my god get actions

24:21: are tedious sometimes this is see this is one of the reasons like I don't like doing it either you just got to mess

24:28: around with and like I'm like I'm like no no now we have a s like generic I'm like

24:34: like yeah just give just see I'm here to pick up all of like the I'm here to pick

24:40: up like all the slop that FS doesn't want to pick up um and then you know I'm I'm like okay FRS I'll do this thing in

24:47: like two days no problem two weeks later uh I did it

24:54: FRS is done I'm like crawling to him you know

25:00: I'm crawling to him with like a polished marble in my hand but like the rest of my body is I'm like crawling to the mud

25:06: in the dirt and no it's actually it's fine it's fine I mean um i' actually

25:11: like it's kind of funny because on my end it's like easy like kind of bar hurt because like I'm like I give you a task and you can focus on it for like a week

25:17: or two and then like I don't have to worry about like it'll deliv with some PRS and such for a bit I can focus on

25:23: the other stuff so like I there's no complaints for me for me also like you

25:28: know the two weeks that I would have maybe had to spend on it so it works out fine

25:35: yes but anyways yeah I hope that answers your your question uh game and uh it's

25:42: pretty exciting like I know like people like be theing the like Oracle servers and on arm actually it's kind of funny

25:48: thing because like I kind of like I been looking for an excuse to get a rry pie because I wanted to mess with it and

25:54: like I'm like maybe head Les but like I don't have really super time but now be like you know good one and see what it

26:00: does and just you know the fun of it yeah you can the the headless is

26:07: running on like net 8 run so much better than like client at this pointet n it's

26:14: done at N9 no I'm I'm I'm out of date I'm crusty crust yeah it runs it runs so much

26:22: better um you you probably could run you know a little server for like 10 people off of a pie yeah

26:30: anyways uh we should move to the other questions I don't actually no there's a bunch we should get to the questions um

26:36: yes yes I we got plenty of time so we'll see but I was little bit worried there's

26:41: going to be not too many questions because of was quiet at the beginning and know there's a bunch and we get already getting into rbl um anyways uh

26:48: Mar Maran art is asking hello everyone I've been exploring Rite and I'm loving

26:55: it uh how great it is so far it's quite a lot to get through for star but it's all right I'd like to ask a high level

27:00: question why you SCE as a renderer instead of uh from already well-known other engines unreal blender e Cycles

27:07: Etc easier to implement easier to license easier to have allies on development um so there's actually um

27:15: there like multiple things in this question but first like you know thank you I'm like glad you enjoy like resite

27:20: it can definitely be like you know quite overwhelming at first so like we generally just advise people like you know take it slow there's a lot in here

27:27: so like like it's natural like you know to take take your time you know and kind of

27:33: absorb everything and it might be even Parts you know like it might not be like super interested in like I know there's like people who've been here like on for

27:41: like you know over a year and like they're like still discovering like new stuff so that's you know

27:47: nothing nothing bad um for the question of the render um there's like ones that

27:54: are like more specific so for example you know for unreal we cannot use andreal due to licensing if you even if

28:01: we wanted to andreal doesn't allow to build any applications that give you sort of editor functionality in the game

28:08: that's against their license which means you know we cannot just use it based on that blender blenders you know it's

28:16: licens as GPL which is not compatible with our code and the our own dependencies which means we also can to

28:22: use it based on that Cycles is specifically Cycles is that's uh not

28:28: really real time render that's like you know more like you you know path is like a scene and it can take like you know

28:35: anywhere from a few seconds to several minutes so it's not really suitable um

28:40: they more high level though like if you just consider like you know other engines because there's like enges like goo and we had conversations would it be

28:46: like use Goo and so on um we've kind of started like you know we are using unit

28:52: our rendering engine and over the years like like we just kind of run into so

28:58: issues where we know we don't really have control over things because unit is designed certain way and often times it

29:05: doesn't MH with the things we need because um resonite and specifically FS

29:11: engine they're a little bit atypical from like other games where most of Fus engine it actually is like a game engine

29:19: it just doesn't have you know it relies on some functionality to be provided by

29:24: other engines but for the most part like you know stuff that the unit is doing we're already doing with our own engine

29:30: in a sort of like different way which allows us to you know do all the sort of

29:35: cool things that res I does you know all the sort of interactivity being able to edit anything you know the implicit like

29:42: networking and so on that's given the design of our own engine so we already

29:47: got like you know most of the engine that's our own um and what happens like with

29:53: integration Unity that some of the bits they kind of get duplicated that's like like you know the same work is being

29:59: done twice by both for exension and unity which you know decreases some like

30:04: efficiency there's some parts like you know we kind of bump into how unit is you know designed um because like we

30:11: sort of end up like with this whole like game engine Within game engine and there just like all kinds of

30:17: kind of trouble that come from that it helps a lot like I don't think like I don't think if we didn't do that that we

30:23: wouldn't like we probably wouldn't be able to be here right now because it gave us like a head start but we do want

30:30: to kind of replace it with our own because we've got to build out like you know majority of f engine and the

30:36: renderer is like one of the last big parts that like we kind of need to replace and by having an engine that's

30:43: more designed you know specifically for our needs we can make sure it fits really well with like what we needed to

30:50: do or ring on you know third party engine um where it's not necessarily

30:56: designed you know and might also come with like lots of like you know other bits that like we don't care about

31:03: that's going to be slowing things down and bloating things up so it's the most efficient kind of approach is the one

31:09: that gives us most control um and also you know makes it like easier to like Sol all like

31:16: licensing issues as well however sauce is actually there not a engine that's

31:22: made completely from scatch is being built on a existing project called Bev

31:28: which uh is also a game engine but also comes with its own renderer so we're essentially you know utilizing and

31:35: wrapping like a third party render and like you know gin and like other people

31:41: have been kind of adding more bits to it to bring it a feature party so it's still kind of like you know using third

31:47: party project but like one where we can adapt it like you know pretty well you know to our needs and use it sort of

31:53: like a building block uh before that like you know s was using the a a forge

31:58: framework which is also like it's not a engine but it's sort of like set of building blocks to building your own

32:04: like render engine so it's not like 100% made from scratch uh but it's it's using

32:10: something where it's also like we're not like just utilizing you know under a fully fledged game

32:16: engine because we already kind of have like you know M parts of it so I hope this kind of you know answers the

32:23: question the next one is a gry k quick question why I'm here is there any ways

32:28: to get the components under known slot and the values of these components like slot field in reference field slot in a

32:34: read end right way so that sounds like you want like a component access which is something we do want to provide

32:41: eventually with like prolex so we can enumerate components and access the fields right now there's not really

32:46: official way to do it you'd have to like you know preset them set them like in advance with like Dynamic variables you

32:53: know and stuff like that um

32:58: the next question uh CH the fox author here's

33:03: something I was discussing with some friends and g a bit go do you think Source engine style 3D Skywalk is could have place in resonite there's massive

33:10: benefit of those being able to create objects that very fire away without being affected by fire clipping issues I

33:16: mean a system we could like you know look into like there's always like approaches and mechanisms from other

33:22: engines that uh you know like we might look into adapting so

33:28: I would say so like I would say like you know it's like a good to can create like a GitHub issue about it and you know we can like discuss it a little bit more

33:34: see what the benefits are see like how complicated it would be and maybe like you know it doesn't mesh like with our

33:40: approach and we'll see like maybe there's a different way to do it but um definitely something you know we can

33:46: think about um next question is from Shadow X now

33:53: that MMC has begun will you wait until the end of February to G in spotting support and uh uh you last time said

34:00: that I don't think I said that I was like just wait like I was waiting um

34:06: because I was traveling uh and I was like at the SE so like I didn't want to really see like you know when I was in

34:11: travel but now I'm back so like I do want to release it pretty much as soon as I can since it's kind of been sitting

34:17: in a branch and like some like a few things like fixed up and then ITI like optimized like in memory like you know

34:23: compression but um I'm not really planning to wait until end of February

34:29: like I don't really see much reason for that um but yeah like I did want to release

34:37: it like over like this week you know the one that's like over but uh there are some other things that kind end up

34:42: popping up uh so like it's kind of slid like you know in PRI because um we going

34:47: of deal with those but hopefully next week the next question is from bucket B

34:55: uh I've been wondering considering the recent implementation Place unit is building particle system is the eventual plan from resonite to

35:01: fully transition away from its Unity as it main engine instead of run everything on completely custom built engine for

35:06: sake of performance yes that's pretty much um like something I've been kind of

35:12: working on because like I mentioned earlier in the Stream uh Rite is already

35:17: it's like majority of it is already custom engine uh Unity is been handling

35:24: mostly like the rendering part plus like you know few bit with the bits um there have been like two things like kind of

35:31: like you know still making for extion kind of interweaved with unity which is

35:37: the particle system which is now you know able to be removed uh and the audio system which is going to be reworked

35:43: next so we can separate out for extension into its own process runet 9 which runs way faster than mono do which

35:50: is what unit uses and then you know use Unity as a essentially just a render uh

35:56: once that's done we also eventually replace Unity as the renderer for sauce and we're going to have like you know our own kind of custom solution um we

36:04: kind of devolved into this topic like in one of the the previous episodes if you go to our official YouTube channel uh

36:11: there's a video on how the performance you know upgrade is like essentially going to work where I can you know do a

36:17: bunch of like diagrams and so on to visualize you know how is the change

36:22: like you know how is the performance up going to work so if you're kind of interested more in this topic recommend

36:28: checking that video out uh it goes into a lot more detail but yes the gist of it is like you know we slowly piece by

36:34: piece moving away from Unity that's going to help a lot with performance when we split into a separate process

36:40: and eventually we just snip Unity out and have our own

36:46: renderer next question is from Dusty sprinkles uh new Josh question what is the rational behind Dynamic variable

36:52: stct nameing requirements this allowing such obvious make sense but other than that why anything else

36:58: um one reason is for that is because it kind of like um gives us space for

37:03: expansions so for example say we want to add new features you know say like um

37:09: for example wild cards I'm not saying if we can add wild cards is you know example but say like you want to do like

37:15: some more complex mapping we'll need symbols to use for that um so uh by not

37:24: like allowing to use any of them we can guarantee that the names are not going to contain them if we just allowed you

37:30: to use you know absolutely any symbols for like you know uh the dynamic variables what would happen is you know

37:37: then we would have like no symbols like left for the syntax because we wouldn't

37:42: know if anybody's using them or not because if if you were just using some random symbol and like now we decided

37:48: okay the symbol actually has this function it's like you know some kind of syntax now your stuff

37:53: breaks so it's pretty much like you know kind of giving us um give us you know the

37:59: space like you know for potential future upgrades it's also like so we don't have to like you know deal with some a

38:05: complexities of like unit code within those names and so on uh kind of running out questions

38:12: again ah uh next question is from I am

38:17: bad at names K I'm currently working on setting up doens of servers so that I may host dozens of sessions and my

38:23: friend is worried that hosting funds of Worlds will be AB bur resite servers kind of like dosing will this be

38:29: significant burden or would be IR for me to move on with my project I don't really see it like being like super big

38:34: burden like the server like they're kind of scalable um and kind like you know how many anals happening on them but

38:40: like generally I don't think that should be a big one issue there's already like I think there already like 100 like

38:46: heades like running like at any given time um so like it it probably not going

38:53: to be like super big an issue especially if there's like not much happening on those servers as well because like they do communicate with the cloud you know

38:59: for example the session information and so on but it also depends you know on the level of activity on those servers

39:04: so like if there's not much happening that's very like low you know it's going to be very low like on the amount of

39:10: traffic it causes and most of the actual like heavy traffic that's you know happening between your server that your

39:17: set up you know and like whoever is like connected to it so like I think it should be

39:23: good you probably need like a lot more like you know to kind of djust things

39:29: uh the next question is from erion uh what is the rational for that's the same question uh what is

39:35: the rational for the soling symbols other than SL in Dynamic variable names we just answer this one like earlier so

39:42: um hopefully you could the answer there uh the next question is oie is

39:49: asking I got perhaps a bit of a sensitive question in the past MC's I do know you are a bit careful on possibly

39:54: breaking updates given the next Focus will be audio reor du think there will be delayed to release till after this

39:59: month assume it could possibly be done this month uh I'll kind of see uh we

40:05: very likely run like a pre-release on it uh so like once it's kind of ready to replace things um we'll do a

40:12: pre-release since it's like a big enough change uh so you know how that runs we'll ask people like is this fine if

40:19: like if we see like you know there's not really too many issues um we might like you know just

40:24: relas it like to main uh it also depends you know how it's going to work out like you know timeline wise so like if it's

40:31: for example near you know if we would like have to do the swap like near the

40:36: end of the month when everybody's you know finishing their project we might delay it and which in which case you

40:42: know like it doesn't matter as much because like it's you know it's not delaying it that much uh

40:50: if it's sooner you know maybe we'll do swap then so we'll kind of play it by here but like if we feel this is going

40:56: to cause issues with people's projects we're going to delay it uh if you feel it's

41:01: not which is going to be you know informed by running a pre-release um and getting you know

41:07: enough like kind of feedback and get enough people to test it we might release it so we'll we'll see how it

41:12: ends up working out I still haven't like I've only been kind of like doing a little bit of like kind of research into

41:18: like that so like I don't know how long it's going to take like so we'll see

41:24: like I don't like have a timeline for it right now but yeah we we'll do what we can you know to avoid like animation

41:30: issues but it's going to depend on how things work out with releases or not um nukon is asking but we can still

41:40: use B thing with a DOT right I don't know what it

41:46: means should use that a symbol in my D Grand's names oh um now you can use it

41:52: like if like do dots are allowed to be like if it it essentially uses like a wi list system so like the way it works it

41:59: looks for characters specifically allows if it sees anything else it's just going to be like nope this is a wrong name so

42:06: if you can put a symbol in there you can use

42:12: it uh the next question is from Luca 07 did the Legacy particle system useed

42:17: gentic colliders for physics if so does that mean moving to photus are be completely free from un this physics engine no it actually didn't use physics

42:24: and it was like one of the kind of didn't use unit as physics I mean uh it was like one of the kind of more

42:29: complicated bits and like one of the bits that made it like a weird hybrid between FRS engine and unit because we

42:36: are not using this physics engine at all we're using the be physics engine which is integrated directly with FRS engine

42:43: uh the problem is you know that unit has no idea that physics engine exists so what we have to do whenever unit would R

42:51: like you know it's own simulation of all the particles for any particle systems that had collisions enabled we actually

42:57: read out the simulation results um then do sort of like you know check like how

43:03: the particles moved or like where do they want to move and resolve collisions

43:08: you know like justn like rast against be physics update the particles positions updated their velocities and you know WR

43:16: it back into the unity system and what this did did you know this kind

43:21: of um it added like you know extra steps like which decreased efficiency because

43:28: you know we have to like like we have to like re unit this data out then we have to like you know do sort of our own

43:34: simulation minute step almost like you know where we can allow like okay this part has moved like this way figure out

43:41: like where it should be recalculate and right everything back um with Photon

43:46: dust it just like resolves the collisions like as part of normal part of the simulation so it's a little more

43:51: efficient we have a little more control it's less kind of nasty because we had like a thing where it kind of like

43:59: plugged into like you know unit is like update pipeline to make sure the collisions get resolved at the right

44:04: time um so um yeah it's we haven't pretty much

44:12: like we haven't like been using this physics engine at all I think it's probably I don't actually know if it's

44:18: like disabled or we can disable it like completely but we've been using we haven't been using any parts of it and

44:24: even even the leg system was like doing B but it was a little more kind of convoluted do this with Photon

44:33: dust let just checking time oh still got plenty of time um check the fox author

44:39: is asking a bit curious question a bit curious architecture question I've had

44:45: are you planning to introduce a system that will allow local hierarchies and World data model at some point right now

44:50: if you for example have heads up display for certain user it still needs to exist on the data model for all users you can

44:56: drive the enable State locally already but it doesn't remove the network overhead for something others will never

45:02: see so interally for extension supports this it's actually using that for like a

45:08: lot of things that you might not even realize because uh for example any uix

45:13: what actually happens it creates local slots and it sets up like you know measure Enders it sets up like you know

45:20: asset providers you know and all things on those that are local to you because

45:25: the components that are with within the data model um the components that are

45:31: within the data model um they are synchronized and those

45:37: components they fully Define what the state should be then the local

45:42: ones uh the these components you know the local ones they create you know all the materials and everything um there

45:50: essentially to implement that shared State and that doesn't need to be synchronized because everybody has the

45:56: same synchronized State you know for example of the U canvas and of its structure so the render components can

46:02: be purely local U because they are pretty much like deterministically computed from the shared State uh it's

46:09: the similar thing you know with particle system because like what Photon does does um the components actually set up

46:17: local slots which have like you know renderers on them like the ACT components that like you know are

46:22: responsible for rendering out like you know the particle buffers and so on on so there's a number of things you know

46:29: that cannot use it uh even things like you know if you for example override you know people's name tags uh let me

46:37: actually see if I can do that so you see like we have like these name tags and these are actually in the world if you

46:43: switch this if I switch this you know to um custom name tags these are actually

46:49: local like you will not find these you will not find these in the inspector

46:55: because inspector doesn't show local slots uh but this is technically an

47:01: injected local slot under like you know wherever the hierarchy is so like this

47:06: allows us to like show name tags that like you know the user pretty much you know has

47:11: no control over so it's kind of used to implement you know some features where like we

47:17: want to give like a local control it creates some Oddities because um for anything that is local uh it

47:25: cannot be referenced by the data model because it doesn't exist for every user so the kind creates like you know some

47:31: kind of complexity so like the systems that are local they can reference things you know that are in the data model but

47:38: not the other way around and that kind of creates a little bit of complexities for interaction um you would want to provide

47:45: systems to like you know work with this uh the problem is you know how like

47:50: probably need to introduce like a bunch more kind of generalized mechanisms to be able to like utilize this properly

47:56: like one use for example might be say you're like hosting a server for a game

48:02: and you want to have like you know state of the game and logic that you want to keep hidden from everyone in the session

48:07: you can have that part be part of the local hierarchy that way it doesn't get synchronized but it's still affecting

48:13: the synchronized P of the data model so that would be like you know a mechanism where you have something kind of

48:19: hidden and you know they never gets on the other users uh but we don't need like you know

48:25: mechanisms to do that for stuff like um you know heads up display um it might be

48:33: a little bit like trickier because like some things like even if it's something you can potentially see we might want to

48:38: keep them like in know part of data model because there might be know other interactions with that system maybe you know something Avatar that wants to

48:45: reference that and so on so instead like in those cases what we would what we want to do is like introduce things like

48:51: the cascading asset dependency system which will allow us to like check okay like this is

48:57: not enabled for this user so we don't need to like load and update any assets within this hierarchy until it gets

49:02: enabled because one of the things you could do uh is you know say like you want somebody's help you know maybe you

49:09: need to fix up something in your head and you can just you know you can like unhide it and you can you start messing

49:15: with it and other people can help you with it and so on and if it was like pure local like you would lose like a

49:20: lot of that so the way it's probably going to work is you know you're going to work on things that's part of share data model and then you can decide

49:27: I'm just going to move this you know the local one I just want to don't want this to be part of like you know the share

49:32: data model but then also limits you know the level of interaction you can have with it because like even something like

49:38: you know like selecting local stuff with the developer tool type you can't do

49:45: that because the developer to TP needs to reference it and it's canot reference it because

49:51: like you know you cannot reference local stuff from the shared data model stuff

49:57: so that stuff just wouldn't work but there's probably going to be like you know mechanisms to kind of do that kind

50:02: of thing in the future we just kind of need to like formalize it and design like good ones that uh um allow for like

50:09: good workflows with this kind of thing uh the next questions uh uh Mara

50:18: can art is asking I recall you've mentioned that udm won't be support anytime soon uh could expand if you have extra

50:25: extra time if Limited integation of say model with up to 10ms and only single

50:31: standard Shader could be supported sooner or would it just be double the work down the line yeah it's pretty much

50:37: like so right now like we're a weird State like where we want to move away from unity and it's work being put into

50:43: sauce which means every thing every Shader that's going to be added needs to

50:48: be reimplemented later and usually The Limited integration it might like it

50:54: just makes things more complicated because like when you do limited implementation youti cut corners and

51:00: when you cut Corners you know you kind of sort of bake things into like you

51:05: know how everything else works like like for example how the renderer works and when you do that it actually makes it

51:10: harder to move it to another system because like you've cut Corners you know

51:16: in making it more generalized implementation to make it more baked in with whatever you're using at the moment

51:22: which means if you change what you're using like you know which render you're using that actually makes it harder to

51:27: like Implement so um yeah it's probably I don't think this

51:34: is likely to happen like maybe if there's like a lot of interest in it like if there like you know if there's a

51:39: GitHub issue we get lots of up votes there's like you know maybe some business use cases we might decide to

51:45: eat that cost of you know implementing it now and do it but you know it depends

51:52: like don't need to be like significant interest in it otherwise like we probably just going to delay it until

51:58: later um and the other keyword there is like

52:03: you know extra time like we never have extra time it's already like I it's already

52:11: like like of times like when like at least for me like I end up like wishing like I'm like I wish I had like more

52:18: normal time to work on the things and supposed to be working because there's things that kind of inject themselves in

52:26: and I'm like like I need to I need to do this thing that's urgent so I can work on this other thing that's urgent so I

52:32: can work on this thing that was supposed to be working on the first place because now the bunch of them kind of stacked in instead so

52:39: um I think I mean if they're s to get up isue they com like making one seeing

52:45: like like you know if there's like a bunch of like interest in it but I right now I think it's like not super

52:52: likely at least like you know not until me move to the engine because one of the we also there's actually another aspect

52:58: of this um one of the reasons we want to move you know to custom engine is

53:05: because they allow for making custom shaders and with custom shaders what we

53:11: essentially do instead of you know us having to be like say like you know people from your community you request

53:18: you know 100 different shaders that you want for different things we could either you know spend time like

53:23: implementing every single one of them ourselves and like when we Implement them you know they need to support them

53:30: and we need to like you know if if you need changes or if things are not implemented the way you needed to that's

53:35: additional you know time we need to spend with each one one of them and we will not have time you know for that

53:41: many shaders but if we invest our time into making solution that lets you

53:47: implement shaders or you know or anyone else in the community now we kind of give you the

53:53: power you know to like essentially like if you need a Shader you're not relying on us anymore you can just Implement

53:59: yourself or you can ask you know somebody knowledgeable to do it for you because now there's a system to just

54:05: make them on your own um and that like even though

54:12: um even even though like you know like it's um what's the word even though like it's

54:19: like you know bigger chunk of work to like do Implement you know switch to engine

54:25: Implement custom Shader support or in the long run like once you consider like you know the hundreds and thousands and

54:30: eventually dozens of thousands of all the shaders that people could be implementing or people could want it

54:37: ends up being like you know the better choice in like long term so that's kind of like you know how we can approach

54:43: like things a lot of times is instead of like us solving lots of individual problems we instead of like you know

54:49: provide tooling to solve them generally and give like everybody in the community more power on how things work

54:58: um next question is from Grand de K have you heard about Stu divs as a tool to

55:03: use in development it might be something you could look at I'm actually not sure about like stack

55:09: diff so I don't know like what it could be talking about maybe

55:15: um well let me let me see what it looks what are the let's see that's just going

55:20: to drink a little bit of soda because I'm getting thirsty

55:27: [Music]

55:49: uh find anything I might hope like like like if we could like you know explain a

55:55: little bit more you mean by those yeah it would help to explain um

56:02: like how those differ or or if they differ or yeah actually just what what

56:08: the heck are those yeah like this but I don't know like exactly what stuff tips are and like I don't

56:15: like in what development it says they can provide a video to watch after this yeah but um

56:21: yeah we won't be able to answer it like during the stream uh next question is from shck

56:27: foxter are there any specific future plans you have for's Avatar system either new features or improvements to

56:34: existing stuff yeah so um let's

56:41: see uh so you know this thing oh didn't

56:46: spawn in the right spot you know you know you know this

56:53: thing it's going to get thrown into fire this thing is horrible yes it's very old

57:00: it's very like makes little of kind of like assumptions and things um the workflow is like you know not where we

57:07: want to be the thing I kind of want to do like you know with our Avatar system is make it it's more sort of dynamic

57:14: there's actually few aspects to it like one of them is rely a lot more on her

57:19: sticks because the original it wasn't really built with much Herer sticks and when we try to add some Herer sticks you

57:25: just got to breaks because it's kind of spread out on multiple Parts like there's the INF

57:31: like you know try to align hands and it's just kind of often times l a weird thing it's one of those things like

57:38: where it the Avatar is like not designed to work with horis stics so it kind of just doesn't work right but we have like

57:44: know hor stics that are part of the other system so what we want to do is with the new

57:50: Avatar system is make it like you know where if you want to convert something to an avatar um one

57:57: it will like for initial setup it'll just try to figure out as much as it can so ideally you don't even need to do

58:03: anything extra we just you know say make this an avatar and it figures everything

58:09: sorry it figures everything out the other part is we want to make it so you can redo it so for example you

58:16: know if you need to adjust offsets for your hands if for your head um you can

58:21: you know you can reopen the visuals on the Avatar like any time and you know do

58:26: like more modifications and do more tweaks that way like you know it's not just like one time process but it's going of gets back thin uh but like you

58:34: know parts of that system you can you know sort of like rain voke at later times so that would be like one part of

58:40: it um the other one is like you know must ik making so you can you know for

58:46: example select the bones if it doesn't figure the bones out uh you know during

58:51: the import like you can just say like you know this is the you know this is the hip bone this is the spine bone this

58:57: is this bone so you can you know fix things up and you know kind of change them at later time too because I is

59:02: another component that like you need to be sort of initialized in the setup and then um once you kind of initialize it

59:10: um it's sort of baked in and it's kind of hard to change so there be like another thing to change

59:19: um so yeah like there a bunch of things I mean there's probably a bunch of other stuff to like just generally because AV

59:26: Creator like it's not a single thing there's like multiple systems you know one of them is just importing toes in

59:32: the first place uh which is its own system its own characteristics then there's you know the when you actually

59:38: make it into Avatar where it kind of instructs it with things and sets up all the slots and components and everything

59:44: so part would be kind of like unifying some of that too yeah just like the whole import

59:51: pipeline in general is a little a little old and cobwebby still yeah we're going

59:56: to like replace like it's actually one of the things because there was a question like you know last week about open sourcing and one of the things I

1:00:02: want to do with import pipeline is making more modulars so instead of uh you know we just kind of because right now it's kind of like this kind of big

1:00:10: function that like decides which type of AET it is and then it triggers various importers uh but also like all the

1:00:16: import functionality it's sort of like baked into the engine like it's kind of compiled with it what I want want to do

1:00:22: is instead provide an interface um interface for generally

1:00:28: specifying importers and exporters so like you know and like which then hook

1:00:33: into the generalized system which is going to invoke those and it will make it much more easier to like add more

1:00:39: importers you know uh and more exporters to the system uh we also be able like

1:00:45: you know to separate out over the codebase and you know open source these so you can you know look at how they

1:00:50: work uh you could make your own Forks you could make your own like you know modified like versions which pretty much

1:00:56: what Forks are um you could build your own Imports you know add them to the system share them with others so just

1:01:03: revering that system that's going to I think be like very beneficial there's like another thing that's it's going to help with because um one of the

1:01:09: limitations that we have is sometimes like you know the system will try to figure out what type of asset something

1:01:15: is and it usually uses like the combination of the header and extension the problem is in some cases that's not

1:01:23: enough like for example consider something like you know a GI because a GI it could either be a

1:01:29: texture when it's a static one or it could be like you know like a video or something like when it's an animated one

1:01:35: similar with like you know pli uh which is actually is used for 3D meshes but

1:01:42: also it's used for gassian splits and you need to kind of read the Heather and stuff like to figure out what it is but

1:01:47: right now the system doesn't have the flexibility because the determination of the type of asset happens you know

1:01:53: before the importers even go and then the importers like a know left to that choice so what I want to do with the

1:01:59: generalized system um make it so like each importer is like it has a mechanism

1:02:06: where it can be asked this is the data I have is this something you're able to

1:02:11: import and it's going you know do a little bit of analysis and determine okay like maybe I can do this one maybe I don't do this one um it's a similar

1:02:18: thing also like you know when you import like for example like you know some URLs like for example Blue Sky

1:02:26: uh where sometimes you know it Imports as a video even though it's not and it's because the Importer doesn't really have

1:02:33: you know that flexibility um so leg working need like

1:02:38: adding that flexibility is going to help a lot like in lots of ways uh next question we have from oie

1:02:47: when looking at Grabbers in flux I noticed you can get user Grabber by B note not by kity is that a future work

1:02:55: for multiple Grabbers Yes actually it is uh it's literally there so you know you

1:03:01: can Define Grabbers well actually there's another reason for it is because like uh originally FRS engine it used to

1:03:08: be very controller Centric where the controller was the main node and your avatars were mostly built controllers

1:03:15: and then virtual reality it started moving towards instead of the controller representing your

1:03:22: hands and and this was actually added so like you know this Sy can distinguish

1:03:27: whether the Grabber is supposed to be on the controller or supposed to be on the hand um so it was like one of the design

1:03:34: decisions but also it allows you know you can just say the Grabbers you know on the mouth if you want to if you want

1:03:40: to you know make a system where you can have a grabber and you you know Chomp something and you grab it that way and

1:03:46: maybe want on your leg you know or something so it makes it

1:03:54: flexible um oh then uh gr is actually saying uh as a bar to describ active so

1:04:00: you're working on feature a and finish it but can't push it yet and you want to work on feature B which requires feature

1:04:06: a stack divs give you a workflow back by tools to do this so you can keep working on features there in wait for things to

1:04:12: be mer or pushed I mean we kind of do this sometimes like like I don't know if it's stck D but like you can essenti

1:04:19: like with kid I because the question is like you know how does it work with kid because like one thing we do is is um

1:04:28: we you know we'll make a branch to work on a feature and then it needs like another thing so we make another

1:04:35: Branch um which allows us you to kind of work on that while the thing is not pushed yet so like it does like happen

1:04:43: so there's a layer on top of get we're going to explore it but um the problem

1:04:48: is like you know like usually the way like you know for w think things to be

1:04:54: mered or pushed it's not like it's not like a thing that like you know there's not a workarounds for it like we

1:05:00: could kind of you know keep working on things but when things exist for too long on branches and there's like work

1:05:06: on multiple branches the problem is they get out of sync and at some point that

1:05:12: kind of becomes unmanageable it also becomes like a problematic because say

1:05:18: you you need to push feature B and because like it depends on feature

1:05:24: a you cannot push feature feature B without pushing feature a so like you know like I don't think it

1:05:30: would like really you know solve by that way a

1:05:36: mechanism um so it's kind of it gets a bit complicated like there this is like

1:05:42: a thing that like we kind of run into sometimes is like where I generally you know when we collaborate on code prefer

1:05:49: keep things more smaller do them in phases and like merge them in as fast as possible because if something exists on

1:05:55: the main like you know in a branch for too long it diverges and then we have to deal with you know the those differences

1:06:02: and marriage conflicts you know and maybe like this thing is not compatible with this and then the branch becomes a

1:06:07: mess and that takes you know time to deal with so it's often times it's not you know that

1:06:14: like you that you physically can't you know keep like working on things that way but it's like it start to costing a

1:06:20: lot of time and that maybe makes it you know so you cannot meet you know deadlines for certain things or it makes

1:06:27: things take longer or maybe just you know things become like too converted it becomes harder to kind of

1:06:33: you know keep all those kind of paral things you know in in syn and in your

1:06:41: mind uh but yeah like we could like look at it like I don't like without

1:06:46: understanding what it is like I don't know you know how this would help in this kind of scenario so we'll see like

1:06:53: send send the video and we try to have look uh the next questions from Jack the

1:07:00: fox author one thing I'd like to see at some point is the ability for objects to save items dedicated furer in inventory

1:07:06: on your behalf but the biggest thing I see standing in the way there currently that's not a m mechanism for inward objects to have been trusted context

1:07:12: between you and object like permissions to save on your behalf and where to save too uh so there's two questions here

1:07:19: first what kind of safety mechanisms for sh things are you planning in the future um I'm just going to tricky one

1:07:25: so like it depends so like one of the things that kind of comes to mind with this is like

1:07:33: we uh want we want to add as part like you know of the hard permission system

1:07:38: sort of a way to track um we want to you know track the

1:07:45: sort of history of the object in a way like who owns it so that way like say you have an

1:07:52: avatar or a tool and the tool wants to have access you know to

1:07:59: inventory uh you only want to give it access if it's something you know you spawn from your own inventory and you've

1:08:05: given it the access so we need the system to be able to say you are the

1:08:10: user who spawn this thing therefore it has those permissions to do those things

1:08:16: but only to your inventory um the problem is you know uh people

1:08:22: might end up doing stuff like where they spawn something then make something spawn on your end you know to try to

1:08:29: make it look to the system like it's yours and that's the part like you know where the hard permissions would kind of

1:08:34: deal with that where it would know this thing is trying to spawn

1:08:40: something even though it's trying to spawn it on your end uh you didn't spawn the original

1:08:48: system therefore it doesn't whatever it spawned doesn't have your permissions you know it has permissions of like you

1:08:53: know the original user uh so I think like that kind of system

1:08:59: could help with these things where sort of like you know like some things will have like you

1:09:04: know certain privileges based on their sort of origin you know in the world and

1:09:09: some things you know maybe part of the data model says like you know this is original part of the world this is been

1:09:15: spawned by The Host this has permissions you know to do certain things like for example with our permissions you might

1:09:21: be able to say uh users cannot you know apply Force to each other like you cannot like you know use a tool that

1:09:27: Bonks somebody unless it's something that actually came from the original World and kind of you know keeps track

1:09:33: of that and anything else that you introduce later doesn't have those same

1:09:38: permissions um there's still like one issue with kind of system uh

1:09:44: where people could make gadgets they try to utilize things that do have

1:09:49: permissions and make them do things you know they want uh you know sort of like say like

1:09:55: you made an item that like allows to save the inventory um and then like somebody

1:10:01: makes something that like hijacks the item and save stuff that you didn't want to save um with that case you know like

1:10:10: also like very hard PRS with kind of help because we can say you know unless

1:10:15: this part of the object can only be interacted you know with objects that

1:10:20: also have like you know this origin if anything else startes to modify it that will either

1:10:26: not work it'll like not allow it to make modifications or it'll make it lose its permissions so I think those kinds of

1:10:33: systems would help like with these the other approach is you know like if you if something wants to save something in

1:10:38: the inventory it essentially shows a prompt this thing wants to save do you want to give it permission to save this

1:10:44: item or not you know that way the user actually has a choice they're informed and you cannot get around it because

1:10:50: we'll show the dialogue in the user space and we have like you know some protection so you cannot spam it either

1:10:56: uh kind of like you know like when you open hyperlink so it's like another approach but it does require user input

1:11:02: to let it through uh still good on time

1:11:08: uh second uh so this continuation second do you think this could be implemented saving items on your behalf would open

1:11:15: up arguably res as most powerful feature to be utilized by user Creations inventory yeah I I don't think it's like

1:11:21: pretty powerful thing um like you know you could like make make like lots of kind of systems for that uh but you know

1:11:29: it is like one that's dangerous like the other part is like you know if say um

1:11:36: you want to save like items you could uh we could have like a system potentially

1:11:42: where like you grant permission for the world to save the specific part of your inventory and also give it like you know

1:11:48: some quot size but that also has complications because now we need to like you know track that and so on so um

1:11:56: is something we could add we also like think about like you know the secret implications usually

1:12:01: when it comes to things like that we tend to be like cautious with it because like you know the potential for abuse is

1:12:07: like potentially big and if like you know there is abuse and we need to change how the system works that can end

1:12:13: up breaking Creations so um prefer like you know just kind of take it slower

1:12:20: with those things and kind of like you know Russ a solution and then cause a bunch of

1:12:27: issues so that kind of clears out like the questions we have for now

1:12:33: um is it time for Ramble I don't know if I have any I had a ramble um but I

1:12:39: forgot about it so I don't remember what it this um uh do you have a r oh there is

1:12:47: one thing actually that comes to mind though uh I don't know if it was already announced like at the moderation of his

1:12:53: hours uh but one change we'll be making uh for all the office hours because we

1:13:01: can of run these like you know like at specific times and not everyone is able to like make it into these so if you got

1:13:08: a question and you're not able to ask it because you know you're not able to be you know present for these live streams

1:13:14: uh what we'll do uh at least for now uh we'll make a like a post on the Discord

1:13:22: where you can ask your questions in advance and then like when we have you know some free time you know during the

1:13:28: office hours themselves uh we'll go through those questions and get those answered so even for people who are not

1:13:35: able to like you know participate directly you'll be able to you know ask your questions and get you know answers

1:13:40: to them that way think this going to like you know help a of people in different like you know time zones or if

1:13:46: you might be you know at work and stuff like that and give like you know access to these like

1:13:52: Q&A so there probably going to be like a pain like you know after this like make the post I don't know if moderation off

1:13:59: might have already done

1:14:05: this uh I'm actually not sure but yeah we you'll see it thing and there more

1:14:11: questions you know uh we still got about like uh 45

1:14:16: minutes yeah just about I think do I have a ramble do I have a

1:14:23: ramble H I have a I'm going to get more

1:14:29: soda let's see do I have a

1:14:45: ramble ah there is there is one thing uh we have a

1:14:52: question I mean I we could could also go like you know we don't have to insert like right away true

1:15:01: um I what one of the things that I I'm like a I I'm really excited about is

1:15:09: like um the ability to gosh I feel like a broken record

1:15:15: whenever I say this now I I'm really excited to be able to do like uh shaped

1:15:20: sweeping and stuff I think that is super cool being able to like throw a shape

1:15:27: into the scene and like see where it hit and whatnot is really

1:15:33: neat um it opens the door for a lot of things like you know you know making

1:15:38: systems to open doors Yes actually making systems to open doors uh you know like swinging

1:15:46: swords and stuff and having them actually be able to

1:15:51: properly kind of collide clash with um

1:15:57: like geometry or even with or even with each other if they both have colliders on them that you can

1:16:04: sweep gives a all more flexibility to things get to like you know probe the

1:16:10: environment and see like you know what happens and that as were kind of interacted with

1:16:17: it the it's it's neat cuz you can actually give them like an angular velocity so as they proceed through the

1:16:23: sweep they can can like tumble through the air so like they're good at

1:16:29: approximating um simple like let's say you have a grenade you could use a

1:16:35: capsule sweep for that and have it like tumble through the air and like actually

1:16:41: you know if the grenade is like sideways you know it's not going to

1:16:48: hit the thing above it um and stuff like that gosh it's kind of hard to explain

1:16:53: this and it's also like a thing like the

1:16:58: physics engine in general like internally it uses like sweeps to figure out like collisions between

1:17:05: things yeah uh I guess we do have some questions now have questions I'm over I

1:17:11: mean this one's kind of rambly too because uh Mara Canard I'm also not sure

1:17:17: if I'm pronouncing your name correctly sorry if I'm not uh is asking was your dream feature you'd love to implement

1:17:24: but for one reason or another is not yet possible I mean there's a bunch um I

1:17:32: actually the one I'm going to say custom shaders because like you know we kind of talked

1:17:37: about it so it's kind of fresh on the mind because I feel it's one of those things that's you know going to be

1:17:44: really fun because you know you sudden have like full control of visuals and you have the power of the GPU you know

1:17:50: to accelerate it so um if you're familiar with a website called uh Shader

1:17:55: toy it's like this this thing you know where um it's this kind of thing you know

1:18:03: where you can um essentially just make all kinds of shaders to do like you know rearching stuff and cool visuals and can

1:18:10: share with the community and can play with them and see their code and I kind of expect you know something similarish

1:18:17: happening here like once we have dead when people like you know just make all kinds of you know crazy

1:18:23: visuals uh that are you know super smooth because they're like you know GP accelera and everything

1:18:29: but right now it's not really possible because you know we're still kind of tired you know the unity uh but I don't

1:18:37: sure it all be so it's um it's also like I it kind also depends like what do you mean by not possible because you know

1:18:44: like some things are not possible because we don't have time for them right now some are not possible because

1:18:49: we need you know some prerequisites and so on uh so it's a

1:18:55: um there's a lot of things I kind of think about like the others like it also depends what would be like theam feature

1:19:01: because there's just a lot of features I really want this to have but uh it just

1:19:07: takes time the is your what physic is actually another one that's going to but this

1:19:13: going to become like easier like once we do the switch to net 9 because uh this going to give us a lot of like big

1:19:18: performance boost we're going to syn up the latest B uh so it kind of puts it back on plate of Poss posibilities

1:19:26: uh but yeah there's a bunch oh one one I kind of like want to do is like um once

1:19:32: happens with a separation I've kind of talked about this is like where you could run part of resonite as an

1:19:37: overlay uh so you could actually you know have your dash you know be on top

1:19:43: of other games you know for example like VR shed or you know Minecraft in VR like with W with wcra and other VR games and

1:19:50: create sort of interactions with you know other bits actually if you go even further I would say like having resonite

1:19:56: for augmented reality because there's not really much commercial available like you know augmented reality

1:20:04: Hardware so imagine like you know imagine you have something like this you know you

1:20:09: have like a brush and this brush you know is already developed it like you know already does things and so on uh it

1:20:16: operates in this world which is like a fully VR world but it doesn't depend on it um we like if we C reson

1:20:25: on an AR Hardware you'll be able to like you know spawn things like

1:20:30: this and just like you know draw on top of like the real world because the brush you know it's

1:20:37: the same it's just like you know instead of the instead of like the world being like you know 3D is a pass through but

1:20:44: then you have stuff that renders on top of it including these brushes and we already have interaction systems we have

1:20:49: all these you know complex things so you can use tools um you know same with the

1:20:56: developer tool tip if you have you know if I grab this and I have some objects in the AI layer I could still you know

1:21:02: select them I could edit them I could do prolex you know all of this all these

1:21:07: gizmos they can still render on top of like a real world instead of like you know the virtual one so I think that's

1:21:14: like one of the kind of dream things that I think is going to be really fun but there's not possible kind of do to

1:21:19: like of like you know good hardware and us not being you know uh there yet with some

1:21:25: things and it's going to be a lot of fun the other cool thing is going to be like you know with ar Hardware is like you know say you're in your room and you

1:21:32: could actually have somebody join in their Avatar I could for example be in my room and just see like you know s

1:21:38: joins and because they headsets you know they can have like a scan of the room he can see like you know approximation of

1:21:45: my room and he can move around in it and I'll just see him like moving around my room looking at the things I have there you know I think that that could be a

1:21:52: really cool feature but um um not possible right now not

1:21:59: yet maybe do we have a dream feature does not

1:22:05: possible I want to import 73,000 trees that's not as man I think it's

1:22:11: going to um I guess more so like

1:22:19: to what that's actually alluding to is I I want like a proper LOD system

1:22:26: yes um cuz we do have an LOD component um which is kind of it is kind of like a

1:22:33: a carbon copy of unities right now yeah but unfortunately it kind of keeps all

1:22:39: like the lods in memory too so like it's I kind of regret about doing that

1:22:45: one yeah now we got to support it I'm probably going to convert to

1:22:50: something um but yeah this is those are features I also like think about them a

1:22:56: bit more I'm also bit no thank you for those right now have to like usually what I do is like sometimes

1:23:03: I go to the GitHub and I'm like okay like these are actually I do have a thing I have on my GitHub I have like

1:23:09: you know fun features that I want to work on so I could like L check that um

1:23:16: thank you for subscribing tattoo thank you zatu

1:23:21: yay Tatu has been activated by the three

1:23:27: that's because he has a he has a he has a map where there's there's a lot of trees around and he wants to live in a

1:23:33: forest he wants to live in a forest that's going to be cool there actually there's been like systems where somebody

1:23:38: made like a where it sort of like just repositions the trees and there's fog so like you can have like really big dense

1:23:43: forest and but you cannot tell but it's also like you know very specific

1:23:49: system um let me see

1:23:55: uh what was one of the things let me just check this

1:24:05: uh so on GitHub um I have specific Board of uh FRS fun Fu good issues and there's

1:24:13: a oh there's a bunch well some of these are like possible right away um special

1:24:18: variables DSP in-game ver oh ingame ver vertex level measured I thing that one

1:24:25: but these are kind of like technically possible just question of prioritization uh State machine generic

1:24:30: collection generic generic th system I talked about this one faceing gener timeline system CL simulations well all

1:24:37: these are kind of possible like they I don't this this GitHub is not no

1:24:43: use they're possible like you know if if I decided I'm working on this now like it's possible so it's more of a

1:24:49: prioritization thing anyway let's move to the other questions um next one are

1:24:54: from Powder pup how have things been going with a recent switch from asset Vari system to Linux uh that one

1:25:01: actually might be better to ask like in probables of his hours because uh he's uh he's the one who's been kind of you know uh working on that one uh as far as

1:25:09: I know like it's working well like I think he said has like you know some issues to wrap up there uh it's not been

1:25:15: merged yet like to the main line he's still kind of working on it so he hasn't made like a PR for it yet but it's

1:25:20: probably going to be coming soon but yeah we give like more details um asking his office hours I don't have like super

1:25:27: much info on this one it's very exciting though for me because like um one of the

1:25:33: things that been bugging me is you know that like on Linux we just cannot drew the compressor Library uh because they

1:25:38: don't provide pre- compiled liaries for it um so like you know the Linux

1:25:44: headlight and Linux said variant like cannot actually compute all the variants it needs to and this going to this is

1:25:49: going to bring it you know to the feature par um so this is very is a very

1:25:55: exciting development the next question is from Navy 3001 how much work is there for the

1:26:02: audio switch from Unity so right now it's a little bit hard to estimate because like uh i't like got into the

1:26:10: full swing of it yet but um there's like a few sort of like Milestones that kind

1:26:17: of need to be hit because uh I did cover this in one of the previous resonance

1:26:22: office hours like you know the technical details of it so there's also a video on our YouTube channel I recommend checking

1:26:28: that one out you know has graphs and visuals and everything uh overall I started doing some research on how you

1:26:34: know to integrate with a steam audio um and there's like several parts of the system that need to be built one of them

1:26:41: is having way to Quire the space you know for audio sources which we mostly

1:26:46: have because we're using the be physics engine and we already have like a sort of like API where we can like you know

1:26:52: register things in bounding boxes and update them and then query that because be has like um very efficient

1:26:59: algorithms for spatial queries so I'm probably going to know adapt that maybe

1:27:04: generalize it a little bit more because there's other systems I want to use it for like spatial variables uh the other

1:27:11: part isn't going to be building like the actual audio engine which is like when once it queries you know all the audio sources that are within that could be

1:27:17: like you know listen to it in specific location um then it will need to like build a list of like okay these are

1:27:24: audio sources it's going to sort them by the priority so like you know the ones with the highest priority other one's

1:27:29: going to be playing and if there's too many audio sources is going to you know have a cut off at some certain point because inall with you know the CPU

1:27:36: usage on how many audio sources it can mix and then for each of the sources it needs to compete appropriate effects it

1:27:42: needs to you know it need to sample the source audio data it needs to apply you know stereo ping spatialization you know

1:27:49: other effects Reverb um other things that all need to be resolved uh and then like need to mix them together to

1:27:55: produce final audio output um so it's mostly that it's I expect it to be way less work than the

1:28:02: particle system because the particle system in general has a lot the audio system in comparison is relatively

1:28:08: simple we already have like you know most of most of the actual the decoding of the audio data and so on that's

1:28:14: already done in Fr engine so you know that kind of stays the way it

1:28:19: is um and it's mostly you know just it's mostly just kind of like the

1:28:25: resolving you know which audio sources are within a certain area and applying the appropriate effects and already I've

1:28:32: been kind of playing with the steam audio library and a wrapper for it so I can have better feeling on how it

1:28:38: works so I think it's probably just a few weeks of time we'll see how things go sometimes they end up like rabbit

1:28:45: holes but I think it's going to be relatively fast hopefully we'll see

1:28:52: that's kind of like the just like that kind of need to be done and then like you know one thing that needs to also happen is like going to decide if you're

1:28:59: going to pipe the final audio well uh we're going to pipe the final audio into unity and have Unity outputed

1:29:07: or if we just going to you know use like CS score and just output it ourselves in

1:29:12: which case you know there's like some things that I figure until like see does this work properly you know but proton

1:29:18: and Linux and so on so like there's things there that need to be investigated and we'll see which

1:29:25: one's less work or which one works better uh next questions from Jack Fox

1:29:33: auor when we get proper rigid body support how do you plan to handle Network synchronization I feel that uh

1:29:39: uh when it's un SED by one and the network it carate lots of traffic and be somewhat choppy depending on network

1:29:44: output but similar thing fully locally would open up system to deing which kind of would not work with for extension design principles and also make me sad

1:29:52: um so yeah like usually physics so I don't have specific details for right now because like part of figuring out

1:29:59: how exactly it's going to be synchronized that's part of you know of working on the system so and because

1:30:05: like we have not working on the system yet like you know we don't have those details in general though um how this

1:30:11: tends to be approached like this there sort of like two major approaches you can use for synchronizing physics One is

1:30:19: using something called Lo step synchronization or lock step simulation where you make sure each user simulates

1:30:27: with the exact same inputs at every you know at the same rate and you essentially sync up all the inputs

1:30:33: between them make sure they're all same and you perform simulation St locally uh

1:30:38: the problem with this is like one you need to make sure all the inputs are the same which on itself is a you know

1:30:44: challenge for a lot of things but also the simulation itself needs to be fully deterministic which with the B physics

1:30:51: um you can technically do it and but it has like additional performance cause because you know multi

1:30:57: trading tends to be more stochastic and also like it might not be the terministic anyways if you run it on

1:31:03: different platforms because different CPUs might produce slightly different values for floating Point calculations

1:31:10: with end up accumulating over time so we're very unlikely to going to

1:31:15: use this approach uh the other approach is like you know you still are on the simulation locally on each user and you

1:31:23: keep synchron izing Corrections so you essentially you know

1:31:28: keep like sending the status and usually when you encode the states of the rid bodies you use some mechanism you know

1:31:35: to kind of compress it so like use stuff like quantization to like reduce and then like use Delta compression uh to

1:31:41: just reduce how much data you're sending and maybe you're not sending it you know super frequently you're just sending you

1:31:47: know no Corrections because most of the time the um because things already kind

1:31:53: of synchron most of the time like the behavior and movement is going to be the

1:31:58: same and what happens is you know that you want to avoid like a drift over time

1:32:05: and if you if you just lift it like that you know over time it's going to drift and the error is going to be large and then you're going to see like you know

1:32:10: this inconsistent between users but if you apply frequent enough Corrections it kind of keeps you know the drift from

1:32:17: becoming too big so that's probably the approach we're going to like

1:32:22: use um but for like exact details of it like you know I can't tell you right now that's going to be part part of the work

1:32:30: itself next question n con speaking of shaders how does intersection material

1:32:35: work is it particularly Havey to calculate or does uh uh does something simplify or accelerate it it's actually

1:32:42: simple math like it's very efficient to compute um like I can actually draw it

1:32:47: maybe uh how do you typically do like intersection so when you are r in

1:32:54: something uh do I have a nicer material something brighter can you see this easily does this show on the camera

1:33:02: wellbe I one of my glow one how about this I can I can punch in

1:33:08: the fov a little bit maybe uh hold on let another thing actually hold on um

1:33:15: let me do this I'm going to switch it to manual we I set it up like for this

1:33:21: board and we haven't haven't drawn it the whole time it's kind of it's ironic isn't it

1:33:32: yes anyway uh so if you're doing like intersection like you know um there's an

1:33:39: easy like like essentially when you think about it you know when the Shader runs it's just you know um it's

1:33:46: rendering pixels on your screen so say you have like you know you have some kind of object I don't know what this is

1:33:51: it's some kind of blob uh you have an and you know it's composed out of like you know lots of tiny

1:33:57: pixels so what your gpus is doing as it's kind of rendering it's kind of you know it's going to be Computing the

1:34:04: individual pixels on the screen uh so you have a something called

1:34:09: a fragment Shader and fragment Shader that's literally invoked for every single Pixel on the screen that the

1:34:14: object covers so there's going to be like a function you know your fragment Shader that gets

1:34:22: called and then you Compu you know the color of the pixel or you can tell the GPU discard this pixel which means you

1:34:29: know that pixel is actually it's not going to render out it's just going to be skipped

1:34:34: um usually like the way like you could do like intersections is you literally have like

1:34:41: you know the intersection parameterized for example by a point so there's a point in space and there's a like a

1:34:48: normal which defines this defines a plane like an infinite plane you know it

1:34:53: kind of goes this way so when you're Computing your pixel um what do you do

1:35:00: like often times like in the Shader is like say you consider pixel here and you

1:35:06: want you want everything that's on this side of the plane to be cut and everything that's on this side of the plane you know to be uh to essentially

1:35:15: be um visible you know we don't want to like any changes to it so you take the

1:35:21: pixel and as part of the fragment invocation you actually you have its

1:35:26: position so you have you know it's like XY Z and technically there like a w but

1:35:31: let's just say XYZ position and we can actually ignore the Z because like this is aligned to screen space so let's just

1:35:38: you know worry about XY actually no you need to kind of worry about XYZ but for this purpose we don't

1:35:45: have to you know it's it's kind of the same principle so it do you know XY coordinate um what do you do

1:35:54: you literally take this plan the easiest way to think about is you align each

1:36:01: point each pixel that you're rendering you just align it to the plane so like you know it's upwards so like if you if

1:36:07: you look at this whole thing from the perspective of the plane you know we have this point you have this normal and

1:36:13: this pixel if you were to like you know rotate it like this the pixels here so I'm going to I'm

1:36:21: going to move this here um and the pixels like right

1:36:27: here and this is actual calculation you can make where you recalculate the XY

1:36:32: position of the point so it's aligned with a plane and the way you do that is usually you subtract uh well you first

1:36:39: rotate so like you know it's facing upwards for that you can use like a matrix calculation where you know we

1:36:46: have the plane you have like say this is the other axis and you compute a rotation Matrix that essentially rotates

1:36:54: this whole thing so this is upwards and you also offset it by the

1:37:01: center and that way you end up with an XY coordinate where where' my brush go

1:37:08: you end up with an XY coordinate um where this is like you

1:37:13: know the origin this is like Z zero instead of being you know arbitary

1:37:18: position and then the position of the pixel is going to be say like this is you know say this is

1:37:25: two and minus 2 I you have you other pixel that's over

1:37:33: here you know there's another pixel over here so once you do you know once you do

1:37:39: the rotation Matrix subtract the position subtract like the center of it

1:37:44: uh this pixel and Zid coordinate that's two and plus two and then you have a very simple

1:37:51: logic where you just ask is this is the y coordinate is it above zero if it is

1:37:58: discard the pixel don't render it which means this pixel gets discarded and this pixel doesn't because it's negative and

1:38:05: that's all math there is very simple math very easy to do like you know

1:38:10: intersection this way you can also do some additional effects because one of the things you can do with intersect

1:38:15: Shader is you know at the intersection you can make it so like you know for example this

1:38:22: glows and literally the way that works is you say you know you essentially

1:38:28: interpolate the position so for example from between zero and say minus

1:38:34: 6 you're just going to you know interpolate a color so like you know this would be zero intensity this will

1:38:40: to zero intensity and this will be one maximum intensity and you map this to a color and you know you have your you

1:38:48: have your glow that's you know aligned with a plane so intersection very easy where it gets

1:38:55: complicated is like if you wanted the intersection to close holes and that's this own whole thing where it gets

1:39:02: really complicated because now you have to like figure out complex geometry because essentially you end up like with

1:39:08: a hole here and you have to figure out like you know where the Hol should be closed and then you probably have to use

1:39:14: something like a compute Shader or something uh but for intersection itself the way it is here very simple very

1:39:22: light like there's like gpus can do this like you know like

1:39:28: like nothing it's peanuts to them there we go and I uh got got at

1:39:36: least one drawing in this part in this in this episode and we got 20 minutes so

1:39:43: um but yeah hopefully that answers the question uh and also we got you know the

1:39:48: subscription from Tatsu thank you oh and we got oh thank you check check the fox

1:39:54: out there also subscribe with Prime with Bo thank you and also Tatu donated 100 bits oh my

1:40:01: God thank you that's so we need to mention threes more often

1:40:06: and uh Ty subscriber TI one thank you so much for Tyra oh my God we got this going um

1:40:14: Rasmus uh 0211 is asking any word on a native animated give support it's not

1:40:20: really something we have planned right now it's like one of those those things where it's like it's kind of aird

1:40:26: situation because like I feel in most cases nowadays like people don't actually use animated gifts even for

1:40:33: things they still call gifts they tend to be just videos so

1:40:39: it's the problem with animated gives is like they're a bit different from videos

1:40:45: because like they can do a lot of like weird things where like um like for

1:40:50: example each frame instead of fly replacing the previous one like videos

1:40:56: do they can you know work additively where they just kind of like you know

1:41:01: draw on top like but they leave the old stuff and makes decoding them and like you know doing like timeline makes it

1:41:08: kind of weird also each frame can take like you know different amount of time it's

1:41:15: like they're they're just kind of weird like they don't kind of fit neatly into like

1:41:22: you know the video box but you can sort of think of them like a video

1:41:27: um so it's like so the question is is it worth like you know spending a lot of

1:41:33: time adding support for them because like how much you know how

1:41:38: much like of when we kind of think about his features is like how much benefit do we get for supporting certain

1:41:47: features and supporting animated gies it's um like it won't take super long but

1:41:55: also like you know I don't think it's like you know like a super high priority because like

1:42:00: it it feels like it's a very nichting and a lot of times you just kind of bring a video instead so it's it kind of

1:42:07: depends you know like what what do you want like use Anem that givs for yeah like must saying low priority

1:42:13: just for ancient memes like one way to support sort of support room would be to kind of extract all the frames ahead of

1:42:19: time and have like Atlas but like that's still quite a bit of work and if you have like a really long one that's going

1:42:25: to balloon your memory um

1:42:33: so yeah it's it's one of those things like I I think it's like one of those things

1:42:38: is just too Niche to like spend time on it right now unless there like you know big surge like you know a lot of people

1:42:45: want it then we'll be like oh okay yeah like this is going to bring a lot of people this going to make a lot of

1:42:50: people happy We'll add the support but unfortunately I think it's one of those

1:42:56: things where it's like the amount of work required for it to have a proper support you know outweighs the utility

1:43:03: of it uh noon is like how useful do you

1:43:09: think these officers things are I know you seem uh but are de productive does uh doing them get you excited to keep

1:43:15: working or is it the track just asking because you do more than anyone else with these I think they're pretty like

1:43:20: useful like I do like you know talking about like like my work and often times like you know um I end like talking

1:43:26: about it like you know with people in world like you know and other places and so on but like you know that's kind of isolated it like in its impact because

1:43:33: only few people get to hear it uh with these um one thing I've been kind of

1:43:38: doing is like whenever we cover a big or interesting topic I will cut it into its

1:43:43: own Standalone video and we've actually got like a lot of good response on those like people seem to like you know enjoy

1:43:50: like having that information accessible it also gives people material that they can use to refer someone you know if

1:43:57: people are asking about how the performance upgrade is working like why why are you working on the particle system as part of a performance upgrade

1:44:04: now we have a resource that we can point video to and it helps a lot so I think

1:44:10: it's one of those things you know that helps with you know communication with the community so like there's more

1:44:15: transparency you know so like you know um and how things are going like you

1:44:22: know why are we doing things the way we are you know how things are designed so

1:44:27: it gives I think it's a good way to you know to get a lot of useful information out there um I do enjoy talking about it

1:44:34: too like I enjoy like answering questions and you know spreading the knowledge and one of the things like I

1:44:39: really like doing is just kind of bringing people on the same page with things so that's one of the reasons I

1:44:45: really like you know explaining things it's like I just want people to have the same understanding you know you know

1:44:53: things like as I do like uh and understand like you know why decisions are being made certain way why you're

1:44:59: approaching things certain way how things are going to work because the more you understand you know the more

1:45:06: powerful you are because like you know the more you know then what kind of tools you have you know in your repertoire to like do all kinds of

1:45:13: things so I don't think like they are pretty like productive uh and they're definitely not a drag and it gives me excited to talk

1:45:20: about the features I I really want to work on because one thing that helps is you know like if I talk about some features and people also get excited for

1:45:26: it and I'm more excited to work on it so it does help in the D heart as well I

1:45:33: like what about you side or like is this a drag is this a drag is this a

1:45:44: Dr uh [Music]

1:45:50: no no it's not uh let me just check the time got 15

1:45:56: minutes left so uh at this point we might not be able to well there's a few questions but we might be able to take a

1:46:02: few more but uh if you want your question answer like you know get it in

1:46:07: now uh because we might run out of time uh the next question is from Nikon as

1:46:14: well uh follow up if there's time support for svgs anytime soon those are animated too um

1:46:21: anytime I have a problem with like whenever somebody ask anytime soon because I don't know what it means is

1:46:27: anytime soon you know is that next week is that next month is that within next six months is that within a

1:46:33: year if you can please specify what kind of timeline are you thinking because it

1:46:39: kind of makes it bit bit easier for answer um but in general I would say probably no svgs are kind of weird

1:46:47: because like there's the they're I feel they like would be more beneficial to support than animated

1:46:54: gifts but also they're a lot more complicated than animated gifts um so

1:47:00: even suppor and static svgs they can have you know all kinds of effects because you can have you know all kinds of different shades but also have

1:47:06: effects like you know they like on their own like CSS like system like you can style them they can do effects like

1:47:12: blurring and so on so we would need like some kind of library to render them out but often times those libraries they're

1:47:18: designed you know for 2D rendering rather than like you know rendering them in 3D space

1:47:23: um so support supporting them properly that's gets really really complicated and then having them animated that's

1:47:31: even harder so what I mean by super because we could

1:47:38: technically support rendering them into a texture you know so they get rendered into a texture and then apply the

1:47:43: texture to something so it's going to be kind of like video the problem is you know if you render M into like texture

1:47:49: that's like 2K and like you do you know say put it in this and then like you oh I'm being pushed out and then you like

1:47:55: you know you look at it like super close then you're going to lose you know that smoothness of an S Plus

1:48:02: VG because if you wanted to maintain that smoothness it would need to be converted to like a geometer so when you

1:48:08: look close you know the GPU is still like you know filling in all the extra

1:48:13: detail so depending on how the support is implemented you know that also affects the

1:48:20: complexity uh and I think if we wanted to do support in the form it gets rendered into a texture it's not like

1:48:27: you know rendered as part of the world like you just apply the texture or something you can control the resolution of that that will be way easier to

1:48:34: support because there's all the libraries for that um they kind of you know they

1:48:40: pretty much do all the heavy lifting um all the heavy lifting you

1:48:45: know for the rendering so we don't have to worry about that but it also like kind of in some ways limits how they can

1:48:51: be used but if that's potential thing you want you know that you could find useful like we could do

1:48:58: it uh that would be definitely faster I would say like you know depends

1:49:04: how do you imine to support working uh next question one last thing

1:49:10: what are next steps in optimization uh so the next steps like right now uh Photon dust is pretty much

1:49:18: like nearly finished uh I think there like a few issues that's still need to be resolved it's been broke brought out of experimental so please use it for New

1:49:25: Creations from now on I strongly recommend like you know avoiding the Legacy particle system at this point uh

1:49:31: the Legacy particle system is going to be removed very soon so it's just going to go poof uh which means the conversion

1:49:38: is going to be automatic you know everything is going to automatically be converted to like you know uh Photon

1:49:44: dust uh once that's done I'll be working on the audio system uh that's going to be the last

1:49:50: big part that needs to be like you know fully moved into F ex engine and after

1:49:55: that it's going to be the spling like where we're going to be reworking how

1:50:02: for engine communicates with unity and then pull for engine into its own process which is going to finish this

1:50:08: kind of major optimization Milestone and from that step alone I think we'll get

1:50:13: like a huge performance boost because now maor F engine will run with net 9 so

1:50:20: those are pretty much the next steps you can expect the system is going to happen first um and after that like you know

1:50:26: the actual steps to pull out fr's engine are pretty much going to be the next thing to work on uh and that's going to

1:50:33: finish this going of ODS say that like you know this part of the performance

1:50:38: optimization was and I think that's going of give us like enough of a performance boost that we can kind of focus on other things for a while

1:50:45: there's still lot of other things that could be done for you know performance like you know data model rework

1:50:51: reworking the updates system variable rate updates adding more multi- threading to things so there's still a

1:50:58: lot of performance that's going to be unlocked um but we can you know kind of do this like sometime later after like

1:51:04: you know we maybe work on the ik maybe work on the UI work on some other things uh n con oh wait that's the one I

1:51:12: just answered uh we also got 9 minutes um Nyon for modular for both oh

1:51:21: yeah sorry that was part of the question uh pixel nator is asking what part of

1:51:26: the world is virtual reality in and why are all the cute people from

1:51:32: there oh no that's that's an emote yeah

1:51:38: I don't actually quite understand the question they they're like what part of the world is virtual reality and then

1:51:44: why are all the cute people uh it's everywhere wherever you are yeah it's

1:51:49: it's all around you it's it's inside of you surrounds us it surrounds us it penetrates

1:51:57: us it we're making Matrix Matrix

1:52:04: reference what okay um no that's the no that's the no sorry

1:52:10: that's Star Wars that's the force oh

1:52:18: dear so I I I got my references mixed up

1:52:24: I'm going to I'm going to blow up man you're going to schn it I'm going to snop it you're going to snop it no let's

1:52:30: C the r but we should but I hope hope hopefully that

1:52:36: answers that question um Nikon's asking I'd like to ask any support vector graphics pages

1:52:42: but you all don't have time I have a little bit we have still like seven minutes um vector graphics I mean that's

1:52:49: kind ofi like I assuming something else HTML Pages that's own thing I feel for

1:52:55: that like what we want to do first is like have like video uh streams because

1:53:01: with we Pages like say you want to bring one in there's not really a way to guarantee it's going to be synced for

1:53:06: everyone but we can you know our philosophy is to have everything sync for everyone so the way we would

1:53:12: approach it is we would have like you know one user render it and then like you know synchronize the rendered output

1:53:19: to everyone else so everybody sees the same thing um so that's something I'd like to add

1:53:25: like but like it needs the video synchronization to be implemented so this is like a

1:53:31: prequisite uh next question is from Nitra how do the angular velocity

1:53:38: modules work for Photon dust so for angular velocity you need uh the

1:53:43: rotation simulation module and what it does it's actually similar to like dep position Sim like module uh the module

1:53:50: it keeps track of the angular V for the particles and then each frame it modifies the rotation you know by the

1:53:57: angular velocity so if your angular velocity you know says like you know we have a particle and angle velocity says it

1:54:04: rotates this much around this axis you know you know per second is just going

1:54:11: to modify that particle rotation uh you know by the amount each frame so like if this is you know this

1:54:17: is it takes 1 second you know it's going to rotate this much in half a second you know this is a full second

1:54:23: in quarter second and you know whatever frame like updates it it rotates it and over time it kind of accumulates and

1:54:29: angular velocity it can potentially be changed you know it can be modified which means you know maybe there this much and then like the velocity changes

1:54:36: you know so there like this way you know goes like maybe what about this so you know it

1:54:41: can it's essentially just integrating the angular velocity over time on the

1:54:48: particles rotation so hopefully that kind of explains uh explains

1:54:54: things and we got five minutes left uh Rasmus 0211 is asking admin related any

1:55:01: plans to make it possible to allow use of particle assets or worlds for specified clients with time frame thing

1:55:06: rental props or worlds um I'm actually not fully sure if I understand but we do have like a

1:55:13: number of like business uses uh so if you have like anything like that send us an email um I think it's like a deod

1:55:21: man.com like we have form for businesses uh actually it might be at.com right now

1:55:26: I don't fully remember um check both of them um we do have like specifical like

1:55:32: business email so like give us some business use you know send us a message what do you want to do uh and we can you

1:55:38: know have like a chat about it uh we do have some companies that use resonite for you know number of different

1:55:44: things um so like you know that is possible we

1:55:50: just need to know like more details um

1:55:56: yeah uh we we do stuff like you know uh stuff like for some companies we do like white labor licenses as well where you

1:56:03: know like kind of like we can remove The resonite Branding and it just we make a like very curated experience like where

1:56:09: you open you you know you open resonite and it like launches you into a specific World maybe it's like a Lobby for the

1:56:14: company and from there you can go you know to training applications and so on so like there's a lot of kind of

1:56:20: possibilities BR Prime has been kind of working on a lot of stuff uh if you like to know more actually I would recommend

1:56:25: like also asking him about this in his office hours uh he'll be able to give you like you know a lot of good info on

1:56:31: this and time uh Nar is asking for the unity split I'm curious if the object

1:56:37: sterilization will be limit for performance I don't think so like uh I

1:56:43: mean it depends what you mean by object sterilization too because like there's multiple stages where it happens um like

1:56:51: you know you have the real sterilization like you know when like when when I'm doing this this is getting sterilized

1:56:56: you being transferred other same like you know when I'm grabbing this and so on uh then you have like one when you

1:57:01: save things you know when I save this to my inventory it gets sterilized this different type of sterilization you know

1:57:07: than like this one but like I would say like the saving one that's heavier

1:57:12: because like the one for realtime calization that's designed to be very efficient so like that very like I think

1:57:20: it's very rarely like much of a performance like limitation um saving to inventory and you know just in general

1:57:27: for persistence that's a bit heavier uh but it also only happens you know when you actually save it doesn't happen you

1:57:33: know every single frame and with the unit is like it doesn't have super much like with unit

1:57:39: split other than like you know for engine being able to run with uh doet 9

1:57:46: that's much better run time so the code that does the calization will now run way faster so it's going to be even

1:57:51: better you know I don't think they mean the network I think they mean between

1:57:57: Unity I think they mean like when they when like they they're talking about

1:58:04: like telling Unity what to do I think is what they mean that doesn't use object sterilization at all like there's

1:58:11: there's no object sterilization between for extension and unity so like that's not really

1:58:17: relevant yeah it's going to use like shared memory or whatever yeah yeah like unitate like doesn't really get

1:58:25: like like there's just no calization happening between like f engine and unitate like not even now so

1:58:33: um yeah that's not that's not going to affect it or limit it uh for the actual communication like you know um we're

1:58:40: going to use like shared memory which is like pretty much like like you can share a big chunk of memory or small CHS of

1:58:47: memory between like multiple processes and they each no memory doesn't require

1:58:52: calization at all like you literally the operating system literally Maps the same

1:58:58: physical memory region to multiple processes so each one of them it essentially treats it as its own memory

1:59:05: except you know multiple processes can like write and read to it um which means like you know you don't need to do any

1:59:11: terization you don't need to do any copy you can literally just share data between the like processes so we can

1:59:17: like you know fill buffers with stuff and then just like you know read them out on the process without having to

1:59:23: push them through some you know pipe or you know some calization format or anything they they literally just share

1:59:30: a chunk of memory it's extremely fast extremely efficient uh each process like you know

1:59:37: as if it's it was its own memory um with that like we're pretty

1:59:42: much run out of time um so thank you very much you know everyone for you know joining thank you

1:59:48: s you know for helping me like answer the questions um thank you like you know like for like

1:59:54: like asking like you know all the cool questions like uh and you know generally kind of supporting resonite you know

1:59:59: being part of your platform being part of the community building cool content you know what whatever you do um is

2:00:05: appreciated uh thank you thank you you know like um I for lost my turn of

2:00:13: thought thank you for being here uh and thank you for listening you know to me me and S ramble for two hours um so

2:00:21: we'll see you we'll see you with the next one see you around

2:00:27: guys oh wait is there anybody to ra i to figure out

2:00:32: raing let's see let's see cre is there

2:00:38: any is there anyone other at Creator gam not like Creator gem is bad like they're

2:00:44: excellent and they're like start MMC actually that's another thing I should have said good luck with MMC I'm kind of

2:00:50: excited like you know what everybody's going to be working on and all the cool creations uh but I didn't want to see if

2:00:56: there's anybody else streaming resonate because we do like to support you know uh nope it's just

2:01:03: Creator gem so Creator gems getting rated if you're a streamer definitely

2:01:08: recommend streaming you know around this time because we will raid you you're going to get raided but you're not streaming right

2:01:15: now so Creator gam it is uh say hi to M for for me

2:01:24: so

2:01:29: reg what I'm doing for MMC I'm just I'm just working on like res

2:01:35: things it's like it know like people people are busy with things and I get like time to work on up

2:01:43: things yeah okay everyone ready say hi to MRA

2:01:55: oh