OpenCE README

The project's README from github.com/OpenCommunityEdition/OpenCE. As one markdown file: README.md.

Halo: Combat Evolved for Linux, Windows and Android

Join our Discord

This project is a port of the Halo: Combat Evolved decompilation to Linux, Windows and Android. The decompilation is of the Xbox build 2342 (cachebeta.exe, SHA-256 4cc87b45f721270392a96f1674ed2b5cd4a7bb4355faeab4531d1cf1884d9520).

The game on Linux

The port starts from the decompilation of bnunu/halo-1. That project is a fork of punpckhdq/halo.

Download

GitHub Actions builds the game for each commit. These links download the builds of the latest release:

Platform Release Debug
Linux halo-linux-release.zip halo-linux-debug.zip
Windows halo-windows-release.zip halo-windows-debug.zip
Android halo-android-release.zip halo-android-debug.zip

Use the release build to play. The debug build stops at the first failed assertion and writes it to the log. Use the debug build to find and report problems.

The game updates itself. At start-up it looks for a newer release, and asks if you want to install it. Refer to "Updates" in port/linux/README.md.

Each build of the main branch that passes on all three platforms is a new release. The Releases page keeps the last five releases. If the latest build has a problem, get an older build from that page.

Game data

The port does not include the game data. Download an Xbox disc image (.xiso or .iso) of Halo: Combat Evolved. All versions of the game operate. The maps of the European (PAL) version were made for a slower console. The port changes them to play as the North American (NTSC) maps do, so players of the two versions can play together.

  1. Start the game.
  2. At the first start, the game asks for the disc image. Select it.
  3. The game extracts the maps/ folder. Then the game starts.

On Linux and Windows, the game puts maps/ next to the executable. On Android, copy the disc image to the phone first. The app puts maps/ in its data folder. Refer to port/android/README.md.

Platforms

Each platform has its own instructions:

Platform Instructions
Linux (32-bit x86 executable, OpenGL 4.5, SDL3) port/linux/README.md
Windows (32-bit x86 executable, OpenGL 4.5, SDL3) port/windows/README.md
Android (arm64 app, OpenGL ES 3, SDL3) port/android/README.md

The Linux README also gives the controls, the settings and the multiplayer functions. These are almost the same on all platforms.

Multiplayer

The game can play system link games on a local network and on the internet:

Build the game

You do not need the Xbox SDK. The port supplies the SDK declarations that the game uses. Refer to port/include/xdk.

To build the game:

  1. Install Python and ninja.
  2. Install the tools for your platform. Refer to the README for the platform.
  3. In the root folder of the repository, enter python configure.py.
  4. Enter ninja with the target for the platform:
Target Result
ninja linux build/linux/halo
ninja windows (on Windows) build/windows/halo.exe and SDL3.dll
ninja android_apk port/android/app/build/outputs/apk/debug/app-debug.apk

If you enter ninja without a target, ninja builds the game for the computer that you use.

tools/ci_build.py makes the same builds as GitHub Actions. For example, enter python tools/ci_build.py linux release.

Build options

Give these options to configure.py:

Option Result
(none) A debug build. A failed assertion stops the game.
--release A release build. The game does not examine assertions, as in the retail game.
--portable The Linux and Windows builds operate on all x86-64 processors. Use this option for builds that you give to other persons.
--lto=thin, --lto=off Less link-time optimization. The link is faster.
--pgo=off No profile-guided optimization.
--pgo=train Records a new optimization profile. Refer to "Optimization profiles".

Without --portable, the Linux and Windows builds use all the instructions of the processor that builds them (-march=native). Such a build does not always start on a different computer.

Optimization profiles

The builds use profiles of the game to optimize the code:

The profiles need clang 22 or later. With an older clang, the builds do not use the profiles.

To record a new profile:

  1. Delete the profile.
  2. Enter python configure.py --pgo=train.
  3. Enter ninja linux or ninja windows.

The build then plays the main menu and the first minute of each campaign level. This procedure continues for approximately 15 minutes. The game data must be in assets/.

OpenCE (OpenCommunityEdition/OpenCE)

Searching Database…

1.7K ·GitHub
这是什么?OpenCE 是《光环:战斗进化》(Halo: Combat Evolved)反编译版(最初针对初代 Xbox)向 Linux、Windows 和 Android 的移植,让游戏能在这些平台上原生运行。
这是完整游戏还是只是一个兼容层?它是从反编译的 Xbox 代码重建为各平台原生可执行文件的真实游戏引擎;你仍需另行提供自己的游戏数据副本。
怎么让它跑起来?从 GitHub Actions/Releases 下载适合你平台的预构建 release 版本并运行,首次启动时会提示你选择 Xbox 光盘镜像,游戏才能提取 maps 文件夹。
除了移植版本身还需要什么?你需要一份《光环:战斗进化》的 Xbox 光盘镜像(.xiso 或 .iso)来提供游戏数据;从源码构建还需要 Python、ninja 和特定平台的工具。
我的欧洲(PAL)版光盘能和美版一样用吗?可以,所有版本都能用,但移植版会把 PAL 地图转换为与速度更快的北美(NTSC)地图一致,这样两个版本的玩家可以在线一起游玩。
它在任何 Linux 或 Windows 电脑上都能用吗,还是只支持特定芯片?Linux 和 Windows 版本是 32 位 x86 可执行文件;默认针对构建机器的 CPU 优化,可能在其他机器上无法运行,除非用 --portable 选项构建,该选项面向所有 x86-64 处理器。
支持哪些平台,底层各用什么?Linux 和 Windows 以 32 位 x86 可执行文件运行,使用 OpenGL 4.5 和 SDL3;Android 以 arm64 应用运行,使用 OpenGL ES 3 和 SDL3。
多人联机怎么运作,需要专用服务器吗?游戏支持通过局域网或互联网进行系统连接(system link)对战,最多 128 台机器上的 128 名玩家,可以把 Linux、Windows 和 Android 玩家混在一起;通过邀请链接即可加入互联网对局,本项目不需要为此架设服务器。
游戏会自我更新吗?会。启动时会检查是否有更新的版本,并提示自动安装。
release 构建和 debug 构建有什么区别?release 构建用于正常游玩,和零售版游戏一样跳过断言检查;debug 构建则会在第一个断言失败处停止并记录日志,适合用来报告 bug。
What are similar projects?wowdecomp, OpenRCT2, re4, th08, LASRecomp, Wind-Waker-Recomp, iw4L, luanti
Size
64.1 MB
Stars
1.7K
Age
23d
Commits · 90 Days