Naev is an open source 2d action/rpg space game that combines elements from the action, rpg and simulation genres. https://naev.org
  • C 44.7%
  • Lua 40.1%
  • Rust 6.5%
  • GLSL 3.7%
  • Python 2.8%
  • Other 1.8%
Find a file
Edgar Simo-Serra b74627f64f
Some checks failed
CI / Package_Source (push) Successful in 4m8s
CI / Darwin_Compile_Naev (aarch64, macos_aarch64_cross_osxcross.ini, naev-macos) (push) Failing after 10s
CI / Linux_Compile_Naev (linux_steamruntime.ini, naev-steamruntime, x86_64-unknown-linux-gnu, default) (push) Failing after 11s
CI / Darwin_Compile_Naev (x86_64, macos_cross_osxcross.ini, naev-macos) (push) Failing after 9s
CI / Windows_Compile_Naev (windows_cross_mingw.ini, naev-windows, x86_64-pc-windows-gnu) (push) Successful in 23m20s
CI / Documentation (push) Has been skipped
Removed more obsolete / unnecessary code.
2026-02-22 22:03:27 +09:00
.forgejo ci: Remove --prerelease from release uploads 2026-02-21 23:05:26 -05:00
.github Added github Readme pointing to the right repo. 2025-12-19 14:08:33 +09:00
assets@d664dbb2d9 Use fancy font for textoverlays and load screens. 2026-02-22 17:49:22 +09:00
dat Just go full monospace for bottom bar. 2026-02-22 20:36:33 +09:00
docs earth -> Earth 2026-02-18 11:15:56 +09:00
extras Update submodule. 2026-02-10 17:06:13 +09:00
po Removed more obsolete / unnecessary code. 2026-02-22 22:03:27 +09:00
src Removed more obsolete / unnecessary code. 2026-02-22 22:03:27 +09:00
subprojects nuked c impl of doxtractor, redirected to doxtractor.sh 2025-12-31 20:36:25 +01:00
test Only test Lua in dat, too much generated stuff we have to filter 2025-12-28 20:07:04 +09:00
utils Render triangle. 2026-02-22 10:02:47 +09:00
.clang-format clang-format was bugged and "InConditionalStatements: false" was not 2025-06-12 13:24:26 +09:00
.codespellignore Fixed codespell stuff sneaking into string. 2025-11-25 09:09:17 +09:00
.codespellrc update .codespellrc and .codespellignore 2025-10-17 12:57:52 +02:00
.editorconfig editorconfig: trim training whitespace. 2025-05-16 15:08:40 +09:00
.gitignore update gitignore 2026-02-15 21:41:49 +01:00
.gitmodules Use github until we can solve the ssh key issue. 2026-02-10 15:34:06 +09:00
.luacheckrc Rename dat/time.lua to dat/timedate.lua 2026-02-02 23:45:23 +09:00
.mailmap mailmap is cool. 2022-03-30 12:44:45 +09:00
.pre-commit-config.yaml Change rustfmt to be 3-space tabs. Apply pre-commit to all Rust files. 2026-02-06 21:50:41 +09:00
.u_codespell_unmatch .pre-commit-config.yaml, .codespellignore, .u_codespell_unmatch 2025-10-17 03:16:10 +02:00
build.rs.in Minor code documentation. 2025-07-26 15:09:43 +09:00
Cargo.toml.in Some minor corrections. 2026-02-15 21:16:10 +09:00
Changelog.md Merge branch '0.13.x' 2026-02-21 21:05:44 +09:00
code_of_conduct.md oxfordized *.md 2025-09-19 22:03:00 +02:00
gpl.txt Clarified licensing terms. 2021-01-06 13:31:38 -05:00
LICENSE Update path. 2021-12-26 23:04:51 +09:00
meson.build Fixed time stuff. 2026-02-02 16:20:30 +09:00
meson.py [auto] reindent new pass on manually modified files 2025-08-15 03:49:28 +02:00
meson_options.txt Avoid using genisoimage entirely. 2025-11-26 08:03:03 -05:00
naev.6 Changed links to point to codeberg instead of github. 2025-08-29 21:02:54 +09:00
org.naev.Naev.desktop Run update_metadata.sh 2025-11-03 13:15:12 -05:00
org.naev.Naev.metainfo.xml Bump version to v0.13.3. 2026-01-21 20:05:49 +09:00
Readme.md Nuked a lot of unnecessary or obsolete code. 2026-02-22 21:58:09 +09:00
rustfmt.toml Change rustfmt to be 3-space tabs. Apply pre-commit to all Rust files. 2026-02-06 21:50:41 +09:00

