#worldfabric — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #worldfabric, aggregated by home.social.
-
Why would I want this? Well, it's optimized for an engine ( #WorldFabric ) that has speed of information limits. There's a speed of light in the game world that is used to do selective rollback for online networking. Normal pointers violate the causality rules by making it possible to move information across the game world too fast, which makes the networking tricks not work. General pointers are not supported in the app-engine, but that means just sending data between objects results in a lot of copies. Data that isn't even changing! local_ptr is an efficient and easy to use pointer type that can't violate locality rules.
-
Why would I want this? Well, it's optimized for an engine ( #WorldFabric ) that has speed of information limits. There's a speed of light in the game world that is used to do selective rollback for online networking. Normal pointers violate the causality rules by making it possible to move information across the game world too fast, which makes the networking tricks not work. General pointers are not supported in the app-engine, but that means just sending data between objects results in a lot of copies. Data that isn't even changing! local_ptr is an efficient and easy to use pointer type that can't violate locality rules.
-
I'm working on a new type of #cplusplus smart pointer. It's called "content_ptr". It follows the syntax of shared_ptr, but when you edit one it doesn't change any of the other references. They reference an underlying content addressed storage, and automatically determine when to make copies and hash into the underlying map. They're designed to be safe and efficient for use in the automatic networking system of #WorldFabric which does rollback and generally messes with time, so normal pointers aren't allowed.
-
I'm working on a new type of #cplusplus smart pointer. It's called "content_ptr". It follows the syntax of shared_ptr, but when you edit one it doesn't change any of the other references. They reference an underlying content addressed storage, and automatically determine when to make copies and hash into the underlying map. They're designed to be safe and efficient for use in the automatic networking system of #WorldFabric which does rollback and generally messes with time, so normal pointers aren't allowed.
-
I'm looking at using a sequential constraint solver(see the balls I posted last week) because that's what maps well to the #WorldFabric relativistic event system. If I do the expanding polytope thing, I can use barycentric coordinates to directly extract a single deepest collision point. My plan is to use a "consistent" or "incremental" manifold approach where I maintain constraints from previous frames, so I don't have to calculate full manifolds every frame to get stable stacking.
-
I'm looking at using a sequential constraint solver(see the balls I posted last week) because that's what maps well to the #WorldFabric relativistic event system. If I do the expanding polytope thing, I can use barycentric coordinates to directly extract a single deepest collision point. My plan is to use a "consistent" or "incremental" manifold approach where I maintain constraints from previous frames, so I don't have to calculate full manifolds every frame to get stable stacking.
-
I've been digging down the rabbit hole of GJK + EPA collision detection. It's kind of genius. Going to take me a minute to replicate this for #WorldFabric, but I think it'll be worth it.
-
I've been digging down the rabbit hole of GJK + EPA collision detection. It's kind of genius. Going to take me a minute to replicate this for #WorldFabric, but I think it'll be worth it.
-
I fixed a bunch of issues with the avatar hair controller and morph animations in #WorldFabric, and made my recording app generally less annoying to use . Maybe I'll make some more YouTube videos about #gameengine tech soon. https://www.youtube.com/watch?v=iFz_i3BTWu8
-
I fixed a bunch of issues with the avatar hair controller and morph animations in #WorldFabric, and made my recording app generally less annoying to use . Maybe I'll make some more YouTube videos about #gameengine tech soon. https://www.youtube.com/watch?v=iFz_i3BTWu8
-
I built a simple collision constraint solver for 3D ball #physics to test my understanding. It's very stable with stacks, unlike my current engine. I believe this is the missing piece to making the physics in #WorldFabric actually good. #gamedev #gameengine
-
I built a simple collision constraint solver for 3D ball #physics to test my understanding. It's very stable with stacks, unlike my current engine. I believe this is the missing piece to making the physics in #WorldFabric actually good. #gamedev #gameengine
-
I've been poking around the open source #Box3D physics engine, and querying my local LLM to explain keywords. I believe I've finally wrapped my head around the idea of constraint based physics simulation. I think a sequential solver will map reasonably to #WorldFabric 's event architecture. But first, mini-demos!
-
I've been poking around the open source #Box3D physics engine, and querying my local LLM to explain keywords. I believe I've finally wrapped my head around the idea of constraint based physics simulation. I think a sequential solver will map reasonably to #WorldFabric 's event architecture. But first, mini-demos!
-
I've seen a lot of #gamedev advice to not make online multiplayer games. It's hard to make an online real-time game feel like you think it should. I've seen games die because they couldn't fix multiplayer desync issues. In #WorldFabric you can get a decent result without even doing interpolation. It's hooked into Steam now, so it's easier to test multiplayer than it is to make a join menu. Deciding what data needs to be sent and when? Automatic. Serialization? Automatic. Connecting to an app in progress? Automatic. Rollback? Automatic. With time-warp you can half-ass everything and it'll still be buttery smooth like 80% of the time. I need to figure out how to sell THAT. I'm gonna do the networked thousands of physics objects engine thing too though.
-
I've seen a lot of #gamedev advice to not make online multiplayer games. It's hard to make an online real-time game feel like you think it should. I've seen games die because they couldn't fix multiplayer desync issues. In #WorldFabric you can get a decent result without even doing interpolation. It's hooked into Steam now, so it's easier to test multiplayer than it is to make a join menu. Deciding what data needs to be sent and when? Automatic. Serialization? Automatic. Connecting to an app in progress? Automatic. Rollback? Automatic. With time-warp you can half-ass everything and it'll still be buttery smooth like 80% of the time. I need to figure out how to sell THAT. I'm gonna do the networked thousands of physics objects engine thing too though.
-
There's a trade-off curve between developer effort, output quality, and performance when making games. On everything really, but notably for online networking. #WorldFabric algorithms move that whole curve up. I've been focusing on one point on that curve, maximizing performance, to try to do things other systems could never do. I thought these "impossible" shots would be my marketing. The actual way it will be used though is as lazily as possible by people who know nothing about networking. Maybe I should be optimizing my API for and marketing to these users.
-
There's a trade-off curve between developer effort, output quality, and performance when making games. On everything really, but notably for online networking. #WorldFabric algorithms move that whole curve up. I've been focusing on one point on that curve, maximizing performance, to try to do things other systems could never do. I thought these "impossible" shots would be my marketing. The actual way it will be used though is as lazily as possible by people who know nothing about networking. Maybe I should be optimizing my API for and marketing to these users.
-
I just got back from visiting @jakl for a few weeks. While there I got him to try out making a game using #WorldFabric (my game engine). We started making an online Chess game. I let him do the code, while I practiced my #Blender skills by making all of the models.
-
I just got back from visiting @jakl for a few weeks. While there I got him to try out making a game using #WorldFabric (my game engine). We started making an online Chess game. I let him do the code, while I practiced my #Blender skills by making all of the models.
-
@apanda Do you think my work on #WorldFabric 's relativistic synchronization algorithm would qualify? I don't have the ability to make a proper academic paper in two weeks though. https://www.youtube.com/watch?v=g52nosxz4cY
-
@apanda Do you think my work on #WorldFabric 's relativistic synchronization algorithm would qualify? I don't have the ability to make a proper academic paper in two weeks though. https://www.youtube.com/watch?v=g52nosxz4cY
-
Narball was plenty fast before, but it's not about Narball. #WorldFabric generates code to automatically do rollback networking of your game code. The less overhead that adds, the bigger the simulations that can be synced, and the more players you can get into them at one time. I want to drive the cost of excellent game networking into the floor. #gamedev
-
Narball was plenty fast before, but it's not about Narball. #WorldFabric generates code to automatically do rollback networking of your game code. The less overhead that adds, the bigger the simulations that can be synced, and the more players you can get into them at one time. I want to drive the cost of excellent game networking into the floor. #gamedev
-
Did you know that in #cplusplus you can template an abstract class? You can't put sub-classes with different templates into a templated container though...unless you make a non-templated abstract class for your templated one to extend from. That's how I got the virtual #WorldFabric observer functions to have parameters that match what they are observing. #templatemetaprogramming #coding
-
Did you know that in #cplusplus you can template an abstract class? You can't put sub-classes with different templates into a templated container though...unless you make a non-templated abstract class for your templated one to extend from. That's how I got the virtual #WorldFabric observer functions to have parameters that match what they are observing. #templatemetaprogramming #coding
-
For context #WorldFabric automatically synchronizes C++ code over the internet, but that has overhead. It's no good to put things like local scene instance data that doesn't need to be shared between players into the synced world. Also you're gonna want to do interpolation, extrapolation etc for smoothing over the visuals when rollback happens. There hasn't been a good place for this core app to local view mapping code until now. Narball only has like 3 objects types, so I just shoved everything into one big loop, and I have been hating it ever since. No more!
-
For context #WorldFabric automatically synchronizes C++ code over the internet, but that has overhead. It's no good to put things like local scene instance data that doesn't need to be shared between players into the synced world. Also you're gonna want to do interpolation, extrapolation etc for smoothing over the visuals when rollback happens. There hasn't been a good place for this core app to local view mapping code until now. Narball only has like 3 objects types, so I just shoved everything into one big loop, and I have been hating it ever since. No more!
-
I've added a templated view pattern to #WorldFabric. Now, when you register a class for a synced world you can also register a view to handle local scene instances, sounds etc. Whenever the main app observes the world, it will call update on an attached view for each object separately. It associates a world object type, so anytime an object is created of that type it will get a corresponding view of your specified class created automatically. #cplusplus
-
I've added a templated view pattern to #WorldFabric. Now, when you register a class for a synced world you can also register a view to handle local scene instances, sounds etc. Whenever the main app observes the world, it will call update on an attached view for each object separately. It associates a world object type, so anytime an object is created of that type it will get a corresponding view of your specified class created automatically. #cplusplus
-
Spent a few hours trying to debug #Narball running in #Proton on #Steamdeck with no luck. It seems like Proton is hitting a nullptr exception before my app even starts, and I'm not getting any hint as to what it is. I think my time would be better spent trying to make a native linux build of the #worldfabric engine. I got Visual Studio code installed on my Steamdeck, but it's nontrivial to convert my visual studio project to be build-able here. Not looking forward to fighting with the compiler for a week, but probably for the best long-term?
-
Spent a few hours trying to debug #Narball running in #Proton on #Steamdeck with no luck. It seems like Proton is hitting a nullptr exception before my app even starts, and I'm not getting any hint as to what it is. I think my time would be better spent trying to make a native linux build of the #worldfabric engine. I got Visual Studio code installed on my Steamdeck, but it's nontrivial to convert my visual studio project to be build-able here. Not looking forward to fighting with the compiler for a week, but probably for the best long-term?
-
I recorded a short video fully in-engine talking about the new avatar features I've recently added to the #WorldFabric engine.
https://www.youtube.com/watch?v=EwQlLQoqc5c -
I recorded a short video fully in-engine talking about the new avatar features I've recently added to the #WorldFabric engine.
https://www.youtube.com/watch?v=EwQlLQoqc5c -
I got the pipeline for spring bones for #VRM avatars working in #WorldFabric . Still needs more physics and collision detection, but it's a good start.
-
I got the pipeline for spring bones for #VRM avatars working in #WorldFabric . Still needs more physics and collision detection, but it's a good start.
-
Did a bit more fine tuning on the avatar mouth mapping. In particular, I fixed an issue that added an extra syllable after you stop talking. I also improved the timing and recalibrated everything. #WorldFabric #VRM #avatar
-
Did a bit more fine tuning on the avatar mouth mapping. In particular, I fixed an issue that added an extra syllable after you stop talking. I also improved the timing and recalibrated everything. #WorldFabric #VRM #avatar
-
I've got real-time avatar mouth animation from raw sound working in #WorldFabric . Could use more fine tuning, but I'm pretty happy with this. #VRM
-
I've got real-time avatar mouth animation from raw sound working in #WorldFabric . Could use more fine tuning, but I'm pretty happy with this. #VRM
-
Did I mention I got procedural morph animations working? I can blink now. #VRM #WorldFabric
-
Did I mention I got procedural morph animations working? I can blink now. #VRM #WorldFabric
-
#WorldFabric 's Audio Plugin can now stream data from a microphone and write sounds out to wav files. It can also load ogg files, compose electric piano notes, handle 3D sound in VR and do doppler effects. That's not new though. Only the recording and saving is new.
-
#WorldFabric 's Audio Plugin can now stream data from a microphone and write sounds out to wav files. It can also load ogg files, compose electric piano notes, handle 3D sound in VR and do doppler effects. That's not new though. Only the recording and saving is new.
-
I've updated the #GLTF model loader in #WorldFabric to read morph targets, which means I can parse out #VRM avatar expressions.
-
I've updated the #GLTF model loader in #WorldFabric to read morph targets, which means I can parse out #VRM avatar expressions.
-
I got #openXR hand tracking to map onto a #VRM 1.0 avatar. Not an easy feat since they have different bones and coordinate systems. #WorldFabric
-
I got #openXR hand tracking to map onto a #VRM 1.0 avatar. Not an easy feat since they have different bones and coordinate systems. #WorldFabric
-
Two weeks until the release of #Narball. I thought about doing some pre-release influencer marketing, but I don't think I will. They'd just be playing with each other if they could find games at all. Exclusivity is kind of against the ethos of #WorldFabric anyway. I think I'm just gonna stealth drop it and see what happens. I can do streamer outreach after its out, and then they'd be able to play with their fans. I designed a whole new asynchronous event architecture to make sure weak PCs on crappy connections would get the same quality experience as the best hardware, prioritizing elites for release would be incongruous. #indieDev
-
Two weeks until the release of #Narball. I thought about doing some pre-release influencer marketing, but I don't think I will. They'd just be playing with each other if they could find games at all. Exclusivity is kind of against the ethos of #WorldFabric anyway. I think I'm just gonna stealth drop it and see what happens. I can do streamer outreach after its out, and then they'd be able to play with their fans. I designed a whole new asynchronous event architecture to make sure weak PCs on crappy connections would get the same quality experience as the best hardware, prioritizing elites for release would be incongruous. #indieDev
-
I have added matchmaking to #Narball. #WorldFabric is decentralized by design, so I'm not running any servers myself, but Steam has a built-in server browser. The game accesses the Steam server list and then scores the available matches client-side to select one. The game includes a DedicatedServer exe in the folder that anyone can run. If you open the port for the Steam server browser, then people who click quick play might join your server. #decentralization #indieDev
-
I have added matchmaking to #Narball. #WorldFabric is decentralized by design, so I'm not running any servers myself, but Steam has a built-in server browser. The game accesses the Steam server list and then scores the available matches client-side to select one. The game includes a DedicatedServer exe in the folder that anyone can run. If you open the port for the Steam server browser, then people who click quick play might join your server. #decentralization #indieDev
-
I'm hoping people will play #Narball, wonder how it works so well, and that will lead them down the rabbit hole to watching my videos about the technology behind it. I am the rabbit in the rabbit hole. #WorldFabric
-
I'm hoping people will play #Narball, wonder how it works so well, and that will lead them down the rabbit hole to watching my videos about the technology behind it. I am the rabbit in the rabbit hole. #WorldFabric
-
I was looking at my #WorldFabric APIs yesterday, and the thought crossed my mind "none of my employers would have allowed me to build this". The answer to why I can build something big companies can't is not that I'm special. It's that their culture doesn't allow spending years to make something nice for developers that doesn't generate revenue.
-
I was looking at my #WorldFabric APIs yesterday, and the thought crossed my mind "none of my employers would have allowed me to build this". The answer to why I can build something big companies can't is not that I'm special. It's that their culture doesn't allow spending years to make something nice for developers that doesn't generate revenue.
-
New World Fabric devlog goes over the interface and rules for the system that automatically networks running C++ code with real examples from Narball. https://www.youtube.com/watch?v=uVlNlhh-mT8
-
New World Fabric devlog goes over the interface and rules for the system that automatically networks running C++ code with real examples from Narball. https://www.youtube.com/watch?v=uVlNlhh-mT8
-
How does #WorldFabric keep players synchronized over the internet with so many moving objects? Trick question: it doesn't! World Fabric only maintains local causal consistency. The further apart players are, the weaker the causal link, and the more wibbly wobbly timey whimey it gets. #Narball #networkprogramming #doctorWho
-
How does #WorldFabric keep players synchronized over the internet with so many moving objects? Trick question: it doesn't! World Fabric only maintains local causal consistency. The further apart players are, the weaker the causal link, and the more wibbly wobbly timey whimey it gets. #Narball #networkprogramming #doctorWho