The Resonance/2024-11-24/Transcript

From Resonite Wiki

This is a transcript of The Resonance from 2024 November 24.

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

00:00: It should have been ready.

00:09: There we go. Hello everyone.

00:14: We should be live.

00:17: Actually, can you see something? Hold on, jeez.

00:22: Do you need me to go on the broadcast?

00:24: Yes.

00:26: Here we go.

00:27: Okay, it should be using the application capture, so it shouldn't be doing any notifications anymore.

00:34: Hello everyone.

00:36: It should be live. Can you hear us?

00:40: Hello, hello.

00:42: I don't know if the audio levels are good.

00:48: Is my voice music to your ears?

00:51: Oop, there we go. Hello. Hello, Chad.

00:55: I like this chat. It makes little popping noises when people chat.

00:59: Oh, I have it off. I think.

01:01: I think it's cute.

01:05: I know, it's lame. I'm sorry.

01:08: I'm so, so difficult.

01:11: Oh, it's going to sleep.

01:14: No, I'm saying just wake up. It's that easy.

01:16: Sorry, what can happen, but it needs to go to sleep.

01:20: It needs to be more awake.

01:22: Just be able to sleep, never.

01:25: All the issues.

01:28: If only.

01:31: So, sort of people coming in.

01:33: Hello, everyone.

01:37: Oh my god, the popping sound is your mouth.

01:40: Hello. Hello, Raiden. Hello, Bobcat.

01:43: Hello, Ruby.

01:44: Hello, Grant.

01:48: Just waiting for a few people to kind of pile in, and then we can, like, officially start.

01:54: Make sure I also have...

01:57: I have the stream, everything should be going.

02:01: I made, like, some changes since last time, based on, like, the things that happened and your feedback.

02:06: Everybody should be broadcast.

02:08: I have the capture thing.

02:13: So I don't have capture as a Resonite audio, so, like, you shouldn't be hearing, like, you know, my Discord notifications and stuff like that.

02:21: Let me also check Resonite up.

02:25: And also, like, we have, like, I placed the camera here with the sports, like, you know, in case I do any drawing, so it's a little bit more, like, legible.

02:31: So hopefully it should be kind of better, like, this time around.

02:35: So, hello everyone, and welcome to The Resonance.

02:38: This is a podcast, that's a slash office hours, where you are free to ask any questions about Resonite, whether it's technical, whether it's, you know, philosophical about, like, you know, the platform's nature, whether it's, like, you know, anything to do with the team, anything with the platform, or even just technology in general.

02:57: If you are, you know, interested how the platform is going, like, you know, what is driving the development, how things are going lately, and so on, I'm here, like, you know, to answer questions.

03:09: I also have my co-host, Cyro. We're gonna be, you know, going, having some kind of back and forth on some of the topics as well.

03:19: So there's a number, you know, a number of, like, different things, like, you know, like, we can go over.

03:26: My goal is to kind of, like, you know, to essentially, you know, focus on your questions first.

03:35: But, like, once there's, you know, a little bit more space, we're gonna, you know, just kind of talk about Resonite, talk about, like, more kind of general, broiler topics.

03:44: Because we want to give you, you know, both kind of answers to, like, very specific questions, but also, you know, sort of the bird's eye view of, like, you know, what Resonite is and where it's heading.

03:55: One thing, if you want to ask questions, make sure to put a question mark at the end of it that makes it pop up on our pinned messages kind of thing.

04:05: We're using JackTheFoxAuthor's version of it.

04:08: So it kind of makes it, you know, easy for us to, like, catch the questions, you know, when this chat is, like, going by really fast.

04:17: The info stream is similar to last time, one to two hours, depending on how many questions we get.

04:34: Anyways, we can also grab the questions, show them on camera.

04:37: So with that, let's get started.

04:42: So first, actually, this is kind of an interesting question.

04:45: So Bobcat is asking, any plans on getting rid of the corruption in your team?

04:50: That's kind of a very loaded question, because I don't know, like, what do you mean, like, you know, by corruption?

04:56: If you believe there is some kind of issue with the team, we do have tools for that.

05:01: You can make a moderation report, even against team members.

05:04: So if you think there's something wrong, you think, like, you know, there's some kind of, like, problem,

05:10: you have the tools, you know, to, like, make sure, like, we are informed.

05:12: If you make a claim against any of the team members, that goes directly to both me and Canadian Git.

05:21: So we can investigate those things.

05:22: But one thing you do need to make sure, if you do make this kind of claim, that you provide actual evidence.

05:29: Because whenever we deal with moderation things, we are very evidence-based.

05:35: We're gonna, we are gonna see, like, you know, essentially what we have provided,

05:41: we're gonna evaluate how credible the evidence is, and make, you know, decisions based on that.

05:46: So if you do have, like, an issue with somebody on the team, please make a report.

05:54: So, just as much as I can say, like, you know, on this, like, on the stream.

06:01: So I'm gonna mark those.

06:07: So, so far we don't have actually, like, too many questions, so, like, I guess, like, you know, we can just talk about stuff.

06:16: Which we didn't really get to, like, super much last time, because, you know, we had, like, lots of questions.

06:22: So it was pretty much just kind of, you know, asking a lot of things.

06:26: Is there, like, anything, you know, like, you would like to talk about, like, you know, in general?

06:31: Like, you know, like, the fields of resonite, stuff like that.

06:34: Or we can kind of, you know, focus more on, like, how things have been going, because for myself,

06:40: I've been lately focusing, you know, on PhotonDust, which is the new particle system for Resonite,

06:49: from its upgrade.

06:54: Oh, we actually have some questions. That's actually probably kind of relevant to us.

07:02: Lexevo is asking,

07:05: I've seen some devlogs from you that PhotonDust might not be 100% compatible with the current particle system.

07:11: What would those features be?

07:13: I think there's, like, some, like, misunderstanding there,

07:18: because the goal of PhotonDust is to essentially have the feature part of the current particle system,

07:25: so it has nearly 100% compatibility.

07:28: Whatever effects you have created with current particle system, they should work with PhotonDust.

07:35: That's its core part of its design, you know, to be compatible,

07:38: because one of our philosophies for Resonite is we don't want to break user content where possible.

07:48: What you might have, like, been thinking about is during its development,

07:54: you know, it kind of goes back to stages where I'm sort of, like, adding more and more features to bring to feature parity,

08:00: so at the times of development, when we kind of got asked, I was like, you know,

08:04: for example, it doesn't support, you know, trailer rendering, because that's not implemented yet,

08:08: but it's something that got implemented, you know, this week.

08:12: So overall, the system should be, like, nearly 100% backwards compatible.

08:19: We might find, you know, some kind of odd behaviors, like during the conversion, when testing starts,

08:26: but right now, the aim is, like, you know, to get it as close as possible.

08:29: I don't have, like, any kind of specific things, like, my expectation is if we do end up having,

08:35: you know, kind of backwards compatible issues, it's mostly going to be certain quirks of behavior

08:41: that are hard to fix, but those are kind of hard, you know, they are difficult to figure out

08:47: before we do the actual testing and, you know, put it through its paces and see, like, you know,

08:52: what kinds of different particle systems people have.

08:54: So we'll kind of see, but generally most things should work, or if they're, like, you know, not 100%,

09:00: they should be close enough. That's to call what we aim for.

09:06: So this should be that one.

09:09: DJ Prodigy Hunters is asking,

09:12: How do you want to apply Resonite to education in the future?

09:16: There's actually a lot of things, like, education is like a topic that's particularly, you know, close to me

09:21: because I love learning, but I'm, I'm very, I'm very, like, you know, self-educated.

09:30: Like, I love, like, you know, just kind of, like, burying myself in a topic and learning and exploring.

09:35: And the way I view education is that, like, ideally, the educational institutions we have, like, would work very differently

09:44: because there's an order of research showing that the traditional school system kind of goes against how we learn naturally.

09:52: There's this book called Free to Learn by Peter Gray. He's a psychologist.

09:58: He researches education. And in his book, he actually compiled a lot of research, some of his own,

10:05: like, major fields like research done by other, you know, psychologists and researchers, studying how do we learn naturally.

10:14: And there's certain types of schools where the way you learn the schools is like you don't have a fixed curriculum.

10:23: You don't have, like, you know, fixed classes. You're able to interact, you know, with your peers, whether they're younger or older.

10:30: You have access to a lot of resources, you know, laboratories, books, lectures, like if, whatever would be interested.

10:36: But like, it's kind of up to you to make your own path.

10:39: And these are called Satbar Valley type schools. And what I found is those schools, they tend to be, if not better, at least the same, at the same level as the traditional educational system for success, you know, like a career success for people who go through it and success at universities.

11:00: So for me, that sort of like, you know, freeform education, that's my kind of ideal.

11:06: And it's one of the reasons I built a place like this, because I want people, you know, to like have the tools, you know, to explore, experiment and learn about things.

11:24: And the problem is, you know, making that sort of drastic change to the educational system, that's nearly impossible.

11:32: Like you, the only way to kind of, you know, change is like, you know, through gradual process.

11:37: So we do have a number of kind of like, you know, universities that, you know, utilize Resonite, like, you know, as part of their lectures and kind of like, you know, fit it into the more kind of traditional, you know, curriculum.

11:50: There's some also like ones that are using it for like research, you know, data visualization, building interactive experiences.

11:58: So that's sort of like the more kind of like in a practical way it ends up kind of being applied.

12:02: But my hope is, you know, as they get kind of applied some more, there's going to be more people who come in to just explore.

12:09: And through the process of exploration itself, they'll be able to, you know, learn without even realizing you're learning.

12:16: You're just kind of like, you know, making cool stuff and so on.

12:20: And one of my kind of favorite, one of my favorite, you know, favorite things I've experienced on this platform is just coming, you know, to a group of like users who are like, you know, relatively young, like, you know, young people on this platform.

12:39: Who have been like, you know, working on some kind of game and they're just like learning about linear algebra because they needed to, you know, make a spaceship fly around.

12:47: And that to me is, you know, like the epitome of like, you know, how, how people should learn.

12:53: It's like, you know, you're like, I want to build something cool. I'm going to learn linear algebra to do it because it helps me solve the problem.

12:59: We have that natural drive, you know, to solve a problem.

13:04: So that to me is like, you know, one thing I kind of hope that Resonite helps with is make people learn without even realizing they're learning something just by enjoying the platform.

13:17: But it is kind of a complex thing. So I'm, I think I'm going to cap it on here, like, because otherwise I could like end up rambling about this, you know, for a while.

13:27: I will say that I, I agree. I agree with that philosophy though, because I actually learned a lot of my, I learned a lot of my, like math skills and stuff from playing stuff like, you know, like Garry's Mod and whatever.

13:43: But instead of making a video game, I, I might have been learning trigonometry to make props for and hit people in the head.

13:53: So next we have, actually, Horanito.

13:57: Oh, let me, I'm just going to reposition myself because I'm like standing right behind a fan of my laptop and I'm like, why is it so hot over here?

14:06: There we go.

14:08: So the next question is from Fuzzy Bipolar Bear.

14:12: What's the next focus after particles?

14:22: We, there's essentially like two big systems that need to be like moved full into FrooxEngine.

14:28: So we can like, you know, we can eventually pull FrooxEngine out of Unity and run it with .NET 9.

14:35: And one of those is the particle system, which is, I think, the bigger one.

14:40: We just kind of like wire tackled it first.

14:42: The second one is the sound system.

14:44: So likely after particle system is done.

14:47: I'm going to do like a small kind of intermission project and just to kind of like, you know, refresh a little bit.

14:56: But the next big part I'm going to be working on is the sound system.

15:00: Cyro here actually helped me with a part of it, implementing a library called Soundpipe, specifically a component called Zita Reverb.

15:11: Because we need to essentially move the audio system into our completely own, you know, system.

15:19: So like it doesn't have like a dependency on Unity.

15:23: With death, you know, we need to implement a lot of the features.

15:28: For example, there's not too many.

15:30: One of them, the audio specialization that's done by Steam Audio.

15:35: And Steam Audio, that's open source, so we can make our own integration with it.

15:40: But one thing that's missing is like, you know, the reverb zones.

15:43: And Cyro has like spent a lot of work preparing work.

15:47: So like once the time comes, the system for reverb is like, you know, already ready.

15:54: So it's going to be like this.

15:56: To answer the question in a short manner, there might be like, you know, intermissions on smaller projects, but then doing the sound system.

