6 ms·
YouTube keeps recommending SpacetimeDB to me even though I have never made a videogame. Now I'm seeing it on HN too. Are there any game devs here who can comme
by paulluuk 2y ago
YouTube keeps recommending SpacetimeDB to me even though I have never made a videogame. Now I'm seeing it on HN too.
Are there any game devs here who can comment on how useful this actually is? The pitch seems pretty cool but I can't tell how much of it is just good marketing.
- matthewfcarlson 2y agoNot a developer affiliated with the project. But here's my take: The problem is that the proof is in the pudding. Some of their claims feel outlandish. Imagine writing your game with SQL queries. Rather than crafting update packets that only contain relevant game info you just do `select * from players where abs(player.x - current_player.x) + abs(player.y - current_player.y) + abs(player.z - current_player.z) < 100^2` and it just updates automagically 60 times a second. Running physics sim in SQL stored functions sounds insane but that's exactly what they're advertising. They say it's due to in-mem DB optimization but I'm not sure how they horizontally scale that (they allow you to run standalone but any scaling requires their cloud product)
- cloutiertyler 2y agoI mean you can download it and give it a try! For BitCraft we scale it with IMC (inter-module communication). It works very similarly to Elixir.
- Rohansi 2y agoIt's in closed alpha so there's a limited number of players but I am curious to hear more about how BitCraft is scaling out. Is it a single, seamless world for all players? How much scaling is currently required? How is data replicated when horizontal scaling comes into the picture?
- deleted 2y ago[deleted]
- jackb4040 2y agoIt's a cool technology, but the hard thing about building an MMO is architecture, not just making the server faster / wider. If you want a good overview of the types of problems to be solved in scaling an MMO, check out https://youtu.be/-c4t3Y5l5jY https://youtu.be/-c4t3Y5l5jY. There is a pretty big underlap between these problems, and the ones solved by SpacetimeDB. So much so that if you built a system using both SpacetimeDB and another, high-level tool to manage chunking, transitioning, server provisioning etc. it would obviously be the latter system that was more indispensable to scaling your MMO.
- gafferongames 2y agoProfessional multiplayer game developer here. I wonder what multiplayer games the SpacetimeDB folks have actually shipped?
- pmx 2y agoThis is theirs https://bitcraftonline.com/ https://bitcraftonline.com/ - not "released" yet but they have alpha testers on it apparently.
- gafferongames 2y agoWould you seriously consider using any technology built by people who are making their first game?
- trollied 2y agoYou've got to start somewhere. Dogfooding makes sense.
- dicytea 2y agoThere's this other team that built an MMORPG with SpacetimeDB, in 3 months with 8 people: https://youtu.be/kzDnA_EVhTU&t=717 https://youtu.be/kzDnA_EVhTU&t=717 Seems to have paid off for them: https://play.google.com/store/apps/details?id=com.lightfoxgames.deliveryz https://play.google.com/store/apps/details?id=com.lightfoxga...
- lrae 2y ago10k downloads, last app store update in November, MMO Does not feel like it paid off for them. But SpacetimeDB might of course not be the reason for that.
- thefourthchime 2y agoSame! The algorithm thinks I needed to watch this.
- bryanrasmussen 2y agoThis guy often comes here from HN, give him some Rust, Elixir, why JavaScript framework of the day sucks, and this SpacetimeDB thing!
- Rohansi 2y agoAs a game dev I don't really see what problems this solves. Most of the work you would have in games is related to simulation - something this doesn't help you with at all. It can actually make simulation more difficult because all your state would be decoupled from a game engine (which is built for simulation). So you'd end up having game servers running the simulation syncing to SpacetimeDB... or of course you try to build the simulation inside SpacetimeDB with no help from it.
- cloutiertyler 2y agoIt solves 3 problems: 1. Server <> client sync is handled for you 2. Server <> database sync is eliminated 3. Deployment is super easy because you just upload your wasm module to the database, and SpacetimeDB schedules it (similar to Kubernetes honestly, but at a different level of the stack)
- Rohansi 2y agoThe first two problems are nothing, IMO. Server <> client sync is handled by your engine or, if you need to roll your own, it's not that hard. Syncing to a database is more tedious than difficult. Getting rid of a game engine on the server side adds a lot more work. I don't think it would even balance out.
- flockonus 2y agoHaving implemented the first two for a web game i absolutely guarantee you those are far from "nothing". It takes considerable diagraming & handling to coordinate FE + API on state changes. If they in fact can solve that (haven't checked myself), it would be a massive time saving for development.
- Rohansi 2y agoMaybe I'm just used to it having implemented it several times. But my point is that they require a relatively fixed amount of effort. Once it's implemented you shouldn't need to touch it again.
- manas96 2y agoGiven the name I was also expecting some clever SQL-like data structure/query for fast spatial lookup but I digress. Game physics involves a lot of things (solvers, collision detection, numerical stability, etc.). I am skeptical of their claims of being able to run physics in what I understand are stored procedures for their database. I looked at their docs for physics https://spacetimedb.com/docs/unity/part-4 https://spacetimedb.com/docs/unity/part-4 where they demonstrate the simplest form of collision check (sphere overlap). I fail to see how that is an improvement or speedup over existing methods. Some quotes: "This may not be the most efficient way to do collision checking (building a quad tree or doing spatial hashing might be better), but SpacetimeDB is very fast so for this number of entities it'll be a breeze for SpacetimeDB." >> Nothing is quantified with numbers. "For every circle, we look at all other entities." >> This is the most inefficient N^2 way you could do collision detection. And not to mention networked physics is a whole additional layer of complexity, where you have to use some form of prediction techniques and very likely end up changing your core physics code to accommodate this. All of this suggests to me much thought has not been put into the claim "you can also do physics with it!" and its implications. Perhaps it is enough for extremely simple physics, as demonstrated with their demo game. If the author is reading this, I suggest spending some time understanding what this claim implies and qualifying it better. However I must mention that I applaud their courage to try something so outlandish. If you truly believe your claims are possible, I encourage you to keep working on it. But I'll be convinced when extraordinary evidence backs extraordinary claims. Source: I work on a commercial game physics engine and related netcode.
- Cieric 2y agoI believe they've done more complicated physics in their game bitcraft, but that code hasn't been released yet (no idea if it will be.) But there has been work in the discord recently and 2 member have individually implemented rapier[1] at this point. I can't say anything about the related netcode however as I don't know how much they've focused on it. At the very least work has been done. The unity tutorial is just to get up and running as fast as possible in the simplest way possible, not to make the perfect decisions for a networked physics based game. I however do think they should provide an actual reference to prove the claim, [1] https://github.com/dimforge/rapier https://github.com/dimforge/rapier