Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 40 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@

[![GitHub release](https://img.shields.io/github/release/OoliteProject/Oolite.svg)](https://github.com/OoliteProject/Oolite/releases/latest)


| Windows | Linux | OSX |
|---------------------|---------------------|----------------|
| [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/Oolite-1.90_x64.exe.svg)](https://github.com/OoliteProject/oolite/releases/latest) | [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/oolite-1.90.linux-x86_64.tgz.svg)](https://github.com/OoliteProject/oolite/releases/latest) | [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/oolite-1.90.zip.svg)](https://github.com/OoliteProject/oolite/releases/latest) |
[![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/Oolite-1.90_x86.exe.svg)](https://github.com/OoliteProject/oolite/releases/latest)| [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/oolite-1.90.linux-x86.tgz.svg)](https://github.com/OoliteProject/oolite/releases/latest) | [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/Oolite-1.90-Mac-TestRelease.zip.svg)](https://github.com/OoliteProject/oolite/releases/latest) |
| | [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/oolite-1.90-test.linux-x86_64.tgz.svg)](https://github.com/OoliteProject/oolite/releases/latest) | |
| | [![Github release](https://img.shields.io/github/downloads/OoliteProject/Oolite/latest/oolite-1.90-test.linux-x86.tgz.svg)](https://github.com/OoliteProject/oolite/releases/latest) | |


![Oolite Screenshot](https://addons.oolite.space/i/gallery/oxp/large/another_commander-210210_LeavingCoriolisAgain.png)

Oolite can be heavily customized via expansions. These modify the gameplay, add ships, improve graphics - the possibilities are almost endless:
Expand All @@ -26,20 +24,22 @@ You can download the latest version from [here](https://github.com/OoliteProject

### Windows

The Windows NSIS installer is named OoliteInstall-XXX-win.exe where XXX is a version number.
The Windows NSIS installer is named OoliteInstall-XXX-win.exe where XXX is a version number.
Double click the downloaded file to run the installer.

### Linux

Linux has Flatpak and AppImage versions. The Flatpak is named space.oolite.Oolite_XXX.flatpak
Linux has Flatpak and AppImage versions. The Flatpak is named space.oolite.Oolite_XXX.flatpak
where XXX is a version number. Many Linux package managers support Flatpak so you should be able to
double click the downloaded file to install it.

The AppImage is named Oolite_XXX-x86_64.AppImage where XXX is a version number. Download this
file to where you would like it stored, make it executable and run, for example by typing
The AppImage is named Oolite_XXX-x86_64.AppImage where XXX is a version number. Download this
file to where you would like it stored, make it executable and run, for example by typing

chmod +x Oolite_XXX-x86_64.AppImage
./Oolite_XXX-x86_64.AppImage
```bash
chmod +x Oolite_XXX-x86_64.AppImage
./Oolite_XXX-x86_64.AppImage
```

## Playing Oolite

Expand All @@ -49,53 +49,63 @@ For more information, see [oolite.space](http://www.oolite.space/) and
## Building from Source

We welcome developers to work on Oolite! If you wish to build the project from source, please follow
the instructions below. Note that the scripts require sudo for activities like installing dependent
libraries built from source and for installing packages on some Linux distros. If you run into
difficulties, you can seek help on the [Oolite Bulletin Board](https://bb.oolite.space/).
the instructions below. Note that the scripts require sudo for activities like installing dependent
libraries built from source and for installing packages on some Linux distros. If you run into
difficulties, you can seek help on the [Oolite Bulletin Board](https://bb.oolite.space/).

### Git

The Oolite source is available from GitHub. The first step is to install git if you don't already
have it installed as it is required to obtain and build Oolite. With Git installed, check out the
have it installed as it is required to obtain and build Oolite. With Git installed, check out the
Oolite repository and its submodules:

```bash
git clone --filter=blob:none --recurse-submodules https://github.com/OoliteProject/oolite.git
cd oolite
```

### Windows

After installing git and checking out the Oolite repository and its submodules, double click `Run Me`
in ShellScripts/Windows or run in a command prompt:

```cmd
ShellScripts\Windows\setup.cmd
```

This will install MSYS2 which provides various MinGW environments. You will need to enter the
install location for MSYS2 and whether you want the Clang build (recommended) or GCC build.
This will install MSYS2 which provides various MinGW environments. You will need to enter the
install location for MSYS2 and whether you want the Clang build (recommended) or GCC build.

The Clang build uses the UCRT64 environment, while the GCC build uses the MINGW64 environment.

### Linux
After installing git and checking out the Oolite repository and its submodules, run the following

After installing git and checking out the Oolite repository and its submodules, run the following
to check out the dependencies of Oolite that need to be built from source:

```bash
ShellScripts/Linux/checkout_deps.sh
```

Next run the following to install required packages and build dependencies (you can replace sudo
with other methods that escalate privileges if you prefer):

```bash
sudo ShellScripts/Linux/install_deps_root.sh
```

### Building Oolite

Next run this in your bash or MSYS2 prompt to build Oolite:

```bash
ShellScripts/common/build_oolite.sh release
```

The completed build (executable and games files) can be found in the Oolite.app directory.

Subsequently, you can clean and build as follows:

```bash
make -f Makefile clean
make -f Makefile release -j$(nproc)
Expand All @@ -109,48 +119,51 @@ Other targets are release-deployment for a production release and release-snapsh

### Other Linux Make Targets

This target builds an AppImage for testing which can be found in build:
This target builds an AppImage for testing which can be found in build:

```bash
make -f Makefile pkg-appimage -j$(nproc)
```

The target pkg-appimage-deployment is the production release, while pkg-appimage-snapshot is for debugging.

This target builds a Flatpak which can be found in build:

```bash
make -f Makefile pkg-flatpak -j$(nproc)
```

### Mac OS
Intel-based Macs can run old builds of Oolite, but current Macs are unsupported. It is hoped that they
can be supported in future.

Intel-based Macs can run old builds of Oolite, but current Macs are unsupported. It is hoped that they can be supported in future.

### Objective-C

Oolite is written in Objective-C although there is also some C and C++ code in the codebase. It was
originally coded on Mac, but was ported to Windows and Linux by way of the GNUstep runtime which
provides a similar API to what is available on Mac. Objective-C is supported by modern IDEs like
CLion and Visual Studio Code. The language can be easily picked up by programmers familiar with C
or C++ with which it is interoperable.
Oolite is written in Objective-C although there is also some C and C++ code in the codebase. It was
originally coded on Mac, but was ported to Windows and Linux by way of the GNUstep runtime which
provides a similar API to what is available on Mac. Objective-C is supported by modern IDEs like
CLion and Visual Studio Code. The language can be easily picked up by programmers familiar with C
or C++ with which it is interoperable.

### Troubleshooting

- If you get errors like `fatal error: jsapi.h: No such file or directory`, there was probably an issue with checking
out the submodules.
- If you get errors like `fatal error: jsapi.h: No such file or directory`, there was probably an issue with checking out the submodules.

- If you can't see any textures, try deleting the following files, and compile again although these are already excluded from modern builds.

- If you can't see any textures, try deleting the following files, and compile again although these are
already excluded from modern builds.
```bash
rm deps/Linux-deps/include/png.h
rm deps/Linux-deps/include/pngconf.h
```

- If you get compiler errors, you can try compiling with:

```bash
make -f Makefile release OBJCFLAGS="-fobjc-exceptions -Wno-format-security" -j$(nproc)
```

## Contents of repository

Oolite for all platforms can be built from this repository. Here is a quick
guide to the source tree.

Expand Down Expand Up @@ -181,4 +194,3 @@ guide to the source tree.
- **SDL**: Files that are only compiled for platforms that use SDL
- **tests**: A mixed bag of test cases for manual testing and ad-hoc code tests.
- **tools**: Various tools for preparing files, builds, releases etc.