[HN Gopher] Server-rendered multiplayer games with Lua (no clien...
       ___________________________________________________________________
        
       Server-rendered multiplayer games with Lua (no client code)
        
       Author : brunovcosta
       Score  : 29 points
       Date   : 2026-01-04 19:54 UTC (3 hours ago)
        
 (HTM) web link (cleoselene.com)
 (TXT) w3m dump (cleoselene.com)
        
       | brunovcosta wrote:
       | Hey folks -- here's a small experiment I hacked together over the
       | weekend:
       | 
       | https://cleoselene.com/
       | 
       | In short, it's a way to build multiplayer games with no client-
       | side game logic. Everything is rendered on the server, and the
       | game itself is written as simple Lua scripts.
       | 
       | I built this to explore a few gamedev ideas I've been thinking
       | about while working on Abstra: - Writing multiplayer games as if
       | they were single-player (no client/server complexity) - Streaming
       | game primitives instead of pixels, which should be much lighter -
       | Server-side rendering makes cheating basically impossible - Game
       | secrets never leave the server
       | 
       | This isn't meant to be a commercial project -- it's just for fun
       | and experimentation for now.
       | 
       | If you want to try it out, grab a few friends and play here:
       | https://cleoselene.com/astro-maze/
        
         | kibbi wrote:
         | Interesting approach! I've thought about a similar method after
         | reading about the PLATO platform.
         | 
         | When playing astro-maze, the delay is noticeable, and in a 2D
         | action game such delays are especially apparent. Games that
         | don't rely on tight real-time input might perform better. (I'm
         | connecting from Europe, though.)
         | 
         | If you add support for drawing from images (such as
         | spritesheets or tilesheets) in the future, and the client
         | stores those images and sounds locally, the entire screen could
         | be drawn from these assets, so no pixel data would need to be
         | transferred, only commands like "draw tile 56 at position (x,
         | y)."
         | 
         | (By the way, opening abstra.io in a German-language browser
         | leads to https://www.abstra.io/deundefined which shows a 404
         | error.)
        
       | ghxst wrote:
       | IMO eliminating as much client side authority as possible is a
       | very good foundation for MMOs where the latency is acceptable or
       | factored into all aspects of the game (looking at old school
       | runescape as an example). Very cool project!
        
       | duduzeta wrote:
       | Cool!! I'm trying to test here, but other ships keep attacking me
       | and I don't know how to shoot :s
        
         | brunovcosta wrote:
         | Amazing! hahaha.. Tip: Arrows + Z (shoot)
        
           | kibbi wrote:
           | In my case, Z for shooting works only rarely. Usually nothing
           | happens. How does the game code query the key?
        
       | cmrdporcupine wrote:
       | _" We stream drawing primitives instead of heavy pixels or
       | complex state objects."_
       | 
       | This is cool ... but I suspect just pushing video frames like
       | Stadia etc did is just as efficient these days and a lot less
       | complicated to implement and no special client really needed.
       | Decent compression, and hardware decode on almost every machine,
       | hardware encode possible on the server side, and excellent
       | browser support.
        
       | fionic wrote:
       | Cool! Besides the productizing or making a framework, I'm trying
       | to understand if this is different than the elementary idea
       | (which probably every game dev who worked on game networking has
       | tinkered with) of sending inputs to the server and then sending
       | player positions back to all the clients...? I think even smaller
       | footprint would be position: two or three floats x,y(,z) instead
       | of shapes too? Anyway this is always fine for very low latency
       | environments where client side prediction, lag comp etc would not
       | be required. Thanks for sharing, I might give it a try! sorry if
       | I'm missing something.
        
       | allthatineed wrote:
       | BYOND/Space Station 13 is built upon this model.
       | 
       | Sprite sheets are png with ztxt blocks with meta/frame info and a
       | list of drawing operations to be done to construct vsprites based
       | on any runtime server side operations done on the sprites.
       | 
       | There is limited client coding via popup Web view windows and a
       | few js apis back to the client but nothing you can build too much
       | off of.
       | 
       | (SS14 brings this model to an open source c# framework called The
       | Robust Engine but has some limitations related to maintainer
       | power tripping over who should be allowed to use their open
       | source project.)
        
       ___________________________________________________________________
       (page generated 2026-01-04 23:00 UTC)