16:05: Am I allowed to ask questions?

16:07: Yes.

16:09: How will we handle the various Unity plugins that we use, like Leap Motion and stuff?

16:17: So that's actually going to be part of the unit integration.

16:21: I don't actually know like the specifics on that one.

16:26: Also, I recommend that your microphone is a little bit quieter, so I'm going to bump it a bit.

16:43: There's two ways to go about it.

16:46: One is we essentially move the Leap Motion integration into the process.

16:54: Because Unity doesn't need to know about it.

16:58: So we can just have direct integration, just use the library.

17:02: I think that's probably the way I would go with that one.

17:05: The other one is we still run it in Unity and we just send the data over IPC.

17:11: Which is a little bit more complicated, so I think we're less likely to do that.

17:15: For a few of the components, like for example VR inputs, we'll probably have to do that.

17:19: But Unity now sends the data because those are very integrated with the actual VR rendering.

17:27: But for everything that doesn't have time to render, we'll probably just move it directly on auto.

17:34: And Unity is not even going to know that there's any motion.

17:38: Because it doesn't really need to.

17:41: That's pretty cool.

17:43: But a lot of these things we should figure out when we get close to the wire.

17:49: And be like, what's the best way to handle this one?

17:53:

17:54: As Sarah was saying, project-based learning, task, export options, execute. Yes.

18:04: Because it gives you the internal drive to want to learn something.

18:08: Because I had this thing happen several times when I was in elementary school and secondary school.

18:20: I would already be making my own games at that point.

18:24: And we would have mathematics lessons.

18:26: And I remember we were learning trigonometric stuff.

18:28: And I remember one of the classmates being like, why are we learning this? What is this for?

18:33: It's just circles and triangles.

18:36: And the teacher was just like, if you don't want to learn it, then go home and I'll write you an absence.

18:42: And I was like, I was kind of sad because I was already using trigonometry to make games.

18:49: Because it's very useful for that.

18:52: And I kind of wished the teacher would say something like that.

18:55: You could use this for this, you could use it for that.

18:57: Because I feel that it would have given more motivation to learn this kind of stuff.

19:04: Because a lot of my classmates actually went to the same secondary school.

19:09: Because they were interested in programming.

19:11: They wanted to make their own games.

19:16: And instead we were just kind of told we have to learn it because it's on the curriculum.

19:19: And it's not really a good kind of motivation.

19:26: But project-based education is like I feel superior.

19:30: Like they know just learning things just because you have to.

19:35: So next, GlavinVR is asking

19:37: Are there plans to do further developments to the Lake animation system?

19:41: I know people are still upset about it and want the behavior to look and feel better than the current configuration can't fix.

19:46: I'd love to show what features we'd like to see added that would really do a lot to make people feel a lot more comfortable with new animations.

19:53: It's also much easier to show them to type it in text.

19:57: Whatever the comment like for that one is like, you know, make like some videos and you know, share those with us.

20:02: Usually when we work on those kinds of things.

20:05: Well, pretty much like anything like we don't do, you know, like where you show us the back end game because

20:13: One, it makes it like, you know, like usually when we hop on, we're just, you know, we go off the work mode.

20:19: So it's kind of like, you know, like we don't do too much work, but it's not like super manageable for us because

20:25: when we work on something, we need like to have materials. Usually like I do the thing like

20:29: I have like, you know, my materials that work on something on one screen. I kind of like look over them.

20:34: I analyze them. I work on stuff. I look over them and I'm kind of like, you know, constantly referencing them.

20:39: So having those materials kind of like ready like that, or even better yet, having a replication object.

20:47: Whenever you're like, you know, submit something and you have a reliable way of like, you know, triggering that undesirable behavior

20:54: and you send us like, you know, some kind of replication object or mechanism that helps a lot.

21:00: Like you have no idea how much that helps because if you do that, I can, you know, I can, for example, you know, run

21:09: I can run like, you know, Resonite with like a debugger attached or you can, you know, instrument a code with a bunch of diagnostics and everything.

21:15: I run the replication. I'll be like, that's why that happens. But when you just kind of see it, it makes it very difficult,

21:24: you know, to kind of like, you know, I'll be replicated because there's, you know, like whenever I see something,

21:30: like there's been so many times where I see like something happen, you know, there's like a bug, you know, there's like an issue.

21:36: And by the time I, you know, get out of VR, it's the next day and I have to like, you know, work on stuff.

21:41: I've already forgotten about it. So like we do need to kind of, you know, there doesn't have to be text.

21:45: Like the text can be just kind of basic, you know, description, but we kind of need something that's, you know, kind of paper, you know, to put it that way.

21:56: So we can able to work with it.

21:59: But the answer to the general question, yes, we like, we generally kind of open to work on any kind of like, you know, systems.

22:06: So if there's like, you know, want for it, we can like invest more time into it.

22:11: I know the question is, you know, how much time do you want us to invest, you know, into this particle system?

22:17: Do you feel there's problems that are like, you know, significant enough that you would want us to pause, you know, work on the performance optimizations to others those issues, even though it's going to make, you know, the performance update delayed?

22:31: Because there's only so many things we can kind of work on the time.

22:35: So like, you know, if it's a question, you know, do we delay performance update, you know, say by two weeks?

22:43: What if it's like, you know, by a month?

22:45: Is that okay? Like, is this something like you'd prefer?

22:48: Or would you want to address it like, you know, after we do a bit of performance update, you know, there's different kind of ways to go around it.

22:54: But it's also like, you know, why having those good materials, it kind of helps us because now instead of, you know, being like, okay, we have to delay it, you know, say by, you know, by two weeks, we only delay it like, you know, by two days.

23:09: And we've had a number of issues, like where it literally happens is, you know, like where good quality reporting, good quality materials for us to work with saves us like days, you know, sometimes even weeks of time.

23:22: And it kind of makes it easier for like, you know, sort these things in.

23:25: But just like, it's everywhere.

23:28: Sorry. Sorry, I didn't mean to interject there for a sec.

23:33: But in general, like, we're open to it, like, it's just kind of like matters, you know, like, what materials we get, because right now, like, we're not really hearing as much.

23:43: Which makes it a little bit kind of, you know, difficult for us to be like, you know, is this something we should prioritize, you know, should we like, should we like delay and like, you know, spend more time like on this, and delay the performance update for it.

23:58: And right now, because like, you know, we're just kind of like hearing things on the grapevine, we don't know, like, is there gonna be, you know, is there like one week before it exists, two weeks, is there a month? It's very fuzzy. So like, having more specifics that will help.

24:12: Yeah.

24:16: Tangentially, this is kind of why we also require, like, on, on like, this is kind of like a little bit of an aside, on like the GitHub, it's why we require, like mandatory logs on when you make like a bug report.

24:29: Because if we don't have a log

24:30: you know, you might think that the bug is simple, but then it turns out to be like a horrifying, you know, rat's nest of finding out where this is actually happening, or we could have seen it in the log.

24:41: And so it can save hours or days of time.

25:01: A lot of the things, you know, for tickets, like we're kind of strict about it, but like the reason for that is like, we're very limited on time.

25:11: So whatever, whatever you do on your end to save us time, lets us process more, like, you know, tickets and issues.

25:19: And one thing I would want people like to think about is like, you know, think about it, like, you know, from the other perspective, say like, you make an issue, you really care about it.

25:28: And the reason your issue doesn't get addressed is because somebody didn't put as much effort into the issue.

25:34: And instead of like, you know, it being, say, five minute fix, it took, it took me, you know, two hours.

25:41: And the time I would have otherwise, you know, had to address your issue is now gone.

25:46: And your issue doesn't get addressed because the other issue, you know, pushed it out of the way.

25:50: Because this thing actually happens, I've had issues where, like, I spent hours on it just kind of going down a rapid hole,

25:59: and then the person like, mentions something and I'm like, now it's fixed in five minutes, I wish I knew that at the start.

26:07: So, that's one of the things like, you know, like, I would want everyone to kind of keep in mind.

26:16: So next we have Erasmus022.

26:24: I feel that's kind of like a Cyro thing. I haven't actually played Gears mode much.

26:31: I don't like Cyro, like, dude, because, you know.

26:34: I'm, uh, I'm gonna be honest, I haven't actually really played Space Build or anything, but I have used Wiremon.

26:42: I've used Wiremon quite extensively. I used like E2, I've used like some people's add-ons like Starfall for it,

26:49: you know, like some alternate like coding chips and stuff.

26:52: I also used like traditional gate wiring as well, which was pretty fun.

26:58: It's kind of like, it's kind of like ProtoFlux, where you can like wire up individual like chips that do singular functions together.

27:07: Pretty neat.

27:11: I really like Cyro. Like, I actually like, the funny thing is I've played like Gears mode a little bit after like Gears,

27:16: because people were saying like it's a little bit like it, but I'm not really familiar with it super much.

27:22: Next we have a question from Lexavo.

27:25: What's the reasoning for sticking to the LTS versions of .NET, the even version numbers?

27:31: So I don't really have like, like, like, how to put it, like, I was kind of flippant.

27:37: It's like, you know, like, why would we stick to it right now?

27:40: Because upgrading, you know, .NET version, it's pretty much like there's not really anything that kind of breaks.

27:51: I've upgraded our cloud infrastructure. Was it actually this week? I don't even remember.

27:55: I'm like weird with time. I think it was at the beginning of this week.

27:59: I've upgraded our infrastructure to .NET 9.

28:02: And for the most part, it's just kind of like, you know, a switch.

28:05: I kind of updated like, you know, some libraries which took a little bit just to kind of bump the version numbers,

28:09: but it's mostly just kind of like, you know, changing the numbers.

28:11: And then I had to fix one line of code where a function call was ambiguous because they introduced like, you know,

28:17: a new overload function which was like 10 second fix.

28:23: And then like, you know, after I pushed it to the cloud, it just works.

28:28: And it actually uses like a fair bit less CPU because they did a lot of performance upgrades.

28:35: So right now there's not really much of a downside, you know, with upgrading to a newer version of .NET.

28:42: It's a very quick thing to do as well, like it literally took less than a day.

28:47: The main thing that's kind of taking it headless is just kind of giving people time, you know, to like, upgrade their tooling.

28:54: But otherwise, like, you know, it's a very quick process. There's lots of benefits to it.

29:00: So like, once, you know, .NET 10 comes out, we'll pretty much do the same thing,

29:06: which you can upgrade the version and, you know, switch shortly after its release.

29:12: Because there's not really much reason not to.

29:17: Next question, DarkySabertooth.

29:21: When will the platform support 5.1 sound?

29:26: I'm not sure, that's not like super, like, I don't know how much people, you know, kind of use that.

29:32: If you were to explore that, I don't know how it works, you know, with stuff like Steam Audio.

29:38: Like, I have to kind of investigate, because we use that, you know, for binaural spatialization.

29:43: And it works really well with stereo audio, what it's designed for.

29:46: I don't know how 5.1 sound, like, would work, does it support it at all?

29:50: You know, are there complications, would you have to disable it?

29:54: I don't know how many people use, you know, like, surround sound like that.

29:59: So, if it's something you're interested in, I recommend making it up a shoe.

30:04: We can kind of, like, you know, see how much interest is in that.

30:09: And how much, like, you know, is it worth, like, you know, our time?

30:12: Like, should we invest our time into it?

30:14: But right now, I don't really know.

30:17: It feels kind of more like it's probably more niche.

30:22: And it might require a substantial amount of work, so we might not prioritize it.

30:27: That's the thing that can always change.

30:28: You know, we have a lot of people saying, like, you know, I use, like, 5.0 surround.

30:32: Like, this would really help.

30:33: Like, you know, we might end up doing it.

30:39: Next question.

30:41: ShadowX.

30:42: When Froox engine is separated from Unity, will it automatically make it independent when it comes to frames?

30:48: Will it run our concepts into FPS while the engine is doing 30, for example, or it will still be locked together?

30:53: It will still lock together.

30:55: There's not really...

30:57: So, there's actually an interesting thing that, like, a lot of people don't know about Froox engine.

31:01: In the old versions of it, it actually used time slicing to sort of, like, run asynchronously from Unity.

31:09: The problem with that is, you...

31:13: Essentially, like, you know, when you're rendering your frame, you don't have the scene fully updated within your state.

31:20: So, like, you know, say, like, you know, you're moving your hand or moving your head, that is now running at lower frame rate, but now you're rendering a new position, so, like, it starts kind of, like, you know, g-turning around.

