Welcome to Office Hours, the weekly AMA where I ask your questions.
If you have any questions, please drop them in the Office Hours text chat.
There's a couple of channels above this one.
Office Hours, look for the thread, drop your questions in.
We'll answer them in the order that they appear.
I see a few people in the audience, so do get those questions coming in.
I'm going to go ahead and ping people again, just so they know that people are, you know,
where we're starting.
And we'll see what comes up.
Alright, looking at the questions list, we have one question from Lex, who says,
"Any in-progress MMC submissions you've enjoyed looking at?"
The MMC Analyzer, which appears to now be a yearly, you know, appears every single competition
project is always fascinating to see.
They publish it as quick as they can, and it sort of details sort of the entries that
have been submitted and lets you see them.
Now those are always good to see, and this year they're kind of themed around the MMC
poster, which is also good to see.
There are quite a lot of entries which have been submitted which are empty worlds, and
I love that.
Remember that you can submit an entry before it's finished, and it massively, massively
reduces your stress on the day.
You can edit an entry after it is submitted, you just need to save the world again.
You don't need to resubmit, you just save the world again.
So I highly recommend publishing your world as soon as possible.
If you leave publishing your world to the last minute, you may have issues that you
cannot resolve, and therefore you may be disqualified.
So publish early, and then you're fine.
Additionally in the last couple of days, please don't be rushing.
Like the last couple of days, just polish, right?
Think about audio, think about desktop users, think about testing and things like that.
There are no further questions currently, so we're going to sit here in absolute silence
till there are further questions.
Another question from Lexi which says "Do you think there will be an update to NIRS
to change the default world filter facet for MMC23 like there was last year for MMC2022?"
I don't know, I haven't spoken to Fruks about it, the MMC team certainly do not require
it, it's just a nice to have thing that sometimes occurs.
Amber asks "Will there be a revamp rework of the wiki, the NIRS wiki plugin generates
all of a default type of float and might be confusing, any possibility for interactive
cards etc."
I have huge plans for documentation and the wiki, which are all on hold, whilst I have
zero control over the wiki.
So yeah.
I am continually backing up the contents of the wiki as my main promise when it comes
to the wiki and internal documentation, and any documentation that people write is I will
preserve it to the best of my ability.
So even if I have to stay up till 4am copying and pasting your text from the odd wiki into
whatever new system might exist in the future, I will.
Your contributions are not lost.
Neutron Star asks "How are you?
Has life been good?
I am answering questions about NIRS, not myself."
Let's keep it to NIRS.
As we have no questions for the moment though, I just drank a ginormous amount of coffee.
I've got to do a couple of errands after the office hours segment here, but then I hope
to not leave the house for the rest of the evening which will be fantastic.
Who wants to go outside?
Outside's weird.
There's stuff out there.
Things.
People.
Hey, there are no other questions Lex, there's not much else to talk about.
Question from Amber who says "Is the renderer Geens was working on made any progress?
I believe you can take a look at the voidanchor discord or voidanchor patreon and voidanchor
twitter for that.
I will get links to those shortly."
Okay, I found their github.
Voidanchor is the group which are making the renderer.
It's a complicated story.
Sure they had a twitter, let me find it.
You know when you're like typing in the search of twitter and it's just like I'm gonna show
you exactly what you want but because you like stopped typing or continued typing I'm
gonna remove that from the search list?
It's like it's very confusing.
I typed in the word voi and it came up with that tweet, that twitter account I just linked
and then I typed D and it disappeared from the search results and I'm like what?
I literally continued the name of the account and it's like no I'll remove that from the
search results.
What the hell twitter?
Anyway Amber asks "Will Neos ever go open?
Copy left in codebase licensing?"
There is an issue on the Neos public issue list about open sourcing which you can go
ahead and read.
Open source.
There it is.
Shadow says "You're probably hearing this for the thousandth time and for that I'm sorry
but there's only sort of plan when we get updates again.
Do you have any idea whether it will be a gradual start or one massive update?
Please read the announcements channel for any more updates on that situation."
Blue says "With the dispute going on have the Neos team been allowed to work on the
code and just not send it to prod or are you guys not allowed to search the code?"
I am still touching the code, Frix is still touching the code, we're just not sending
it to prod and yeah.
Please read the announcements channel for more information.
For those who are about ready to type but there are no updates in announcements, yeah
like the most recent update is in announcements.
That's all I got to tell.
For those who are then about to tell are from that, well that's frustrating.
Yeah I know.
Quit my job for this stuff, it's really frustrating.
Amber says "Any new components?"
None which I can talk about.
The remote connection point driver was added ages ago, I think you can search it in the
update logs to find it.
It was back when Frix was working on the circuit simulator stuff which is an educational product
to teach children circuit boards and stuff like that using circuit board stuff.
Sorry, it's been a while since that project existed.
We had hoped eventually we would be able to release that to the whole like crew, like
to everyone on Neos.
It would allow you to like, using Neos interaction that you're aware of, drag and drop capacitors
onto a circuit board and then have electricity go through them.
Of course simulate it, but like it would almost be like an additional language available to
you built using the languages available in Neos so it was quite cool.
I mentioned for medical, yeah for, so for the medical project that's actually a third
party thing.
I work for myself slash a sort of company that we haven't incorporated yet doing medical
research with another user, but then with SHFR here on the Neos Discord we do medical
projects.
I need updates to the tube wire mesh to make it less twisty and seeing as I can read the
source code, there is a humongous block of code in the tube wire mesh that's combated
out that says this reduces twisting but I don't know how to fix it or something to that
effect and that was made by Shrix.
So at some point when I am able to I'm going to be looking at that code and trying to reduce
the twist there.
It's a complicated matter but it's nothing to do with actual Neos team stuff.
Jackal says if there were one thing in the world of building that you would recommend
a newbie go after first, what is it?
Keep your ideas small.
I've heard a lot of people who struggle to learn logics, I've said this a few times,
I apologize if you've heard this rant before, who want to learn logics and their mechanism
for learning logics is different than their mechanism for learning sort of everything
else that they have in their life, which is very common and understandable.
So their motivation for learning logics is probably like let's build a gun or maybe a
game map or something really, really complicated like that.
And so when they ask for help in learning logics, they want to jump ahead and they want
to build a gun or they want to build something really, really complicated.
It's important to remember to learn the basics before you learn the advanced stuff.
So if you're struggling to learn logics, try adding two numbers together.
And if you don't know how to do that, learn how to do that in logics.
And then the moment that you can spawn those nodes which add two numbers together, you
are not allowed to say that you don't know logics anymore because you know how to add
two numbers together.
You can say that you're not proficient or that you're a beginner in logics, but you
actually know how to spawn those nodes.
That's another part of learning is make sure that you are giving yourself credit where
it's due.
Yeah, okay, you don't know everything.
You're not like a prime or a ukulele of the world who can do basically anything with a
moment's notice, but you know how to add two numbers together.
What do you want to do next?
Let's try subtracting two numbers.
And then you've learned two nodes, right?
And then just keep building it from there.
Good point of view on learning logics is to avoid any node which has an impulse, which
is the white data type.
Any impulse receiving or using node is a little bit more complicated.
So try to stick to nodes that don't have impulses.
Just start just whilst you're learning and you'll have a better time learning because
the impulse nodes are more complicated.
And then introduce a few impulse nodes later once you've learned those.
Outside the world of logics, also consider learning just basic planning and sort of management
of projects.
We have this every single year with the MMC, and it's not reared its head yet, but I guarantee
it will on what I call submission week, which is the week leading up to the first of March.
People have no idea how to publish, they have no idea how to save a world, they have no
idea how to edit the tags.
It's like, go learn that right now.
Contrary to popular opinion, I don't care, and the team don't care if you publish junk.
So if you want to make a red grassy world and call it, sorry to pick on you but you
are asking the question, jackal girls, red grass world, and you want to publish that
as a world, go for it.
It's great, thank you for making a world and publishing it to Neos.
And in doing that, you'll learn how to publish and save worlds and edit tags and things like
that before the submission deadline.
And that leads to, again, just generic learning.
On the topic of planning, the reason why that one's coming up a lot is, again, you know
how many days there are till the end of the month, till the end of the MMC, yet we still
have people that get to the end of it and their entry is not finished, or their entry
is rushed.
Those things can sort of do that.
There's an article on learning things faster.
I haven't validated every single part of this article, but I like the abbreviation, which
keeps getting more letters.
It used to be faster, now it's faster.
So take a look at that one.
So I'll summarize, but first of all, it's forget.
So forget comes up a lot when it comes to logics, because people, they try to compare
it to other programming languages.
They're like, but I know Python, and it's like, okay, well, let's assume you didn't
know Python.
Would it make it easier to learn logics if you didn't think about Python all the time?
And in some cases, yes, because it means that you wouldn't be comparing it back.
So if we get people all the time that do this, they come in, and they're like, where are
variables, where are ifs, where are functions, where are classes in logics?
And those things, while they do exist, they exist in different ways.
So if you forget what you know about the existing programming languages, but take the technical
intuition, the technical logic, and apply that to logics, you might have a better time
learning it.
Active is a very important one as well.
I've seen a lot of people who are unfortunately just lazy when it comes to learning.
If you remember learning your ABCs, I mean, I can't speak for everyone, of course, but
I had to write the word "a" on a piece of paper like 400 times.
Like, it was an exercise sheet at school, and it just had like "a" and a line, and
I had to just continually write "a," and I continually wrote "a" to learn how
to write.
And then I continually wrote "b," and it was boring.
It was boring as hell.
But I did that.
I don't remember why.
I was too young to remember it, but I do remember writing it.
And now I can write the letter "a," and I don't even think about it.
You need to be active in it.
If you look at it, you're like, "Yeah, okay, learning is... you need active learning."
State, that's a good one as well.
I see a lot of people who try and learn in occupied worlds or try and learn whilst they're
watching videos or try and learn whilst they're playing games.
You need to focus on it a little bit.
Teach is very good.
You can see that through my stuff.
If you learn something, great.
If you then teach someone else what you've learned, you'll remember it better.
It sort of activates different areas of your brain and makes the information easier.
And we'll stop there, because that's the original abbreviation, which is FAST.
There are two more letters in the new one.
Amber asks, "Will there be updates for critical issues on the client side, such as memory
leaker for WebM videos of a negative changing scale?"
That's still a problem right now.
"We will update if there are major breaking issues."
That one comes into the sort of category of "Dr. Doctor, it hurts when I do this, so don't
do this."
The recent update -- well, I say recent, it's last year -- that we did was actually sort
of like a remote code execution thing with Blender.
So we patched that one, because that was like a high security issue.
Whereas this one is like, maybe don't spawn WebM videos of negative changing scale.
Critical is like an overused word when it comes to issues, when it comes to security,
when it comes to urgency.
If everything is critical, nothing is critical.
So we evaluate stuff when we see it, and if we do evaluate it as critical, we will usually
do a patch for it.
That is evaluated on a case-by-case basis.
"Which reminds me, if you have a security issue like the Blender one, which we patched,
see the changelog for information, please submit a security report following our security
reporting policy."
Lex says, "When publishing will already get set to public and submit it to the record
to the G-NEO's group, would there be any way to even submit publish to another group?"
There is actually a way to do that, but I don't know what it does.
If you look at the world publishing platform, that's the thing you put the orb in and
then it flies up, you can inspect that and then find the component which is responsible
for publishing.
I don't know what it's called.
On there, there's a field which just says G-NEO's, and you can change that to whatever
you want.
But I don't know what the effect of that is.
It's likely that that has no effect.
There is like a more complicated sort of cataloging system for records, which are what worlds
and items are, that may enable some functionality of that in the future, but is not enabling
it right now.
So I don't know what it does when you do that, but hey, maybe in the future.
Brix talks a lot about the sort of system of subreddits occasionally, likening that
to how that could be applied to, you know, maybe there are different lists for different
things and you can publish it to, I don't know, let's just say there's a furry world
list and then a regular world list and stuff like that.
Skin on my fingers is flaking.
I'm going to sort of touch something weird.
Sometimes this happens when you do too much laundry or dishes.
Laundry detergent is horrible, by the way.
Use less of it.
Look it up.
You don't need to use as much as it says that you need to use.
Anyway.
Shadow says, is there documentation on previous exploits or do you prefer to keep that secret
for safety reasons?
NeoRc via Blender sounds interesting.
I believe it's logged how it was done in the updates.
Maybe we try and sort of talk about it a little bit in the updates.
I don't think we'd ever be publishing reports on it.
I hope that we would do in the future.
Let me see.
Yeah, you can see it.
It's 2022, 128, 1335, emergency security fix, added URL input sanitation to end YouTube
DL to prevent remote code execution with malicious video URLs.
That was the issue there.
Something to do with Blender.
I think it was the when you open Blender on the way to end YouTube, there was another
one with Blender.
I might be confusing two of them because we had basically the same thing, one on end YouTube
and one on Blender.
The Blender one was there's a command line flag you can open Blender with where it will
run a Python script.
And so there would be a way to put a Python script somewhere in a Blender file and then
run it via importing a file in Neos or something.
So we just disabled the dash whatever it is in the Blender XE.
There's an RC you can load with a postfix harmony patch of the world spawner.
That sounds like a model plugin issue which doesn't have the same issues.
There is not a list of open security issues for the reason that like they're security
issues.
So if you think it's serious, then please open a security report and we'll get back
to you.
Check the security reporting policy for more information on what we consider a security
thing as well.
We had a very nice report a while back that was unfortunately invalid because they had
not read the security reporting policy.
Morph says this is a UX question but I'm new to it and still looking through the videos
you've made but is there a way to make a background of a mask 100% invisible while not using any
text images on it?
I can only seem to get it 99% before any text child disappears.
Not quite sure what you're talking about there because when you add a mask, it by default
will turn invisible until you check that like show mask graphic checkbox and then it'll
like appear visible again.
So I'm not quite sure.
Either you're using a mask incorrectly or maybe you're misunderstanding what a mask
does.
I'm not sure.
Yeah, anyone that should be able to help you out.
Amber says any plans for ermai compliance?
I don't know what ermai is.
Is that open metaverse institute?
There's a group of people that call themselves the metaverse standards group or something
and they have documents, github issues, meetings, all sorts of stuff but I've yet to understand
what they're producing and how they're producing it.
It seems like there's a lot of conversation and information but not many actual specifications.
I went through that entire website and I'm like can I find like an RFC or something and
it was very confusing.
I don't mean to insult them.
I'm sure they're trying to get stuff together.
It felt like there was a lot of bureaucracy going on there.
Ozi has a question.
Speaking of UX, a friend was using a UX text component and disabling the slot for visual
effect.
Even disabling the text component itself caused this too and disabling there is sometimes
a frame or two of the entire alphabet of the font being displayed before fully going away.
Do you know what happened?
What's the cause of this?
We couldn't nail it down.
There is another one like identical to that which is when you'd like to disable an image
slot sometimes you'll get like a flash of either the color of the image or a flash of
pink.
And I think that's got an issue so it might be the same thing.
Yes I believe it's this issue here.
So it might be the same thing as that one.
UX sprite providers flash on image sprite changes.
And there's another one, I think there's another one for like this one too.
It all appears to be the same thing, which is like when you disable or enable stuff,
weird stuff happen.
Alright, let's head down to questions.
Tiki says "Is there a goob way to reduce emissive on a Fresno material?"
I haven't seen much use of the Fresno Imperial.
Usually I don't have emissive on it, so unfortunately I don't know.
Someone else may know the answer to that one.
Amber says "What is the experimental write to file node?
I can't find an edox on it."
That's because it's experimental, so not many people use it.
It's also difficult to find because it's hidden behind the show experimental checkbox in the
logics tip.
That one is best found in the update logs.
I get that that's a really bad answer to that question, but we live in a society.
The write to file node will write to a file, but only if your session is set to an unsafe
mode.
The unsafe mode is a checkbox when starting a session.
When you set unsafe mode to true, you will be restricted to LAN-only sessions.
That node was added for scientific research purposes, and is not designed to be used outside
of unsafe mode sessions outside of not unsafe mode sessions.
It's not designed to be used and cannot be used outside of sessions that do not have
unsafe mode set.
There we go, that's a mouthful.
This is a big one.
Threw things across the room accidentally.
Let me read it.
Raid says "Might not be able to explain this best, but there are cases when using dynamic
variables for global values is better for performance.
An example comes to mind that we'll be using user from username many times across multiple
different systems in an avatar, but to be able to replace that with a dynamic variable
of active user, your user is referred to a single global check for your user is not insignificant
enough to be worth it outside of the workflow."
If you are using user from username on an avatar, you're doing it wrong.
You should use get active user or get active user self.
But as an example, it's good.
I understand what you're saying.
This comes up a lot in various things I'm doing and I've kind of found a way to do it.
Which is I always make a dynamic variable for it.
So if like for example, I've got a bunch of panels, it's hard, like I've got a ton of panels.
Like I've got like a graphing panel, like an avatar, impairment panel, a file writing
panel, eye movement simulator panel, all sorts of medical stuff.
And on all of those cases, I have a dynamic variable on that panel, which is just like
panel stroke user.
And it usually means like either the user we're targeting, the user who's in charge
of updating the panel in the cases of like fire on true and stuff like that.
I will always use that dynamic variable.
There are more reasons to do that beyond performance.
It's really good for sort of like updates and stuff like that.
For example, if you suddenly realize, hey, the user that should be updating the system
isn't the one I thought it would be, you don't have to then go unpack a bunch of logics and
pull it apart and find something.
You have a single place where you manage the value of that user dynamic variable and then
you use that throughout there.
And it sets up a sort of like, for those who know traditional programming, I apologize
because I know it's not this, but it sets up separation of concerns such that the logic
over here on the right doesn't care about the user at all.
It just listens to the dynamic variable and the logics on the left is the only thing that
deals with the user and it just saves it to a single dynamic variable and you don't have
to use for it.
So I do recommend that approach.
When it comes to performance, it depends what nodes you use and it's really hard to measure
that on like a generic area.
User from username does have a single like update thing that occurs when the inputted
username values change.
The user from username node will have to run its code to then find that user.
Additionally, when any user leaves or joins a world, it might have to run again to double
check that the user from username that it returned a user for didn't disappear.
So there is a cost to that.
But I wouldn't be able to tell you like five, seven, like two.
I don't know.
I don't know like how, what percentage of that or what like part of that would be measurable.
So purely from a functional point of view, I do recommend using a global user thing.
If it is something that's on avatar or a tool, though, and you know it's always going to
be, and I said you know it's always going to be, you have to think about the design
of your system.
If you know that it's always going to be the user that is holding, equipping, parenting
to, wearing, using active user would be absolutely fine as well.
Get active user self as a node is quite performance.
So don't worry about using that.
I myself would always use the dynamic variable because there's been like hundreds of times
where I'm like, yeah, it's always the person that's wearing the avatar until it suddenly
isn't.
Like as an example, I had a scientificy thing where there was a experiment patient, I guess
like patient would be a better word.
I don't know.
And so they were wearing an avatar and I was using get active user.
But the experimenter or the researcher, which is the person conducting the experiment was
the person who actually needed to like get values and do stuff with that thing that they
were wearing or using or holding.
And so it made more sense for it to be the experimenter user and not the user that was
wearing the avatar.
And so I had to swap that all over to dynamic variables and now I just do it as a variable.
It's much easier.
Lex has again a good idea there, which is using it for slots.
I do that a lot.
I've actually started writing a lot of logic, which is like self-contained because of that
process.
So it will do a bunch of operations and then it will just set the result of those operations
to either a value field, which is on the slot which I pack the logics into, or on a dynamic
variable that it assumes is there and if it's not there, it will create it.
And that way I can basically sort of, as much as you sort of reparent a cube or something,
you can reparent bits of logics around and it just works.
There is a horrific piece of logic in the virtual surgery world that we have that is
doing exactly that for detecting which bone segment this particular object is nearest
to, which won't make any sense unless you know what I'm doing.
If you don't know what I'm talking about when I talk about virtual surgery, then you can
head over to my channel and watch a three minute presentation about virtual surgical
planning inside of Neos, which I'll go get for you.
Right.
Amber asks, "Does Neos policy say not to harass users in or out of game, which is to specify
in game?"
Please always report stuff that you have concerns with, but we are less able to, and in some
cases, not able to police out of game contact or content.
Example here might be, let's say a Neos user that you know has a Neos account is harassing
you on Roblox or VRChat.
Contact Roblox or VRChat support.
We can't help you.
Do always make a ticket though, just in case.
We'd love to take a look at the situation and can advise you officially there.
There's just less we can do if it's off platform.
And then the final question, because we are actually eight minutes over time from Lex,
is "What's the least amount of users you've seen online in Neos?"
Seeing as I was around back in 2019, where like next to no one played it, I want to say
less than 20, back in those days, I remember the first time I played it, I was looking
around in Business Lawyers Avatar Tool World, and Nexolun came in, and they looked at, like
there was a table in that world, some sort of like, you know, like storage table thing,
and he looked at it, and he just, he made it bigger with the developer tip, and I'm
like, "What?"
And then I just kept playing the game, and here I am.
You can also look back at the videos on Frick's YouTube channel, scroll all the way to the
bottom, and you'll see times where there are two users on Neos, and to illustrate that
there are more than two users for presentational matters, they would spawn headsets in the
world, and they would put Wigglers on them.
The whole reason the Wiggler component exists, and also the Wiggler tip exists, is to pretend
that there are additional users in a world.
And with that, we will leave off there.
If you have any additional questions, please go ahead and drop them in the questions and
help channel, direct message me, or, I don't know, send a carrier pigeon my way, it'll
know where to go, and I will speak to you again next week.