Starshatter: The Open Source Project
Dev Update - January 2022

Published on 2022-01-30 20:00:00+01:00, last modified on 2022-04-08 19:10+02:00

Few months ago I created a fork of Starshatter Open, and because it appears to be the only (semi-) active one, and also because I already have a platform on which I share my pointless thoughts; I thought that I'll do exactly that.

Starshatter was never a popular game and these days the community is even more dead. That's mostly because there's only few of us and as far as I know I'm the only active developer that gives it some time once a few months.

State of My Project

The goals of my work on Starshatter Open are:

Order is arbitrary. So far the first goal has been partially accomplished. I cleaned up the whole building process and moved build configuration generation to CMake. It worked fined for everything but Magic2. It was left behind because it's based on MFC and doing anything with it is annoying. Nonetheless, it's on the to-do list.

During the build system change I cleaned up duplicates and, let's call them "wild", parts of the solutions. For Stars45 it meant that I merged nGenEx and Parser sub-projects into it. They were strongly related and they were included via direct path anyway.

All third-party code has been properly checked out from their repositories and integrated into main CMake tree. In the long run, I'd like to separate them into repositories and install into a common root for building, but for now this will work. Opcode has also been updated but I did it all manually. First off I had to find the correct version of it. Then I created CMakeLists for it myself. Oh, I mean both Opcodes, because apparently the source was doubled for some reason. One was used as headers for Stars45 the other one was built. Both were incredibly broken.

After I was able to build the project consistently with MSVC and MSYS2/MinGW I took a break. Recently, I fixed some paths, formatting and other minor things and figured out that I probably should try to build it on Linux with MinGW. Turns out that after all path updates it worked out just fine and it runs under Wine just right.

The next goal is the biggest one and it's hard to divide it into smaller ones. Of course, I mean port out of DirectX. Starshatter is decently structured and most of graphics code is isolated in its own part, but there are some exceptions. And while DirectX is quite OK, the windows headers are used all over the place. This might be a better target for now.

We'll see. If you want to contribute and you don't know where, hit me up.

Useful Links

In case this is all new to you I suggest to see the Negative-10's site.


Here are two screenshots of Starshatter running in windowed mode with Wine on my Linux machine. In the first one I forgot to copy the language pack into the directory, so the text is all messed up.

forgot about language pack this time I didn't