Starshatter: The Open Source Project
Dev Update - September 2022
Published on 2022-09-24 16:40:00+02:00
The time has come to write a dev update of the Starshatter project. It's been some time and there are some news and
some ideas that need a little more time to hatch but are good enough to share with you all to potentially get some
feedback. Let's start.
This is a regular development release with mostly internal changes. The major change directly aimed at players is
that vox and music data is now included in the project distribution. Of course, this means these resources have been
integrated into the building and packaging process.
Download it from landing page or
web FTP index.
Majority of development work was done around the archives and dat files. The module responsible for reading
and writing them has been rewritten pretty much from scratch while preserving backwards-compatibility. The
Datafile utility has been replaced by new dat utility which has somewhat different CLI. New implementation
is cross platform (to an extent; endianness) and compiles on Linux making it now possible to package game without Wine
(although it's not yet implemented this way).
There were also some minor fixes done here and there, check out git
repository for detailed information.
In an effort to get community together and overall respond to people quicker than through my sporadic visits to HLP
or SSC, I created a Discord server for the project: Starshatter: The Open Source
Make sure to say hi! Any bug reports, questions, feature requests are welcome.
Future Development Directions
I'm continuing to aim towards the same goal as before: get Starshatter working natively with OpenGL and on Linux. The
major milestone is getting dedicated server to work on Linux and completely without linking to any external graphics
library. However, as I go and touch various parts of code, I obviously see more and more spots which I want to change.
Here are some project suggestions for those who are interested in contributing:
- Rewrite Magic editor directly in game engine using game GUI and renderer.
- Implement OGG loading from memory or archive, to allow loading them from dat archives.
- Extract format loading methods from DataLoader to minimize DataLoader coupling with everything.
- Remove any of the singletons.
- Introduce namespaces and remove prefixes/suffixes from sources that were renamed to avoid conflicts.
- Extract any remaining third-party sources from StarsEx.
- Fix content.dat loading in initial startup.
- Fix MusicDirector choking at startup.
Regarding issue tracking - I don't feel a need for it just yet. I prefer direct communication and resolving problems
right away. If there will be requests to get it done and they will seem reasonable at that time, we'll figure out
Ideas Needing Feedback
There are two ideas that are patiently waiting for their turn: Starshatter hackathon and multiplayer war games.
Since, they are quite similar I usually describe them as: scheduled periodical online meetings focused on Starshatter
project. First one is obviously to have development activity spikes and have some fun time together. The other one is
just for fun. After all, this is about a game. Now, I'm not doing anything about these just yet. If you find them
interesting or want to contribute to them, please let me know.