This is a transcript of The Resonance from 2024 December 8.
0:11: hi I wonder how many people will jump scared with that hello hello everyone
0:18: just like the first three frames yeah yeah the first three frames are just going to be
0:24: death it look pretty quick so like it might like maybe nobody even seen it like as we'll see in a sec
0:30: um hello hello is there anyone in the
0:36: chat hello don't see anyone posting
0:44: yet maybe maybe nobody saw jump scare and know it's going to be a mystery the people like what happened
0:52: hello nordwick hello Sho Jello and happy holidays yes girl kind of well I'm
0:57: festive you need you need festive stuff hello Conor winter I need a winter coat
1:03: or something so before we love the thumbnail yes
1:09: okay so yeah that's a there ACH with color
1:14: hello hello Tatu hello nooki hello actually before we start I have a
1:20: question how many of you got jump scared by like the first uh 10 seconds of the stream did did anyone see the thing that
1:27: we did or um did did the was it too too soon I wonder if anybody got a jump
1:35: scar no K don't see sh scarest moment of my life perfect like we we have
1:41: traumatized at least one person which means we're good to start so hello well and welcome everyone I'm frus and I'm
1:47: here with CRA our engineering intern this is the fourth episode of the resonance uh which is essentially
1:55: there's that word um it's essentially sort of a hybrid between office hours and podcast
2:03: um we're here to answer questions about the resite whether it's like technical questions whether it's you know more General about resonite you can also ask
2:09: us you know some personal stuff here and there if you like to you know get us know more um and we're also going to be
2:16: doing a bit of like you know kind of like rambling talking about like more General Vision of resonite you know like
2:21: where the platform is going where it's coming from sort of like in know very high level view of it uh and also going
2:28: like into technical details on things we are actually streaming from the Pras
2:34: build uh because oh thank you so much for for subscription Sho
2:39: Jello um uh and I lost my train so we we're on the prist build uh because uh
2:46: the new particle system that I've been working on uh called Photon dust uh is
2:52: now in Pras testing uh and I kind of want to give you a little bit kind a little bit of a showcase you know show
2:58: like how it works and also a little bit like you know deeper dive how does it actually work under the hood you know to
3:04: help you understand how is it put together uh the system will very likely be released to the public builds uh
3:10: starting next week uh for the uh what we still do testing uh it's going to exist
3:17: alongside the old system so we can like you know kind of use both and it helps like you know anybody do testing without
3:23: having to switch Builds on very kind of comfortable they like the system working properly um you know the old systems
3:29: going to be removed and it's only going to be Photon dust uh so you can like use like you know this kind of stream as a
3:35: little bit of a primer on it as well um we already seeing like lots of people playing with a system making like a
3:41: really really cool you know making a really cool like visuals with it like it's been like some popping on Twitter I
3:47: might actually show some of them as well I have like the video saved uh but with it uh let's get started on the questions
3:55: and uh once we kind of feel some of them we're going to we'll see like if it's happens naturally or if we just have a
4:01: cut of point and be like you know okay we're going to talk talk about Photon dust and showcase it um so before um
4:10: just not before uh just so like you know make sure your question oh my god there even more thank you Fel former for the
4:17: subscription and thank you Ty wh for the subscription thank you um um just to make sure like you know uh
4:25: your question pops up the our thing here we have like this cool pel built by check the fox author uh make sure your
4:32: question actually ends with a question mark uh that way it pops up on rpn messages uh and you know we don't lose
4:38: it and make sure like geter uh so with that we can get started
4:45: uh so the first question is actually Corey uh 2099 they're saying gasp VR S
4:51: was the occasion was the occasion s well well I figured you know I missed the
4:57: last stream and so I might as well well not miss this one and be extra here
5:04: instead of just a little guy in desktop yeah and we got face tracking with all
5:09: it's actually kind of I'm going to I'm going to get to J's uh question next because this one's also kind of related to Grand is asking is s on Linux right
5:17: now or Windows uh I am actually on Linux right now I'm using um the really cool open
5:24: source streamer software called wyvern that's w i v RN
5:30: um it's it's really really good actually um I actually just wrote the face
5:36: tracking um to work on thex 2 with the resumate steamlink integration it like
5:43: sends it in the same format so it can recognize it it's really cool they very extra
5:49: extra expressive so I have to keep thinking about looking at the lens instead of the preview it's kind of
5:54: messing with my brain we to make it so it's kind of like in Fr or something but anyways yeah like
6:02: it's been like on like Linux like you've been you've been like trying to get like Linux you know to work with vly world
6:07: for like while and they've been you know getting fruits of your labor actually been like like we've been literally
6:13: talking about it like you know like right before the stream started like s joined um climber J also like thank you
6:20: for so much for the subscription uh next uh the one I skipped Jack the fox author does the red
6:27: nose help you navigate through unit this particle code I wish so here's the problem we don't
6:33: have access to unit this particle code so like you know I cannot look how it is
6:39: implemented uh because in order you know for uh to convert anything you've built
6:46: with the Legacy particle system as already a conversion cone that takes you know the settings and converts it to a
6:52: photon dust equivalent um while doing that I've discovered some
6:59: Nast rapid Halls like where uh for some reason in certain modes unit this own
7:06: particle system coordinate system doesn't match the rest of its coordinate system which made conver like it took a
7:13: lot of kind of pulling hair or you know figure out what's even happening and why things like you know looking different and why things like
7:20: misaligned um it's it's been pain but I've I've gotten
7:26: through it and the hardest part about it is like because we don't have access to the seource code I can only you know
7:33: mess with the unit system try different things observe Its Behavior and from that infer how is it working which you
7:40: know is extra painful process but um maintaining content compatibility is
7:46: like one of our one of ours highest principles um we hate like you know
7:53: breaking content compatibility we we if you build something we want it to work uh you know regardless if you like even
7:59: even we change complete system we want it to work as much as possible there's like a few gaps there but um most things
8:07: will generally know keep working and it's one of the reasons like why we put like you know so much effort in like you
8:12: know maining that compatibility uh there actually part uh the part of testing that Photon dust is right now is making
8:20: sure the compatibility works so people have been uh throwing you know lots of different items on it helping to isolate
8:26: you know where are the discrepancies and differences uh and we'll be like resolving like uh
8:31: hopefully like most of these or all of these uh uh before like you know this the actual switch
8:37: happens and also this one this one I've been kind of like I've been kind of hoping for this one because um Grant
8:45: asked me this one in the moderation of his hours that were happening you know
8:50: right before the stream um gr is asking so FRS what's your favorite
8:56: pizza and I I do in fact like have a very I'm actually going to stand up for
9:01: this one too and I'm kind of out of frame with that um I guess um okay I'm not going to sit
9:08: up I'm going to sit down I didn't I didn't think that through um what I'm going to tell you my favorite pizza is
9:15: not favorite because of it of how it tastes it's favorite uh because of how
9:22: people react to it and I'm going to spawn it in a second um let's see my favorite pizza is
9:30: the USA pizza so there's there's this like store
9:36: that uh there's this store uh that delivers pizza in my city and on their
9:42: menu I saw the USA Pizza you know it has like you know little USA flag over here
9:48: and look it's it's it's it's french fries on the pizza um and I've shown
9:53: this picture like a bunch of like my friends from the US and everybody's like what the hell is this and then like
10:00: two people independently of each other were like FS you need to buy it so you can 3D scan it and I was like say no
10:06: more so one time I was hungry and I was like I'm going to do it I'm going to buy the pizza you know see see see how it is
10:14: just so I can treat scan it and well there it is I opened the box
10:21: and I was kind of expecting you know I was kind of expecting golden fries and everything and I look at it I'm like I
10:26: was hoping this pizza will strike Terror into people's uh you know hearts and instead you know this is just going to
10:32: make them cry but I guess you know this is what it is uh but then like you know I started
10:38: showing this around to people and I've started getting you know reactions like this like this is you know mink over
10:44: here and this is literally this is literally him like 5 seconds after seeing the pizza for the first time and
10:50: I'm like this this is why this is my favorite pizza because you know I can I've I've only had to suffer eating it
10:57: once but now I get to pester people with this forever and this is why it's my
11:03: favorite pizza also another interesting fact you might be know noticing there's some corn on the pizza you see corn is
11:11: heavily subsidized in the US therefore it belongs on the US Pizza you're welcome Grant I hope this answers your
11:18: question to your satisfaction and I'm going to delete this
11:24: Abomination I can say it the the directions I've been getting have been well well worth the $7 I paid for the
11:32: pizza its value keeps growing over time it's like horrible and like stale
11:39: and milky and gross looking on the scan I need I need to repressive G in splot
11:45: thing oh yeah you sure do you sure that's an option you can
11:50: take and this is also why I was looking forward to the question I was like Grant asked me like in the live stream and I
11:56: was like ask me on the stream because I'll show you so I I hope grant that you are satisfied so hopefully go to more
12:03: serious question uh Dusty sprinkle is asking is there going to be a second round of phase two test for Photon dust
12:09: it feels like conversion process probably needs some work but I don't know what minimum viable ConEd for it there's not really like any rounds to
12:16: testing like usually when we do testing it's sort of a continuous process so we
12:21: get you know we get reports you know of like compatibility issues and then we just kind of keep releasing bills and
12:27: know and fixing things happen ask people you know please keep thises thing more please keep thises thing more and once
12:33: things kind of quiet down on the reporting and we're like okay like there doesn't seem to be really any issues you know uh everything like we tried like
12:40: works all the issues have been resolved or most of them have been resolved because in some cases um you know in
12:46: some cases um there's going to be some discrepancies that like might be not
12:51: worth fixing like if things look close enough but you know there's a little bit discrepancy we can let some things slide
12:59: uh but it's kind of it's very Case by case basis but the G of the process is
13:05: we just keep testing until we're comfortable with it once we are comfortable with it like you know we release it uh to fully so there's not
13:13: really like multiple phases they just going to be kind of continuous like updates video like builds and we're going to always say you know this build
13:19: fixes this and this it fixes this and this you know and then ask people test some more and once it kind of gets
13:25: quieter like we're like okay this is in a good state uh next question Finas farmer uh
13:33: question uh it seems my avar is more expressive in VRC using VR sa than rard using steamlink is it just my
13:39: imagination or is that true so I think that's probably to do with like uh you
13:44: know what blind shapes you have mapped uh it's kind of hard to say in general but uh all of the blank shapes that you
13:51: get from face tracking depending on device you use should be available in the resonite so my guess would be uh
13:59: that uh some of them might not be mapped on Avatar uh because there's like know there's like two parts to the process
14:06: one of them is you know resonite kind of feeding whatever face tracking data it
14:11: gets you know into the generalized input system and the other part is actually mapping those blend shapes you know
14:18: mapping those uh you know weights to the blend shapes on Avatar and for like it
14:24: has a heris stic process it tries to like no guess which blend shapes correspond to which ones
14:29: uh but uh that process is not perfect so like you know sometimes it kind of misses a bunch and you have to like
14:35: assign it manually uh it also might be just question of strength uh like for example the values uh in some cases um
14:43: like they might be too weak um one of the reasons we kind of do it is because
14:48: uh sometimes um we' had like cases where
14:54: um um what do I put it like where on some Avatar essentially like the blanches where overdriven so we kind of
15:00: tend to like you know make make more kind of conservative defaults uh and then like people you know kind of tweak
15:06: it from there so um this could be kind of combination of these
15:12: things yeah I mean I don't know I'm pretty I think I look pretty expressive
15:18: and I'm using like the steam link stuff or the steam link standard at the very least for face
15:23: tracking all the data like should be there so it's it's probably just a question of like you know how it's mapped on are so that might kind of
15:30: require some tweaking to like get it look the way U you like uh next question Grand UK have you
15:37: considered having something like a community manager and team to act as primary point of contact for a team so they can focus on making the game not as
15:44: exclusive point of contact but first point of contact um we do have like some people like in those kind of roles uh
15:51: most of the stuff it's kind of spread out because we have you know different departments uh so for example you know
15:57: we have the moderation team they've just done you know their office hours um and they kind of you know there s the point
16:03: point of contact for moderation like things uh we do have you know people who handle our marketing you know chroma and
16:09: Ariel and they have been kind of like you know uh people like they've been like you know kind of talking with the community especially about like you know
16:16: promoting resite and so on um uh so it's kind of it depends we also have like you
16:22: know business team so for that one we actually have a business email and we have like a form on our website and that
16:28: goes into into shared inbox so multiple people on the business team can see those and um I know like Bob Prime and
16:35: sometimes G have been fiing lots of those uh Canadian G has been doing some as well so it's kind of like you know
16:41: it's a spread responsibility like depending on what kind of contact it is
16:46: because if you want to you know talk about some kind of business thing there's people on the team who are better to talk to if you want to talk
16:52: about you know moderation issues there's like different if you want to talk like in general like um it kind of depends I
16:59: would um I like ask like can you clarify a little bit more like you know like um
17:05: what kind of kind of contact like are thinking of uh next question is gloen VR how long
17:13: do you think it will take to get through the AIO optimization and what we all need to go through with uh
17:19: ODS odds and stuff to get the net n um
17:24: so in order how long it will take we generally don't do time because like
17:30: it's it's hard to do them and we don't want to commit the timelines like you know we are not confident we can keep um
17:36: my general expectation of the audio system is it's going to take less time than the particle system uh there's you
17:43: know not as many kind of moving parts to it and there's not as many kind of compatibility things to get through um
17:51: the main part um the main part of like doing the audio system there's like um
17:57: things like you know handling the audio rendering like specialization uh that's probably going
18:02: to be big chunk of it uh my plan there is we actually utilize the beo physics
18:08: structures to like you know do stuff like uh query what you know what audio sources are at this point you know in
18:15: space uh so we can efficiently get a list of them and then like you know we do whatever processing through Steam
18:21: audio uh to handle the spatialization and you know whatever whatever else needs to happen uh there's also like one
18:27: part that c already worked on uh which is the Reverb zones um because uh that's one of the
18:33: features we kind of have and we need to like you know preserve it in some way so s has uh done some research on like
18:40: libraries and youve like integrated uh you know the Zeta like um rever like Library so we can actually you know
18:46: process audio data with it and also done some like mapping like where each of the presets we have for for the Reverb Zone
18:53: you found like something that sounds the closest like even like you know talk about it a little more uh yeah so I actually just recently
19:01: um went back and and touched it up again and it's actually um I implemented it such that
19:08: like you can process like batches of samples now rather than having to do one at a time um so it's way faster like I
19:15: can process like five minutes of audio in like 10 seconds like on a standalone
19:20: program it's crazy oh yeah um uh but yeah I found um it's not like
19:27: a perfect mapping cuz like I I looked into like some solutions with like some
19:34: like even like using like training a neural network to try and interpolate the parameters um but the it's kind of
19:43: just going to be like a closest estimate where like if the if you have a certain preset like set for the audio I've gone
19:52: through and I've made equivalent presets in The Zeta Reverb which is provided by
19:58: uh pipe which I believe is also provided by just just giving credit the the
20:03: libraries made by someone named Paul Bachelor they're cool um but um oh dear I've lost my train of
20:11: thought uh um where was I I was at the oh yes
20:21: um yeah it will if you have a certain parameter uh set like you know sewer
20:27: pipe or like long hallway or uh whatever
20:32: it'll it'll choose the equivalent Zeta preset um but I I don't I couldn't find
20:38: a good way to like interpolate them because they're just not directly translatable yeah this like there might
20:45: be it's like one of those things where I like in part like I kind of like regret
20:50: making the choice like you know making just the Reverb Zone available as is
20:55: because now like now it's kind of like a complicated point where the Reverb is you know very specific to the solution
21:01: that Unity uses and makes it harder for us to translate but we can kind of get close we still kind of get you know the
21:06: similar Vibe for it um and uh you know like and going
21:12: forward we going of you know have our own audio system which means like you know we now fully Control process and we
21:18: can make sure you know compatibility is maintained long term because even say you know say like we offer more Reverb
21:23: kind of solutions you know more different like R filters we can still keep this one because is a relative
21:29: simple Library we have the full integration with it uh and we can have you know there be a toggle so um that
21:35: kind of gives us you know better way kind of going forward but AOS system it's it's a it's one of the big parts
21:41: that kind needs to be done but I would expect like much smaller than like the particle system because there do many
21:47: moving Parts they also kind of avoided like you know adding more to it because um if we added more to the existing
21:54: audio system then that we would have more things that need to rework and would essentially make it take longer
22:00: and we knew like you know this we knew that this would eventually happen the good part is also like the audio system
22:06: similar to the particle system it's a hybrid but um most of the things for the
22:12: audio system are actually being handled on FKS engine uh the parts that need to be reworked is like where we actually
22:18: send the unity you know the audio data for individual uh like AO sources you
22:24: know to like play from particle point in space um um but like all the decoding
22:30: you know buffering everything that already happens within F engine we have our own handling you know for like
22:35: different audio formats we have handling you know for resampling you know things like that um so those things we don't
22:42: have to rework we just have to like move the actual spatialization and rendering of the audio you know to our you know to
22:48: F engine and uh that way like it's not going to be tied to Unity anymore um
22:53: after the audio system uh the actual integration with unity has to be reworked uh I'm not going to go super
22:59: into details because I've done that on the previous episode I've also published um I've published like a video on our
23:06: official resonite Channel which goes on the performance but I've kind of drewn you know some kind of like diagrams and so on to give you better understanding
23:12: so I don't want to like spend time on this on this one uh if you're interested in more in depth I recommend watching it
23:19: it's going to give you much better understanding how the performance update happens and what steps need to happen for it but reworking the unit
23:26: integration is the other part um that one I also don't have estimated on how
23:31: long it's going to take it's one of those things you know where it's kind of like it's thing and then like we need to spend time kind of like pulling it apart
23:38: be like okay this this this this um I have some general idea but like we'll we'll try to get through it as fast as
23:44: we can um essentially yeah I can I can see why you
23:49: like playing with audio stuff though because it's like it's fun I I I I kept
23:55: just listening to my music through it once I implemented it I was like what does this setting do oh it sounds like
24:00: that what does this do oh it sounds like that oh this one makes my music explode that's great too yeah it's like it's one
24:07: of the fun things like it with like working with audio visual stuff is like you poke something or you make even small change and like you know suddenly
24:12: does like this cool thing as actually I'm going to Showcase this you know with Photon dust because Photon dust it's
24:18: very easy to write modules for it and like I written some modules that took me like five minutes to ride but I then I
24:24: spend a while just playing around with them making all kinds of cool effects and it's like really fun to do those those kinds of
24:30: systems um also thank you so much for the subscription and na love thank you for the subscription too yeah I'm going
24:38: to clear this out um uh St what's the most interesting thing you've seen made fire with Photon
24:45: dust let me actually uh I'll just bring this in uh uh there was actually kind of
24:50: cool thing because or like whenever we make an update and there's something you
24:55: know this like visual or audio this one member from the like Japanese Community
25:00: orange they always do this like super cool videos and like when I released photo testing I was actually thinking my
25:07: head I wonder what orange is going to do with this it's probably going to make something cool and you know and like not even 24
25:14: hours later he just made like uh this video uh that I'm going to bring uh give
25:19: me a sec and I'm like I I I I I was looking forward to this um and then he
25:25: orange actually organized like an event with for this community where we just you know messing around with the new particle system making cool
25:33: things um so I have a few that I can show you so this is the orange one uh I'm
25:39: going to pull this one in let's see how does it look and I'm
25:46: going to click it there's no sound to it so this is the thing that orange did with Photon dust and even specifically
25:53: mentions in the tweet that like you can have all these particles and FPS is not really droing
25:59: uh which we'll get to like you know later um there's another one this one this
26:04: one's also like one of my favorites uh this sort of like a nebula like kind of looking thing uh so if I play this one
26:12: you can see this is like all particles and they're like you know
26:18: moving it's almost like um it's almost like there's so many it's almost like a
26:23: volumetric cloud oh yeah I mean pretty much is it's like a nebula thing this one I really like like there's a l of
26:30: kind of sub motion I'm not sure like you know if it's fully coming through on the stream but uh it's it's very
26:35: impressive oh there also this one by Rapids uh is this the right one I think
26:42: this should be the right one this one I also like really liked um so I'm kind of pushing side around with this one um I'm
26:50: going to play this one this is also super cool effect people have been playing a lot with the with the turbulent Force which is one of the
26:56: things I add it because it can make all kinds of you know really cool visuals with it oh
27:04: yeah like this is this is super pretty like it kind makes me happy you know to see like people are having fun with and
27:09: making making all these kind of cool visuals I think one of the things that I
27:14: asked you to to implement was um like having a 3D texture to basically make a
27:20: vector feel yes for the particles so like if you make your 3D texture right
27:25: you can make a vector field for the particles to flow through in the direction that you want them to go okay
27:31: you can make them like you know do cycles and like loops and like it's I I've made like one of the devl videos was like what I was like messing around
27:37: with it I was like this is like s of weird how they behave but also kind of fun to play with so like once it goes on
27:44: the main build I expect people to be just having you know having a field day with it but yeah like those videos like
27:50: you know they're super cool and like to me that's like one of the most exciting parts of development is like you know just seeing people have fun with the new
27:56: system and exploring all things you know it can do sometimes like especially
28:01: during the testing phase exploding themselves um and it's just kind of like you
28:07: know it it makes it feel like you know like all the work and like you know put
28:12: into the system was like really worth um so yeah just just and I kind expect you know to see kind a lot more
28:19: also thank you ke has subscrib as well thank you uh gry K is the next question Grandy
28:27: K is ask asking uh is there any intentions to make importing avatars easier for example better head and head
28:32: detection Unity package import Etc yes so generally the Avatar Creator like
28:39: needs an overhaul uh one of the and there's like several things on it um the
28:45: original it wasn't really designed with like her sticks much um so it's not like
28:50: you know it's not really good at kind of automatically taking St requ manual steps and adding her sticks tends to make it kind of worse in some parts uh
28:58: at least like you know for the alignment of things but also it's sort of like you know it's it's one time
29:03: process uh where like you know like you click it and you're done and everything's going of set up
29:10: um so my general kind of idea to like rework it is uh there's like multiple
29:16: parts to it one of them is built a new version that's just from the ground T like you know buildt with like good her
29:22: stick so you can actually figure most of the stuff on its own you know where the hands are where the feet are where the head is where are instead of like you
29:29: know set set it by default so most of the time you just have to like you know click a button and like you know you're
29:35: done um the other part is is uh instead of making it sort of one time tool make
29:41: it something where you can like you can essentially use it multiple times like
29:47: to make adjustments so you would like turn something to Avatar it just the heror SES to do the initial positioning
29:53: but like you know you can adjust it on the Fly and then you know you hide the visuals for the adjustment but then
29:59: you're like okay this out there this this hand of positions feels off this head position feels off so you just activate it again you use you know
30:05: whatever handles whatever UI pieces to make you know changes you need to like make and uh you know and then like you
30:13: hide them again so at least for part of the process make it so it's it can be
30:18: repeated multiple times because right now if you want to you know make adjustments after using it um you need
30:25: to um just need to go to the inspector you know and like make the changes there
30:31: uh the other part is the unity package import that one that one's a little bit complicated topic um because Unity
30:39: package it's a format that's very specific to Unity so in order um first to fully support it we
30:46: would essentially need to implement like a loot of unity which also is not going to be you know usable long term because
30:52: if they change anything with a format now we have to you know reverse engineer those things again we could also just
30:58: you know extract the fbx you know or files in the unity package but it's also kind of iffy because like the unity
31:04: package might have the Avatar already fully set up uh there's also like one approach that I feel would work the best
31:12: uh is uh introducing actual Unity SDK uh because that way you can just you
31:17: know import Unity package into unity and uh then use the SDK to convert it Avatar
31:25: that that's already fully in unity into resonite equiv equalent you could even like you know make like some sort of like Pipeline with it where tries to
31:31: find you know the Avatar but like you would run it like you know from within the unity um so that's like you know a
31:38: possible approach there uh there's also like where the um like re working aat
31:44: Creator might help because if we have like you know better her sticks we can you know call them on the imported data
31:50: so it just kind of sets it up for you and maybe give it more hints you know from from Unity so it's able to figure moreu more stuff on its own
31:59: uh next question oh just one just within chat question
32:04: uh oh had a follow CH somewhere let me see if I can find it real quick just
32:11: by yeah if you have like a followup uh I please make sure you know there's a
32:19: question so Grand UK says what I mean by a community manager is someone who can
32:25: act as a kind of filter to accumulate complaints and requests so that it's easier for the team to know what to focus on the team leads can still can
32:32: still be approached for specific queries but generics have to go through a community manager who's already got
32:38: connections in the community to get the response of the community and their needs so uh this one's it's also kind of
32:46: like a shared role right now there's not like you know single kind of point of contact um it's um oh wait don't don't
32:54: move it uh oh sorry I have the uh
32:59: I'll hold it up for you hold it does it does it oh it drops I
33:05: thought it was okay cool yeah so we don't have like a very like specific question like person like
33:11: you know for this kind of stuff uh we do like the different people like on the team they will like you know bring up
33:16: like certain kind of like complaints and uh you know requests and things they will kind of Bring It Like You know
33:22: during themee things and we kind of like discuss things it's something we kind of like you know consider having like a very specific person to do it but um you
33:30: know as kind of being small theme like it we tend to share a lot of
33:35: responsibilities or spread a lot of responsibilities between multiple people um we've been having you know people
33:41: from the marketing team that kind of you know go around the community and they kind of realiz some of the kind of General kind of feedback and Vibes and
33:47: so on um so we'll see like maybe maybe at some point um but yeah right now like
33:56: there's not like a single person like you can kind of go to like you know for everything and I'm not sure how well
34:01: it's going to like work as well because um it's you know like there's only so
34:07: much like a single person can kind of like handle so it's they cannot have you know like oneon-one like with everyone
34:13: kind like in the community uh next questions uh AK uh AK
34:22: _ 222 is ask hey can we import Unity scene to the game so right now you can't
34:29: directly uh you need to like use something in unit 2 to export it as a gltf or you know fpx and import that
34:36: however we do have a Unity SDK on the road map uh it's an good app uh if you'd
34:41: like to see this you know happen sooner uh giving that issue an upfold uh what
34:46: this uh would essentially do is give you a tool where you load it up in unity and
34:52: you can convert a Unity to scene or Unity object you know whatever you have like any you convert it into a resonite
34:59: equivalent and the way we want to approach this is by making it sort of
35:04: like uh a framework for making sdks whereas like you know like if you're familiar with web browser terminology
35:10: they have something called uh Doom the document object model and if you're for
35:16: example writing JavaScript it's a way you know for you to manipulate you know the page um we offer something that's
35:22: kind of similar that you can kind of access over network uh and that would represent the data model
35:28: and it would like on NPI that's uh easy to integrate into other Solutions so
35:34: what would happen is Unity would have like you a part it kind of connects to the resonite and it uses that to like you know build out the scene you know uh
35:42: based on its like on on its own scene and kind of you know kind of sync it up
35:47: um the way you want to approach it is you know build sort of the base of it where it converts a lot of common Unity
35:52: stuff but make it easy for anyone to add additional conversion scrip so for
35:58: example if you want to convert specific materials or components or even like more more complicated setups um you can
36:05: add extra codes to the SDK to handle conversions you know of those bits and
36:10: kind of expand it or modify to your needs and that way we would like you know uh we would essentially allow the
36:16: community to expound this SDK and like you know if you have very specific
36:22: components you know you can build your own tooling around it uh and also it would for other SDK for example have you
36:29: know goo in SDK unreal SDK which connects you know to the same resonite
36:34: like um uh same resonite sort of you know do the document object model
36:40: equivalent uh and use that you know manipulate the scene resonate and you know pipe data in and
36:48: out uh oh now is asking can you boost sound uh let me go to my audio settings
36:55: s can you say something hello I'm saying a long sentence meow
37:02: meow meow meow bark WF squeak I can't unfortunately hold on I
37:08: need to add a filter because you're right now you're like uh at 100 100% so
37:13: I need to add like a gain filter so give me a second oh okay try talking now
37:23: helloow this is better uh let us know it's still too quiet but it seems to be like going
37:29: about the same level uh death hyro someone one thing actually want to
37:35: read it one yeah I'll read this one um death Hammer asks to Cyro as someone
37:41: wanting to experiment with v and Linux what are some pitfalls you ran into when trying to get VR to work with
37:47: resonate so one of the I actually didn't have a lot of
37:54: problem making it work with resinate um so with the Ron Linux a lot of the um a
38:01: lot of the niceties that have kind of come of it are still kind of like being iterated on um quite heavily and so
38:10: they're they're kind of still in like the more the more bleeding edge dros um particularly Arch is um reaping
38:19: a lot of the benefits right now Arch based dros especially due to the fact that they have like the A and stuff
38:24: which is like the user repository um um in terms of some of the
38:31: difficulties um I guess one of the difficulties I experienced recently was that um the the program that you use to
38:39: like get up and running uh it's called Envision and what it does is it compiles like a profile for you and builds like
38:47: monado and open composite and stuff and monado is an open source open XR runtime
38:53: an open composite translates open XR calls into open VR calls which is why I
38:59: can use resinite um the problem with Invision right now
39:05: is that it doesn't set your GPU to uh VR mode so I was um I was experiencing a
39:12: little bit of like weird like jitteriness in my headset but there's actually there's actually a website you
39:18: can go to um I don't remember the link but if you look up Linux VR Adventures
39:24: on like Google or whatever search engine you want to use uh you should be able to find that
39:30: website and they actually have a a couple scripts there to set uh VR mode
39:35: on or off um which helps a lot um and makes it not like Jitter anymore like um
39:44: it works pretty good um oh yeah another one was the ey
39:49: tracking um because steamlink doesn't really work on
39:55: Linux uh the it tracking provided by
40:00: wyvern which is the open source streamer I mentioned earlier uh is only provided through open XR apis so I spent like a
40:09: weekend or so uh trying to like I wrote
40:15: I basically wrote a a driver for it essentially it just takes the open XR data and transforms it into steamlink
40:22: formatted data which then you can pipe into resonite and if you
40:27: we should make we should make an option to turn on the steam link or the steam link driver like force it on oh yeah
40:35: yeah there's been some with like yeah but anyways those were a
40:40: couple of my difficulties with the uh with h getting it to work is like I had to write my own uh like proxy for the
40:48: face tracking but it works good and I'll probably put it on GitHub at some point once I like clean it up a little bit I
40:54: was about to ask like like the feels like we got kind of sh like in a a community like would help lot of people as well oh yeah I will definitely
41:04: yeah answer your question thank you for answering that one uh I'm just going to
41:09: direct it oh yes um why is it that so dusty
41:15: sprinkles asks oh yeah why is it that Reverb zones seem to only affect non-s spatialized audio and I thought this was
41:22: kind of weird too um but a lot of these so a lot of Reverb effects that you
41:28: apply in like you know digital audio workstations or like you know by using like vsts or you know whatever you want
41:36: to use for Reverb they're not like physically based they don't take into
41:41: account like the environment around you um and so if you were to apply a Reverb
41:47: to spatialized audio like let's say there's let's say there's something making noise right here and you apply
41:53: that to to the audio coming out of it like the the end result of like the spatialization it's going to mess up the
42:00: spatialization because the spatialization is a is a bit more complex than I think most people realize
42:07: because it it has to calculate the exact difference between how the audio sounds
42:13: in your left ear versus your right ear um so that you can accurately determine
42:19: where something is in the scene um and if you apply a Reverb on top of that
42:24: it's going to mess that up um in some cases depending on like the effect it might be fine
42:32: um but it it it would probably mess it up
42:37: um like one of the things like it does like uh that's part of like the binal audio is the hrtf which is like heaed
42:44: transfer function and pretty much what it is like it it it subtly modifies the
42:49: frequencies of the incoming sound for each ear because if you like think about it like when when there's something you
42:55: know on the left and it comes you know into this ear then like you know it's kind of having a direct path but for
43:01: this ear it actually has to go around and through the skull and that makes it sound subtly different or when it comes
43:08: you know from the top it's kind of like you know you know coming from the top so it's not going directly into the ear but
43:13: it's going you know through your skull and through the shape of your ear and our brains they're like very finally
43:18: tuned to pick up on these subtle frequency differences to determine which
43:24: direction the sound is coming from it's also like why you can you know you can tell that the sound is coming from the
43:29: top or from the bottom because if it's coming from the bottom that's you know it's going through different parts of your head and your ears also shaped
43:34: different from that direction and all of that is uh um all of that you know water brains
43:44: pick up on there's like other parts that don't mess with the frequency which is like um um I forgot the term for it I
43:50: think it was uh IP know like it was like inter like the time difference so like
43:55: like if if something comes from the left it arrives at the left ear slightly sooner than on the right ear and it's
44:01: another thing that our ears pick up on so that's kind of you know very direct kind of sound specialization and like
44:06: the Reverb can kind of mess with that so um I think like by default You Know stee audio which we use for specialization it
44:12: just doesn't work with the reverbs um but uh it also usually the
44:18: audio specialization libraries they have their own Reverb systems and those systems are more physically modeled uh
44:26: which means like the actually model you know if if something like if a sound bounces you know of this carpet the carpet modifies you know the properties
44:33: of it and it bounces into the ear so on top of having you know the initial kind
44:39: of like sound arriving to your ear you have like you know we have primary and secondary and tertiary Reflections that
44:46: can happen in the world and that also actually gives you some idea you know about the shape of the room you're in it
44:52: gives you some idea you know about the structure of it because like if you're in a room with lot of like you know soft pading that sounds very different from a
44:58: room that has you know stone walls um and the specialization like uh
45:04: with steam audio for example you can you can geometrically model the scene and say you know these surfaces have this
45:11: you know properties for sound and it's going to simulate that it's actually you know the sort of like sort of like a
45:17: it's almost like um what's the term for it um not thing
45:24: umay foring it's like path racing but instead of you know visual it's for
45:30: audio and it's kind of like you know gives a little specialization so like usually you'd want to like use that to have it more physically model so it
45:36: actually matches you know what your what our brains expect yeah and that isn't that isn't to
45:41: say that you oh sorry I I I wanted to add one last thing on that if that's okay um that isn't to say that we
45:49: couldn't um have it on like partially unsp spatialized audio so like let's say
45:55: you had a radio but you kind of wanted ambient Echo you could have it be like partially unspa and then the unspa part
46:03: which would be you know Global um around the object could have that little bit of
46:09: Reverb applied to it especially in the cases of stereo Reverb like Zeta Reverb and we definitely should allow partially
46:16: UNS spatialized audio to uh have Reverb applied to it once we rework the audio system and there also like another
46:21: benefit of reworking the system because uh like right now with unity I don't know how do we do it like we have to kind of mess around with it and maybe
46:27: you know do some Shenanigans to like make it happen but when we have our own audio system like you know if kind of
46:35: had a similar thing like you know with Photon does like you know the Thanos meme of like reality is whatever I you
46:40: know whatever I make it or whatever I want we just kind of do the thing we can like that's one of the reasons why
46:46: sometimes reor system is because we we can just make them work the way we want where versus if you're using you know
46:51: another system it's kind of sometimes it gets hard to like make it do certain things because it's not designed for
46:56: them um next question unfortunately like I don't know the context for this one AKA
47:02: 222 was asking will it work but I don't know the context if you have if you have another you know followup question make
47:09: sure to include context in your message because we only see you know the question itself so uh we can answer that
47:16: uh next one is cobu is asking what are the plans to improve hiabs when spawning large objects like avatars so this
47:24: another those complex ones I mean generally anything performance is going to be a complex question uh one thing
47:29: that should help a lot just on its own uh is once we make the switch to net
47:34: nine because part of the part of the hiccup is you know um well there's
47:41: multiple parts to it but part of is like you know the processing time which on itself is going to be improved by net n other part is caused by the garbage
47:47: collector because the one that's used in unity um it's very old like it's it's
47:53: older than I am it's like from 1988 and it's not been designed you know for
48:00: this kind of use but unfortunately Unity is stuck with it and one of the things it does particularly when you allocate a
48:05: lot of memory it essentially freezes the whole process and does like you know full collection usually try to do it
48:11: incrementally but like when you have Southern memory Spike like it tends to like do those kind of freezes so that's
48:16: contributing to some of the hiccups as well uh and once we switch to net 9 that has much more modern garbage collector
48:22: with much better performance that should remove part of the hiccups uh the other part is also loading of the asset
48:30: themselves because right now for textures when textures are being loaded we use uh time slicing what it means is
48:38: the uh the upload of the texture to the GPU we only spend certain amount of
48:44: time uh per frame to do it so like you know it doesn't doesn't C long hiccup so
48:49: like if you're uploading a big texture it's going to happen you know over several frames and the impact of it's
48:55: going to spread out but right now it doesn't happen for meshes um when the unit integration gets
49:02: reworked it's a part that I would like to touch where uh you know the upload of
49:07: meshes is also kind of like you know time sliced uh still have to kind of explor like available apis and how
49:12: complex that is but that could also help uh and if that you know doesn't happen
49:18: or it doesn't help as much uh once we switch to our custom rning engine uh
49:23: which is could name Sauce we will have much more control on how data is uploaded to the GPU because with there's
49:30: like certain kind of limitations on that and we actually even for the textures we're doing a bit of a hack that Unity
49:36: kind of makes harder to do um so
49:41: um well once we kind have full control over the engine like that's going to give us a lot more kind of options and
49:47: regard to make things more um you know time sled or asynchronous so there's like multiple
49:53: things to it but like overall like there should be like also gradual improvements on those uh next question is St is
50:00: asking was there a reason for swapping to n n relatively early in its release um I was kind of flipping like it's more
50:07: like there was there was not a reason not to do it uh the swap was with it was
50:13: literally just flipping you know toet from net 8 to net 9 in the project build file and everything pretty much worked
50:19: there was like one syntax like issue that I had to fix which was uh one of
50:25: the functions and this was in the CL it wasn't even on the client where function was some ambiguous because there was a
50:30: overload I fixed that it compiled and everything just kind of works and on the
50:35: cloud we actually got uh we got bonus performance let me actually bring the
50:41: graphs um I posted them in devlog like a while back well actually the question is can I
50:47: find them quickly enough uh I'm just going to scroll through it is kind of cool how um how
50:53: even like the incremental upgrades still give you like a nice like chunk of performance benefits it's literally we
51:01: haven't we don't change anything with the code we literally change a number and suddenly free
51:06: performance so this one uh this is our Cloud background worker which generally
51:11: has like constant CPU load um and if you look this is this is when we switch that
51:18: worker from net a to net 9 and you see the CPUs is just kind of dropped all of
51:24: a sudden which is free performance uh they every year they
51:31: release a new version of net they have so many performance improvements like if you look at the Block post like they're
51:37: ridiculously long and like I remember I think it was like with Net 7 like the
51:42: post was so long if you loaded it on a mobile web browser it would crash because it's just too much and the
51:48: author of those post like they were they're kind of doing it partly on purpose because originally when they
51:54: started doing those post they were like oh like we I think so many performance improvements early on the next one I'm
52:00: like we're going to do them all and then I have nothing to write about but instead every year they have like more and more and more to write about so like
52:07: we've been like very happy with this but also sad because we were not able to get those performance improvements because
52:14: it requires huge amount of work but you know thanks to everybody in the survey like voting for performance we kind of
52:20: like it's this is going to be a big chunk of for but like we're going to do it we're going to get you know those big
52:27: improvements this is uh this is the API front end one so you can also see like
52:33: the switch happen around here and you see like this one has a little bit more variable usage because it depends like on the you know how much stuff is
52:39: happening but you can see like overall it actually dropped afterwards as
52:46: well yeah it's it's it's absolutely insane especially especially CU
52:51: like uh the the headless the just the the the shei
52:57: like Grand Canyon Cliff between like the performance between like the Headless and the graph client now oh yeah the
53:04: Headless can render everyone you know in like a 40 person session and it's a 60
53:10: that's the crazy thing it's like so like the the the graphs I just showed that was you know going from do net 8 to net
53:16: 9 which is a relatively small Improvement but it's still again it's still enough that this it shows up
53:22: there's just more performance but the one we're using right now mono you know that's that's like at least order of magnitude
53:28: like like like like if it was on a graph you know mono would be somewhere here and then like doet 9 is somewhere
53:34: here like that's much much more drastic performance Improvement between the
53:40: two like half a deck yeah like it's it's it's it's insane and that's one of the reasons like we don't want to do it it's
53:47: also like why we did like you know the headlight first so we can kind of see how much it actually gives because it's a headless it
53:54: runs headless runs you know majority of F engine like it runs the same code that's running right now to like do all
53:59: this except the you know rendering parts and fuel extra bits but majority of the
54:05: CPU time is spent in the same code so it gives us a really good idea like what kind of performance boost we
54:12: get more than we could have imagined no go ahead it's fine next one also for you
54:17: uh do you want to read this one yeah yeah I'll read this one oh this one's uh
54:23: Nia love asks syyro is the driver you made for using your face tracking uh resume uh they're asking if
54:31: it's available somewhere we'll maybe try it next time uh I try Linux on my um
54:38: void is that void Linux also when open XR support FRS um to answer the first
54:44: part I will I will most likely put it on my GitHub I just need to clean it up um
54:50: and not hyperfocus on uh funny little bits of it that don't matter but it it
54:59: will be a my at some point um so answer like the second one so open XR support
55:05: right now is actually a little bit difficult because the version of unit that we use doesn't really support it
55:11: and the ones that do they actually break some of the stuff we use so if we were
55:17: to do that like we would have to break you know some content unfortunately which is one of the reasons we like
55:22: there's like many reasons but this is one of the reasons we're moving away from unit uh to our custom rendering engine so we
55:29: actually have control of it and we can use Modern Times And also maintain long-term content compatibility so it's
55:35: not going to happen I can tell it's pretty much not going to happen with un but like once we
55:41: switch you know to Sauce um like it it might even be like you know out of the box kind of support like I I'm not 100%
55:48: up to date like on that part but uh that one will make it at very least it's going to make it much easier to support
55:53: it uh and I think it's probably going to book there is a there is a big a really
56:02: big asteris technically with that and that's technically if you use like if you're
56:10: using Linux like I'm using right now monado and open or open composite
56:17: will actually translate open XR calls into open VR calls so I'm actually using
56:22: open XR right now and it's still faster than steam VR yeah so I'm just going to try to get
56:29: through the questions because we're we're coming up on an hour um so I do want to let you know the Thea to dust uh
56:35: kind of you know talk a little bit more that and do a showcase uh so next one uh we're going
56:41: like you know we're going to do the Showcase we're going to cut off the we're going to try to get through the questions we have right now uh then
56:47: we're going to have a look at phot on D I want to talk a little bit more about it like in general and then if you have
56:53: a time we can more questions uh so next next Grand UK I feel a community volunteer could fit well for Community
56:59: manager to be the community voice in those meetings where appropriate also one person can manage to mat connection
57:05: a team similar to moderation or mentors could be as good as voluntary basis as well to prevent massive workload unless
57:10: anded in team What tent idea so there's few problems with that one is like we
57:16: generally cannot do community volunteers on that kind of level because like you know a bunch of like company and legal
57:23: stuff the other problem I have with that is like you know it's it's like it makes it one person in general like we try to
57:30: like avoid having like you know one person for this thing because that introduces more bias into things so if
57:37: you actually have multiple people in the team each providing kind of different perspectives I feel that's much
57:43: healthier overall we do similar things you know with the moderation team where
57:48: like um if there's like anytime there's a moderation tickets multiple moderators see it and multiple actually kind of
57:54: contribute to it even if there's like you know one make kind of moderator handling you know that particle ticket
58:00: um and what it does is make sure like you know no particle moderator if like anybody has biased to the situation
58:06: there's multiple people kind of checking up on each other so um like I I feel
58:13: it's kind of better like you know something that kind of comes kind of from multiple sources and multiple viewpoints that are like you know a
58:20: single kind of question uh and the mentors could like
58:27: potentially help like like one of the things mentors could potentially do is you know make like if there's like lot
58:33: of common problems that people are hitting is you know for example write up GitHub issues make like reports about it
58:38: and we can then you know look through those so that's like you know one way to kind of like help with those things but
58:47: um it kind of depends you know what what what do you like imagine the interaction to kind of be
58:53: like next questions nof are you planning to do the I reor right after performance update is considered finished or is it
58:59: not set in stone it stuff uh it's not set in stone uh the I is still like one
59:05: of the kind of high things we want to rework uh it's kind of up there with stuff like UI and so on so we'll we'll
59:12: see like we'll cross the bridge when we get to it uh usually when we finish kind of big chunk of work we kind of
59:17: reevaluate and we're like okay where we at what's the biggest paino right now you know was the
59:23: most uh what is the thing that's going to have the most impact that we can work on right now and it can very well be you
59:30: know the ik um but it could also maybe it could be like UI there might be also
59:36: like you know some smaller projects because one of one of them that we're considering is you know doing stuff like the unity SDK because uh that one's much
59:43: quicker to do and we can like you know let Community expand and build around it
59:48: um so that might kind of help you know but it's there it's not set in stone yet
59:53: there's like a bunch of kind of like ideas on that one and we we'll see uh next one is dust the sprinkles
1:00:00: when we have multiprocess and fanges out from Unity would upgrading be easier over the still breing existing content
1:00:07: uh unfortunately it doesn't make upgrading unit any easier the problems we have with r now that would break
1:00:12: content are purely on the rendering side and like what support it so we're very
1:00:17: likely not going to upgrade Unity uh we would also wouldn't probably get super many benefits like from it um we're just
1:00:24: going to you know go for a switch you know to custom rening engine at that point
1:00:30: um next one is gr K when you start open X work make sure to get start to do some testing on Linux to make sure it doesn't
1:00:37: break massively there yeah fig are probably going to be like you know doing bunch of like Linux testing since you like daily drive it
1:00:45: yeah um as next one gr do you mind if I talk to there after stream talk over it
1:00:50: before make official feature request U probably not after the stream I generally tend to like uh you know
1:00:56: go out of like kind of work mode and kind of like just hang out and so on so we I like in general like I will don't
1:01:05: want to do like much kind of work talk like while I'm on there night because it makes it much harder so like you know set
1:01:12: boundaries um and it's something like that's been kind of contributing to like
1:01:18: you know burnout issues and stuff like that so like I need I need to set a Hardline there I'm sorry um I don't
1:01:24: recommend just you know making the Quest we look at it you know whenever we can and we either say like you know yes now
1:01:29: or maybe something different as a good rule of them um it's
1:01:36: best to like take the the issues that you're having with resonite and majorly keep them on stuff like the GitHub CU
1:01:43: you know when we come in game uh we kind of just want to exist in the thing like
1:01:52: that we made um and we kind of want to just living it like you guys
1:01:58: and uh being reminded of you know like work all the time is kind of hard on on the on the old psyche it's already like
1:02:05: difficult to kind of like Get like out of the work mode like a lot of the times and the other problem with that is like
1:02:11: like I used to do it a lot like when I kind of talk about this stuff like in game and I even take like I used to like
1:02:17: you know take feature requests in game and you know just kind of write them down as people are doing them and do
1:02:23: them but like as the community kept growing it became like unmanageable and like and
1:02:29: the problem is you know like if like if we make exception for this person then you know then this person gets you know
1:02:35: upset because like we told those that person no and it's also it's just
1:02:41: becomes this kind of slipper slope kind of thing that like makes it hard to like set boundaries for things and makes it
1:02:48: harder to like you know be able to like relax so we generally like you know we
1:02:53: want to be pretty stricted about people going through the official sources um with that like uh that's uh
1:03:00: we have like 1 hour minus 3 minutes left so uh there should be there should be
1:03:06: like time for like more questions probably but uh right now I want to do a
1:03:11: bit of a showcase and talk about Photon dust uh which is our new particle system
1:03:17: so I'm actually going to I'm going to get this this one this the one I get up to because we're also going to be moving over there so I'm just going
1:03:24: to there we go and I'm going floor there we go so I'm going to switch
1:03:30: the camera over here and I forgot my brush uh where's my
1:03:37: brush oh wait I'm done I have it on my tool shelf I'll gra I'll grab the chat too there we go
1:03:44: so okay and where's my streaming
1:03:49: window where's my streaming window oh it's in the desk there we go there we go
1:03:55: hello so just to kind of give it um you know
1:04:00: give a little bit of a context uh Photon dust uh it's our new brand new particle
1:04:06: system that's written inhouse uh it's written from scratch and it replaces the
1:04:11: Legacy particle system that was hybrid between our system uh like and unity
1:04:17: which was doing majority of the simulation uh currently at the time of this video uh it's still in pre-release
1:04:24: uh testing but it's going to be released uh into main builds very soon and you can already kind of play
1:04:30: with it people have been doing you know lots of cool things with the system um
1:04:35: and we're going to just kind of showcase you you know how is it built and one of the reasons we also did like you know
1:04:41: photo and dust is uh because of the performance updates uh but also uh you
1:04:47: know to kind of get more control on the particle system works and how how is it
1:04:53: kind of you know like um be able to like you know add a lot of new features and L of tools for people to work with and I'm
1:05:01: actually going to do a little primer on particle systems because if you think about it particle systems they're very
1:05:07: core they're like you know very simple so say like you have like a coordinate system I'm just going to do you know
1:05:13: 2d1 um what particle system is is you know we have like bunch of particles
1:05:18: each particle can have you know a position you know so like this one has like position on the X and you know y
1:05:25: axis need to Li my Axis um you know so there's like
1:05:31: position you position you might have you know rotation the particle might be like you know 2D like it might be you know 3D
1:05:39: rotation uh it can also have stuff like you know size something like
1:05:49: color uh and there you know can have stuff like velocity so for example it has you know this velocity which means
1:05:55: it's going to be moving this way so you know it can be like
1:06:02: velocity and there you have like you know bunch of particle in the system maybe there's like another one there that has like you know this
1:06:09: velocity you know there like a whole bunch of particles in a coordinate system and what you do is you update the
1:06:16: simulation based you know for example the velocity so if you advance it in time this particle will move over here
1:06:23: and this will will move over here and it's going to happen for every single particle in the system um you can also
1:06:29: you know evolve their size or color or rotation they can you know change over time or they can change based on you
1:06:36: know some equation um and the other part is you uh
1:06:42: when you have the simulation the particles they're essentially just pieces of information you know like the position size and another the rotation
1:06:49: just got rotation here you know position size color velocity which is used
1:06:54: internally uh and then you render it out which means you know for each particle for
1:07:00: example you can get like you know a Sprite that you render around this point in space or maybe you know little like
1:07:06: you know 3D model or whatever you want and then you know the Sprite is colored you know by the particles color um so that's kind of G you know of
1:07:14: how particle systems work is we have points in space and you're updating
1:07:20: their parameters over time they also have something called lifetime
1:07:30: Lifetime and essentially that indicates you know how long does the particle live for so like when it stars maybe you know
1:07:37: the lifetime is 1 second so like you know it keeps moving and each step its
1:07:42: lifetime is dropping so here it would be you know say it's like 1 second here and this is 0.9 seconds and over here is
1:07:49: going to be 0.5 seconds and after 5 seconds it's going to it's going to you know disappear
1:07:56: the lifetime is also something that you can use to drive other parameters so for
1:08:01: example say like you want the particle you know to fade in and out so what
1:08:06: you're going to do uh is you're going to Define you know some kind of function how does the color of the particle
1:08:12: change over its lifetime and you can essentially say at the beginning of its lifetime like if you if you were say
1:08:19: like this is you know alpha alpha
1:08:25: and this is you know when the particle starts living this is when it dies that's 0.1 seconds and you're going to
1:08:31: say you know the particle you make like a function that's like when the particle starts living it goes you know uh from
1:08:38: transparent it becomes visible then it kind of exists and then sometime you know before it dies it's going to fade
1:08:44: fade out so that's for example one way you know to mop its lifetime
1:08:58: you know to to like a property like the alpha or color it could also be size you know like it could you know start tiny
1:09:05: and kind of you know and then kind of you know get big and then get small again you can also do multiple
1:09:11: parameters so for examp so for example you know you can do alpha like this so it actually fades in and then Fades out
1:09:18: but also you could do something like size over time where it just keeps growing so it it can you know at certain
1:09:26: size and it just keeps growing and it dies you know at certain size and you have created mapping
1:09:32: between the Life Time and the size of the particle there's lots of different ways you know to create mappings between
1:09:39: these properties in order to create all kinds of effect like if you think about it for example like a smoke effect uh
1:09:47: say you have like you know you have a Sprite that's a smoke you know it's some kind of smoke
1:09:52: Sprite and for each particle it fades in when it appears it doesn't just you know pop into existence it stays and then
1:09:59: like it fades out and you also combine it with a size so it starts small and it kind of expands and as a way you know
1:10:06: you can combine two effects you know to get like a smoke effect or lots of different ones um you can also do you know lots of
1:10:14: other effects for example you can have you know you can apply forces to them like turbulent Force so instead of the
1:10:21: uh velocity of the particle just being the same you know let me me actually do another one over here so let's say one
1:10:27: starts here and the particle starts moving moving this way but maybe you know
1:10:32: there's a force that like when when it moves over here the force now moves here
1:10:39: which means next time it's going to be here and the force rotates this way and next time is going to be here and the
1:10:44: force rotates this way and and makes the particle follow you know some kind of turbulent path because the velocity
1:10:51: itself is changing over time so there's lots of things like that we can do you know with particle
1:10:57: system um I'm going to clear this out the way Photon dust is designed is
1:11:05: um you have some base properties so you have like you know you have the
1:11:11: position you have rotation you have
1:11:18: scale and you have color and then you have also like lifetime which is like how much lifetime
1:11:25: it has over lifetime so those are some of the kind
1:11:30: of builtin properties that particles have and these every single particle is
1:11:37: always like on to have some of them can be just you know default but they are kind of part of photon dust uh and
1:11:43: there's starting versions of these when the particle is first created when it's
1:11:48: essentially emitted from an emiter uh it initializes the starting values so for
1:11:53: example the emiter can you know know it gives the particle position so like if you have a sphere emeter you know like
1:12:00: that's emitting particles it can be emitting you know particles within its volume it it will give each particle a
1:12:07: position within that volume and that's you know the job of the emiter to do that uh you can have rotation you know
1:12:13: scale color they all kind of initialized and for example for color uh you can have a
1:12:19: module um and I'm kind of actually I'm kind of skipping ahead a little bit um
1:12:24: or just back a little bit uh the way Photon dust works is you have these basic parameters and you have a set of
1:12:31: modules and modules that can do multiple things some of them will initialize the
1:12:38: starting properties some of them will calculate new properties during the particles Lifetime and some will kind of
1:12:44: you know do mix of both and do like more complex stuff uh so we have modules which
1:12:51: initialize some of the properties so for example you want each particle to start with a unique color you can have a module that assign computes color for
1:12:58: any particle does a mix between two different colors or maybe it picks it from a texture you know or maybe it does
1:13:04: some equation to compute it or maybe like you know sometimes the amiter can like you know also contribute a color if
1:13:10: it's like a Mees meter uh or if it's like a meter which just some you know equation to comput a like the initial
1:13:17: color for a particle um what Photon what Photon does does is it has in a bunch of
1:13:24: these St properties but then also has uh sort of output properties and for those
1:13:31: you also have position you have rotation you have scale or
1:13:39: size uh and you have color and there also like another one uh I'm not going to well I added here which is like a
1:13:46: frame index you can think of it as sort of like U coordinate uh you don't have to
1:13:52: worry about this one super much these are like really domain mod because this is what is needed to render the particle
1:13:58: you're essentially going to render particle at certain position in space you're going to render it with certain
1:14:03: orientation at certain size the size is 3D by the way and with certain color and
1:14:10: these then go into a render module so this goes into a
1:14:21: renderer and the renderer uh is essentially responsible for taking this
1:14:26: data and making the particle appear in some way and it can be like a billboard
1:14:31: you know so it's like a billboard Sprite so there's like a there's specifically a module called billboard renderer there's
1:14:39: also mesh like a mesh render which uh for each point is going to you know
1:14:44: render some some kind of mesh and there could be like you know more in the future like one that I kind
1:14:50: of want to add at some point is one that actually computes a mesh using something like marching tubes to sort of create
1:14:56: like a you know a surface so you can do stuff like that looks like liquid uh and
1:15:01: there's like you know kind of lots of like opportunities like you know for additional renders there but the G of it
1:15:07: they take these they make sure it's rendered out and then the photon dust itself it will take stuff like the
1:15:14: emitter to make to add new particles to the system and then we have a bunch of
1:15:19: modules which take these and compute these one of the important modules is
1:15:26: the position simulator and this this a typical way particles are
1:15:32: simulated but unlike the particle system that's in unity Photon dust is very
1:15:38: modular so there's like you know there's lots of different ways the initial properties can be transformed into this
1:15:44: output like render properties but uh just to kind of keep thing simple you have the position
1:15:51: module so I'm going to just be position module
1:15:58: and um the position module what it actually has we can notice like you know
1:16:03: in the starting properties like you don't really have um you don't have the Velocity and
1:16:09: it's because there's lots of different ways to compete position and the velocity is specific to
1:16:16: the position simulator module so the module can actually add its own internal buffer which is velocity
1:16:26: and that velocity can also be initialized from starting from starting
1:16:31: properties you can have like module that you know for example assigns a new speed that's like you know between minimum and
1:16:37: maximum those like One initial property that om it called
1:16:42: direction or sort of like initial like
1:16:48: vector so the position module when a new particle is added it will take the
1:16:54: direction to compute initial velocity and that will get then get multiplied by any initializer module to kind of like
1:17:01: you know compute initial velocity what a position module will then do that every single update it will um it will
1:17:08: essentially compute a new position for the particle and it makes the particle move around and you can have you know
1:17:14: another module like you know color over lifetime I'm just going to call it
1:17:20: Lifetime and what this module does um it will take the starting
1:17:27: color and it'll do something with it like it's going to multiply with some value and then it you know computes the
1:17:33: output color and can do whatever math it wants
1:17:38: in here you can also chain those modules so like if you have multiple modules so
1:17:44: you can have like you know one and there's like you know another one that like simulates color in a different way or maybe just do you know does the alpha
1:17:51: Channel and if you have multiple of them it will take take whatever this computed
1:17:56: do whatever on math and then you know assign the color it's sort of like a chain
1:18:03: um which is like why for Photon dust the order of modules matters the same also
1:18:10: happens for initializers if you have something that computes the starting color um it's going to um if you have
1:18:18: multiple of them they're all going to contribute and their contributions are multiply with each other so this is the
1:18:24: kind of general gist you know of how Photon dust works is we have some starting properties we have some sort of
1:18:31: like lifetime kind of properties like so like uh for example lifetime I can of simplify this one a bit because there's
1:18:38: actually um there's a starting lifetime which is just you know how long the particle is supposed to live and then
1:18:44: there's like its current lifetime which is uh which is how much it has um Left
1:18:52: To Live and some of these properties change during the lifetime some of these are
1:18:58: specifically starting ones and the ones end up changing are like you know
1:19:03: these um so this kind of should cover um this should kind of cover like
1:19:09: you know kind of the basics you have like the starting properties we have some lifetime properties modules modify
1:19:15: these in various ways or initialize these it computes you know final properties and then those go into a
1:19:21: renderer that like shows the output in some way uh I'm actually going to do a showcase
1:19:28: and I'm going to switch this one to first person camera oh and you can see
1:19:33: my hair give me a second uh wrong
1:19:40: one there we go so you should have the fruits view now and can see over
1:19:48: there and I'm going to spawn a developer tool
1:19:55: from the inventory from reson Essentials so this is the developer tool for anyone who's not familiar with and it can start
1:20:02: creating so if I go open context menu there's create new and you see there's
1:20:07: the Legacy particle system during testing both systems are available and
1:20:12: If I spawn this one you see this even called like aaral Style just going to
1:20:18: give people idea this is going to go away but this old system it's very monolithic you know everything like is
1:20:24: kind of bunched up in one place which makes it a little bit kind of harder to work with
1:20:30: it's also like harder to extend because for example the size of the particles is initialized you know it's always Min and
1:20:37: Max and makes it harder to do lots of different methods to you know initialize those um I'm going to get rid of this
1:20:44: one and instead I will create a new particle system so this one's going to be Photon
1:20:50: dust and you see over here you have the particle system that's the actual
1:20:56: Handler of the simulation so this is like you know what's triggering all the simulation with particles but in order
1:21:03: to simulate them it uses a particle style particle style it defines you know
1:21:08: how the particle system behaves uh and how it looks each particle style is going to
1:21:15: have specifically renderer and you can see it actually says billboard particle
1:21:20: render which is L know what I talked about uh
1:21:26: oh why canot I oh my controller was weird sorry which is essentially what I
1:21:31: was talking about here uh and that's responsible for rendering these particles you know in
1:21:37: the world there's also a number of modules and initialize it with a few basic modules so you know just to give
1:21:43: it some initial behavior um and you can see you know there's uh
1:21:48: there's a few of them and the modules are the ones that actually do stuff in the particle system you see there's the position simulated module
1:21:55: if I actually go make it go away you see now it's emitting particles but they're not moving around because there's
1:22:01: nothing that would be moving them so they only they they stay at their starting position so I'm just going to
1:22:08: undo that then you see the suddenly burst out um there's also uh bunch of
1:22:16: stuff that's been kind organized here so a lot of these modules that have been put under these slots um it's not
1:22:23: necessary to put them there uh I made it this way just so it's kind of easier so you don't have like you know a million
1:22:28: things in one place so I can be you know this is the emiter this is where the particles come from and if I move it
1:22:34: around it changes where particles come from I can change the rate of emission I can be like you know add more there a
1:22:43: thousand no I have a bunch of particles here [Music]
1:22:49: um I can change the color for this one for example this is like a new thing somebody like mentioned I was just I
1:22:55: just made it part of this emiter and when I'm changing this this is actually the emitter
1:23:00: itself which is uh giving the particle it starting color but you see it's still
1:23:06: being kind of combined because the particles when when they were white you see they go from white to black and the
1:23:12: reason they do that is uh because of the initializers they're specifically color
1:23:18: range initializer and what this does it uh picks a random color between minimum
1:23:24: maximum value so if I change this one we see they're now getting a random color
1:23:30: that's a linear interpolation between these two and this doesn't depend on the
1:23:35: emitter at all that's that's the module giving them you know that value I'm
1:23:40: going to change this one back to black it has been combined not all emitters have this the point emitter has
1:23:47: you know a single color um so we assign it it multiplies the color which means
1:23:54: they still go from uh they go from fully bright to Black because that uh color by
1:24:00: initializer is being combined with the emitter color I can also add other emitters so
1:24:06: I'm going to actually get rid of this one and you can see like it stops emitting because now there's nothing that's introducing new particles into
1:24:12: the system if I go under rendering particle
1:24:18: system emitters there's a whole number of them uh and I'm going to pick uh I'm
1:24:24: going to use box emitter because that one has like bunch more color options so for each emiter uh you need to assign
1:24:31: the system that it's adding particles to so I'm going to I'm going to open this
1:24:37: one next to this and I'm going to take reference to this and drop it here and you see now it
1:24:45: starts emitting new particles and I'm going to increase it a bit I'm going to do th and you see now now instead of
1:24:53: emitting from a single point the particles actually anything from a box
1:24:58: volume uh it's a little bit hard to see so I would want to slow them down so I'm going to go back to the
1:25:04: initializers and there's a speed range initializer so I'm just going to drop it
1:25:10: to lower value so they don't go too fast and I see like you can better see the
1:25:16: box shape of them what you can also see um if I go
1:25:23: back to the emiter the this one has its own method you know to give them initial colors so I can for example color each
1:25:30: vertex of the emiter so I can make this one red and I'll make this one
1:25:36: blue and this one green I think there not there not quite
1:25:43: enough particles I'm actually I want I want I want a bit more so what I'll do on the particle system you also have a
1:25:49: limit you know you see like we're actually reaching how many particles the system can have so just let's just add
1:25:55: extra zero there there we go we can get more
1:26:01: particles and let's see how many we have we have about 3,000 we can we can
1:26:06: we can bump it up a bit more let's do like
1:26:11: 5,000 there we go uh and I was going now was
1:26:21: going I'm might actually some I'm like live a little bit too long so what I'll do go back to initializers and this you
1:26:28: know lifetime range initializer and I'll just set it so like they leave live one
1:26:33: second because right now they were living between 1 and 5 Seconds so now they don't like you know
1:26:39: live too long and we can kind of get like you know a kind of box shape and it's kind of volumetric so like if I go
1:26:45: inside you know it's full of it's full of particles um each of the emitter they
1:26:51: have like a bunch of properties so you can kind of control how they move I for example say is want to emit from Shell
1:26:56: so now instead of you know being emitted from the entire volume it's sort of like you know a shell of a
1:27:02: cube and the still kind of being colored so what you have in this case is
1:27:10: you have the emiter and have multiple of these uh which is adding new particles to the system the emiter can also
1:27:17: provide some of the starting properties like the color in this case uh and the
1:27:22: direction and and then you have initializers which modify the staring properties for example the colorage
1:27:29: initializer takes you know the color from emiter it adds multiplies with additional color the the size is
1:27:35: initialized you know the particles are different sizes uh the speed is initialized you know lifetime is initialized to something uh and then you
1:27:42: have simulators and the simulators they they are what is
1:27:47: responsible you know for updating the particles over the lifetime and right now this is only the position simulator
1:27:53: module that's what makes the particles you know move because each update it computes their new position based on the
1:28:00: veloc like you know on their velocity uh it has a few properties on itself it can for example do collisions so like if I
1:28:06: enable that you can actually see an interesting effect here because now all of the particles are Computing
1:28:12: collisions uh and what you see is we might need like a bigger collider like a
1:28:20: box or something what you see though is is it's
1:28:25: running at lower frame rate but it's actually the particle system itself is running at lower frame rate than I am so
1:28:32: like if I switch this here you see you see like I can I can still move at
1:28:38: faster rate than the particle system is updating on and this is one of the big improvements that uh phon dust has over
1:28:46: the previous particle system is is asynchronous if you make the simulation too heavy which is like you know in case
1:28:54: um you know of having too many particles uh I'll actually make some modification so we can see the collisions better in a
1:29:00: sec uh if you make the simulation too heavy instead of this being your frame
1:29:07: rate instead you know of us running at the frame R particle system it's only the particle system that runs at the
1:29:13: slow rate um I love the simulation it happens on multiple core so this is
1:29:18: going to you know is multi threaded uh which the previous system was mostly As was
1:29:25: but it's uh also specifically it's also specifically
1:29:32: asynchronous uh let me modify the properties a little bit so like I would actually want the particles you know
1:29:37: let's let's make them fall to the floor uh for that we actually want something
1:29:43: that's going to update the velocity so uh I'm going to add a
1:29:49: gravity module so I'm going to add a component
1:29:54: because when you think about it like what gravity is is it's modifying the velocity every frame like if the
1:29:59: particle starts moving you know this way let's see where did I leave my
1:30:05: brush if the particle has some velocity gravity is a force that's modifying that
1:30:12: velocity is essentially acceleration that's pulling it down so as the particle you know it moves over
1:30:19: here and the direction moves a little bit downwards and then like it moves over here and Direction moves more
1:30:25: downwards and then moves over here and Direction More downwards and then moves here and directions now almost aligned
1:30:32: and essentially that ends up like you know falling it's because like there's a force that's being applied to the
1:30:39: velocity that's you know making move downwards and it's also accelerating because it's an additive Force so every
1:30:45: update you know the velocity is higher and higher and higher which means it
1:30:50: moves faster and faster so if I go to rendering particle system
1:30:58: modules uh these are probably going to get more organized um after like a uh
1:31:04: some time in the release uh but I'm just going to add a gravity force and then what I need to do is I
1:31:11: need to open the system itself when you add a module uh the module can actually
1:31:16: each module can be shared between multiple particle systems so you need to be able to tell the particle particle
1:31:23: step do you wanted to use this module so what I'll do I'll just add a new EMP space
1:31:28: for here under modules list and I'll drop it here and the particles start falling
1:31:37: down and now do we have a nice SC either just put it in make it a little
1:31:45: bit bigger I might need to have them live for a bit longer because this is a
1:31:50: little bit harder to see and uh make them a little bit less dense so I'll do
1:31:57: this this war is particularly bad like on collisions so is just as many and I'm
1:32:03: going to make them live uh sa for like 4
1:32:11: seconds there we go and you should be able to see they
1:32:16: could they should be like rolling off W this word is really bad for collisions I think it's because there's
1:32:22: like a lot of collide there and stuff in here uh this do this uh does this quy any beu
1:32:30: structures yes okay yeah all the collisions this
1:32:36: against B because this is the physics engine we use I'm going to make this smaller so it's a little bit easier to oh hold on um so it's easier to
1:32:45: see let me also reset the colors so it's
1:32:51: um I should have been doing hold on let me just gra this D this here D this here
1:32:57: just so it's kind of nicer to see there we go and I see they kind of like you know colliding and flowing
1:33:05: there and if I go back to the simulator and disable the collisions
1:33:13: they will you know start falling through and you see that runs Fair bit faster but I is you know not colliding
1:33:19: anymore but that's one of the benefits is like you know if if you had like Wars that are particularly not friendly you
1:33:25: know to collisions this would like you know if this was the old system this would be killing our frame rate but we
1:33:31: can still kind of run and it's just you know it's only the particle system itself that
1:33:37: degrades um let me lower this a little bit more
1:33:43: I'm just going to do 100 so if it's few of them it has like fear to simulate you
1:33:48: see like it actually starts running faster as they kind of Bounce Around
1:33:56: MH I expect this water to bit this part for collisions it's actually one of the
1:34:02: things that I kind also expect that we're going to get like a significant Improvement on once we do the switch to
1:34:07: do net 9 because um before physics it's specifically optimized you know for
1:34:13: more.net and is running way slower than it can uh you know with the mono we even
1:34:19: had to do some things to make it run reasonably fast uh but but like we're not like we're not anywhere like tapping
1:34:25: it full potential so like it's going to be one of those things it's going to be interesting once we make the switch and we're actually running the at 9 I can
1:34:32: expect the simulation to happen a lot faster when there's you know lots of physics like you know physics
1:34:37: interactions but also in general because it just generates way faster
1:34:43: code but uh you can kind of see you know the particle system how it's kind of like you know
1:34:49: doing its work uh if I switch back here um I can show you some more modules than
1:34:56: I can do so one of the things uh I'll change the initializer I don't want to
1:35:02: be like you know dead dark I just want to be a little bit there we go and bouncing over here there's lots of new
1:35:10: effects that were not possible to do before with old particle system and ones
1:35:16: that particularly benefit from the module nature of the system so I have added like you know a module that
1:35:22: simulates the force um which essentially you know just modifying the velocity let's add one
1:35:28: that modifies the color so I'm going to do attach component
1:35:34: rendering uh and I'm going to do modules this one like my favorite because it
1:35:40: makes cool visuals is color HSV over lifetime start end so there's lots of
1:35:46: modules you know that will modify the color somehow uh but I particularly want this
1:35:52: one because what this does it changes the color of the particle based on how
1:35:58: long it has lived and it changes it in the Hue saturation and value color space
1:36:05: which means if it starts at zero Hue and ends with one Hue it goes through the entire core Spectrum so I have added
1:36:12: this module now I just need to like add it to the particle style so I'm going to take this I'm going to drop it here and
1:36:21: and you see it immediately starts coloring the particle
1:36:27: I kind of like this effect like it's uh it looks pretty like Skittles Skittles you could
1:36:33: even do thing like you know if I if I set it to two then it's actually going to
1:36:38: cycle making them go all around it's actually going to you know go through the Hue like twice so you see it starts
1:36:45: red GES gets to red in the middle and then like goes through the Spectrum again so like you can play over these
1:36:52: properties can also you know just have it go through just part of the spectrum so you know this one just gets from Red
1:36:58: you know all the way all the way to Green the important part is also uh what
1:37:03: this module is doing if you look um I'm going
1:37:10: to position this this might be actually Fair bit distracting so I'll move it uh
1:37:16: I'll move the emitor from here where do I move it can we can we make them Happ have
1:37:24: shadows uh you can with the right render I'm just going to move it over
1:37:29: here and have in bounce over there there we go or maybe here now they're going on
1:37:36: the desk so what this module is doing and I
1:37:42: have a bunch of clutter here and I lost my brush oh there it
1:37:48: is what the mod is doing it's taking the starting color which is in izing by the
1:37:54: initializers and then it's Computing it's taking the current lifetime seeing
1:38:00: how long the particle has lived and it computes a new color based on that lifetime multiplies it with a starting
1:38:06: color and then you know writes it into the color to be rendered and it's going
1:38:12: of How It's achieving its work um you can also combine multiple things I actually have a request sir would you be
1:38:18: able to like bring me like a gradient texture whatever gradient t sure like
1:38:23: you would like yes I do have one actually do have a cool one I do have a
1:38:29: cool one let me see if I can find it here just real
1:38:37: quick aha here we go all the colors of the rainbow beautiful so where's the
1:38:44: colors of the Spectrum which is yeah that's pretty much um so what I can do
1:38:50: I'm going to switch this buag into SM POV what I can do here um is add another
1:38:58: module I'm going to add another simulator and if I go
1:39:04: here I'll add rendering partical
1:39:10: system modules there's also color over lifetime texture and what this module
1:39:17: does uh it assigns it instead of like you know the color being computed
1:39:23: automatically it will read it from the texture you know going from left to right one thing I need to do in order to
1:39:30: use this texture I need to make sure it is readable so I'm going to open it in
1:39:36: inspector uh let's see where texture itself is uh I could have just opened it
1:39:41: from there uh I'm just going to open it here so I'll grab this
1:39:47: one get rid of this uh oh this is a procedural texture
1:39:53: okay I thought it was a big one so this one this one's already going to be readable because procedural textures are readable by default yeah so I can I can
1:39:59: literally just uh grab this texture and drop it here and I'm going to open I should have
1:40:06: probably just kept this I don't have it open over there so I'll just grab this let me just pull this out uh so I
1:40:13: have the particle style and I'm actually going to replace the module first so I'll put this one
1:40:20: here and you'll see it's actually as the particles live the colors are going you
1:40:27: know through the values in this texture so you can you can add like you
1:40:32: know whatever you want there like I could literally even do this you know this probably going to be weird but um I
1:40:38: could take a picture once it loads and drop that in there and it's
1:40:45: going to you know it's going to use those values to call those particles uh this one I do need to make sure it's
1:40:51: readable uh so I need to my check readable I need to check
1:40:57: uncompressed there we go now I can drop this here it's only going to use like a strip of it so it's going to be a bit
1:41:03: weird but you can kind of see you know it's getting the colors from this
1:41:08: texture oh yeah it's like going along the top it's going along the top I do want to add a module that like lets you
1:41:14: kind of like you know randomize like which part of this also kind of comes through so uh there's going to be more options for that but you can see kind of
1:41:20: an action um but I'm going to drop this back
1:41:26: in and uh actually have like another question can you find a texture that's
1:41:31: also like a gradient which is a color gradient um
1:41:37: but uh it doesn't go through all the colors it's only a few colors I that one
1:41:43: and I'll show you like another effect um which comes you know with combining the modules so this module each one
1:41:50: essentially is like you know doing something to the colors if I take this one and I also add
1:41:59: it you can see it's it's it doesn't quite like look like much because now the colors are getting multiplied with
1:42:05: each other so what I'll do here is uh instead of changing the Hue I want to
1:42:10: keep the Hue the same so now it's actually starting like
1:42:16: you know it it's literally just the red Hue for the whole lifetime and it get multiplied with the Hue on this one and
1:42:22: because it's red any other color gets masked out um but what I can do is I can also
1:42:31: remove the saturation because I don't want it to be I don't want it to be like you know kind of saturated at all and
1:42:38: now I can change the Valu so I can for example set start value to be black and
1:42:43: you see like it's kind of combining the contributions of these two to produce the final
1:42:48: color but what also matters is you know which order these modules are in so if I swap
1:42:55: them oh actually for this one it's not going to matter um because the multiplication that always the
1:43:01: same in some cases it'll like matter because uh depending you know on the order of
1:43:06: operations um it's going to produce you different results but in the case it doesn't because it's a
1:43:12: multiplication but you can kind of you know you can stack multiple different modules to like you know produce
1:43:18: behaviors as I'm checking on the time I'm actually going of speed this up a little bit because um yeah yeah so I
1:43:23: going like skip over the other texture Stu because there's a few more things I wanted to Showcase um one of them is you know some
1:43:30: of the kind of turbul and stuff because there's are really cool effects and I see we have a few questions as well so
1:43:35: I'll try to get those in a sec um let's switch this back to the
1:43:42: camera and I'm going to bring the emiter over
1:43:49: here and I will remove one of the systems I think I've closed it I always
1:43:55: close things without thinking about it so get rid of this one uh I change
1:44:04: this simulators I'll change this one to have the full
1:44:11: saturation I can no it's okay like I'm going to skip that part right now because uh okay okay
1:44:18: uh we're going to running shorter on time uh and also I'll get rid of the the G
1:44:26: collisions then I will lower the gravity I want it to be that strong there we
1:44:34: go so one of the cool effects um canot go in like this one of the cool effects
1:44:40: also um there's a new turbulent turbulent Force so we have the Gravity
1:44:46: Force but we can also add uh under rendering particle system modules
1:44:53: there's a turbulent Force oh actually it's called I think it's called Simplex
1:44:59: turbulent Force there we go so I add that one I will add this
1:45:05: module Simplex turbulent force and you see it kind of starts the particles start kind of like you know
1:45:11: flowing a bit different and you can like you know mess with these settings you know there's
1:45:16: like different ways for it to work so like can for example have it like you know Al Direction and see now the
1:45:22: particles are going you know doing this thing and can maybe I can make it
1:45:29: stronger and maybe I want it to be like you know do like this kind of thing and we
1:45:37: increase the scale so like it's a little bit more is a little bit more kind of wored
1:45:43: and this one actually might be too strong for
1:45:50: this so see now they're kind of like doing like this kind of more complex behavior I'm not going to like mess with it too much because like there's like
1:45:56: you can literally spend hours like you know just messing around with this you know producing all kinds of cool
1:46:02: effects um but I see the particles like they can do a lot of kind of cool stuff there's like one more thing I'm going to
1:46:07: actually show you uh because I want to give a little bit more kind of background on how it works um you know
1:46:14: like each particle it can have um you know it has its own render but there's
1:46:19: also specific modules which are also their own renderers and add like
1:46:24: additional rendering to the particle system one of those is the trails module
1:46:30: uh so if I go back to smooth POV uh I'm going to add I'm just going
1:46:36: to add it to the root uh rendering particle system modules there's the
1:46:44: trail uh Trails module where is it
1:46:50: Trails partic oh it's particle Trails module there's partical light module ribbons
1:46:55: Trails I'm going to show you the trails one so there's Trails module which has also a bunch of stuff um I'm going to
1:47:01: I'm going to just give it the same material for the time being um there's lots of options to play with and we
1:47:07: don't really have time to like go through all of these but I'll assign it here and now you see the particles
1:47:14: actually start drawing Trails you know which is like looks really
1:47:21: neat and and if I now start like you know messing with like stuff like the forces um I'm going to go
1:47:31: simulators uh going to make themos stronger oh this this weird does
1:47:37: it just turned into a clump and change the scaling on it on
1:47:42: the turbul force there we go you see now it's doing all this cool
1:47:50: things if I change the Force Offset you know it's going to do
1:47:56: like oh that is weird you need to mess around with the
1:48:04: fait might need to like lower the strength so they're not like too
1:48:11: constrained or do this kind of thing oh that is
1:48:16: NE yeah I'm kind of getting into the there we go this this one's supposed to go this way and I'll change this
1:48:25: one there's lots of different things you can kind of you know do like you can just mess around with it and do all kinds of effects but what I wanted to
1:48:33: show you with this one there's also like you know modules um
1:48:39: where there's modules where um actually can can you can you move them a little
1:48:44: bit somewhere so way I'm just going to clean up uh I think I kind of showcase like
1:48:50: enough there like I understand how long this is going to take so I don't want to get like know to some
1:48:57: questions okay they're they're they are over there now it's um it's fine oh
1:49:03: they're going a little bit over here still but it's fine it's fine so there's also like modules you know which kind of
1:49:10: act after the main modules do so like there's a Trails module
1:49:16: trails and what this module does uh it will uh this is something called
1:49:23: internally a follower module and there's a few of these and what it does for each
1:49:28: particle um the particles can be followed by additional effect in this case a
1:49:34: trail um and what it will do it'll essentially look at the final simulated position and has its own internal data
1:49:41: you know there's like the trail data I'm not going to like go super into details on this one because that's also like a
1:49:47: rabbit hole uh but it's a trail data it will take you know the color it will take the position it'll combine it to
1:49:53: compute its own data and then this one has its own sort of build-in
1:49:58: render this are also the particle lights module so it's going to you know some particles are going to have like actual
1:50:05: light in the scene there's the ribbons module which is similar to trials but instead of the trail kind of following
1:50:10: the part of the particle it kind of goes through all the particles and has and each of the modules also has its own
1:50:16: additional modules for for Trails there's also initializer modules you know which are going to initialize some
1:50:22: of in properties they can be simulation modules which can also modify the trails in over lifetime there's not really many
1:50:29: but there's going to be lots that will be out it over time but overall this is the general structure of the particle
1:50:35: system you start with some uh you know built-in properties there's emitter
1:50:40: which add new particles they can initialize some of these and there's modules some of the modules are going to
1:50:46: initialize you know staing properties some of them compute the properties you know every frame either using the other
1:50:53: properties or using whatever internal math or you know whatever structure and then those then get computed to the fin
1:51:00: on the render properties which are then rendered out you know as individual points or meshes and some of the modules
1:51:06: you know they can they can follow the particles they can do some extra stuff and they have their own renderers as
1:51:11: well and it's kind of know how the particle systems kind of put together and one of the reasons is it makes
1:51:18: things uh it makes everything a lot more modular because if we want to change how col is computed or how position is
1:51:24: computed because um the reason I did this is uh I was actually inspired by
1:51:30: the Minecraft particle system which was shown to like one of my friends um like a while back torn he showed me the
1:51:37: Minecraft particle system which has a very interesting approach where you can Define instead of you know
1:51:44: simulating velocity of the particle you actually Define equation where the particle is based on its starting
1:51:49: properties and that's something I want add the photon do at some point so instead of you know velocity based
1:51:55: simulation you define an equation that's for example based on position rotation direction and Lifetime and you just say
1:52:03: based on this this is the position of the particle and it's going to open up you know lots of kind of cool pH where
1:52:08: you can sort of procedurally Define you know how the particles move around uh and all you need to do is just
1:52:14: swap out this position simulation module for the different position simulation module so the system is designed to be
1:52:21: like you know very flexible very expandable you know some of these modules like for example the turbulent
1:52:26: force it literally like it took like very like it was less than an hour to like right I was like with a fun like
1:52:34: with a Simplex function like it was something like five minutes it's it's very it's very easy to write lots more
1:52:40: modules uh which means once the system is out like we can add lots of cool effects if you have like you know
1:52:45: specific way you want to like the particles to behave you can make requests and now we can we'll be able to
1:52:51: fulfill those requests much faster and much easier than we would have been with all
1:52:56: system uh with this we have uh There's 7 minutes left so um we might go a little
1:53:01: bit over maybe I don't want to answer like some of these questions so let's have a look
1:53:08: um let's see I'm going to move this over here uh so Shadow X uh for questions
1:53:16: time after demo but we will get more data fit integration with things like component node browsers component no searching without most would be great uh
1:53:24: there is something that's planned um isn't going to happen before performance update I would say sometime after performance update but we don't have a
1:53:30: specific timeline on that uh next Shadow X is Lifetime encoded as remaining
1:53:35: lifetime that decreases our total Lifetime and star creation time I suppose the letter would make it more
1:53:40: difficult to do things like lifetime loss and bounce um so the lifetime is defined um actually it is defined as the
1:53:48: remaining lifetime so you have the starting lifetime you have the remaining lifetime uh but also the engine does
1:53:53: something whenever the lifetime updates it computes a normalized lifetime and the reason is that is done is because
1:54:00: it's used for lots of effects which don't care like you know how was the absolute time that the particle lives
1:54:06: but like how how long is it like you know on its actual lifetime progression
1:54:12: and Computing that in every module it can be expensive because you know it essentially requires division which
1:54:17: simple operation but it can be expensive especially if you do it a lot so the system sort of preut
1:54:24: it uh as is asking fractals I'm like maybe you could have fractal I'm sure like somebody will figure something cool
1:54:31: like that uh nof is asking I now need a metameme that uh show that particle Cube
1:54:37: called the bit rate oit and apply effect to simulate low bit rate no idea how I can actually do that lower bit rate
1:54:44: effect can be a little bit like difficult to do like right now but um um you probably need to do like either some
1:54:49: Shader stuff or I you could use the pixelade filter maybe and some kind of like Distortion but I don't think it's
1:54:55: going to give quite a some effect but yeah this these tend to obliterate B
1:55:00: especially if there's a lot of chaotic motion uh Shadow X have you profile B
1:55:06: performance on The Headless compared to client Yes actually C uh C run like some effect like some tests and like it it
1:55:13: runs really fast it's very Speedy do you want to give more yeah yeah so just for
1:55:18: a very quick context I was originally playing with net 8 before like the Headless was like
1:55:25: officially upgraded to newer net and I was able to I spawned like 900 character
1:55:31: controllers and I I made I made them all streamed um and I on mono even the
1:55:38: newest version of mono which is like half a decade newer than the one we're using the server crawled to like 15 FPS
1:55:47: with like 900 character controller cubes and then I switched to D 8 and it was
1:55:52: like pinned at 60 FPS and it was like this big gelatinous like cube of character controllers and like the
1:55:59: networking actually broke before the uh physics did that's aot like is a lot of
1:56:05: data I remember like joining that session and just seeing this like blob like around everybody was like messing
1:56:11: with it it was like beautiful but yeah like beo it's optimized for this like you know like
1:56:16: it's it's like pretty much right now with mono it's kind of handicapped it's it's usable enough but like once we make
1:56:23: the switch like we expect like significant boost like in in that
1:56:29: alone oh I I deleted the question um uh I have to paraphrase this one
1:56:36: because I read it but I deleted by accident um Shadow X was asking like did I wanted to do sty particles and it was
1:56:42: still on the table for MVP after MVP yes that one's on the table it's actually much easier for to the system because
1:56:47: now you know I have like full control I have some ideas how to approach it uh I'll see it's not going to be for MVP
1:56:54: but sometime after MVP I can you know do it uh Shadow X is it going to be life Spectrum one I think this was relating
1:57:01: to something we're showing um SNB uh 8272 is it normal for
1:57:07: when exiting and saving homes for it to be sinking for a very long time I it kind of depends if you change a lot of
1:57:13: things it can take longer um so it kind it depends what you mean by very long time because you know that can that can
1:57:19: mean you know 5 minutes can mean 10 minutes it can mean an hour so it kind of depends on
1:57:26: specifics uh noon a lot of this stuff is hidden behind like of AR support when are we going to get up at AR in res
1:57:33: without a mod um so this going to happen sometime I like when we reor the
1:57:38: inspectors we actually going to rework them using the data feeds uh that's going to make it easier you know to
1:57:43: actually build uis for you know working with Aras uh but like any timelines you know
1:57:50: like we generally don't give specific timelines um because those are too like difficult to estimate so we don't want to like you
1:57:55: know promise specific time which we're going to miss um check the fox out there
1:58:01: I see color names on the chat as they're broken do you figure what was causing that I didn't get chance to look at in
1:58:07: unfortunately uh Li quit maybe more banking so we know asset storage cost are duplicated across items inventory
1:58:13: are assets reference from resonite Essentials folder counted as free on your storage quot uh so it kind of
1:58:19: depends where exactly they're stored uh but if like because the folder does link to some share folders but if it's stored
1:58:26: directly in there Essentials those should be free on the storage quter anything stored like you know on the
1:58:32: official kind of resonite group The System should trade um the system should
1:58:38: treat it you know as as free free asset even if you save it to your inventory
1:58:44: yes okay uh nof oh don't know the
1:58:49: context of that one uh nof I think my question skipped or I missed airly are you planning to redo I care work right
1:58:56: after performance up finished or not set in stone it stuff yeah I did answer this one earlier and we don't have much time
1:59:02: so I can't get into details it's one of the top things we want to do it's going to depend we're going to evaluate after
1:59:08: we don't performance update I did answer it in the earlier on the Stream So I do recommend rinding after this to get the
1:59:14: full answer uh next one is SNB 8272 is there orbiting gravity system
1:59:21: for like orbiting Moon map so if you mean for the particles there's actually radial Force so yes you can do
1:59:27: orbiting um uh I don't know if I have time to kind of showcase it I can try it like you know real quick see like you
1:59:35: know if I can open this up uh so with emiter I'm going to
1:59:43: add this is like a speedrun because like we have only like a minute left oh we
1:59:48: have 10 seconds left yeah there's probably not enough time I'm just going to show you uh radial
1:59:54: Force I'm going to drop this one in see what this does if it doesn't work um
2:00:00: might need some more like messing around radial force uh I'm going to eat
2:00:06: the trails not Trails uh the simplex one
2:00:11: is this one radal force that's going to be stronger and might not work right yeah
2:00:19: it is not working so I need to M around with this a little bit more because we moved a bunch of stuff
2:00:25: um so that's pretty much like all the time we have like we little bit over uh
2:00:32: thank you very much you know everyone for um you know for your questions thank you for for watching I hope you enjoyed
2:00:38: this episode of the resonance uh I hope like you enjoyed you know learning more about the new particle system that we
2:00:44: have and that you're going to enjoy you know messing around with it and playing um so thank you very much you know for
2:00:50: bilding stuff thank everyone for how to like you know help participate in the testing there's a bunch of kind of
2:00:56: issues that I'm going to be going through like you know over the next week uh and hopefully get a photo in do
2:01:01: leased um so thank you very much again for watching thank you Sarah you know for helping me
2:01:06: co-host uh thank you for supporting this platform and we'll see you next week
2:01:11: bye-bye thank you very much bye bye