31:30: And depending, you know, how do you split, if you don't have any mechanism to synchronize at all, you can literally get, you know, half, like, you know, baked updates.

31:38: And you have absolutely no control, you know, when those happen.

31:42: Because you essentially, when the engine is, you know, updating the scene, you literally cut it off at a random point, and, you know, you get, like, a half of a frame update, and half, like, old updates, and things, you know, start kind of, like, g-turning around and being inconsistent.

31:57: So, I don't think it's a really good approach for things.

32:02: It's one of the reasons I actually ended up, like, removing it, because you literally had, like, you know, things just kind of half updating, g-turning around, and, like, it's not really manageable.

32:12: But I think it's a much better approach. If you want to, you know, maintain high frame rate, it's one of the things that's on our roadmap for performance, which is variable rate update system.

32:26: What that will do is that for some components, say, like, you know, we have avatars, like, you know, IK, so you have, like, you know, things moving in the background, not everything needs to update at the same rate.

32:36: Say there's a bunch of people in distance, they're doing stuff, so all their components, you know, their avatars, you know, menus, whatever, whatever's, you know, costing CPU time, it only gets updated every second frame, or every third frame, or every fourth frame.

32:51: And that saves you a lot of performance, but also gives you control. Because your own IK, and IK if somebody knows who's, like, next to you, they will still update at full rate.

33:02: So for example, you know, my IK and Cyro's IK would update at 72 FPS, and somebody who's, like, in distance, they update, you know, say, at 20 FPS. Because you don't really need more, like, you know, when you can barely see them.

33:18: And with that kind of system, you can, you can have it, you know, scale itself based on a certain, you know, target frame rate.

33:26: So if it sees, okay, like, I'm dropping, you know, I have, like, too much to update each frame, so I'm dropping frame rate, I'm gonna drop, you know, stuff that's in distance to even lower frame rate to save more performance.

33:37: That way I can still overall hit this, you know, certain, like, target frame rate.

33:43: And that way you actually have control where does, you know, where does that kind of slowdown happen?

33:50: Like, where does, where does that, like, you know, lowering frame rate happen rather than, you know, just having decided by pretty much randomness.

33:59: So, I hope that kind of, you know, answers that.

34:04: Probably don't need to answer this next one.

34:09: So, next we have D1, I don't know how to actually pronounce that name.

34:18: I think you pronounced it Diame.

34:20: Diame?

34:21: Diame or Diame, I'm not sure.

34:27: Diame is asking, I have seen multiple reviews on your Steamster page.

34:31: The most recent one about Emerald Dragon listing security vulnerabilities and Acid Ripping being a reason why they can't become Resonite.

34:37: Do you have any plans to address these issues?

34:39: So, there's kind of like two ways, there's like two things here.

34:44: So like, one of them is you can't prevent Acid Ripping in principle.

34:53: When you think about this, in order to be able to display an asset.

35:00: To be able, for example, so I can see Cyrus Avatar and need to have the data.

35:05: And at some point the data needs to be decoded and decrypted so I can actually see it properly.

35:12: Usually what drippers do, they will find the point where that decryption happens.

35:19: They will hook into that and they will extract the data.

35:23: And the only way to kind of prevent that is not to have the data in decrypted form at all.

35:29: But if you don't have the data in decrypted form, then you can't see it.

35:34: And the only thing you can kind of do is make it more difficult.

35:39: But you pretty much end up in a space race kind of situation where you're trying to be one step ahead of the people who rip things.

35:51: But you're making things kind of more complicated and they still eventually crack it.

36:02: I don't know how much is worth, like how complicated do we want to make it.

36:06: There's a few things we do want to do that will make it a bit more complicated to get the data out.

36:12: But I expect, you know, if you get somebody with enough drive, they will find a way to get the data.

36:21: And that applies to every single platform. Like there's a new platform that would prevent acid ripping.

36:28: Yeah. If it's a new GPU, then like you already have it.

36:34: Yeah. So the other side of this is what I think is best approach for this kind of thing is making it more difficult for people to actually use direct assets.

36:48: So we do have a plan to have sort of like a licensing system where you say, I own this texture.

36:55: You kind of register your ownership of it. And like the system will know this texture belongs to this user.

37:03: Then if the client sees somebody else using the texture, it's going to check, does this user have permission to use it?

37:08: If they don't, they will essentially kick them out.

37:13: So at that point, if people do end up like ripping stuff, it's going to make it much harder for them to like, you know, use it in places because they will have to mod their own clients.

37:24: So, you know, get rid of those protections, but it cannot mod other people's clients.

37:30: And if we make it, you know, harder for people to exist and actually use their stuff, I think that on itself is going to decrease, you know, the drive for people to rip stuff because they cannot really do as much with it.

37:43: Even then, I don't expect it to be, you know, fully solvable issue.

37:50: People will probably, you know, start modifying it, you know, so they rip the texture and they modify it just enough so the system doesn't think it's the same one, you know, to kind of bypass the system.

38:02: So even then, we will likely have to have like, you know, sort of like a moderation system, where like you make a report, we have somebody like look and be like, okay, that's clearly ripped.

38:12: They, you know, take some action.

38:17: But having kind of systems in place that is going to help, you know, usually the rationale is like, you know, it's going to help catch, you know, 90% of the cases.

38:27: You know, just automated because 90% of users, they will not want to go to the extra lengths to like figure out how to get around the system, which makes the 10% that we need to deal with, you know, much more manageable.

38:40: So I would say generally, like, if your expectation is that you're not able to like, you know, rip assets at all, there's, there's, there's no software that's ever, you know, going to

39:08: make, make it so people cannot crack their games, you know, and sell them, like, let's sell them and, you know, just download them illegally.

39:16: And even those protections, you know, where they spend, like, they had like teams of engineers working those, they still get the correct in time.

39:24: It might be kind of, you know, harder, but it's like, it's something you eventually, like, you in principle cannot prevent, you can only make it harder.

39:41: And it just takes, you know, somebody with a drive to get around it.

39:46: You know, maybe like a little bit of kind of insight, you know, into stuff like we can apply with that stuff, but it's ultimately, you know, we cannot promise you that we'll be able to prevent every single instance of your ping.

40:03: And if any platform does, they are probably misleading you. So I'm going to, you know, kind of put it that way.

40:11: We can address, you know, they also mentioned like security vulnerabilities.

40:19: Oh yeah, security. Yeah, if you do know of security vulnerabilities, please make a report on our moderation system.

40:27: We have a specific type of ticket for security vulnerabilities, so we do need details about those.

40:33: If there's an actual, you know, severe security vulnerability, we will address it as soon as we can.

40:42: We do need to like, sort of data. We do get a lot of like reports where somebody is like, you know, I think there's a security vulnerability, but they don't really give us much information.

40:53: Because it's too vague to act on.

40:58: And the unfortunate side of that is, you know, that like people then go like, you know, oh, we don't understand security vulnerabilities, but you're pretty much not giving us enough data to kind of work on them.

41:09: So it's kind of, it's a tricky kind of situation.

41:15: But if you do make a good report, like, you know, we look at it and we will evaluate it.

41:20: There's like some things where you get information and somebody like, this is security vulnerability, but we're like, this doesn't actually classify as security, like it's literally just a bug.

41:29: That doesn't really let you exploit like, you know, much like it doesn't let you, you know, steal somebody's data or run, you know, some remote code.

41:46: security of your PC, your data, or your private information.

41:53: So next, Skyvan Kitsuna is asking, are there plans to make more editor-like features for desktop mode in the future?

42:01: Yes, kinda. So generally, our approach to like designing tools and interfaces for Resonite is make them sort of like desktop VR agnostic.

42:13: Like, for example, think about, you know, Inspector windows. You can use them both in desktop and you can use them, you know, in VR.

42:19: They're not designed, you know, for one or the other.

42:22: What I really want us to do that kind of makes it easier on desktop is do stuff like that's built around these tools.

42:29: So for example, on desktop, you know, you'll be able to like split your window, add, you know, extra panel and, you know, and this panel is just going to show a particle inspector in the scene.

42:39: So you can, you have both your scene view and your inspector and you can move around and you can also interact with the inspector.

42:44: Or you can also split it even more, like, you know, kind of like in Blender.

42:49: So adding tools like that, you know, another thing is like, you know, add like, you know, kind of like facets so you can have like, you know, for example, quick ways to switch, you know, tools.

42:59: Like, or like modes of different tools, adding stuff like that, that's sort of built around it and makes it easier to use in desktop.

43:08: I think that's, you know, the direction we're going to go in to make it, make it easier to use Resonite on desktop.

43:19: So next.

43:23: In other words, you guys like good reports via GitHub.

43:26: So actual security.

43:28: Oops, say again please.

43:30: I was just saying I think that was in reference to the locomotion.

43:33: Yeah, that was like a question that seemed to have been shared. I just kind of skipped it.

43:38: So Erasmus is asking, in other words, you guys like good reports via GitHub.

43:42: Security reports, we actually ask you file, if you think it's actually severe security issue, we ask that you report it via the moderation system.

43:51: We have a specific type of ticket that you select for it.

43:55: Just in case it's something, if you put it on GitHub, it's public, which means people can know this is a thing and they can use it to exploit things before we have a chance to fix it.

44:04: So if you do find an issue like that, it's more responsible to file it with that system.

44:12: If it's just a bug or an issue, then report it on GitHub.

44:21: Not really including the things we need, which in turn makes it harder for us to address those issues, or even evaluate them.

44:32: Glavin's asking, keep in mind that GitHub is an option for most of the userbase, so where would be the best place to give feedback?

44:38: Within the Resonite Discord work or ticket on the Resonite website?

44:42: So right now, GitHub is unfortunately the only option we have.

44:47: We don't have any other tooling for reporting things.

44:51: We do want to introduce more options, so we can report things in-game, however that takes development time.

45:00: Which right now is focused mostly on the performance update.

45:06: So right now, GitHub is unfortunately your main option.

45:10: You could report it on Discord and ask somebody to make an issue with it.

45:17: That's what some people do, where essentially you ask a friend, can you file this issue on my behalf?

45:24: We sometimes get GitHub issues like that, so that's one option you could use.

45:30: Tickets on the Resonite website, they're generally for moderation and security issues, so don't use those for that purpose.

45:40: Unfortunately, right now GitHub is the only thing we have.

45:44: We do want to add more options, but it takes time.

45:51: Next, we have MrDaboop123456.

45:58: What's the issue with switching between Steam Link, Tracking and Quest controllers?

46:04: Issue 3066.

46:05: As far as I can tell, there's a bug in Unity, where when I looked at the cache, whenever you switch controllers, it calls a function to get the features of the device, the newly connected device.

46:20: Because the way the switching is implemented in Steam Link is a little bit odd for my taste.

46:28: It essentially tells you, oh, those Quest controllers you have have disconnected, there's new Quest controllers that have connected, and the Quest controllers are actually your hands.

46:39: And when you switch back, it's like, oh, those Quest controllers have disconnected, these controllers are connected again.

46:45: So it's kind of swapping them back and forth, and there seems to be a bug in Unity where, whenever a device gets connected, it essentially tries to fetch a list of its features, and there's some kind of memory corruption that happens there.

47:01: Unfortunately, because this bug happens inside of Unity, it's difficult to fix, because, one, we don't have access to Unity's source code, so it can only work with debug symbols.

47:15: We cannot modify the source code to fix the issue, so we can only find ways to work around it.

47:22: And there's one thing I wanted to try, see if we can actually disable the XR support in Unity for the controllers and use the Steam one, but I don't know if it depends on it, so it needs more investigation.

47:38: But I don't know what the root cause is, I know from the crash reports what happens at the time of the crash, but there's probably more to it.

47:53: Does this bring us through loops? What is your most personally desired silly feature?

48:00: Well, it depends how you define silly. Right now, right now I would say Gaussian spotting, because I've been playing with them quite a bit, so I don't know if it classifies as silly, though.

48:13: What would a silly feature be? Because it is a useful feature.

48:23: I think a silly feature would be one that doesn't have any purpose, it's just goofy.

48:32: It's hard to think of silly features because I'm usually very pragmatic. I only want things that are useful. It would be silly.

48:46: I mean, there's April Fools ones. Actually, I'm going to go with that. I have a list of things I want to do for April Fools, just to kind of be silly.

