[HN Gopher] Show HN: I'm open-sourcing my game engine
       ___________________________________________________________________
        
       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
        
       Author : m0dE
       Score  : 152 points
       Date   : 2023-12-20 07:38 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | beeman wrote:
       | This looks really cool! Thanks for sharing!
        
       | Kiro wrote:
       | I wasn't expecting this to be modd.io when I saw the title. It's
       | a popular framework/platform for building IO games.
        
         | ianlevesque wrote:
         | I play a lot of games and sold some in the past, but I've never
         | heard the term. What is an IO game?
        
           | 542458 wrote:
           | I believe it refers to casual multiplayer browser-based
           | games.
        
           | xmprt wrote:
           | IO 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.
        
       | deadbabe wrote:
       | I 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 wrote:
         | I 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 wrote:
           | You 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 wrote:
             | I see. That makes sense.
        
             | nine_k wrote:
             | Node 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
        
               | moffkalast wrote:
               | There 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 wrote:
               | It isn't trivial to just split up a game into multiple
               | worker threads and keep everything in sync. With Go, it's
               | much easier.
        
               | holografix wrote:
               | Can you expand on the low hanging fruit of splitting a
               | game into multiple goroutines?
               | 
               | What lends itself well to this?
        
               | deadbabe wrote:
               | goroutines
        
         | Kiro wrote:
         | I get the feeling that the bottleneck in most IO games is the
         | IO (no pun intended, the genre name comes from the TLD), which
         | makes Node a good choice.
        
       | ahuhz wrote:
       | Glad to see more open source projects like this out there.
       | Surprised it has under 100 stars on GitHub.
        
         | bitcharmer wrote:
         | Please don't get it the wrong way, this is genuine question.
         | Why is under 100 stars on GitHub surprising?
        
           | moffkalast wrote:
           | It's generally correlated with overall popularity would be my
           | guess?
        
         | pkoird wrote:
         | Perhaps because they just made it public?
        
       | johnwheeler wrote:
       | It 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 wrote:
         | A 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.
        
       | dimgl wrote:
       | Impressive project, thanks for sharing!
        
       | ianbicking wrote:
       | I'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?
        
       | Phristov wrote:
       | I'm surprised it's not written in Rust :thinking:
        
       | pipeline_peak wrote:
       | Unless it's as advanced as Unity, is it possible to even sell an
       | engine these days?
       | 
       | Something like this is expected to be free
        
         | kyleyeats wrote:
         | With 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.
        
         | pkoird wrote:
         | This 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 wrote:
           | I 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).
           | 
           | There's a world of JS game engines, more advanced, for free
           | today 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
           | tool that makes Stick RPG clones isn't very profitiable.
        
       | holografix wrote:
       | This is a fantastic project to open source, thank you so much!
       | I'm going to be pouring over the code during the EOY holidays!
        
       | bsdpufferfish wrote:
       | A 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.
        
       | nathandaly wrote:
       | The 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
        
       | posting_mess wrote:
       | What'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)
        
       ___________________________________________________________________
       (page generated 2023-12-21 23:00 UTC)