home.social

#worldfabric — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #worldfabric, aggregated by home.social.

  1. Today I'm learning how to make custom C++ iterators for my custom containers for my custom smart pointer, so they can be hot-swapped for standard library containers and pointers. I put a lot of effort into hiding how much #WorldFabric is doing under the hood, and nobody notices when I do it right.

  2. New video on #WorldFabric is out ! This one explains the system for interfacing local game code with automatically networked worlds. youtu.be/l5leLB1dV70

  3. I was planning to record my next #WorldFabric explainer video today, but I want to do it in World Fabric this time, so I spent all morning making the avatar recording app better instead. Dogfooding is the point, but I think tomorrow I'm just gonna have to move forward with what I've got. It's good enough, I think.

  4. I added user-controllable pins (spherical constraints) to the physics, which I then used to make some basic mouse controls, so now I can play with the simulation in real-time. #WorldFabric youtube.com/watch?v=VkpZgh7GgGs

  5. Spent today writing a script for my next YouTube #devlog on the systems for interfacing #WorldFabric worlds with local code. Some game devs seem to be good at off-the-cuff YouTube vlogging, but I have to think long and hard to not be incomprehensible. To maybe not be entirely incomprehensible.

  6. I've officially open sourced the latest version of #WorldFabric ! github.com/Alrecenk/WorldFabri

    There's not much in the way of documentation right now, but you can poke around and steal my algorithms. If you're interested in being an early adopter of the engine you should join the Discord and talk to me directly.

  7. Chains are pretty hard for a #physicsengine , right? Today, I've been cleaning up issues to make this work. #WorldFabric

  8. I have general support for non-convex rigid bodies in #WorldFabric physics!

  9. I've got multi-point manifolds working in #WorldFabric #physics, and the difference for the stability of stacks of boxes is significant. youtube.com/watch?v=xwsv3oWHjVw

  10. With the ability to calculate arbitrary inertia tensors migrated over from my previous physics engine I can now load arbitrary (convex-ish) models, like from files. #WorldFabric #physicsengine youtube.com/watch?v=4n50Or35LY8

  11. I'm sorry my code is standardized, with clear separation of concerns, no syntax errors, and I decouple components from business logic. Weirdly, the code I actually had AI help me with reported a much LOWER score than my old code. It still got flagged though because I defined templated functions. Humans don't write generic templates apparently. If that's all it takes, everything in #WorldFabric is going to register as AI generated. It's templates all the way down.

  12. 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.

  13. 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.

  14. 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.

  15. 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.

  16. 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. youtube.com/watch?v=iFz_i3BTWu8

  17. 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

  18. 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!

  19. 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.

  20. 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.

  21. 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.

  22. @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. youtube.com/watch?v=g52nosxz4cY

  23. 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

  24. 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

  25. 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!

  26. 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

  27. 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?

  28. I recorded a short video fully in-engine talking about the new avatar features I've recently added to the #WorldFabric engine.
    youtube.com/watch?v=EwQlLQoqc5c

    #vrm #avatar #gameengine #gamedev

  29. 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.

  30. 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