48:58: It's probably one of those. I kind of look forward to the next April Fools because one thing we kind of did in the past is we added a bunch of April Fools things where some things were kind of just goofy, but it confused people.

49:14: They were like, oh, there's a bug with this thing. So we were like, oh, no, that's not a bug. It's April Fools. So it was a little bit problematic, but my approach for April Fools is since we have the new settings UI and it's very easy to add things to it, we're just going to...

49:38: On April Fools, there's just going to be some mysterious settings. And if you toggle them on, something's going to happen. And if something is interfering with your work, just turn it off. So that's probably the way we're going to do it.

49:55: We didn't get to do it this year because the settings UI was still in progress.

50:00: I think it would be really funny to have an option that just makes all of your... whenever we had Rigid Body Physics or whatever, just makes all of your ProtoFlux wires sag.

50:12: Oh my god. Okay, that's going on the list. I need to write this down. Actually, can you send me a message and tell me that I'm going to add it to the list?

50:23: Yeah, yeah, yeah.

50:25: Okay, ProtoFlux is now in some vapor force.

50:33: I suppose he's saying, is that John I Love Sweep Cyro?

50:37: Yeah, it's me, I'm John I Love Sweep Cyro. You know me, that's my middle name. I love, I love sweeping.

50:44: I love sweeping.

50:45: And there's definitely, there's definitely no problems when it comes to sweeping.

50:51: Just got to sweep with those physics brushes.

50:58: Yeah, yeah, yeah.

51:00: So next, Skyrim gets you in there.

51:03: Are there plans to make advanced permission systems something in the style of Second Life?

51:07: I don't actually, I'm not super familiar with Second Life, so like up front I can't comment on this part.

51:15: But one of the things we do plan adding is a hard permission system, which is going to be a way to essentially restrict, you know, who can modify which parts, you know, of the data model.

51:28: And it's going to be sort of like on the low level where you say like, you know, this is literally read only, unless you know you exist in the specific kind of group.

51:36: So that will provide much more robust, you know, security for things.

51:42: So even like if you have people who use, you know, more declines and other things, they'll not be able to get around it because it's going to be, you know, fully verified at the data model level of the host.

51:54: There's other things like, for example, you know, we're going to add systems so you can add like certain limits, you know, how much, how much Joomas or texture data, how many slots can user bring into the data model.

52:05: So you can kind of prevent people from just spamming stuff.

52:09: There's probably going to be like other kind of like interactions, like can they, for example, you know, if, if user say spawns something that has a node which applies, you know, say force to the user, are they actually allowed to apply force to other users or themselves?

52:26: The system will track, you know, this is, this node was, you know, belongs to this user, this user doesn't have the permission, you know, with others.

52:34: It's also going to, you know, track things like if, if the user makes, you know, the node spawn on another user, it's still going to know, okay, this is being spawned by something that this user brought in, therefore it's still theirs, even though like the hand-climbed user spawned it.

52:49: So there's got to be a system like that at some point. I don't know how it compares like to Second Life.

52:55: It's probably going to be like a one-to-one because like their side works fairly differently. I think we're going to mention a little bit more like with the Second Life part.

53:04: Oh, yeah. I think they're also talking about things like, you know, like no edit, no copy or whatever, where you can't, where you can like own a thing, but you can't like copy it and like give it up.

53:17: Ah, yes.

53:17: Or like you can own it or you can't open the code for it or something like that.

53:21: Yes. So like that would be more of a licensing system, like for the items. So you can like, you know, you can have a thing in the world, but for example, you cannot save it, you know, unless like you get a permission to.

53:33: So like there's like multiple things because permissions is kind of a broad thing and it's not actually going to be a single system that's going to deal with all of the issues.

53:41: There's going to be multiple of them designed for different kind of use cases.

53:45: So, um, but yeah, like both, both of those like should come at some point.

54:14: So like, I don't, I don't personally like see like super much like benefit in making a completely custom one because there's probably like, you know, at various amounts of work and you would essentially have to make one that like, you know, works very similarly.

54:33: Otherwise, you know, all the content would be broken.

54:35: Um, so like if people's like, you know, content doesn't work with a, you know, customer and their client, then, um, you know, like, I feel like they would have like not very much traffic to use it.

54:51: Um, so what I think like is more likely to happen is like, you know, where people mod it, you know, add extra effects, you know, add extra things and so on.

54:57: Um, which, you know, definitely happens already, you know, people like mod the client.

55:02: Um, so usually kind of like just don't have like a position.

55:06: The only, like, the only worry with things like that I would have is like, if it ends up, you know, kind of fragmenting the community and fragmenting the content where they have like, you know, all the people are relying on particle like render client, but then like, you know, they cannot like use or view stuff from the other one.

55:25: So like people end up like, you know, split up in different versions and you have like, you know, and you have, you end up like with very few people on each.

55:33: So that's pretty much the only worry I can kind of think of like with that kind of stuff.

55:41: Next we have, Erasmus0211 is asking, this alludes to official performance options. Thinking something perform simple performance evaluation might be worth considering.

55:52: So when you say performance options, to me that sounds like settings for performance.

55:58: But also like it sounds, the second part of the question sounds like, you know, sort of profiling tools.

56:04: So you can find how, you know, how much performance something takes.

56:09: So for the performance options, we do already have like some, like you can go like to your settings and assume the number of graphics options.

56:18: You can restrict the, you know, size of textures and things like that, which helps with performance, particularly, you know, on devices with less VRAM, for example.

56:28: There's probably going to be more, you know, as we kind of go in.

56:31: We also do want to add certain tools, you know, for performance profiling at some point.

56:35: So you can measure, you know, how things, you know, how long things take and optimize your content.

56:41: So it's definitely going to be like, you know, eventually it's going to, we want to have both.

56:48: And next we have check the focus filter.

56:51: Currently, there's a bit of practical limit to work session sizes.

56:54: Whatever plans to allow people to scale up their world's experience in the future.

56:58: Second Life has massive connected landmass.

57:02: Yes.

57:03: So there's a big plan, sort of like a rewarded data model of Resonite.

57:08: And instead of like, you know, just the world being the thing you're in,

57:12: is going to be something like, you know, called a domain.

57:18: And the domain can have like a bunch of stuff in it.

57:19: It can be like a reward path.

57:21: Each of the domains can actually exist with others.

57:25: You can sort of like, you know, position multiple domains next to each other,

57:30: or like pretty much any way like, you know, relative to each other.

57:35: With Second Life, you know, we have like the grid system.

57:38: And my goal is to have a system that's a lot more generalized.

57:43: So instead of just, you know, being able to do a grid, you can, you know,

57:46: you could literally have a session that's, you know, this tiny like building

57:50: and you put it on a desk and it's on its own session that's embedded

57:55: into this bigger session. Or maybe, you know, you have a big kind of,

57:58: you know, spaceship. And inside of the spaceship is another world,

58:03: you know, another domain, another session essentially.

58:07: And that ship itself, like the whole session, can travel to other sessions.

58:12: So you could have it, you know, join here and a bunch of people inside

58:16: and they can step out, they're going to be going into the session,

58:19: or you can step into the spaceship, you know, and then you're going to load

58:21: into the session inside, and then you fly away.

58:27: Or you could, you know, you can pretty much position them in any way you want

58:34: relative to each other. You can have small ones, you can have big ones.

58:37: So you can go reaching to micro level, you can go to space level.

58:42: Or you can just arrange a bunch of sessions in a grid.

58:45: Or you can say you have a friend, so you have your sessions next to each other

58:50: and technically each one separate, and you can just move between them spatially.

58:54: So that's kind of the overall goal for having really big worlds.

59:00: But also once we have a little more flexibility.

59:04: Oh yeah, so see, thinking of TARDIS, that's the next example.

59:07: You can have inside of a TARDIS be actually another session,

59:11: and then whenever you travel to other sessions, you step in and out,

59:15: you essentially have two sessions coexisting.

59:17: We already have some plumbing for that, because with Resonite you can be in multiple worlds,

59:22: and you can switch between them, and the dash, and your facets and so on,

59:30: they're technically another session too that runs on top of other sessions.

59:34: So this is taking that concept and extending it way further.

59:42: That kind of makes me think of a cool thing where you could have a door, right?

59:49: And then you come out, and now you're suddenly tiny on the table, but it's another session.

59:54: Yeah, you could literally have a session as a physical thing, you can go into other ones.

01:00:00: Or you can be like, I have built this world that's a big world, and maybe there's a little tavern that's tiny,

01:00:05: and you have to scale down and go in there, and the inside is actually another session.

01:00:10: And people can join that session directly, or they can enter it physically.

01:00:14: And they can also leave it by going out.

01:00:19: And this is how it handles it semi-transparently for you.

01:00:24: And I feel like that can be a really cool way to approach things.

01:00:33: Oh, they're asking in the chat.

01:00:36: ShadowX is asking, are you talking about physical size, floating point precision limit, or performance issues?

01:00:43: So I can actually add a little bit more context for this one.

01:00:46: The reason to handle things with domain is because it helps with floating point precision limit.

01:00:52: Because each of the sessions, each of the domains, is relatively small-ish.

01:00:58: If you cross to another one, the floating point values stay within a smaller range, where they're more precise.

01:01:05: But you have extra information on top that says you're in the session, and the session is this position relative to this other one.

01:01:12: So it ends up working out, and it handles the coordinate transformations when stuff transfers between the two of them.

01:01:21: It also helps with performance issues, because you can download the main and unload them as needed.

01:01:30: Plus the other channel performance improvements will help as well.

01:01:36: Sleightofloof is asking, under the user inspector, there's a section called access key.

01:01:42: I'm wondering what actually does it. It only shows up for users of a host. If a host doesn't have its own key,

01:01:47: some few people have already decompiled and said it was just simple avatar protection for a host to spawn in your avatar.

01:01:53: Not sure how true that is, though it kind of wafts inside that.

01:01:59: I can't tell you, it has nothing to do with simple avatar protection.

01:02:04: It has to do with accessing your private data on your own account.

01:02:13: When you load into the session, typically the host will spawn your avatar for you.

01:02:19: In order to do that, they actually need to access data from your account, specifically noted avatar, to be able to access it.

01:02:32: When you save your avatar and you set it as a favorite, we don't want it to be accessible at any time by anyone.

01:02:39: Because people could just spawn your avatar in, even though it is an avatar protection, they can still access the record through API.

01:02:48: What Resonite does, it is a system where, even with something private, when you join a session, you generate an access key that gives one-time access to that specific record, which is your avatar, to the host.

01:03:04: The host then uses that key to access the data so they can load in the avatar for you.

01:03:13: And what it does is, it makes sure that access is given only to the host, specifically at a time when you join the session, and only one time.

01:03:24: Which means, even after you leave, or even when you are in the session, they can no longer access it again.

01:03:31: So this kind of gives the host the ability to spawn your avatar, while severely restricting when they can actually access it, making sure they cannot abuse that access.

01:03:46: Or at least not as easily.

01:03:53: Is there any intentions on moving the issues from GitHub to the Resonite website as a more integrated solution with our Resonite accounts and making it easier to report issues, bugs and crashes?

01:04:07: So we don't actually have the intention to move it to our website. We're very likely going to keep using GitHub because it's integrated with our development tools.

01:04:17: GitHub is very optimized for developer work, so we need that to stay as simple as possible so we can manage as many issues.

01:04:26: Plus, we would have to implement our own system for bug reporting, which, like, do you want us to spend several months on that, which we then cannot spend on other things.

01:04:39: What we're probably going to do, the in-game bug reporting, is actually going to be tied to the GitHub, which is going to present our own interface for it.

01:04:49: So you're not going to need to register a GitHub account, and you just use your Resonite account, and essentially when you make the report, it's going to make the GitHub issue for you.

01:05:04: And it's going to make sure to include all the data and everything. Same thing when you view the issues, it's going to be like a front-end for GitHub.

01:05:11: So that's the most likely way we're going to go about it.

01:05:23: Because making your own system for reporting things, it's a substantial amount of effort.

01:05:30: So we would rather keep using tools that are already there, that are well integrated with tooling, and just provide a simpler interface for everyone.

01:05:40: And kind of build automation around it.

01:05:45: So thank you for your subscription, Juan V.

01:05:48: Thank you very much.

01:05:55: So AzealiotTF is asking, is that Gmod on a scroller?

01:05:59: Yes, it's Gmod on a scroller.

01:06:03: Do I show it on camera?

01:06:05: Oh yes. I have a little, since I'm from Gaze mod, I always have this around my neck.

01:06:13: It's a...

01:06:14: With rattles?

01:06:15: Yeah, it does rattle if you shake it enough.

01:06:19: That's actually just some key...

01:06:21: That's actually kind of funny, is the sound for it.

01:06:24: I've never changed, and when the mic tip first came out, like the microphone tool,

01:06:28: I just jingled some keys in front of the mic, and now it is forever that noise.

01:06:32: You make all the assets on here.

01:06:36: As intended.

01:06:38: Yeah.

01:06:42: So next...

01:06:43: Er, Rasmus.

01:06:44: Also thank you, Darky, and ShadowLupusWall for a subscription too.

01:06:49: Thank you.

01:06:53: So next, we have a question for Rasmus0211.

01:07:01: To all people's rags, I know you're switching to Lumberyard after...

01:07:04: No, no, no, no, no Lumberyard.

01:07:07: You know, there's like a weird thing about Lumberyard, it's like,

01:07:11: I've talked to a few other gaming developers about it, where they were like,

01:07:14: when it came out, it was this huge news, you know, they have both, like,

01:07:18: the Rise to Cry engine, you know, like, they're making it free, you can use it,

01:07:22: you know, like, it's this big engine, and like, you know, it's gonna rival, like,

01:07:26: Unify, and, you know, Unreal, and whatnot, and now it's like,

01:07:31: Lumberyard? I vaguely remember that.

01:07:35: Like, there's, it's kind of interesting, because like, I feel like you don't

01:07:38: hear much about it, and from what I've heard from people who work with it, it's kind of weird.

01:07:42: But, yeah, like, we wouldn't, I don't think it's like a good fit

01:07:46: for us, but like, there's lots of reasons why we probably wouldn't

01:07:50: do it. Next we have,

01:07:54: I'm actually gonna delete these as well, the subscriptions.

01:07:59: Glitchfur is asking, why is Froox cute? So the reason is,

01:08:04: because it's a retro-affective surface, that's actually taking Glitch's cuteness and is reflecting

01:08:08: it back at you. So there's the official answer,

01:08:12: like it's in fact your own cuteness that's being, you know, reflected.

01:08:16: It's similar to like, you know, it's similar to retro-affective surfaces, like

01:08:20: you know, the coating used for, you know, signs, so like, you know, very bright and so on,

01:08:24: except instead of the electromagnetic spectrum, it like reflects cuteness.

01:08:28: Yeah, and it actually, like, the

01:08:31: apparent, like, resplendent cuteness

01:08:35: that appears to be radiating off of Froox is actually a well-known physical

01:08:39: phenomenon that is often misconceived as him radiating his own cuteness

01:08:43: when in reality it is in fact being reflected

01:08:47: from Glitch. Yes. So there we have it.

01:08:51: Officially answered, you know, on the Resonite, on the Resonite stream.

01:08:56: Now this is, you know, part of the story. You got your answer.

01:09:00: Yep. So, it's actually kind of

01:09:03: clears, uh, that clears all the questions we had. Like, if you

01:09:07: got any more, you know, feel free to send them, but I guess it's

01:09:11: a one-hour interminary SIM, so, like, we can also get a little bit of rambling,

01:09:15: I guess. Ramble, ramble, ramble, ramble, ramble, ramble, ramble, ramble.

01:09:19: So, like, I was gonna talk, like, you know, a bit about, like, you know,

01:09:23: the new particle system and the PhotonDust.

01:09:28: It's because, like, you know, in part because, like, it's pretty much what I've been spending

01:09:31: most of my, like, time on.

01:09:37: And we got a bunch of questions.

01:09:41: Tarky, did you know about your hype train?

01:09:43: Yes, thank you for the hype train. We got hype.

01:09:47: So now I don't know if I should, like, let some questions

01:09:51: accumulate or ramble. I'm gonna ramble a little bit.

01:09:56: Because, so with the PhotonDust, it's getting

01:09:59: very close. Like,

01:10:03: this week I have implemented a trail system

01:10:07: and you can do lots of, like, cool things with it. You can essentially, you know, you can have trails, you can have

01:10:11: ribbons between particles, and overall, like,

01:10:15: pretty much, like, what's remaining right now, I need to kind of, like, polish up a few things, make sure, like,

01:10:19: because I think there's a bug, like, when you actually delete it, it crashes the world, so I need to check why.

01:10:24: It's probably something dumb, but

01:10:27: just thank you for the donation, Durky, for the bits, for the 20 bits.

01:10:32: I need to make sure it doesn't explode, it's gonna

01:10:36: clear, like, you know, clear things properly.

01:10:41: There's also, like, a few things, like, for example,

01:10:43: changing the coordinate space of the particles, but I already know

01:10:47: how I'm gonna do it, it's relatively simple to do, and then I need to write a

01:10:51: conversion system for it. But one of the things I really enjoyed,

01:10:56: like, I really love particle systems, because

01:10:59: in general, because they're, in principle, they're

01:11:02: pretty simple systems, where, like, relatively few parameters

01:11:07: you can create such a variety of effects, and it makes them really fun, like,

01:11:11: you know, to play and mess around with, where you're just gonna, moving to goals and changing

01:11:14: values, and it does, you know, what is this thing, and then, like, completely changes the behavior,

01:11:19: and it's, uh,

01:11:24: it's like, you know,

01:11:29: it's just, like, fun.

01:11:33: And one of the things,

01:11:35: like, working on it, is, because we now

01:11:38: control, like, you know, the whole simulation. Essentially, you know, from

01:11:42: the whole emission, you know, to the actual simulation, updating all the, like, you know,

01:11:46: everything, all the points, all the properties, doing whatever with them, and we just

01:11:50: kind of submit, you know, the finish, like, positions and colors, like, you know, to Unity to render out.

01:11:57: Like, do you know what,

01:11:58: like, that Thanos meme, like, the, I can make reality whatever, reality

01:12:02: can be whatever I want it to be. I'm not sure I'm quoting it exactly,

01:12:06: I'm gonna be paraphrasing, but essentially, that's how it felt,

01:12:10: because I've added a few modules that, like, you know, the current system

01:12:14: doesn't have, like, for example, Turbo One's module, you know, or made, like, a thing where it can

01:12:18: split the ribbon, you know, based on, like,

01:12:22: when you emit particles, you know, they can be connected with a ribbon, and if you

01:12:26: pause the emission for a bit and then start it again, it's gonna be its own ribbon, so you can, you know, you can have,

01:12:30: like, connected kind of streaks of, like, particles.

01:12:34: Or there's, like, you know, ones that change the color in the, you know,

01:12:38: saturation value, like, color space, so it can, you know, cycle through the rainbow.

01:12:44: And those things are, like, you know, like,

01:12:46: it's not something we support right now with the current particle system, because it's really, really hard to implement

01:12:50: because Unity handles, like, a big part of our simulation, but now

01:12:54: it's, like, trivial. So I can be, I want this kind of effect.

01:12:59: Five minutes and I have a module that does it. So, like,

01:13:02: you were mentioning, you know, you wanted, like,

01:13:06: a 3D texture that, like, you know, lets you, like,

01:13:09: specify, what's the word, like, turbulence.

01:13:14: Yeah. And it's so simple to add with

01:13:17: a new system, because, like, what I do is add a module.

01:13:21: Each module, like, it essentially gets told, please

01:13:25: update this chunk of particles, and it can do whatever with it. So it can be, like, okay,

01:13:29: I'm going to read the current particle position, I'm going to compute coordinates for texture,

01:13:33: I'm going to read the color, I'm going to remap it to, like, you know, a vector,

01:13:36: I'm going to update the velocity, done. And it runs multithreaded,

01:13:41: it's super fast, and it's, like, super simple to implement, and

01:13:45: that's, like, one of the, like, really exciting things, it's just, you know, like,

01:13:49: having full control over it and being able to add, like, lots of, like, new cool effects, and

01:13:52: it's one of the reasons I've added a few of them

01:13:56: that, like, we don't need, you know, technically for MVP, but they were so simple to add

01:14:01: and I was like, I'm just gonna do it, because it's, it brings more kind of fun into it

01:14:05: and it kind of helps me kind of verify, you know, the design, make sure this kind of works, and it makes

01:14:09: for kind of cool showcases, plus, when we release it, like,

01:14:13: you know, like, it supports pretty much all the things the old system supported,

01:14:17: but here's a bunch of, you know, extra stuff, you know, so it's, so it's not just, like,

01:14:21: you know, like, oh, we've just released a new particle system, oh, it does all the same things the old one does, and

01:14:25: nothing extra. So it makes things a little more exciting, more fun, and it's, like,

01:14:29: one of the things I've been kind of, just kind of happy with.

01:14:34: Yeah, I'm very excited for it, especially,

01:14:37: especially, like, the, the, like, doing turbulence and

01:14:41: stuff, because that's just something I've wanted to do for, like, magic

01:14:45: particles, right? Oh, yes. And being able to make them, like, flow around

01:14:49: things, like, you just have never been able to make things flow around

01:14:53: stuff, and now you will be able to. One of the big things that

01:14:57: I also want to add, but this one, actually, I'm saving after MVP,

01:15:01: is adding, like, an effector system. So you can, for example, say, like, you know, I can be

01:15:05: like, okay, here I have a sphere. Actually, do I have a, is there a tool? I can just

01:15:09: yoink this tool, you know? Eh, come on.

01:15:13: So I can be like, you know, oh, here's a sphere. Whatever, whatever particles

01:15:17: inside of this volume, of this sphere, you know, it's gonna,

01:15:20: you know, accelerate, or it's gonna slow down, or it's gonna get turbulent.

01:15:25: And there's gonna be another one, which is gonna do this, and maybe this one, since particles

01:15:29: accelerates them this way.

01:15:33: So like, oh, why are these physical?

01:15:36: Oh, sorry, I hit him with the... Oh, I see.

01:15:39: I don't remember changing them. But yeah, like,

01:15:45: but that system's a little bit more complicated, because what we need to do,

01:15:49: we're gonna use Bepu Physics for that, and build sort of, like, acceleration structure.

01:15:53: So each particle can be, like, when we're simulating each particle,

01:15:57: so you have a particle here, it's gonna be like, are there any effectors at this point in space?

01:16:02: And you have lots of particles, so you want it to be a really efficient

01:16:06: sort of physics system, like some of the actual

01:16:09: acceleration structures from Bepu Physics, they're particle-well suited for that.

01:16:14: Like, where you sort of pre-compute data, and it makes it very efficient

01:16:17: to sample what's in each point in space. But because that's

01:16:21: a bigger system that needs to be added, I'm saving that after MVP,

01:16:26: but it's also something that's gonna come eventually. It's not that difficult,

01:16:29: but it adds more. The other one

01:16:33: I want to add is, like, sabometers, and it's something we actually get asked

01:16:37: for a lot, but also, like, I need to add a mechanism for

01:16:41: one simulation to sort of depend on the other one, because when

01:16:44: it requires to add, like, you know, ordering to the simulation.

01:16:49: Because we have to be like, okay, this simulation needs to run first

01:16:53: so we can figure out its emissions and then feed it and simulate this other one.

01:16:58: Right now, if we have multiple simulations in the world, it essentially just

01:17:01: schedules them to happen, you know,

01:17:05: like, whatever order, like the multi-threading system processes them.

01:17:12: But for

01:17:13: the sabometers, we need to add, like, you know, a way for them to kind of, you know,

01:17:17: be like, okay, I've simulated, like, you know, I've finished my simulation, I'm gonna

01:17:21: you know, send my data to the other one.

01:17:25: But also saving that after MVP. Also, like, we can just, like, you know, do a few bit of these

01:17:29: after, like, the MVP gets released, but no promises right now.

01:17:34: But, you know, let's just set the scale again for some of the ramblings.

01:17:38: One more thing I was gonna mention. I'm not gonna save the ramble, we do have

01:17:42: quite a bit of questions, so

01:17:45: I might save this one after that.

01:17:51: So Grant K is asking

01:17:53: The issue with GitHub is a developer-centric website. While it's efficient for developers,

01:17:57: it isn't very easy for developers to access. Will the TR system for non-team validators on

01:18:01: forum be worth consideration? Also, a forum could be good for users to share

01:18:05: things, encoded meetups in communities. There probably are forum systems that are

01:18:09: available. So that's actually the thing. We recommend people, you know,