Nightly Release Status CI Status Packaging status Translation Status

NAEV README

Naev Logo

Naev (/nɑ.ɛv/) is an open source 2D space trading and combat game, taking inspiration from the Escape Velocity series, among others.

You pilot a spaceship from a top-down perspective, and are more or less free to do what you want. As the genre name implies, you’re able to trade and engage in combat at will. Beyond that, there’s an ever-growing number of storyline missions, equipment, and ships; Even the galaxy itself grows larger with each release. For the literarily-inclined, there are large amounts of lore accompanying everything from planets to equipment.

Please note that Naev is still actively under development and not complete yet. Although there are a lot of things to do in the game, you will find incomplete or work in progress content as you progress.

1 - Getting Naev

Naev is on steam, itch.io, flathub, many linux distributions and more! If you don't feel up to the task of compiling it yourself, please see the Naev website for different ways to get started playing Naev!

2 - Plugins

Plugins are supported since version 0.10.0, and a plugin manager is built into Naev since 0.13.0 which is accessible from the main menu. If you want to get started making your own, please take a look at the Naev Development Manual (WIP).

3 - Dependencies

Naev's dependencies are intended to be widely available. In addition to a graphics card and driver supporting at least OpenGL 3.3, Naev requires:

  • rust 1.89 or later
  • bindgen 0.72 or later
  • SDL3*
  • libxml2
  • libopus-dev
  • freetype2
  • OpenAL
  • OpenBLAS
  • intltool
  • SuiteSparse*
  • enet*
  • physfs*
  • lua 5.1 / luajit*
  • pcre2*
  • GLPK*
  • libunibreak*
  • cmark*
  • pyyaml (compilation only)
  • git-lfs (compilation only)

Dependencies marked with * will use subprojects if not found in the host system.

3.1 Details for your OS

The Naev wiki has more detailed compilation steps, and lists of packages to install, for several operating systems and Linux distros:

4 - Compiling Naev

4.1 Cloning and Submodules

It is recommended to first run git lfs install, so that lfs is used automatically in the checkout, however, it can also be run manually instead.

First clone this repo with whatever method you wish. Next, Naev requires the artwork submodule to run from git. You can check out the submodules from the cloned repository with:

git submodule update --init --recursive

Note that git submodule update has to be run every time you git pull to stay up to date. This can also be done automatically (highly recommended) by setting the following configuration:

git config submodule.recurse true

If you did not run git lfs install or are getting errors about missing assets, you can make sure that they are checked out with git lfs using the following commands:

cd assets/
git lfs fetch
git lfs checkout
cd ..

4.2 Compilation

Run:

meson setup builddir .
cd builddir
meson compile
./naev.py

If you need special settings you can run meson configure in your build directory to see a list of all available options.

For installation, try: meson configure --buildtype=release -Db_lto=true

For Building a Windows Installer, try adding: --prefix="$(pwd)"/build/windows --bindir=. -Dndata_path=. -Dinstaller=true. Check the dist folder in your build directory

For Building a macOS DMG, try adding: --prefix="$(pwd)"/build/dist/Naev.app --bindir=Contents/MacOS -Dndata_path=Contents/Resources -Dinstaller=true. Check the dist folder in your build directory

