In this Office Hours, Probable Prime talks about:
- Liminal Spaces
- World Scale
(Please note that the transcriptions will not be 100% accurate)
Okay everyone, welcome to office hours, it is the top of the hour so we're gonna get
There are only three people listening, probably my fault because I forgot to do reminders,
I was running a bit late with a bunch of things going on today so I didn't put out any reminders,
but hopefully they'll flood in soon, tis that same time every week for about a year now,
Anyway, if you have any questions, please drop them in the office hours channel, that
is two above the channel that we're currently in, just look up to and drop down questions
and we'll get to them as soon as we can.
Until there are any questions though, I'm going to sit in absolute silence.
So, if anyone has any questions, drop them by in the office hours text channel, that
is two channels above the one that you're looking at for this particular office hours
segment, so please get me those if you need them, otherwise I'll be here doing absolute
Okay, thank you.
So, if you have any questions, please drop them through in the office hours text channel,
three channels above this.
Okay, thank you.
Okay, thank you.
That's totally fine, so Fussy's asking about the fact that there aren't any questions today,
that's totally fine.
That's why it's called office hours, AMA also works, but basically some people come in here
and they expect constant commentary, it's not this event, this isn't like a stream where
we're designed to entertain the audience, it's a voice chat where I answer questions.
It's modeled after university office hours where the professor of a particular module
or unit during university course would open up their office for a particular amount of
time, and it basically means my office is open, you can come in and ask whatever you
There we go, you have a natural question, hell yeah, okay.
So Specs asks, I'm working on a mod that lets you pipe data about hosted sessions into another
service like a tic stack for logging analysis, but I'm a little blind on what might be the
most useful to measure, any advice on what key metrics would be useful to take a look
for the health of a session, talking about properties that exist in the world manager.
I would look at uptime, just a sort of measure of, hey, we know things get ropey if a server's
been up too long.
And then I would look at things such as the count of objects in the root slot.
The reason why I look at that is because ideally the count of objects in a root slot should
be zero, well not zero, but you know what I mean, it should be really, really low.
If there's lots of objects in the root slot, it means that you've had a lot of users that
have been playing on that particular server, right, they've been spawning stuff and dragging
it around and playing around with it a lot.
So I take that as an example where the world might need a little bit of a cleanup.
Additionally to that is to take a look at the count of assets.
I think you can pick that up via the asset manager or something like that, but the count
of assets, the more stuff that's loaded into a world, the more stuff that gets referenced
in its asset index.
If it's not like in the world, usually that won't actually be loaded onto your client,
but it's still referenced there just in case the session needs to reload it, so take a
look at that as well.
Other than that, I think you're good.
I mean, take a look at the debug tab, but if you can access all of the metrics in the
debug tab, I might suggest graphing those, because those can spike and will show you
stuff going on.
A sideline, and related to the root slot thing, when you're building things such as gadgets,
tools, guns, utilities, grenades, whatever the hell you want to call it, stop using the
root slot node.
Just stop using it.
Use instead local user space.
Local user space refers to the slot which the user is parented to.
So if you drop an empty ammo clip on the floor, there's lots of people that will code logics
there that goes like, oh, hey, M-E-Mto clip on the floor, I will parent it to the root
It's not your world.
It's local user space, which is the slot which the user is parented to.
That will keep it ostracized away from the root slot in locations that are more suitable
for things like that.
I know I can't make people do that, but please do that.
And also clean up.
What I see usually in open sessions that have been open for a long time is this huge swave
of pictures and objects that are just lying forgotten.
It honestly resembles a children's playroom in a house where the parents are desperately
trying to keep it clean, but it's just not.
Do you need that anymore?
For pictures, what I usually like to do, because I understand how people might want to make
sure they got all the pictures from that session, because those are memories, right, is I will
gather them into one place, into a photo wall.
Not like a technical photo wall as an object, but I'll just place them in the same area.
And that way, again, there's not this sort of sprawling mass of just photos floating
in a session.
Bring them back together, put them all in one pile, and people can go through them.
It's just like, oh, look, there's an inspector over here that hasn't been touched in like
Why isn't someone closed there?
So Zlinko states that, yep, they have a user management system.
So a user management system is something you place in your world, and it kind of does organization
My parent uses their own slots.
You can see who owns what.
Very, very useful things to figure out why the hell there's a mess in various places.
Finger photos is something I'd have to look into.
Open a bug on that one, maybe.
That might be a working as intended thing, but no, it's not an issue.
If it's not on the GitHub, it's not an issue.
And then Zlinko also talks about how e-items or grabables are on the route.
It's honestly a mess.
Every single session I've seen is there.
There's also a cultural problem there, which is where people treat Neos like it's Garry's
And Garry's Mod, the sort of culture is to leave all those sort of stuff around and make
So Ozi mentions a component which deletes the slot when the children is empty.
That is no children deleter, children delete on empty.
Something like that.
That does exactly that.
That's actually really useful.
I have a video on that one.
I'm going to go ahead and see if I can find it for you, because it is a really useful
You just might not know that it's there.
I use that for a lot of sort of like pickup systems or like resource room, I guess would
be a thing.
I don't know, like you know the Left 4 Dead restroom between levels.
That would be a good example of sort of an area where delete without children.
That's where that might be useful.
You know, you've got like a table and then like the table's empty, it deletes or whatever.
So it's a good component.
Delete without children.
I can't find the video.
I definitely did a video on it, I just can't find it.
It's really useful.
That's a component which is...
When you're doing something, always think like could this be done better and then like
ask around, see if there's people that might know a solution or whatever.
Like the delete without children or whatever, there's various other sort of examples of
Especially in the tagging, like the tagging components, duplicate, block, destroy, block,
stuff like that, that exists there to make your life easier, but I see a lot of people
not using them sometimes, and they're just like, oh, I'm going to code an entirely custom
And I'm just like, excuse me?
Why don't you just not?
Have you considered not?
As he says, they thought that block meant block as in a category of things.
Like a wooden block.
Those tagging components are great.
When we're able to, which I've spoken about a lot of times before, but when we're able
to sort of organize the component list a lot better, all of those tagging components will
go to one location, hopefully, and of course I'll get sort of documentation sorted out
for them in their particular spot so we know what's going on there.
It's also good, as he says, it would be good for clicking around.
It's also good for, like, you know, documenting, like, oh, I wonder if there's a tagging component
that does that.
Cool, I'll go to the one unified tagging folder, and then it's right there, something that
sounds like exactly what you need.
I think that conversational topic has ended. So if any other conversational topics just let me
Just keep asking yeah
So epic Eastern mentions a favoriting tab for the component here like you've got to remember that the component adder that we currently have is like completely not finished. So here, maybe we will in the future add something where you can favorite the component and add it to the component.
If you know the the way that we're building UI, we're going to try and make it so everything as much as possible is customizable. So what that will allow you to do is like be like, hey, I'm going to make a brand new component searcher and install it into my systems. And if you don't like it, that's cool. I like it. And you won't need mods for that either. You just do it right because everything will just be a facet.
Yeah, you can go out there and find mods. I don't tend to recommend them or use them in conversation because
Every mod I see is an opportunity for Neos to do better.
And I intend to wear license allows me to with full credit, of course, from the community just outright implement some of those mods in Neos actual. Of course, we have to make sure it's suitable, which is where the sort of interesting interplay between mods and not mods exists.
But most of the time it's like, cool, that's just a one line change, which freaks hasn't had a chance to do. I can totally go do that because, you know, I have a little bit of time here or there. I'll go do it. That's what happened with the inspector alignment.
Yeah. A question here from Ozi who asks, actually, I've got a question by proxy from a friend. Is there a nice way to get random publish world information inside of Neos? No, you might be able to via the API.
We do have that random that shuffle endpoint, but that shuffle endpoint is actually done in a way to kind of sort of make it not cost a lot where it will shuffle the world list periodically on like a batch job.
And then everyone else will get the same random view that happens periodically. You could get that list and then get a random item from that list using the Neos API.
And that would get you sort of what you're after. I mean, not exactly, but sort of.
There's nothing in that.
You could also abuse the world menu, which is what Ozi suggested. You could totally do that. I'm not sure what success you would have.
Go to, there's a world in the world browser from myself. I think it's called like world portals or world annex portal room, something like that.
What it does is it creates like physical portals in a sort of circle aligner for some subset of the of the walls that are open and abuses the world manager to do that is very hacky.
And I don't advise doing it, but it is an option available to take a look at how I did it.
There's also a really old option, which I didn't release, but I believe it's on my YouTube channel.
So you can see what you can do by abusing the world manager. If you look up missed linking books for Neos, it should be on my channel.
And then you'll be able to see something there that is basically.
Me making missed linking books, which link between worlds, for those unfamiliar with the series mystical play.
It's a great series where you play as a stranger exploring worlds, which you get to by touching books.
He just like rub the book of your hand and you get in there and like rubby rub.
There's a window inside the book which sort of gives you a preview of the world that you go traveling to.
Yep, Scranier is agreeing with me, mods are an opportunity to make Neos better.
Yep, totally. Like I would be happy if you guys didn't have an excuse to mod.
Now, of course, there's like funny mods or really, really obscure mods, but like.
Most of them, I'm just like, we can make that happen. We can make that happen.
Why don't we just make it happen?
The other thing then there is plugins. Like, I wish we would see more plugin use.
I know it like isolates you from the community, but I find it more respectful.
Like if you're doing something like really, really, really crazy, please make a plugin like.
You know, some people are like, yeah, I want to talk to like this very specific piece of hardware and they're like, I should do it as a mod.
I should probably do it as a plugin. And they're like, why?
And I'm like, because like as a mod, you're probably just going to crash Neos when like some multiplayer component that doesn't have that particular reference is going to touch it.
And then they're like, yeah, but that isolates me from the community.
And I'm like, well, if you're using that particular bit of hardware, you're kind of already isolating yourself from the community.
I don't know. It's up to you. Use whichever.
It just depends on which one is your target to be used.
Yeah, so Screna talks about a mod that allows you to see what's driving something that's totally a good a good sort of use for a mod.
That's also an opportunity for us to do that, though.
You'll notice in the mod that it is displayed in a good enough way for you to be able to use it.
But I think there's also an opportunity there to do it better.
Should it be native Neos functionality to display that a whole lot better?
I'm talking like some sort of better representation of it is possible, particularly when it's, you know, Neos rather than a mod and everyone has the ability to see it, et cetera.
I also see mods which do things like change the color of your inspector, make it so you spawn, you know, your inspector rather than the default inspector, make your inspector the color of your cloud variable.
All stuff like that should be possible in Neos Fire, like our facet-based system. It's just not right now.
Eastern asks, is there a way to do seamless portals like in the Stanley Parable? Because every single time I do it, it's never sin one and never works right.
You'll have to break that down out of the game. I'm very familiar with Stanley Parable, but like I don't know if there's any actual portals in there.
They're just using like they load and unload parts of the map periodically. That's what they do.
I don't think there's like any actual portaling there.
That's how I would recommend doing it as well. If you're having trouble sort of getting teleportation lined up, just do.
Oh, yeah, the looping stuff. Excellent. You can totally do that. It's really rough unless you do it correctly, though.
For the wall of the portal, as in what they're looking at, imagine looking at a portal in the game. Portal.
And you see the other side of the portal. Use the portal option from create new object portal.
That is like a mirror, but actually has stereoscopicness. So if you're in VR, you'll see everything there.
And then you just have to line it up correctly. Like it does take a little bit to line up correctly, but it should be unnoticeable if you line up correctly.
I don't remember how smooth it is, but if you go take a look at I think it's called Infinite Staircase. It's another world by me.
I made it like a super long time ago. We're talking twenty nineteen.
One play experience. We do two players. It will just break. I do want to make a multiplayer version of it, though.
And it's just a staircase that you can continually go down and down and down and down and down and down at the time.
I didn't know logic as well, but I wanted it to be like as you got lower, more randomized events would occur such that, you know, spooky noises would go off, et cetera.
But I think I just had like a random chance to play a particular audio sound. I don't remember. I want to make it like a whole experience.
I love the sort of I don't want to say back rooms because people just go like the background game and the background map.
I like that feeling like I'm not after the exact clone of the back rooms. I'm after the feeling you get there,
which is an infinite spreading mazy void liminal spaces. Exactly.
It's just it's it's beautiful. There's a couple of CPs that do that.
There's one about a staircase. There's multiple ones about like rooms and stuff.
I believe there was one about sort of like a weird watch tower or something that might be in the staircase.
I seem to remember like the immersion, sort of like a fire watch tower, like from the game Firewatch when they went through one of those sort of staircases.
There is like a concept that exists, mostly I'm stalling this from one of the creators of Lost, the TV show called the Mystery Box.
And in his like physical representation of it, it's literally a box he bought from one of these sort of like mystery box retailers.
You can think of it like one of those boxes that you can subscribe to. They get delivered to your door each month, but he's never opened it.
He leaves it like he leaves it in wherever he is, usually his office to just remind him of what he's creating in his shows,
which is a mystery that needs to be unfolded. And that's what happens with Lost.
And you can also like, if you look into the history of how Lost was created, you can see why that kept happening and why it got as crazy as it did,
because his principle was like, I need another mystery box, which is like, what is through here? What is going on?
You also do that, like if you mix that with cosmic horror as well, you get like a really cool mix.
For example, I hate jump scares. Like if you're talking like Five Nights at Freddy's, Amnesia, stuff like that.
That's not a horror game for me. Take a look at the film Annihilation.
Annihilation is a great example of sort of cosmic horror in the horror that is created in that isn't jump scares, vampires.
There's a killer in the woods. It is something completely different, particularly the finale.
And the finale still makes me scared. Right. And that's cool.
I know that's sort of like a sidetrack from those portals. Just going back to the standing parable portals, you just have to line them up perfectly.
It's going to take a little bit. Make sure you're in through some of the advanced settings on the character teleporter component.
I'll see if I can get like a seamless example going.
Make sure your collider is a primitive collider as well, otherwise you may have sort of false collisions, which means you won't teleport at some point.
Also, make sure that you have lined things up as perfectly as you can and take a look at the infinite staircase.
There's also an MMC entry. I'm going to do a great disservice because I don't remember the name of it, but it was a narrative experience which was sort of open to interpretation.
But my take was it is sort of emulating dementia where you woke up in a bedroom and you had to do a variety of tasks.
It was like clean your teeth, make coffee and stuff like that.
And every time you woke up, like the world would distort more and things would change and look different.
A burning memory, that's the one. Thank you.
There are ways to do infinite staircases that do not use portals.
The way that they do that is through scrolling.
There's multiple ways to do that and it's kind of difficult to explain scrolling.
I guess I'm going to just sort of like throw an example out there and hope that people have seen this.
There are a multitude of maps that exist in VRChat where there's a train, a car, a boat, whatever the hell it is.
And you think that you're in the car moving.
What's actually happening is the map is moving around you and you're stationary.
So they get to load in new chunks, they get to load in new resources and you are just stationary.
You can see this usually if you get outside one of those cars, you'll see it's just the land coming towards you.
Someone had a train ride kind of map going for Neos which used that.
And it was fantastic, but they don't think they released it or finished it.
I do believe there is a car driving one that does that.
I also know that Stardust, another MSC entry there, does that sort of.
They model distances between objects based on mathematics and then they just unload or load those objects into the view.
So when you go between planets, instead of going between planets literally, as in the space that exists, you go between the planets mathematically and then the planets just turn on or off.
That's another way of doing it.
There's also that world in VRChat called Infinite Staircase or something. It's just like a crazy mix of staircases that goes on forever.
I don't know how they're doing that, particularly because I don't know if they can do it the way I think they're doing it.
There's this function thingy technique called wave function collapse, which is a defined way of making level designs in Unity procedurally.
You do a wave function collapse live in a regular Unity game where it's just constantly applying, and that way you'll get a kind of sprawling landscape or maze.
So give those things a go.
Go watch Annihilation, really creepy film.
If there are any other questions, those who are typing, please feel free to get your questions out. Otherwise we'll end there.
So I presume that's Russian. So hello from there.
Is there a practical limit to world size? There is simply because of the floating point precision that you get when you go further out.
Ways to combat that are, like I said, block loading where you unload and load the area so they're still in the same area, but they don't know it because previous content has been unloaded.
See how abandonware does that. Go to abandonware and go into edit mode and then noclip and fly outside.
You'll see everything's really compact, but it doesn't feel like that because you're constantly being teleported around and focused in a particular direction such that it doesn't become an issue.
Make sure you're counting vertical space as well. You can do, again, tricks of teleportation or just sort of clever ways to sort of spin someone around so they don't realize it.
But let's say you have, you know, like 100 by 100 grid at one Y level. You can also do 100 by 100 grid at another Y level and not run into floating point problems.
Because floating point problems won't be a problem if you are using up available space. It's just if you go to that space, you'll have a problem there.
Anything in unity that is sort of world loading or anything like that should be applicable to Neos as well.
So just waiting on specs question and then we'll close off for the day.
Make yourself small does, but making yourself a little bit small, I'm talking like, you know, maybe 90% of the usual scale or maybe even 50% shouldn't have floating point issues, but does give you a lot more room.
I'll give everyone a minute to finish up their questions and then I'll head off.
So quick question dropped in there from the end is who says does near far clip take into account scale?
I don't know what measurement it's in. It's more to do with the camera, though. So maybe, maybe not. I'm not certain.
You can adjust near and far clip using avatar render settings. What's sort of unknown is that I think you can also do that as a sort of a world level.
You just put avatar render settings on the injectable slot that gets injected when a user spawns the auto inject slot option on the user spawner.
And I believe that's all the questions. So I'm going to go ahead and leave off here and I will speak to you later. If you have any other questions, feel free to DM me or asking the questions in the help section and I'll get back to you as soon as possible.
And I will speak to you later. Bye bye.