You are browsing as a guest. Sign up (or log in) to start making projects!

5h 58m 4s logged

MODS!

How I integrated mod support into the server (I’m very excited)

1. Why so many hours?

Adding mods would seem a fairly easy task, regarding that I had already built a mod launcher that supports CLI. Most of that time was spent debugging why the server image stopped immediately after starting.

RULE NUMBER 1: Learn from my mistakes, always check if your entrypoint process continues, or if it exits.

Turns out, my CLI app spawned a process… And exited! Which means that no matter what else was running, since the main container process no longer exists, the whole container shuts down.

The solution was to monitor the container’s SIGTERM/SIGINT signals that are handed upon stopping, and only THEN kill the RedeeMOD task. Otherwise, keeping it alive is necessary.

2. How did I actually add modding?

That was simple. I exchanged the executable from base UT99 server binary to RedeeMOD’s CLI and limited Python to disallow exiting early.

RedeeMOD handles everything natively, making me only supply the mod folders and nothing more.


The server runs, there’s just one annoying bug, but I believe it’s an issue in the executable itself. Using open {map_name} through server console instead of servertravel {map_name}?game=BotPack.{game_type} makes the whole server throw a segmentation fault and require a manual restart.

And the web admin panel is quite poor in terms of functionality. Some time in the future I might write an updated web panel and try to get a PR merged to OldUnreal’s upstream, but that’s not a priority for now.

Other than that, I’m feeling confident, and no more major overhauls await. Just the integration of GitHub actions for automated container builds, and some automation stuff (like pre-commit hooks).

0
46

Comments 0

No comments yet. Be the first!