For normal development, try adding: --buildtype=debug -Db_sanitize=address (adding -Db_lundef=false if compiling with Clang, substituting -Ddebug_arrays=true for -Db_sanitize=... on Windows if you can't use Clang). (If your system supports debuginfod, also add set debuginfod enabled on to a file named .gdbinit in your home directory!)

For faster debug builds (but harder to trace with gdb/lldb), try --buildtype=debugoptimized -Db_lto=true -Db_lto_mode=thin in place of the corresponding values above.

Up-to-date build instructions

Check out the compilation page in our wiki

4.3 Running Naev

You can run Naev directly from the git repository using the naev.py script which will be generated in the build directory. This script will automatically set up all the data paths for running Naev. Make sure the art assets are checked out and up to date as mentioned in the Updating Art Assets section below.

4.4 Installation

Naev currently supports meson install which will install everything that is needed.

If you wish to create a .desktop for your desktop environment, logos from 16x16 to 256x256 can be found in extras/logos/.

5 - Updating Art Assets

Art assets are partially stored in the naev-artwork repository and sometimes are updated. For that reason, it is recommended to periodically update the submodules with the following command.

git submodule update --init --recursive

You can also set this to be done automatically on git pull with the following command:

git config submodule.recurse true

Afterwards, every time you perform a git pull, it will also update the artwork submodule.

6 - Contributing

To get in touch, you can visit naev.org which links to the project's Discord chat and Wiki. There are also Lua API docs there.

Before committing, it's advisable to install pre-commit 3.2 or newer, and run pre-commit install from the Naev git directory root. pre-commit will run automatically when commiting files, but can also be run manually with pre-commit run -a. The dev team is teaching pre-commit to handle various fussy and forgettable steps.

Naev uses Oxford Spelling for all text in the game.

6.1 Online Translation

Naev is incorporated into Weblate on Codeberg. You can easily translate directly with a web interface to your chosen language from Naev's project page. New languages have to be added manually, please open an issue if you want to translate Naev to a new language.

Some translation notes:

  • Do not translate formatting strings. Example: Hello {player}! would be translated to Spanish as Hola {player}!
  • Do not translate the link part in markdown links. Example: [mechanics](mechanics) should be translated as [TRANSLATION](mechanics)
  • Use phonetical translations for names of places. Example: the space object Dust should be translated phonetically and not semantically. Exceptions to this rule are compound names such as stations, for example Violin Monastery should have Violin translated phonetically and Monastery translated semantically.

6.2 Translation for Developers

Naev's translation is handled with gettext. (It's custom, but C and Lua code can use the conventional _() for gettext and N_() for gettext-noop, as well as n_() for ngettext. Rust uses gettext(), ngettext(), and the likes instead.)

When content like missions is updated, new translatable text must be made available to Weblate. The key manual step is to regenerate the po/naev.pot file (meson compile naev-pot in the build dir) and commit it. To avoid merge conflicts, it is recommended to not include updated po/naev.pot in a pull request that isn't exclusively about translation.

Under the hood: po/POTFILES.in is a catalogue of files that may have translatable text. We keep it synced using pre-commit hooks (or manually: meson compile potfiles). The naev-pot Meson target is built using standard xgettext, plus additional rules. (Rules for AUTHORS are in po/update-po.sh. Rules for XML data files are in po/its/translation.its.) Individual translations can be updated via meson compile naev-update-po, but don't do this without a good reason, because Weblate does the same job more carefully.

7 - Crashes and Problems

Please take a look at the FAQ before submitting a new bug report, as it covers a number of common gameplay questions and common issues.

If Naev is crashing during gameplay, please file a bug report after reading this page.

8 - Licence

Naev is open source software compatible with the Debian Free Software Guidelines licenced under the GNU General Public Licence version 3 or later, with some exceptions. Please refer to the LICENSE file for more in-depth licencing details.