Skip to content

Instantly share code, notes, and snippets.

@mcgarrah
Last active August 15, 2025 14:31
Show Gist options
  • Save mcgarrah/d736755b3fd5bada6e6f2bdab7b323c3 to your computer and use it in GitHub Desktop.
Save mcgarrah/d736755b3fd5bada6e6f2bdab7b323c3 to your computer and use it in GitHub Desktop.
Star Voyager Notes

Star Voyager Notes

Overview

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/

How to run on Debian

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

Convert from SDL2 to SDL3

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/

Conversion

Converting from SDL2 to SDL3, or the most current version, involves several key steps and considerations:

Understanding SDL3 API Changes:

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).

Migration Process

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment