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
It gets lost in the algorithms and narwhals sometimes, but #WorldFabric exists to undermine centralized control of the #metaverse. You don't need this technology if you're hosting your game on an expensive server in an optimal data center location, but it levels the playing field when you're not. World Fabric makes it easier for solo developers to create good experiences hosting with triple digit ping, and that's going to matter in the future if we don't want all of our virtual spaces to be corporate hellscapes.
The overhead #WorldFabric adds scales with the number of events, not the number of objects. Every collision is an event, so I could probably push more objects (and keep players connected) if they weren't all smushed together in a constrained area. I think the rendering could handle 100k static instances fine too if the physic wasn't choking the CPU.
#WorldFabric can automatically synchronize arbitrary C++ code over the internet with relativistic latency hiding, and it's now fast and stable enough to handle over a thousand interactable moving objects under real-world network conditions. https://www.youtube.com/watch?v=wazOVYCeuIk #cplusplus #coding #networkprogramming #metaverse
Narball is now available on itch.io : https://worldfabric.itch.io/narball
Narball playtest went well tonight. There were some crashes 😞, but no desyncs 😀, and we hit a new record of 9 players in one match. Check out this chaos. https://www.youtube.com/watch?v=mALaRkp3hjs
If you'd like to distract yourself from the blizzard or dystopia tonight, I'm hosting another open Narball playtest at 8PM EST on Discord : https://discord.gg/5BpnyeG8q8
Narball teaches us a great many things about the narwhal condition.
Made some big performance improvements to the core #WorldFabric event loop today. It's like 30-50% faster now. Not all events that can affect the result of another event can change its run time, so I can save a lot by being stricter about when I recompute event timings. 😀
I assumed if an event preempted another event it would cause it to run later. Silly me, obviously you can cut an event off and cause it to run earlier. Time is an illusion. I of all people should know this by now. #WorldFabric
#WorldFabric can now automatically serialize and do remote procedure calls on objects of user defined classes which have containers of non trivially copy-able other user defined classes. So this lobby containing player objects which have variable length names is now acceptable for relativistic synchronization. 😀
#Narball is getting close to releasable. I plan to put it on itch.io as a pay what you want deal. It has to be free because it's the open source example of using the #WorldFabric engine in a real game. Still, I want to have a clear way to contribute in case it pops off. It's pretty fun. It could happen.
For the menu creating a match of #Narball I made the element for the number of balls a textbox. Is it possible to input a number that will break the game? Yes, but I'm hoping players will try and fail because they weren't thinking big enough. #indieDev #WorldFabric
I finished the UI panel system for the #Vulkan renderer in #WorldFabric. I can place 2D panels in a 3D world. There's custom shaders with post-processing. It can key-frame animate arbitrary shader parameter structs with automatically generated interpolation functions. It can work with a 2D or 3D pointer or a controller, and there's an event system to call out to listeners on enter/exit/click etc. Also, sound. 🦊
I just realized my algorithm gives me control over the peeker's advantage, contradicting the clickbaity title of the original video. I could go tell them that, but I won't. It's not a clear win. It doesn't solve it, but I can change one number to trade away the unfairness for other weirdness players also probably wouldn't like. The big selling point of #WorldFabric is that you don't have to think about this stuff, and if you didn't try to do anything special about this problem, then the result would be about as good as the solutions of people who thought about it a lot. That's the bottom line selling point for World Fabric: state of the art for minimal effort.
One option is to turn the time warp off completely. The #WorldFabric automatic networking works without time warp, just a bit slower. Probably fine for an FPS. If the collision check is done on the Timeline then shot hits wouldn't be 1 to 1 with what the shooter sees though, because their target could change direction and cause rollback which would rollback their hit. You wouldn't have to lead shots like if you were just syncing state. It wouldn't be that bad, but a laggy player changing direction a lot could be hard to hit. Peeker's advantage is there by raw latency, and with rollback whoever shoots first, the other player's shot won't go through because they'll die in rollback. 2/4
I watched an interesting video a few days ago on the peeker's advantage in online first person shooters. Because of latency and the various tricks used to hide it, a player running a around a corner will have an advantage in shooting a player behind the corner before they can shoot back. This got me thinking about how #WorldFabric would handle this situation. 1/4 https://www.youtube.com/watch?v=WFw4F2AyaP4
I can now load images into sub-elements of panels placed in a 3D game world in #Vulkan. This is not itself a user interface, but it is the first step to one. I need something that works in both #VR and not, so I can't just render UI elements to the screen. Now I've got a tool to create 2D surfaces and draw arbitrary images into them easily, and I can use arbitrary shaders too. Next up is text. #WorldFabric
Right now #WorldFabric can get up to about 2k synced moving objects before it disconnects due to overload. It's a bit choppy, but multiple players can stay in a match of #Narball. Typical C++ running inside World Fabric is about 1/5th speed of native while being auto-synced over the network. #cplusplus #gameengine