01:18:14: you can use the Discord because it has a forum feature,

01:18:18: you can make a post and coordinate and submit it to GitHub eventually.

01:18:23: I understand that the hub is a developer-centric website,

01:18:27: but we essentially need it

01:18:30: as developers because it makes our work efficient and our time

01:18:34: is very limited. So if you want

01:18:38: to ask as a developer, look at it from

01:18:44: say if we switch to a less efficient system for developers,

01:18:49: now we're only able to handle half of the issues.

01:18:52: We get less work done. Is that something you would prefer?

01:18:56: I feel that's, you know,

01:19:00: it's not the right approach here. What I think is the best is

01:19:04: we keep the GitHub as developers, but we build things around it.

01:19:08: We provide nicer UI where it doesn't require

01:19:13: a GitHub account, we just have an integration, where there's an idea,

01:19:16: you create an issue and you type things in, but it's going to pipe it into GitHub.

01:19:23: Definitely forums would help.

01:19:25: We might consider something that's more formalized,

01:19:29: we tell people report things here and so on, but that's a little bit more involved because

01:19:33: we will need people to actually go there

01:19:37: and make sure the issues are, someone ends up making

01:19:41: the GitHub issue from it. So that kind of requires

01:19:45: do we provide stuff for it, do we ask our volunteers

01:19:48: to help people with the issues because then they have to

01:19:52: have a time commitment, or do we tell people you can make an issue there, you can ask for somebody to help,

01:19:57: but we cannot give you any guarantees.

01:20:01: If the post you make doesn't end up with a

01:20:05: GitHub issue, we might not even know about it because

01:20:09: we're not going to look through everything and don't want discussions there.

01:20:13: So it's something we talked about

01:20:16: I feel like we might do something along those lines, but there's

01:20:22: definitely a number of complications with that

01:20:24: and how do we approach it the best.

01:20:30: Next we have

01:20:31: Sorry, I was just saying I like it.

01:20:34: So Skyrim Kitchener is asking

01:20:40: How are you planning to implement

01:20:44: Rigid Body Physics on the Resonite?

01:20:48: I mean,

01:20:50: details of that are going to depend once we actually do it.

01:20:54: Because generally when big things get implemented,

01:20:57: a big part of the implementation is a design phase.

01:21:02: It's a design phase.

01:21:04: And that's part of the process where when I do it myself,

01:21:08: I sit down with my OneNote and I start sketching things out.

01:21:11: It could work this way, it could work this way. What if it works this way?

01:21:15: If I make it work this way, this causes these problems, so I need to change design here.

01:21:19: But if I change design here, then there's this other problem and I just go through all the

01:21:25: possible ways to approach something and be like, can it handle this?

01:21:28: Is it going to handle this well? And I keep going at it until I find

01:21:32: a design that I'm confident with.

01:21:39: A design

01:21:40: that makes sense and that also feels it's going to be able

01:21:46: to be a solid foundation for the

01:21:48: future. Something that we can actually keep building

01:21:52: on top of.

01:21:56: So generally,

01:21:57: details for that are going to

01:22:01: depend once we actually get to this part.

01:22:05: I can tell you in general parts what I'm thinking right now

01:22:09: but this is subject to change. It's very likely

01:22:13: going to be a system where you essentially add

01:22:17: certain components. For example, rigid body physics

01:22:21: and so on. That's going to drive some things like position,

01:22:25: rotation of the object, and then it's going to use

01:22:30: it's going to be registered with another system

01:22:33: that's going to handle the synchronization for those. And instead of just

01:22:37: synchronizing the positions zero

01:22:42: it'll include them efficiently using quantization, delta changes

01:22:46: and so on.

01:22:51: So

01:22:52: it's probably going to be something along those lines. There's more complications because it might need extra

01:22:56: data. For example, if you have a physics option, say we're throwing

01:23:00: it back and forth, you want to decide who's the one

01:23:05: driving this and have a system where it kind of hands it off and

01:23:08: resolves any conflicts and stuff like that. So there's probably going to be

01:23:12: a number of things with that, but again the details are going to

01:23:16: be determined when we actually work on it.

01:23:21: If there are more specific questions with it, feel free to ask, follow up,

01:23:25: but that's pretty much what I can tell you right now.

01:23:28: I was just going to say that networking rigid body physics and stuff is

01:23:32: still a very active field in figuring out how to do it best

01:23:37: in computer science, isn't it?

01:23:40: It's a particularly difficult problem. The networking part is the harder part of it, I would say.

01:23:47: One of the reasons we also want to

01:23:49: do the big performance update with switch to .NET 9 is because

01:23:53: the Bepu physics is specifically designed for it.

01:23:58: So when we do interpersonal rigid body physics, we want to be as performant

01:24:01: as possible, and the switch of the client

01:24:05: makes it easier. We also kind of diverged a little bit from the main

01:24:09: version of Bepu physics right now, because they have

01:24:13: made a change where it only works with the .NET

01:24:17: I forget which version it is right now, but essentially only works with the newer

01:24:21: versions of .NET, which means we cannot even use it, like the newer versions of it.

01:24:26: Once we make the switch to .NET 9 for the FrooxEngine, we'll be able

01:24:29: to sync up to the latest version, we're going to get a huge improved

01:24:33: performance, and then we can be like, do we want to do the rigid body physics now?

01:24:38: We're going to resolve the networking, and we're going to handle the integration.

01:24:42: So that itself is going to

01:24:44: help a lot, because if we did it right now, it might not be

01:24:49: us performing, so it's better to do the performance

01:24:52: first, and then plan it sometime after.

01:24:57: I'm excited, you've been doing a lot of tests with headless, where you have

01:25:00: the physics simulated on the headless, and you have lots of the bodies.

01:25:06: And even with the current way behind

01:25:08: networking, it's just going to synchronize the position

01:25:12: every frame. It still works very fast, with the

01:25:16: .NET 8 headless.

01:25:19: I think I simulated maybe 900 or so

01:25:24: just even character controllers

01:25:28: floating around and bumping into each other in a giant conglomerate

01:25:32: ball of almost liquid, because it almost

01:25:39: on mono, even the newest version of mono

01:25:43: it just died, it exploded

01:25:46: and went down to 15FPS and it was unplayable. And on .NET 8

01:25:51: and now probably .NET 9 as well, I could do it at 60FPS

01:25:55: and the server didn't even flinch. In fact, the networking gave out before the physics

01:25:59: gave out. Oh yeah. That's also why networking is a really

01:26:03: big part of it, because it's a huge amount of data

01:26:07: so that needs to be something that's very efficient

01:26:11: you can just have the system synchronize it naively, but

01:26:16: essentially efficiency becomes a problem.

01:26:18: This showcases both the huge difference

01:26:23: in performance between mono and .NET, and also

01:26:27: how Bepu physics is optimized for it, because it uses

01:26:31: a lot of primitives and things to run really fast. And there was even

01:26:35: an older version that was before that, so the new versions

01:26:39: are probably even way more optimized, so once we're able to switch to those

01:26:42: it's going to be beautiful. The new versions of .NET are just so much faster

01:26:47: too, it's just going to be several orders of magnitude.

01:26:52: Actually, this kind of ties into the other round Blob was going to have, because

01:26:55: it's an relatively short one.

01:26:58: I think I already mentioned this earlier in the stream, but I've upgraded

01:27:04: to the API and the worker to .NET 9

01:27:09: and there's really no other change in code other than fixing a small

01:27:12: method call. And the performance usage actually develops

01:27:16: visibly. We're literally just going from .NET 8

01:27:21: to .NET 9, we got free performance.

01:27:24: Every year they just made so many performance optimizations and that's one

01:27:28: of the reasons we want to keep using the latest version, because

01:27:32: it's faster, and it keeps getting faster.

01:27:37: So, next one we have

01:27:39: vt-arxos is asking, when is Froox?

01:27:44: Now,

01:27:48: Erasmos02eylons is asking, what is PhotonDust? PhotonDust

01:27:51: is a name for our new in-house particle system

01:27:55: that's being currently developed. It's getting close to MVP.

01:28:00: I kind of expected hopefully next week.

01:28:03: I was hoping this week, but some things were a little bit more complicated.

01:28:08: So hopefully next week we can start testing it.

01:28:11: It's going to replace the current system, that's sort of like a hybrid

01:28:14: between Unity and Froox Engine,

01:28:18: into one that's pretty much fully Froox Engine.

01:28:22: And that's part of our big performance optimization.

01:28:25: We actually did cover a fair bit of this on the

01:28:29: livestream too, if you want to check. Also thank you Darky for another cheer

01:28:33: for another 20 bits.

01:28:37: So next question we have, TheJebForge is asking, can ProtoFlux

01:28:41: detect infinite loops yet? A running infinite while loop that just freezes the game forever.

01:28:46: So a bit

01:28:49: pedanting answer is, nothing can detect infinite

01:28:53: loops. This is known as the halting problem.

01:28:57: It's been proven by Alan Turing, this is fundamentally

01:29:00: unsolvable problem. You cannot detect if code has infinite

01:29:05: loops. What ProtoFlux does, it

01:29:09: places a time limit on how long can your code execute

01:29:14: per frame. If it takes too long, it essentially

01:29:17: forces it to break and just stops your code. The problem is

01:29:21: it has no way to tell if it's legitimately just taking a while

01:29:25: processing something and it would eventually finish, or if it's actually infinite loop.

01:29:30: Because actually detecting that is fundamentally

01:29:33: impossible.

01:29:37: There is a system that should break it. The only thing is, when it breaks

01:29:41: it, it crashes the world. Because

01:29:47: I haven't

01:29:49: wrapped around it yet, because with

01:29:51: the early versions of ProtoFlux, or pretty much anything, whenever I'm uploading something

01:29:56: big, I follow this philosophy called

01:30:00: fail fast. And what you do is you write your code

01:30:04: when something goes wrong, you just make it visibly explode as fast as

01:30:08: possible. Because when you do, then you'll be like, okay, that's an issue, I'm gonna fix it.

01:30:13: Whereas if you ignore problems more silently

01:30:16: they can fester and stay there for

01:30:20: too long before you even notice them. We had problems that

01:30:24: literally existed for years in FrooxEngine that were hidden

01:30:28: because they were silently ignored. And it took a complicated

01:30:32: set of circumstances for them to even come to the surface.

01:30:38: So the fail fast kind of makes things fast, but

01:30:41: at a certain point, once the system is used, we

01:30:44: want to wrap it because we want to improve the user experience, be like, okay,

01:30:48: you might freeze for a few seconds and then your code is gonna get angry and be like

01:30:53: I took too long to execute.

01:30:59: Next we have ShadowX

01:31:00: while particle supports support sub-particles. Particles themselves being

01:31:04: emitters in foreseeable future. So yes, I introduced

01:31:08: a little bit earlier, sub-emitters is one of the things I do want to

01:31:12: add to the particle system. I am not planning it to add for MVP

01:31:19: because it's not needed

01:31:20: for it and it's a little bit more complicated. It requires

01:31:24: a synchronization mechanism where one of the particle systems

01:31:28: needs to finish simulation first and pass on its data to the other one.

01:31:33: But I might

01:31:37: I don't guarantee right now, but I might maybe add it after MVP

01:31:41: I'll see how I feel about it because I've been

01:31:44: working on it for a while. It's going to come at some point

01:31:50: it's much much easier to add now that we

01:31:52: have our own system, but I don't know when yet.

01:31:57: There's definitely one thing that's going to have a lot of

01:32:00: cool effects. I was going to mention that in my ramble earlier

01:32:05: one of the things that's also going to be cool with the trail system is you're going to

01:32:08: have the trails be emitters. So as the particle is drawing a trail

01:32:12: the trail can be emitting other particles.

01:32:18: So there's going to be a lot of cool possibilities.

01:32:20: The main thing we just need is a way for the simulation system to be

01:32:24: don't simulate this particle system until this system gives it data.

01:32:29: And it becomes more complicated if you're like okay, there's two systems that

01:32:32: can submit into this system so now it needs to count how many it needs to do

01:32:36: and then you have a question, what happens if you have a circular reference

01:32:40: do you just not allow that?

01:32:45: Because it just leads to infinite particles, you just be like, okay I'm going to break it

01:32:48: this is not valid. Or do you just make it

01:32:54: break at a certain point and then wait

01:32:56: for the next simulation step? There's some kind of things to resolve there.

01:33:02: But yeah, it'll be supported at some point.

