7 ms·
Show HN: I'm open-sourcing my game engine
Modd.io is a collaborative game editor that runs in browser. It's kind of like Figma for game dev.
We made this engine low-code and multiplayer-first, so developeres can quickly prototype casual multiplayer games.
I hope some of you guys will find this useful. Would love to hear feedback also. Thank you.
Engine Demo: https://www.modd.io https://www.modd.io
- johnwheeler 3y agoIt is no short feat getting users to adopt your game engine, especially closed source. How did you manage to do that so well so far with the gallery of games you have on your site? Are those just a few friends or is there a pretty active community?
- nine_k 3y agoA combination of good capabilities, ease of learning, and low commitment (casual, a few days or even hours of effort to meaningful result) can go a long way. Remember Flash.
- m0dE 3y agoThis is pretty much spot on. Having a low barrier of entry (no download/signup/paywall) + being easy to use certainly helps.
- m0dE 3y agoWe have an active community who are creating between 150 to 300 new games every day. Having a low-barrier of entry for both game devs & players def helps. (No download/signup required)
- deleted 3y ago[deleted]
- beeman 3y agoThis looks really cool! Thanks for sharing!
- m0dE 3y agoThank you for checking it out!
- deleted 3y ago[deleted]
- Kiro 3y agoI wasn't expecting this to be modd.io when I saw the title. It's a popular framework/platform for building IO games.
- ianlevesque 3y agoI play a lot of games and sold some in the past, but I’ve never heard the term. What is an IO game?
- 542458 3y agoI believe it refers to casual multiplayer browser-based games.
- xmprt 3y agoIO game is a catch all term for these types of mechanically simple, multiplayer, web-based games . The name comes from the fact that many of these games are hosted on .io domains. Well known examples are agar.io and slither.io.
- echelon 3y agoAnd the biggest platform for them all, itch.io.
- kroltan 3y agoItch is not exactly a platform for IO games, sure you can put them there, but it hosts a lot of other stuff such as experimental and "extremely indie" games, software tools... It is a platform, storefront and community for things game developers make. IO games on the other hand are usually characterised by being (sometimes only allegedly) multiplayer web browser games with super minimal friction, just open a page and play. Put differently, I wouldn't call a supermarket a toothpaste store even though that is indeed an item supermarkets sell.
- riidom 3y agoMaybe this was meant as joke, but this isn't true at all.
- deadbabe 3y agoI find that node js based multiplayer backends will eventually slow to a crawl as the number of connections goes up. How have you solved this problem? Wouldn’t something like Go be a better alternative here?
- johnwheeler 3y agoI don’t see why. Connection-wise, the node event would loop make I/o blocking from the http request / response side a non issue. I doubt the backend is doing physics heavy stuff for the front end.
- deadbabe 3y agoYou must perform physics calculations on the backend if they are significant features that influence player positions. Node also only works off a single core.
- johnwheeler 3y agoI see. That makes sense.
- nine_k 3y agoNode of course can work on multiple cores, using worker threads [1]. You can even share large data efficiently using a SharedArrayBuffer. [1]: https://nodejs.org/api/worker_threads.html https://nodejs.org/api/worker_threads.html
- moffkalast 3y agoThere is still considerable overhead turning things into buffers and back. Was there ever a good reason given as to why passing an object to a worker normally has to convert everything to string and back? It is just so completely idiotic.
- deadbabe 3y agoIt isn’t trivial to just split up a game into múltiple worker threads and keep everything in sync. With Go, it’s much easier.
- ahuhz 3y agoGlad to see more open source projects like this out there. Surprised it has under 100 stars on GitHub.
- bitcharmer 3y agoPlease don't get it the wrong way, this is genuine question. Why is under 100 stars on GitHub surprising?
- moffkalast 3y agoIt's generally correlated with overall popularity would be my guess?
- pkoird 3y agoPerhaps because they just made it public?
- dimgl 3y agoImpressive project, thanks for sharing!
- m0dE 3y agoThanks!
- ianbicking 3y agoI've had some hobby projects that seem like a good fit here. The low-code and interactive editor make it nice for a hobbyist, even though I can code... there's a certain concentration I just don't feel like when I'm doing a hobby project. For me personally the thing I've excited about is generating maps and worlds. It looks like the best way to do this is to export the game as JSON, programmatically edit it, and then import? I'm a little intimidated though... the unedited tutorial world is 3500 lines of JSON. There's a lot to try to understand there. My first idea at how to do that is to make deliberate edits and see how that changes the JSON (I also need to look up a nice JSON diff viewer). This will help point to the parts I want to touch. I'm also guessing I'll do things like collect assets and map tiles in the interactive editor. Is this a reasonable approach? Are there tools to help here?
- m0dE 3y agoI wouldn't recommend you modify the JSON directly, as it's quite illegible and bloated. There are actions in modd.io that allow you to modify the map directly. One creator in our community is dynamically generating the map using ChatGPT. He's building a hide & seek sends a prompt to generate 2D map JSON then loads it in the map every time the new game round begins. I'd share the game, but he hasn't published it yet. Also, there is a community member who's building an interpreter for our game JSON such as https://pypi.org/project/pymodd/ https://pypi.org/project/pymodd/
- Phristov 3y agoI'm surprised it's not written in Rust :thinking:
- pipeline_peak 3y agoUnless it’s as advanced as Unity, is it possible to even sell an engine these days? Something like this is expected to be free
- pkoird 3y agoThis is an unfair comparison imo. Just because Dewalt (or similar) sell a comprehensive toolbox does not mean people won't pay for a standalone screwdriver. It all depends on what people feel they need.
- pipeline_peak 3y agoI looked at, at least 8 different moddio games. They're all top down Newgrounds games with painfully obvious similarities. The only exception was one where you control a fish. In that one the water splash animation occurred on the grass leaving me to believe the game was pushing the envelope of what the engine could do. One trick pony engines worked in the 90's because something like an FPS required rare personnel to develop given the limited hardware. That's why you'd get weird kids stuff like Nerf Arena Blast (Unreal 1) and Super 3D Noah's Ark (Wolfenstein 3D engine). Eventually you had Renderware, but that was like the Unity of the 2000s. There's a world of JS game engines, more advanced, for free today https://github.com/collections/javascript-game-engines https://github.com/collections/javascript-game-engines Moddio has built in multiplayer server support that seems pretty intuitive, that's definitely something special. But a screwdriver that makes Stick RPG clones isn't very profitiable.
- andygeorge 3y agofwiw they're called "IO games" and they're - even still - not-unpopular games
- kyleyeats 3y agoWith Unity, the trust is gone. I don't think there's ever been a good time to be in the game engine business but this is probably the best time.
- 3y ago
- holografix 3y agoThis is a fantastic project to open source, thank you so much! I’m going to be pouring over the code during the EOY holidays!
- m0dE 3y agosounds exciting! let us know if you have any questions. we have a Discord link on our homepage as well.
- bsdpufferfish 3y agoA sure way to never finish a game is to start by writing an engine. You can absolutely make your own tech but at every step that tech should be tailored for your project, as opposed just a general game platform.
- mathgeek 3y agoCan you elaborate on what part of moddio you're referring to? Was it a product of a failed attempt to create a game?
- SuperNinKenDo 3y agoI had the same initial response, but I think what parent us saying is that people should consider using this engine, rather than spinning their own? I'm not sure I agree, as many great games are built on in-house, bespoke engines, or else custom modifications to existing engines. But for the purpose of rapid prototyping, the intended use of this engine, it definitely makes sense to use a preexisting engine in most cases. I could be wrong about parent's intending meaning though.
- deleted 3y ago[deleted]
- qingcharles 3y agoI'm going to start a blog! And by "start a blog" I mean write a whole new blog engine entirely from the ground up...
- ludston 3y agoI mean it only takes an afternoon if you're just making it for yourself.
- quirino 3y agoI've fallen into this trap so many times... Last time I decided to do the absolute minimum. I just glued together some Markdown library with Jinja for a total of ~50 lines of Python. Turns out you can do a lot with just that.
- nathandaly 3y agoThe android app sign up page seems to want me to enter my Google username and password _inside the app,_ in what looks like a web form, but as a user I have no way to tell if the app is snooping on my password. It seems like Apps usually navigate away to a sign in, and then navigate back. Is that pattern hard to implement? Is the issue about cross platform support? Thanks
- inquirerGeneral 3y ago[dead]
- avandekleut 3y agoThis is called OAuth 2.0 and is trivial to implement with something like Okta.
- explaininjs 3y agoOr we could not encourage depending on a constantly-breached centralized “security” authority. https://hn.algolia.com/?q=okta https://hn.algolia.com/?q=okta
- jwineinger 3y agoThis feels a bit like NIH syndrome to me. Maintaining your own authentication solution is not trivial, especially for small/one-person operation. Edit: Re-reading, I guess this is specifically targeted at Okta, who have had their share of problems.
- JonChesterfield 3y agoYeah it is known that one should use a library for authentication. It's also observed that they keep getting breached. The two sentiments "Best practice is use Okta" and "Okta keeps falling over" are inconsistent but the industry doesn't seem to have worked out what to do about this yet.
- posting_mess 3y agoWhat's your motivation for building a new engine? Seems like you've built in some really specific things (from the README); - Weapon system (melee & projectile) - Shops - Client-side predicted projectile + unit movement - ETC Why did you decide to bake those into the engine instead of "copyable" plug-ins? Of course lots of games dont need these things - is this a game engine? or is this a FPS/RPG/Else game engine? I dont hate on tech, but im still left asking "why"? What's it for? Why would I use this over "Three.js" and my own server? :) (I ask only to get your take)
- hutzlibu 3y ago"What's it for?" Apparently not for you, but people who want to build such a specific game. Not every engine is general purpose.
- m0dE 3y agoThanks for the question. We consciously decided to make our engine more opinionated compared to other modular alternatives, because we want to be extremely fast at developing 2D multiplayer games. For example, I made a simple MMORPG in 2 hours (https://www.youtube.com/watch?v=GZVsxkALR5U https://www.youtube.com/watch?v=GZVsxkALR5U). I believe that there's an inverse correlation between ease-of-use and level-of-customization. We chose the former to address the gap between casual game devs and multiplayer games which are known to be difficult to build.
- JoeOfTexas 3y agoI joined one of the Brains server and was curious what the experience was for 50~ players. The movement was a bit janky, as expected from websockets. I was also curious about the networking compression, because I'm doing something similar. I'm not sure if just doing LZ-string compression is enough. 50 players use about 20KB/sec data. Comparing that to Warzone at 150 players uses only 48KB/sec data. Unless you have unlimited data, that could be costly in cloud bandwidth. It was also curious that the compressed buffer of bytes look like this: 埒愑䣔橤㤰゙㟍稦獦ঙ惝䓇強栛䳌۬䌃̩佼 I wasn't sure if that is how LZ-string compression just ends up, but its a bit jarring. In any case, there is lots of room for improvement on the networking side to reduce potential costs. The whole project is very impressive, so great job!
- junar 3y agoCJK characters occupy a vast portion of the printable Unicode characters. [1] Two of the largest blocks include * U+3400 to U+4DBF * U+4E00 to U+9FFF Your string decodes to \u57d2\u6111\u48d4\u6a64\u3930\u3099\u37cd\u7a26\u7366\u0999\u60dd\u44c7\u5f37\u681b\u4ccc\u06ec\u4303\u0329\u4f7c [1] https://en.wikipedia.org/wiki/CJK_Unified_Ideographs https://en.wikipedia.org/wiki/CJK_Unified_Ideographs
- nightowl_games 3y agoMovements pretty tight in our websockets: https://gooberdash.winterpixel.io/ https://gooberdash.winterpixel.io/ It's all about the client side prediction & roll back networking algorithm. Our game states end up being ~1kb at 30hz, which typically fits into a single packet, so websockets aren't terrible. An unreliable protocol would be better, of course.
- andai 3y ago>client side prediction & roll back networking algorithm. I need to look into this! I made a little networked 2D physics thing (just bouncing balls) and I was surprised how well it stays in sync, because of course both machines just simulate the same result. I added some interactivity and simulated lag / packet loss, at that point I added an interpolation function so an entity could have a "target" and gradually slide there over a few frames. I've seen some other games do that as well. I haven't gone very in depth on this, but VALVE has an excellent article on the subject, also covering input prediction and lag compensation: https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking https://developer.valvesoftware.com/wiki/Source_Multiplayer_...
- cdchn 3y agoI see it says "Credits: Isogenic Game Engine" is it based off that or just throwing it a name drop?
- devilzhong 3y agoI'm trying to make NPCs out of AI agents so this would be really useful to me. Thanks for open sourcing the work!
- m0dE 3y agoOh, I've already done this! Happy to help. Feel free to DM me here on Discord. (I should probably make a YouTube tutorial for this)
- devilzhong 3y agoI couldn't figure out how to DM you on HN, so I'll send you an email. Thanks!