Duke4.net Forums: NetDuke32 - Enhanced Duke3D Netplay! - Duke4.net Forums

Jump to content

  • 5 Pages +
  • « First
  • 3
  • 4
  • 5
  • You cannot start a new topic
  • You cannot reply to this topic

NetDuke32 - Enhanced Duke3D Netplay!  "Netplay-centric EDuke32 fork, the successor to EDuke32-OldMP."

User is offline   rstrube 

#121

Hi everyone,

I've been working on a "pseudo" NetDuke32 server that runs within docker. I have it working quite well on my headless Linux x64 box. You can check out everything here: https://github.com/r...2-docker-server

I call it a "psuedo" server, because the server itself will have a player character in game, and you can't simply just run it 24/7 and accept incoming player connections.

What this is
  • It's a way of standing up a "server" on a piece of infrastructure that is accessible via the public internet. You could put this on your own hardware that is accessible via a WAN IP, or on hardware hosted in the cloud on AWS / Azure, etc.
  • This might make it a bit easier for your friends to connect, for example my server has a static public IP address that I can give out, it will never change, etc.
  • It's an easy way to start NetDuke32 for multiplayer without needing to memorize all the command line switches. The docker-compose file exposes some friendly env vars that let you set multiplayer mode, number of players, level etc.


What this is not
  • It's not a true dedicated server because NetDuke32 uses the older lockstep networking model.
  • This means you have to start the "server" on-demand when you want to play with your friends, and then each of you can join it via your own instance of NetDuke32.
  • The server can't just run 24/7 and accept new connections, again you have to coordinate starting it with your friends.



Known quirks of a headless host:
Because the host is a real, participating player rather than invisible infrastructure, a few things behave differently than you might expect from a typical game server:

  • The "server" is the "host/master" for the lockstep networking. This means that each real player is a "client/slave".
  • The host's character will consume a player slot. Given everything that has already been stated, this might be obvious. The end result is that you have to +1 to the player count. E.g. if you want to play with 4 of your friends, you'll need to start the server with support for 5 total players.
  • The host's character does not respawn after dying. In Dukematch, this means it's technically possible for someone to score a single kill against the host's character early on — but after that, the host stays dead and can't be fragged again for the rest of the match.
  • In Coop, level transitions don't strictly wait on the host. The game does wait for player input before progressing to the next level, but if the host (whose character is unattended) doesn't provide any, the level eventually advances anyway after a timeout, without requiring host input.


Note: I am using this NY00123's release [NetDuke32 r-11589 (2024-07-26)] as the basis for the Docker image: https://voidpoint.io...1.2.1-345003a8d
I noticed that this is the same release that's currently bundled in the NetDuke32 Complete Fun Pack (2025-04-03) [NetDuke32 r-11589 (2024-07-26)]

I'm hoping other folks might find this useful!
0

Share this topic:


  • 5 Pages +
  • « First
  • 3
  • 4
  • 5
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options