Star Voyager is a space combat and exploration game that utilizes the SDL library for portability. It's set in the Star Trek universe and can be played in both single-player and multiplayer modes. The game, currently at version 0.4.4, should compile on any platform that supports SDL and Standard C. The game's code is licensed under the BSD license with LGPL-ed components.
In Star Voyager, the player's primary goal is to eliminate enemy fleets before they can surround and destroy the CosmoStation Noah, a transport ship full of planetary refugees. Players can also visit planets to find engine and weapon upgrades, seek repairs at space stations, and navigate asteroid fields and black holes.
http://starvoyager.bluesky.me.uk/
Availability: Star Voyager binaries are available in Debian packages. The source code is also accessible via GitHub.
https://salsa.debian.org/games-team/starvoyager
https://packages.debian.org/sid/games/starvoyager
SV is running on a legacy SDLv2 version and converting to the current release of SDLv3 would streamline a port to Win32 and other platforms. On Debian, that would also alleviate the need for the legacy version of SDLv2.
https://github.com/solbu/starvoyager/commits/master/
Converting from SDL2 to SDL3, or the most current version, involves several key steps and considerations:
Header Inclusion:
SDL3 headers are now included as #include <SDL3/SDL.h>
.
Function and Symbol Renaming:
Many functions and symbols have been renamed for clarity and consistency. Tools like rename_symbols.py
(provided with SDL3) can assist in automating this.
API Changes in Specific Modules:
Modules like SDL_image, SDL_mixer, SDL_net, and SDL_ttf also have updated include paths and potential API changes within their specific functionalities.
Removed Features:
Some features and APIs present in SDL2 have been removed in SDL3 (e.g., the gesture API, OpenGLES 1 backend support).
Consult the Migration Guide:
The official SDL3 documentation includes a detailed README-migration.md
(https://wiki.libsdl.org/SDL3/README-migration) guide that outlines all API changes and provides guidance for porting.
Utilize Migration Tools:
rename_symbols.py
: A Python script to automatically rename SDL2 functions to their SDL3 counterparts.rename_headers.py
: A Python script to rename SDL2 headers to SDL3 headers.- Semantic Patching (e.g., Coccinelle): Tools like Coccinelle can be used with provided semantic patches (e.g., SDL_migration.cocci) to automate more complex code transformations.
Address Specific Module Changes:
If your application uses SDL_image, SDL_mixer, etc., refer to their respective documentation for migration details.
Adjust Build System:
Update your build system (e.g., CMake, Makefiles) to link against SDL3 and include the correct header paths.