OfficeHours:ProbablePrime:2022-07-05
Audio
Description
In this Office Hours, Probable Prime talks about:
- World transitions (and Stargate)
- Security(The ToString node... again :) )
- Builder only zones/cultural issues involved with being able to build everywhere
- Horse Manure
- The Streaming Camera
Transcription
(Please note that the transcriptions will not be 100% accurate)
So now we're recording fantastic. So welcome again to office hours. If you have any questions, please drop them in the office hours chat
There is two channels above this one
Office dash hours drop any questions you have in there. I did just check the
Question sheet as well. I keep forgetting to check and there are no questions locked there. So we're good on that
Until there are any questions, we're gonna sit here in unimaginable pain and silence
So get those questions in for those just joining welcome to office hours
If you have any questions, you'd like to ask me about news, please drop them in the office hours channel
That is two above the current one that you're in
Any questions go for okay, so we have some questions coming in. That's great
So I have a question from epic Eastern that says what's stopping you from working on news
Is it legal mumbo-jumbo? And what if your modifications are completely local? There's still problems of that
There are no problems of either of that like I can technically work on this if I would like to
We just can't release it right now. I do still work on here
So I have the code base open most days to just answer questions here
Someone's like how does XYZ component work and I've never heard of that could put it in my life
You bet I'm gonna go to the code and read how it works
It's really useful in that case to sort of you know, just be like cool. I can open the curtain take a look
I have some local changes as well. I keep seeing for those who use version control systems
I go into the code base and I look at my git changes and I'm just like whoa
There's a lot of changes and some files here and I'm forgetting what those are. So sometimes I commit them
Into branches so that I've got a list of branches
I need to push once we're able to make updates like I just saw one which was another invalid default
corner quaternary and quaternion
Made a bunch of components which would default to invalid quaternions
Float is they were default to invalid float queues and
We were fixing up a bunch, but we missed some and people reported that and I'm like, that's an easy fix
I've got like a bunch of those that I was just seeing I'm like, what did I change in this file?
I'm like, oh I changed that to make it a valid float queue
cool
Okay
Next question now, I've stopped saying that terrible word
q
From Lex who says what be a good way of setting up a seamless transition between worlds for larger experiences
So the open world and focus world node are great when you combine them together because the open world node allows you to sort of
Detect when a world is loaded. It's the only way that you can do that. I'm not quite sure how reliable that is
But you can totally do that
What I would recommend there is
Thinking about how you have someone
Start that transition is very important
I see lots of people who want world portals, you know similar to to VR chats world portals those work
Well what I suggest you do for those though is that you when someone hits the portal
Instead of just opening the world they are doing anything there teleport them like under the map or something
put something on their head that looks like a loading screen then trigger the load and
Then focus the world once that loading has has concluded that way you emulate the process of them
Disappearing when they enter the portal even if they're just sort of under the map
You know flailing their arms around etc, but then you can put that visual effect on top
I've seen a couple of sort of experiments. We're doing that with with various visual effects
I'm sure I would love to see if you there's a few I'd like to see is hey
Remember the original long stargate transition they stopped doing it after like the first few episodes on
The stargate TV show they did it both times
There was a stargate trip on the original film because it was very impactful
But on the actual show it made no sense because they just kept doing it
If you watch stargate as well you'll notice the first couple of episodes they have a frosty effect
When people come through they're like oh, they're they're like skin is frosty like they've been out in a snowstorm or whatever
But they remove that afterwards and they never really explain that I mean you can just sort of hand-babe and say they fixed it
But that doesn't make sense for an outgoing trip because the outgoing trip is like how it was intended to work
Yeah, everything about like the the stargate command base is like hacked together because they didn't have like a complete system
But everything off world should be perfectly fine, so if it was like yeah, they fixed it doesn't make any sense anyway
So yeah, I a good stargate transition would be cool. I know that the
Always forget the name of it, but it's like open every day the headless session
Which has swap spheres made by Ray V would be another way to do dual-world transition
They're great swap spheres come from the game abduction. You could also just do a standard loading screen
Just try some stuff out
Maybe I'll add that to my tutorial list
But you will need to use the node for that there are components that can do world portal openings
But what they will do is load you into the world immediately, so what you'll see there is basically
Similar to this is another random tangent, but as we never know there were questions. It's tangent prime time with prime
If you just do a portal with the components for a while transition
They will instantly shell out the moment they they touch the portal and so it
resembles that
veil, I think it's called in
Harry Potter it's order the Phoenix where it happens where Sirius black is down in the department of
mysteries, I think it is
in the Ministry of Magic and
He just accidentally I think he sort of knocked into it in the films, but in the book
I think he like accidentally ends up being sort of pushed into there
He falls into the veil and immediately turns into a ghost and just disappears
And there's no real explanation of what magic is at play there, but like they know he's dead
That's what it looks like they're just sort of like they touch the portal and then they instantly turn transparent
It's like cool, and then they hang around there until they decide to close the world
Whereas if you manually use the the open world and focus world nodes you can actually do a full-on transition
You can start opening the world to teleport them under the ground wait for it to load once
It's loaded close the world that they were in focus the new one a lot a lot cleaner
Something that could also be cool is if you did like a level transition like I know some games do level transitions weirdly
Where they I could example being like one of the early Resident Evil games
They have that door opening animation that was both to say like hey you're going through a door and also to load another part of
The map other games do it with you know corridors you walk down this corridor
And they realize like hey you're on like the cusp between two levels here
So we can load the next level and if you turn around just panic and unload that next level and load the previous level
But the corridor is like in both so you can link those together so again. You can make something seamless there. There's the
The Metal Gear Solid ladder climbing world that'd be a good example like if you're halfway up the ladder like
Load the top of the ladder, but if you're not done moving onwards to more questions here
Specs says the desktop view in the dash is great, but it gets pretty hard to read of screens
I have especially wide resolutions the dash seems to be hard coded best fit
16.9 screens is anything I could do as a user to make my admittedly silly
32.9 screen fit better in the dash or more readable the the problem that you have is that the headset itself
Isn't isn't anywhere near 32.9
I guess making the dash bigger would allow for that
But you'd probably need like a non a non 16.9 dash size. There's probably a way to like resize the dash temporarily
I'm not sure if it would save but that would give you the resolution there
What I wouldn't want to do is any sort of ladder boxing where we try and squeeze that in and narrow it down
She's just gonna lose more detail
That's all I got for you make make the dash bigger
You might be able to do that in-game without any sort of modifications or anything like that
Just go ahead and inspect and use this base see if it saves
Otherwise, you'll have to go into Nia's modding land. See if you can get it done there. You basically need like a better like
a
Better rectangle that can then fit that in and I think changing the size of the dash is probably any way you can to do
that
Rampers just asked for an RSS feed. I've got to scroll back because we actually I linked one a
While ago, I linked one. Yeah, it's here. I'll add it to the wiki if I remember. Oh
Froppy is like so fast. Yeah, there's the RSS feed. I will see if I can like put that on the wiki or something
I'll take a note and then inevitably forget, but I will take a note where I what is it Tuesday? It is Tuesday. I
Had RSS link to office
It's on my to-do list like ultrawides are always causing strange
Strange problems. I know them like some professional
Esports they're banned because the game handles them and and does them really really well
But the peripheral vision that you get is then an advantage and then because not all people have them
They've just like banned them or something which seems strange
I mean if it's like pro pro pro eSports just buy everyone a giant monitor has a benefit go for it
I'm actually dealing with that problem right now in another sense as well, which is
during the steam sale a game called Hydra near was on sale and
It has multiplayer, but it doesn't have online multiplayer
So you have to do steam remote play with a split-screen or to play and so a friend has
Purchased the game and I was about to purchase it until I realized there's no online multiplayer
So I saved my money and now we play it split-screen over steam remote play
but it's a split-screen and so they have an ultra wide and they were trying to fit like
This split-screen game on an ultra wide and it looks terrible
We got some solutions and I'm mostly used to it. It's kind of strange
Sometimes I forget it's split-screen and end up trying to control both characters, even though I'm only one character
If the Hydra near devs are listening, please add proper multiplayer, please
They've quoted that they don't they're not able to add proper multiplayer right now to you to sort of resource constraints
Which is perfectly understandable. It's a lot of of endeavor to take
but you know
Try please cry. So ramp is is remote play and the tech there is great. I agree. The tech is there is great
What are the only thing I don't really like about remote play is it kind of feels like I lose control of my computer
If I'm the host, well, it's it's a it's a it's an exchange like it's it's something you have to get used to
But like, you know, there's always a point where I need to like maybe alt tab and look something up
And if I alt tab the other player loses control of the game
And so it feels like you're kind of holding your computer hostage a little bit
So it's a little bit weird, but it's really nice saves people money stuff like that
Next we have a question from Lex who says the dash uses modal overlays on uix
Would it be a good idea to use those components for own uix pop-ups?
Yes, and no
The pop-ups are great, but you have little control over how they work because they use a couple of sort of delegate II things
Now I know mods can get you access to that
But like I wouldn't be sure if you would have the ability to control exactly how you would like to
what I did for the MMC voting system, which does use a modal overlay is I
Created a modal in the regular world browser and then like pulled
quite brutally the entire modal out of the world manager and
Converted it to my own system that was powered by dynamic variable
So it's still like loads and looks exactly like the same modal that you have but it doesn't use those those modal components
It does use a lot of the sort of visual components of a modal. It just doesn't use the like Neos modal component
Whatever it's called
your
Approach might vary but that's what I ended up doing
I did speak to fruits at the time of developing it and they said the modal could be expanded to allow
Other users to do you know have modals use modals etc, but that that wasn't supported right now. Keep those questions coming
We have about 10 or so minutes left on the the office hours happen
sometimes I run over that huge because I'm ranting about cheese or something, but
Carry on. Hey Kip as a question. Is there a way to use a material as a texture input for another material?
The only way I've seen to do that is to use a camera that happens a lot like a lot more than you realize
Trying to think of some examples
Like neoto shop in the polylogics folder is a good example of that that uses a camera to
render the
like the final composition
Neota shop is basically stacked brush pixels
so they usually they have the sort of base texture at the back and then in front of that or any number of sort of
Brush layers and then on the front of that is a camera that's looking at all those layers combined
And so you remove that 3d effect of those stacked layers and get back to a flat image like says any curved UX really?
Yeah, um the actual dash does that same concept?
What we do is we take a flat version of the dash and then project it on to the curved
Curved plane mesh so it can be curved
I have the curvature set to zero on my dash because I can't really stand it
I know other people like it, but like I'm just like what?
So have a look at those. There's a couple of worlds that do it as well
Using the same concept as like build as a neoto shop building a key to an early
World by myself that let you sort of customize what your a key to model by zap uses it
my MMC
2022 entry entitled on purpose uses it for the well poles are in both sides of that room check that if you like
It's an artistic piece that is open for interpretation art is always subjective so have fun
That uses it various other places use it vigil abo's water droplets
I know other people have done it but like vigil abo's is the one that comes to mind if you go into their public folder
They've got a water example where you can kind of like put your hands in the water and it splashes a bit that
Again uses a camera. Oh
and
snow globe of working snow
That also has it that's how we do the the like footprints in the snow thing moving onwards to hack 13s question
Who says I?
Wanted to know if I wanted to hide a string inside of Neos that I want to pass to a web socket or something
I've seen the cloud bears don't show their data to someone who isn't on the allowed list which consider that a good way of hiding
Something like that example in a bi key. No, I do not recommend any form of authentication in logics or Neos at all right now
The only way I would like say it's acceptable is if you have a private world with one person in it
Otherwise like who knows what they're doing. You've also got the problem there of like however secure
It is if it's let's say it's an API key. Let's say it's in a cloud variable at a certain point either via
components or maybe a logics ribbon
that value is extracted from that sort of in quotes secure environment only one person can read and
Passed to a field which anyone can read and so that's why it's not secure like example area like if say you did
I don't know read cloud variable and of course require variable can only read like a user's value for example that
You might think that's secure right because only this user only has this value and due to the cloud very permissions
I've set up so only the user can read their own value that sounds kind of secure
But it's not because that read cloud variable node
Then outputs just a standard string with no protection and so let's say we then plug that require variable node
It's output into on a regular write node to then write it into a string registrar ever that string register is just
Publicly readable there are advancements in sort of the feature called hard permissions
Which may allow for more sort of secure related things, but anything that has authentication
I don't recommend doing or trying to sort of work around it good example here being the
MMC voting world in the MMC voting world I disable cloud avatars
I disable all locomotion except one I disable two shelves
I disable like basically everything and even with that
It's still not secure, and that's why we have logging up the wazoo right I
At the end of every MMC voting I go through the logs
And I pair things up a good example being I can go through the logs of the session from the header server
And I can say like oh hey look
prime joined at
1624 and then I look at my list of votes on the voting server, and I'm like prime joined at 1624
And then he made three votes at 1624 great
I can I can match those up and still be unsure because there's still some issues that might occur there
But I can still audit that and be like ah it looks like that makes sense right that makes sense
But like if I see prime joins at 1624 and then Fruxius made a bunch of votes
But Fruxius wasn't actually in the world at the time then I'm like hmm looks like prime was doing something weird
Better throw those votes out so hack 13 has gone to say that they have an intermediary API that holds the key and
The in the issue just pass request to it that is good because
You are in control there again
You can add like additional security for example the outgoing service that you're trying to connect to that needs an API key
Might have rate limits that you know you usually won't exceed, but maybe you put like slightly more
strenuous or strict rate limits on your intermediary API because there is that level of sort of
Ambiguity about who's doing it and that way you can protect
Your API key and your network from having
Too many requests compared to just going direct and stuff like that
You can always put that layer in the middle there and add a little bit more sort of scrutiny
Moving on to Lex's question is there a good way of detecting when someone is live through components
I believe that there is a component for it excuse me moment
The component is what drives the live badge above someone's head the problem with that though
is that if they are not using the mirror to display option on the streaming camera or
Something like that or forcing that live badge on which is another option then they could be they could be live
Just using the Steam VR mirror or the direct output of the of the monitor view the desktop view of it
Kip says good idea to like always assume that you're on camera
Absolutely always assume you're on camera. I'm kind of sort of
indoctrinated into that which is
Strange that came from the sort of the mixer days when I worked at mixer
It was like hey, you know everything you do wherever you are assume
You're being recorded in the sort of streaming space less so in games, but like everywhere. I use the name probable crime
I'm like yep. I'm marine recorded. You don't know about my old accounts. Yeah, I'm gonna hack the matrix of my old accounts
Moving forwards
to
Lexie says
Same question as Bob
But detecting permission levels in world for example if you want to set up a builders only zone
You can't do that right now now. I know that someone in here is going to start typing about the two-string node
And I get tired of talking about the two-string node
But I'm going to talk about it again because hey this is being recorded and anyone that listens will hear this feel
Before a certain update the two-string node would allow you to receive a text based output from a user
that included their permission level to string is a
debug process on
Much much of programming on second was a cough off Mike
And so in programming you use a two-string operator lock for debugging and logging
So two-string would be like I don't know what this is dot to string it and it gives you lots of details
That process is designed to give you a text based representation of the object at its current moment
It's not designed to pass that data back out into any other form
but what users were doing is running a bunch of substring operations on that two-string output and
It was causing a problem that is not intended way to use to string it
Never was so the fact it worked was actually just a miracle like it's just a miracle right it was just random
Frukes made edits to the two-string output to include that and had forgotten that he'd done that and it was purely for logging as
We changed that such that the two-string output is now more stable and will never change and
the
Response to that was you remove the role information and it's like yeah
You shouldn't have had that in the first place and people go like well why and the reason is because again the security principle
You take a known object which has a known property permission and you change it to a string and then you start doing operations on
that string
substring
Index of string etc. And then out of that you get a single string which shows their permission level that string could be intercepted
By any number of mechanisms points at the modding community who are mostly good by the way
This isn't a modding community is bad
This is just the modding community have the ability to do this
So should a bad actor and again not accusing the modding community of being bad actors
They are fantastic with the mods that they are producing but a modding person could
Theoretically edit that string in place using a mod and give you a different output
So let's say you had a system where you're like, oh if they're a builder show this really sensitive piece of information
Or allow this sensitive access to the world they could
Theoretically again not using anyone don't take this out of context
Bypass something important
So that's why it's not allowed in the future when it is a secure option that we can allow you to receive the permission level
Of someone securely and take a look at it securely. We will allow you to do it until then it is not secure
So we're not allowing you to do it specs has a question here, which isn't marked with the emote. So it was a marking
But I guess it doesn't have a question mark, but we'll go to it
So we'd love to hear about making builder on his own
So although it's restricting errors for using things like deb sips within the only surefire way to do that right now is
Socially or like community wise a good thing
That I've seen a lot of people do is they put more rules in the rules and we have had some issues with that
But they put more rules in their world. It can be anything like going back to that
That world the headless what I can't remember the name of it
But it's again the one with swap spheres that rahivi did there is a big sign there
With the truth Ozi and next Ozi is like please do logics in the nerd dome or some sort of phrasing like that
I knew it was something simple like the sandbox, but I didn't want to be incorrect and
That is a perfectly reasonable way of doing it, right? It's a sign that says please do logics in the nerd dome
And like I will do logics in the nerd dome if I ever want to do logics in that world
And if I'm not doing logics in the node
The the nerd dome then cool. I would expect someone for example Ozi to come over and be like
Yo, take it to the nerd dome
That's a cultural way of doing it if you want to restrict it technically or functionally right now
There are some things you can do, but I'm probably not going to recommend any of them because they will all break
Depending on what as a community we need to come up with sort of like ways of I'm gonna cough again one second
I hope I'm not getting sick, but maybe today is just a coughing day. I'll go drink some water later
I hope as a community we can come up with ways of basically being more reasonable about rules
I have had lots of problems of having rules in my sessions with people being like hard done by or
Problematic about them or arguing about them, but it's just like if I go to your house not peeking anywhere here
but Ozi if I go to your house and
I come in with a bag of horse manure, and I start throwing it everywhere
You're going to be quite annoyed of me and kick me out
You don't have a rule on the wall of your house that says don't throw horse manure in my in my property
But I know that that's unacceptable
It's so if we start with that level of foundation we can then move forwards, which is I now know
What is unacceptable in general society? Oh look? There's actually rules posted?
I will add to add these rules to my general understanding of what is acceptable in this world, and then I will follow them
That's all it requires
Sometimes rules don't make sense like I was watching
Like a border security TV show there's lots of them depending on which country you want to watch and the border security UK one seems
Very concerned with cigarettes right you can only bring a certain number of cigarettes back into the UK
Before you have to pay duty on them, and I don't understand like that rule. I would respect that rule
I don't smoke, so I have no reason to break that rule, but I would respect that rule without understanding it
But I might ask what it's about, but I'd ask about it politely. I'm like
Why I don't understand like I get the whole like don't bring guns in don't bring drugs in
But I'm just like they didn't pay tax, but they brought it elsewhere like why are they paying tax when it crosses the border?
I don't understand
So I would go I would go look that up. I've been meaning to do that
It's on my to-do list by just having that time
Moving onwards because I'm now ranting about horse media for a long time for no reason um
Repices there's now community a list of safe modes. I did read that you've got the
Like compatibility checking the the hashing checking beautiful job again
I'm not accusing the modding community of doing anything wrong
I'm just saying like there is the ability for an unknown actor to
Intercept that string value and it would use something similar to the the tools which the modding community use
Moving on to questions and not talking about horse manure. I'm gonna regret that are they um
Zenny welcome to the discord as you're new welcome to me as they wanted to ask since I'm rather new to Neos relating to cameras
Is there a way to get a third-person camera if I were to stream as I could never figure that out?
Yes, you need to use the streaming overlay
Thingy, I know that doesn't make sense because issues what thingy with a new user give me a second here
And I will get you the information that you need and properties faster. That's totally fine, too
So there is a button on your home screen that is called camera streaming and opens up this very big confusing UI
But I don't want you to worry about it. I will not type steaming into my tutorial searcher. I will
Find the correct video that isn't steaming. It's streaming
And then just give you some it's up to see froppy beat me and I'm just typing the word steamy and
Into my video search so all I want you to do for the third person camera is to open the overlay which is that?
Camera streaming button and then click two buttons on it
I want you to click mirror to display which is the first button to click and then I want to click third person
They're very big
They're on that UI very clearly and then I want you to peek underneath your headset at your main monitor
what the mirror to display will do is it will mirror the camera output to your actual display and
then by clicking that third person button what you're saying is for the
desktop window is in them the actual physical monitor display third person, but for the
For the headset still display third person and that's actually what you see happening in that thumbnail as well, which is
Hey, I am in first person inside that headset with my hand up to my face and
I see first person but I'd mirror it display third person and I can see that if you are in desktop though
F5 is like says I got it better about not wittering on sometimes. Well, anyway next question and we are over time now
So as any if you have another question, please feel free to type it. Otherwise, no more questions. So as any it's the last question
Thank you. Ah
Rizzo says does the on saving node have an opportunity to affect the asset being saved or is it too late when the notice fight?
Impact the asset being saved. That is a good question. I will take a look
Okay, so there is an event flow
Which is approximately?
Let me take a look
control
Save control here. It is save control reference on before save start saving
Okay, so there are two there are two events that happen
On saving there is the on saving node, which is technically under the hood called
On on before save start so you should be able to use the on saving node to affect the world
Basically, the the plot the the thing goes I'll type this so user presses say we'll just use a press to save on saving fires
Saved fires and then you know, the object is saved so like that
There's the order of operations. So on saving should give you an opportunity to do something
What is important there though?
Is that you can't have any nodes which will delay execution till the next update because that might cause problems
So avoid that the delay node the updates delay node and anything like that
Because that will will have problems there. That is a whole topic for another tutorial though
It's like yeah
cool
The update delay nodes and stuff like that very very complicated
If in doubt a update delay of two usually fixes stuff that requires an update delay
so zenny has an update which says
I'm actually asking something related to my hardware. So I got a new headset
I got a g2 omni on set from a buddy of mine
I wanted to know because in the past you to have problems if able to use it foul off config
I think you are I'm not entirely sure there are other people in the community that have a g2 omni
Sep so please ask them questions and help just say like I have a g2 omni sept anyone got any updates or
Information for me and they'll be happy to help you out is the omni sept the one that has eye tracking that we don't currently
Support I think it is
If it is then it is the headset that doesn't have eye tracking and it's for a very strange reason
No, it doesn't have mouth tracking yes, that's the one so the omni sept has mouth tracking
But it doesn't export the data in any way that makes sense for us
What it will give you is basically a picture of the user's mouth, which is completely useless
I mean it isn't useless for like people who want to develop custom mouth tracking algorithms
But what we want is a similar SDK to the vive mouth tracker
Which is it does all the logic for you and outputs a list of weights like is the mouth open and when I say weights
I mean the mouth trickle output. I am 50% sure that the user's mouth is open and then we can act upon that
Whereas the omni sept mouth tracker is like here's a picture of your users face like thanks. That's
very useful
We could put open c-face on that. It just sort of like it's a
It's a foundational approach about Neos is like do we?
Do we want to start doing that and the reason behind that is because like doing that is sometimes like quite
Resource intensive and we are not experts in that we could of course get
Amazing amazingly experts at that we could do a bunch of research. We could do a bunch of work. We could spend months
Prototyping it we could even submit scientific papers or we could just like use existing things like open c-face and stuff like that
But then we have to maintain that I don't know what g2s
Goals are with the mouth tricking like if we knew that it might be better to sort of say like oh hey
We actually need to stand in here, but it's a lot more work than adding another device
Which already does that let's say prime comes out with a prime face tracker, and it outputs weights
That would be like I don't know a couple of days work
Outputting the mouth camera from the g2 omni sept through all that stuff
That's more like a week to like half a month depending on how complicated it is
I believe that's all the questions we have so I'm gonna go ahead and end things off here quick reminder
Go ahead drop in the questions and help channel if you have any other questions direct message me directly
Knock me about things call me Susan. Whatever you'd like to do totally fine by me. I will see you guys next week
If you have anything else you want to add please feel free to do it
But this will be the end of the office our segment. Goodbye