01:33:09: xxcoryxx

01:33:09: is asking, doing well, everything's pretty okay.

01:33:13: DarkDsaber food, have you eaten today just being a derp?

01:33:17: Yes, I had food like a little bit before this.

01:33:20: I've been actually eating cereal while this has been going on.

01:33:22: Well, eating as we speak.

01:33:28: Ah, that's as I speak. Hopefully you're not speaking as you eat.

01:33:32: Or eating as you speak.

01:33:35: Oh, there we go.

01:33:41: DustySprinkles, have you done any thinking about accommodating the modality work in any way?

01:33:44: Yeah, quite a bit. I do have a lot of notes. I do have a general idea how it's gonna work.

01:33:49: How it's gonna be approached. It's mostly just a matter

01:33:55: It's just like

01:33:56: you know, mostly a matter of just putting work into it.

01:34:02: And we need to make sure things don't exploit and we need to update pretty much every single component

01:34:06: and so there's probably gonna be longer automation and so on.

01:34:11: Next we have Tiki8192

01:34:15: is asking, does it a lot of work to switch .NET version?

01:34:18: I'm asking because .NET 9 is not long-term support.

01:34:21: So we already heard this question earlier in the stream, but just to quickly reiterate, no.

01:34:27: It took less than a day.

01:34:30: Once .NET 10 comes out, we expect to just

01:34:33: switch very quickly. The thing that takes the longest

01:34:36: is mostly just giving people who aren't headless, giving them time to update

01:34:41: their tooling, make sure that it doesn't explode.

01:34:45: But the switch is mostly just flipping the version and things

01:34:49: just kind of work. There was one little piece of code I had to update

01:34:52: and it just works. And it's free performance.

01:34:57: Sleight of Floof. Is there any updates regarding Sauce project?

01:35:01: Right now I don't have any updates. You could check

01:35:04: Guinz's office hours, wherever he hosts them.

01:35:08: But there's no update right now that I can give you.

01:35:12: So thank you for the cheer. Thank you.

01:35:16: VTRx was also asking, does the cereal have a flavor?

01:35:20: Yes, actually I was eating Froot Loops.

01:35:22: Froot Loops!

01:35:25: I'm sorry Froox, I'm sorry, you're too yummy.

01:35:30: Can't say that.

01:35:34: And that's all the questions again.

01:35:37: So we have 25 minutes left before the two hours.

01:35:44: I suppose we could do more rambling.

01:35:50: Or this? Whatever this is.

01:35:54: I don't know.

01:35:55: How do I talk to people?

01:35:58: Where are you people?

01:36:01: I don't know, I just make noises and eat fruit.

01:36:06: You make noises, you be yellow, and you put your face on the keyboard

01:36:09: and a game comes out or something.

01:36:10: You just go like, you take the keyboard and you go like wub wub wub wub wub wub wub wub

01:36:14: and this happens.

01:36:18: How does one blow bubbles? First you have to find

01:36:22: a delicious soap, you eat it, you just go

01:36:24: and then you go like bah. Just like that.

01:36:30: That's the best way. I recommend glycerin soap, because glycerin based soaps

01:36:34: they actually taste sweet. Most other soaps taste better.

01:36:40: We do not recommend eating soap though.

01:36:45: Maybe he does, but I don't.

01:36:48: I don't think you should eat soap. No, don't actually eat soap.

01:36:53: We're being silly.

01:36:56: My next question is what do we ramble about? I don't know, I've been trying to

01:37:00: get my VR working on Linux lately I guess.

01:37:04: Oh, how's the going? This is exploding.

01:37:08: It's actually pretty cool. I got my Quest Pro working pretty

01:37:12: easily. It's actually getting pretty good.

01:37:18: I'm kind of

01:37:20: on a stage where I kind of want to switch away from Windows

01:37:24: because it's giving me so many issues and it feels like

01:37:28: it's getting worse. It feels like I'm kind of focusing on things and it's like

01:37:32: hmm. But at the same time

01:37:35: I tried running Linux on my laptop and it killed

01:37:39: the Wi-Fi adapter. So I'm like okay, I don't know when I'm trying to

01:37:44: like...

01:37:47: To clarify, is it permanently broken or did it just make it stop working

01:37:51: for a second? Well, I had to do a hard power cycle.

01:37:55: I started Linux, it was actually Arch Linux, and I was with Glitch.

01:37:59: Glitch uses Arch Linux. It was booting and then Glitch goes

01:38:03: oh, that's weird. I've never seen it make data during boot before. Something with

01:38:07: Wi-Fi and then boot back into Windows

01:38:11: and Wi-Fi adapter is gone. So I tried to like...

01:38:15: Also I'm getting in the corner again.

01:38:19: I tried rebooting, I tried installing

01:38:23: the drivers, I tried doing a bunch of things, it just doesn't want to come back.

01:38:27: And I'm like it's just gone. It just doesn't even see it.

01:38:30: So eventually I had to like

01:38:34: find a way to do a hard power cycle on the laptop if I hold the button

01:38:38: for like two minutes.

01:38:44: And then it actually came back, but I'm like

01:38:46: not sure when I want to try it again because

01:38:50: I don't know. The problem for me is whenever

01:38:54: Windows does something, I don't want to be dealing with

01:38:59: computer issues. I want to be working on the stuff I want to be working on.

01:39:03: Every minute I spend working on trying to resolve a problem

01:39:06: I'm just like I don't want to deal with this. That kind of makes

01:39:10: it more difficult for me to use Linux because I don't

01:39:14: want to be dealing with this, I just want it to work.

01:39:18: I have already too much things I need to

01:39:22: do, and I don't want as much time to be able to spend

01:39:26: working through that, and not just making my stuff work.

01:39:31: For sure that's still one of the benefits

01:39:35: of Windows. Most of the time it just kind of works

01:39:39: at least for me.

01:39:44: So it's...

01:39:46: It seems in recent times it's getting a little more, it just doesn't work.

01:39:52: So for me it's still where it

01:39:55: works, it's just there's a lot of things that kind of like

01:39:58: are super annoying and like, you know, to deal with.

01:40:04: But I also got a bunch more questions in the meanwhile.

01:40:09: Darkest saber fruit, so what would be Frooxius and the soap on the store?

01:40:13: Ask Chroma.

01:40:18: VTRx was asking

01:40:21: Refrigerant?

01:40:22: Refrigerant?

01:40:27: I think the answer is

01:40:33: 7.

01:40:37: I think you already, you just answered this one.

01:40:43: When it just works, the end.

01:40:47: When his wifi card works.

01:40:48: Yeah, when my wifi card works and other stuff works.

01:40:52: Really? Glitchfuse actually looks wild.

01:40:55: Let me answer that in a form of a

01:41:00: thing, if I can find it.

01:41:04: If I remember where I saved it.

01:41:08: This is also one of the things. I know I saved a thing somewhere.

01:41:13: There we go. Oh, this might be the wrong one.

01:41:17: This might be the wrong one.

01:41:22: This one's a bit modified.

01:41:26: Just gonna put it over there.

01:41:31: Sometimes I'm like, you know,

01:41:32: I get the things where I'm like, I want to work on

01:41:36: everything, but I can only work on one thing because whenever I'm looking for something in the inventory, I'm like

01:41:40: I just want to rework the inventory, I want to add a search so I can just

01:41:44: not deal with this, but I can only do

01:41:49: so many things.

01:41:53: I suffer with everyone else.

01:41:57: That's something I've kind of realized, too,

01:42:00: now that I've started this internship, is that there's just not enough

01:42:04: time to do anything, man. Like, I want to do all this

01:42:08: stuff, I need to do this, but then I need to actually do my job.

01:42:11: And it's just like, oh my god.

01:42:14: That's been the problem for me, I've done so many things I wanted to work on, and it's just

01:42:19: not time. And it's kind of like, you know, just to kind of bring up what I was discussing before,

01:42:23: that's why we sometimes really straight on the GitHub

01:42:27: stuff, because we're like, while you have too many

01:42:31: things to deal with, the best thing you can do to help

01:42:35: us as developers is make our work as easy as possible.

01:42:39: Because then, that way, you know, we can handle, like

01:42:43: we're not going to be able to handle everything, but we're going to be able to handle

01:42:47: it more. And it kind of gets difficult

01:42:51: because sometimes it's like, this person's not giving me

01:42:55: the stuff I need, which means that probably instead of, you know,

01:42:59: taking five minutes, it's going to take me an hour. And I'm like, I don't have an

01:43:03: hour to spend right now. If you gave me the information,

01:43:07: you know, if it was there, I probably would have resolved this now, but now I have to

01:43:11: put it, you know, back on the shelf, and do a video later

01:43:15: maybe. And figure out, like, you know,

01:43:19: is this an issue that's worth an hour of time?

01:43:24: It gets difficult, like, there's never enough time for everything.

01:43:28: And if you kind of figure out, like, you know, where to

01:43:31: spend your time most efficiently.

01:43:35: So we're getting, we have like 15 minutes

01:43:38: left, and then a few more questions, so I'm gonna, let's see.

01:43:43: ShadowX is asking, what's your opinion on varifocal hardware in headsets,

01:43:46: hardware with rendering-wise, do you think it will be a big improvement to realism or eye health?

01:43:50: I don't really know, like, I haven't actually tried varifocal hardware, so

01:43:54: like, I can't really comment on this one much.

01:43:59: I'm sorry, have you tried any varifocal headsets?

01:44:01: No, I haven't tried any fancier headsets than like a

01:44:06: Quest Pro. I really would like to try some

01:44:10: new VR hardware, but I'm very sad

01:44:14: that the VR landscape is a little barren right now.

01:44:17: I have high hopes for Deckard. I'm also prepared

01:44:22: for those hopes to be crashed, but I do have them.

01:44:26: I have no expectations

01:44:35: It's also fair.

01:44:37: The real one.

01:44:42: I don't know what it was in context with.

01:44:47: I think that might have been in response to someone

01:44:49: else, I'm not sure.

01:44:53: I mean, eventually I would like to get there, but

01:44:58: no specific timeline.

01:45:00: Technically you can run it through some emulation software, but it doesn't really work with

01:45:03: skin mesh renders.

01:45:07: VTRXL is a... oh, that's...

01:45:13: Darkest Ever Phone. Will there ever be

01:45:15: a genuine phone app, the way people

01:45:19: can send messages to each other without even being on their PC? Yeah, that's actually one of the things I would

01:45:23: like us to have, is to have a sort of thing on our phone,

01:45:27: message people, we can send them things,

01:45:31: manage things through inventory, say you take a picture and it just automatically saves

01:45:35: it through inventory and you jump on VR and be like, oh hey, let me show you the thing I took

01:45:39: and it's right there. So I would like us to have a

01:45:43: companion app, and eventually be able to

01:45:47: be in sessions, simple enough,

01:45:51: but no specific timeline or something like that.

01:45:59: I...

01:46:01: That's a joke. ShadowLupusWolf, why should they not fart in Apple Store?

01:46:05: Because they don't have windows.

01:46:10: Now we're at fart jokes.

01:46:16: Uh...

01:46:17: He's good for out of a window. He doesn't use windows, he doesn't have them either.

01:46:22: Just eat him on the wall.

01:46:24: Don't eat him on the wall.

01:46:28: It's just too hard. VTRX,

01:46:32: oh, it's also views it, progress,

01:46:36: something else.

01:46:40: ShadowX, possible controller has been found, data mining, apparently decor controls

01:46:43: will feature ABXY buttons and D-pad, and a bumper addition

01:46:48: to trigger. How do you utilize that layout in Resonite?

01:46:51: More buttons, more buttons are good.

01:46:54: I still like to say it because right now it's like data mining so it's kind of like

01:47:00: could be other things, you know, I don't want to like

01:47:02: but generally the more buttons there is, we can just map things to them.

01:47:08: There's actually one of the issues I had is figuring out button mappings

01:47:11: for things, it's like there's not enough buttons for all the things people

01:47:15: would like to have, because sometimes we get requests like, oh we want

01:47:19: a button for this, you know, and we're like, well this button is already used for this,

01:47:23: this button is already used for that, we could like, you know, make it like

01:47:26: make this button do multiple things but then it becomes difficult for people

01:47:31: because you have to be like, oh to use function one, you have to hold it for

01:47:35: this many seconds and then like, you know, release it to use this other function, you have to double tap it

01:47:39: and that makes it kind of difficult for new users, so it's

