[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)