01:47:44: it's a tricky thing, so like just having more

01:47:47: buttons helps

01:47:52: I feel like it kind of allows simpler controls

01:47:56: actually the issue, the controller that was the worst about it

01:48:00: was the original Vyvanse, because you only have one button

01:48:04: you have the touchpad, and the touchpad, you actually have to press it

01:48:08: you know, to be able to use the axis, and it's actually one of the reasons

01:48:12: why, this is like a common problem, but like

01:48:15: when you equip a developer tooltip, you end up with tongue controls with certain controllers

01:48:20: and the Vyvanse are the reason why, because on the Vyvanse

01:48:24: you can't really, you cannot like, you know, use the

01:48:28: click without also like, you know, using the movement

01:48:31: because they're like very tied together, but the choice takes you can

01:48:37: so it's kind of like, you know, you can kind of click it independently

01:48:40: of like, moving around

01:48:43: but like, it's

01:48:46: with the Vyvanse, like you know, it has to work with those

01:48:50: so this kind of makes things a lot difficult and it's kind of tied to that

01:48:53: so we have systems that still like, you know, work with those

01:49:00: Next, Kaibikoru

01:49:02: Kaiguyoru, sorry. I guess if Resonite were native with Super Volcan

01:49:06: the performance, I don't know, would be better. I mean, probably like, well

01:49:09: I mean, so that's like a lot for that, because if you just

01:49:13: natively switch to Volcan, you might not automatically get extra performance

01:49:18: sometimes you do, sometimes you don't. It depends a lot on how the engine's structured

01:49:24: However, we plan to switch

01:49:25: to a sort of custom rendering engine that's going to use Volcan

01:49:29: so we can expect that provides performance benefits

01:49:33: but there's going to be also a lot of other reasons for it, one of them using

01:49:37: more efficient method of rendering instead of deferred

01:49:41: using something called clustered forward

01:49:45: which is like, you know, overhead is able to render lots of lights

01:49:49: in real time and also work with any materials. For example, right now

01:49:52: I'm using a toon shader and I'm being affected by this light

01:49:57: you know, there's another light there. What engine actually has to do

01:50:01: it cannot use deferred because that only works for opaque

01:50:06: PBR materials. So for this one it actually has to use forward

01:50:09: which means this mesh gets re-rendered

01:50:13: for each of these lights, where each one of them has

01:50:17: light contribution, and it ends up taking

01:50:21: a fair bit of performance.

01:50:25: But with clustered forward, you pre-compute

01:50:29: areas where there's lights, and then when you render the

01:50:33: individual fragments of the mesh, it just loops through all the lights

01:50:37: within that point in space, and

01:50:41: just does it all in one go.

01:50:46: We should probably stop the questions since we're ten minutes out or so.

01:50:50: Yeah, we have about nine minutes left, and we can do a little bit more rambling.

01:50:53: If there's some kind of questions, we can answer them, but if there's a lot of questions

01:50:57: at this point, we're probably not going to be able to get through them.

01:51:03: So feel free to still ask questions, we'll try to

01:51:05: get through as many as we can, but at this point, no guarantees

01:51:09: your question is going to be answered.

01:51:12: Karandik is asking, snop it? I have no idea what that means,

01:51:17: so I'm going to answer with seven.

01:51:20: Oh, that's like a Tom Scott video, where he's like, snop it?

01:51:24: Schnop it? Schnop it?

01:51:28: I forgot what I was rambling about before.

01:51:33: I was mentioning the .NET 9

01:51:35: thing, because this is like, oh, it's actually one of the cool things

01:51:39: like, I remember like, I think when like, .NET 7 released

01:51:43: that was like, two years ago?

01:51:48: Oh no, Kaden is asking, hey Froox, can you

01:51:51: recite approximately nine minutes worth of certain items or service?

01:51:55: The answer is no. I mean, it's a valid answer to the question.

01:52:02: But they released the performance updates, and it was

01:52:05: so long, like, when we tried to open it,

01:52:08: the browser on the phone, it would crash it, just because of how

01:52:12: long that is. And the author who writes these, they were saying

01:52:16: when they started making those performance summarization updates

01:52:22: they got kind of worried, they were like, oh, we're getting so many performance updates

01:52:25: for .NET Core 1, .NET Core 2, .NET Core 3,

01:52:28: we're going to go through all the possible performance

01:52:31: updates and then they'll have nothing to write about, and then they were like

01:52:35: every single year there's more of them.

01:52:39: I think by .NET 5 they were like, I'm not worried about that anymore.

01:52:44: And I think they even purposefully made it so long just to be

01:52:47: like, there's so much. And in the latest one for .NET 9, it's

01:52:51: also super long, and they're like

01:52:55: I think they said at the beginning, this is something like

01:52:59: I'm both looking forward to writing these, and also dreading it

01:53:03: because it's going to be so long.

01:53:07: Froox, can you describe your favorite movie backwards without saying the name of the movie?

01:53:12: Well, you see, the problem there is

01:53:16: I generally don't answer questions about your favorite thing

01:53:19: very well, because I

01:53:22: like different things for different reasons, so it's like

01:53:26: I always find it difficult to be like, yeah, that is my favorite, that is my favorite.

01:53:30: Like, it kind of depends and it changes over time, so

01:53:34: like, I can't for that reason. And not because

01:53:38: it's, you know, like, the backwards thing.

01:53:42: Yeah, I really like in C Sharp 13,

01:53:47: which is the language version that you can use with .NET 9 now,

01:53:51: like, they allow, like, spans and stuff in async methods.

01:53:55: Oh, that's really cool. Yeah, I've actually run into that a few times, like, I was, like, writing something

01:53:59: that was like, oh, you cannot use span, you know, in async, but I'm like, oh.

01:54:03: But do I want to?

01:54:05: I want to.

01:54:09: Yeah, that's one of the things you can do, you cannot do StackAlloc in those such a thing.

01:54:15: And now you can. Glitch for rule Resonite?

01:54:18: When will Resonite support serial connections?

01:54:24: You know, the funny thing is, like, at one point

01:54:26: I kind of had the urge to just write it, because one of the things with Resonite, like,

01:54:30: the way it handles networking, like, we haven't abstracted, like, you know, networking

01:54:34: support, so it becomes relatively easy to add new networking modules.

01:54:39: And one thing I want to do, at some point,

01:54:43: like, is sort of, like, you know, open and even more modularize the system,

01:54:46: but it can actually, you know, have, like, plugins which add additional networking

01:54:50: protocol support. I feel once that happens

01:54:54: it's only going to be a question of time before somebody writes a serial, you know,

01:54:59: connection support so it can host, you know, on serial.

01:55:03: Like, while back, like, we were kind of dealing with some, like, business things, I ended up, like, adding TCP protocol

01:55:06: support, because it was just easy to do, it took, like, literally, like,

01:55:12: two hours? I don't remember.

01:55:14: I think it took less than half a day to implement.

01:55:19: So, like, and I had, like, the urge to just do it, you know,

01:55:23: for the, for the LOLs, but

01:55:27: I feel like once we do open it, if we don't do it, you know, for the fun

01:55:31: of it, somebody's gonna do it.

01:55:38: I mean, you could do that too.

01:55:41: I mean, networking over the CPU

01:55:43: cache. I mean, technically, with the TCP, I mean, we do have the TCP,

01:55:47: so, like, if you use something that, like, you know, has, like, TCP over serial, then you can

01:55:51: use it. There's also, like, TCP over CPU cache, like, with

01:55:55: the, you know, with the Spectre and all down things.

01:56:02: Oh, no.

01:56:04: I mean, technically, since we also have TCP,

01:56:07: there's also TCP over carrier pigeons, so, like, you can use carrier pigeons for Resonite,

01:56:11: but the problem is, your connection is going to timeout.

01:56:16: Or will it? Actually, not in one, because you can have a custom timeout.

01:56:22: DJ Prodigy Hunters.

01:56:23: Why a yellow dog? Well, I'm not a dog. I'm some sort of

01:56:26: sci-fi space fox, wolf-like sort of thing. I'm very specifically

01:56:31: non-specific. But, uh,

01:56:35: it's kind of a long story, and we don't have time for it.

01:56:38: Maybe, maybe, maybe something else.

01:56:43: VTR Excels. It made critical support serial connections, but it supports serial connections.

01:56:48: I mean, I don't think it does. Like, Sarah had, like,

01:56:51: serial to himself, and had, like, you know, none of that.

01:56:57: Uh, GennyK, wolf file of writing.

01:56:59: Note it will be broad router experimental out and out of private

01:57:02: lens issues. Maybe hard permissions are a thing. Probably not.

01:57:07: The things like that, like, that's very

01:57:11: very dangerous. Note. So, like, we gotta be very careful

01:57:14: about it. Um, maybe.

01:57:18: Maybe, like, you know, if we, like,

01:57:21: questions how to, like, approach, because what we'd probably do, it would work

01:57:26: differently. Um,

01:57:31: like, the way I can see it work is, like, where, like, if you're making

01:57:34: something, it makes a request that appears, you know, in user space to the user

01:57:38: be like, this thing wants to access this folder on your system.

01:57:43: Do you grant it permission or not? You know, so it's gonna

01:57:46: you have to specifically give permission and it can only access, you know, those specific things.

01:57:50: And maybe, like, it's even more scope, it's gonna be like, it's gonna have access to all the files

01:57:54: in there, or it only has access, you know, to make new files,

01:57:58: but not read anything else. So, maybe

01:58:02: that way? Yeah. Like, that's

01:58:07: I'm very kind of cautious, like, with those kinds of things, because, like, that can

01:58:10: be abused very easily when there's a hole.

01:58:15: Because, even with hard permissions, you know, if there's a bug that lets you get around

01:58:18: something, most of the time, the most you can do is, you know, you

01:58:22: mess up the world, but, like,

01:58:26: you know, that's not as severe as being to, like, you know,

01:58:31: access somebody's file system. Because that's

01:58:35: kind of, you know, that leaks outside of Resonite and lets you, like, you know,

01:58:39: install Trojans, you know, like, and do other things. So, like, that

01:58:42: puts it at, like, a lot of different levels of scrutiny.

01:58:46: I've had situations in Garry's Mod where I was using

01:58:50: some, I, like, had used someone's E2 in the world

01:58:55: and it wrote, like, 500,000 garbage text files to my data folder

01:58:58: and it was scoped to only be able to write to, but they had no limit

01:59:02: on writing how many files they could just write 50,000 files.

01:59:06: And just call your system. There's a lot of, kind of, like, bit holes.

01:59:10: So, like, with stuff like that, like, if

01:59:15: we do support it, it's going to be something along those lines. It's going to ask you, you know, for

01:59:18: permission to a specific thing. There's going to be a limit, you know, how much you can read, like, you know,

01:59:22: write, stuff like that. But that's

01:59:26: not a null thing right now. Also, we're getting

01:59:30: we're probably, like, in the last 30 seconds, so, like,

01:59:34: thank you everyone, you know, for joining the second episode. I hope, like, you know,

01:59:39: you enjoyed, like, you know, us talking about stuff, talking, like, answering questions, talking about

01:59:42: Resonite. I'm going to upload, like, you know, the video,

01:59:46: like, on YouTube again, so you can, you know, watch this afterwards.

01:59:52: Like, or, like, if you, like, missed it, like, you know, like, well, if you

01:59:55: missed it, and you're watching this on YouTube right now, like, you know, like, I guess, like, that's kind of written down to say,

01:59:59: you've just watched the whole thing. Maybe. I don't know.

02:00:03: But, thank you everyone for joining.

02:00:07: Thank you, you know, for your questions. Thank you for, like, you know, supporting Resonite. Thank you for making

02:00:11: cool things on Resonite. Thanks, Cyro, you know, for co-hosting.

02:00:16: And we'll see you, like, you know, next week. So, thank you very much, and

02:00:19: see you later. Bye.

02:00:23: I'm also gonna do a thing that, like,

02:00:25: the moment I ended the stream last time, I was like,

02:00:30: I should have rated Creator Jam, so I'm gonna...

02:00:32: All of you are going to Creator Jam now. Actually, wait, ours? Oh, they're not streaming anymore.

02:00:38: Wait, hold on. Let me double check.

02:00:41: Twitch is giving error. Maybe they're streaming?

02:00:45: They're not streaming. They stopped streaming. Okay,

02:00:51: you don't have to go home, but, you know, you can stay here.

02:00:55: Bye.