openmohaa/README.md

248 lines
11 KiB
Markdown
Raw Normal View History

2023-02-03 18:48:42 +01:00
# OpenMoHAA
2023-07-06 18:32:14 +02:00
![Build](https://github.com/openmoh/openmohaa/actions/workflows/build-cmake.yml/badge.svg?branch=main) [![Release](https://img.shields.io/github/v/release/openmoh/openmohaa)](https://github.com/openmoh/openmohaa/releases) [![Downloads](https://img.shields.io/github/downloads/openmoh/openmohaa/total)](https://github.com/openmoh/openmohaa/releases)
![License](https://img.shields.io/github/license/openmoh/openmohaa) ![Commits](https://img.shields.io/github/commit-activity/t/openmoh/openmohaa)
![Discord](https://img.shields.io/discord/596049712579215361?logo=discord&logoColor=white&color=5865F2)
```
/ _ \ _ __ ___ _ __ | \/ |/ _ \| | | | / \ / \
| | | | '_ \ / _ \ '_ \| |\/| | | | | |_| | / _ \ / _ \
| |_| | |_) | __/ | | | | | | |_| | _ |/ ___ \ / ___ \
\___/| .__/ \___|_| |_|_| |_|\___/|_| |_/_/ \_\/_/ \_\
|_|
2023-07-06 18:32:14 +02:00
```
2019-07-03 22:10:46 +02:00
2023-07-06 18:32:14 +02:00
## Current State
2023-12-26 12:14:38 +01:00
### Multiplayer
Multiplayer is almost fully stable. Server admins can already try to use OpenMoHAA to host a mohaa server, and report any bug by creating an [issue](https://github.com/openmoh/openmohaa/issues) on the OpenMoHAA GitHub project.
All game modes including Tug-of-War from Medal of Honor: Spearhead, and Liberation from Medal of Honor: Breakthrough are implemented and are working as intended. Mods like Freeze-Tag are working as well.
### Single-player
The `training` map can be played from start to end. The single-player campaign is not fully functional, but at least AI can breathe, talk, run, and shoot.
2023-08-24 23:20:01 +02:00
## Intro
2023-11-14 18:05:50 +01:00
The main goal of OpenMoHAA is to ensure the future and continuity of **Medal of Honor: Allied Assault**. It has always been a dream in the community to provide patches and security fixes for the game. Thanks to the ioquake3 project, F.A.K.K SDK and other quality tools, OpenMoHAA has already reached more than half of its goal: to create an open-source version of MoH:AA (based on version 2.40) that is fully compatible with the original game (in terms of protocol, assets, and scripts).
2023-08-24 23:20:01 +02:00
2023-07-06 18:32:14 +02:00
## Running
2016-03-27 11:49:47 +02:00
2023-11-14 18:05:50 +01:00
Ensure that you download the binaries compatible with your platform.
### Requirements
You may need to install Microsoft Visual C++ 2015/2017/2019/2022 Redistributable from https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170
### Client
2023-07-06 18:32:14 +02:00
a) extract archive to your MOHAA installation directory.
2023-07-06 18:32:14 +02:00
-or-
2023-06-18 00:38:23 +02:00
2023-08-25 23:25:04 +02:00
b) extract archive somewhere on your hard drive, create a shortcut to openmohaa (or omohaaded), and set the start directory to your MOHAA installation directory.
2023-07-06 18:32:14 +02:00
2023-11-14 18:05:50 +01:00
### Server
Extract the archive to your MOHAA server installation directory. Then proceed like you would do with mohaa server:
- `.\omohaaded.exe +exec server.cfg` on Windows
- `./omohaaded +exec server.cfg` on Linux
2023-07-06 18:32:14 +02:00
2023-11-14 18:53:40 +01:00
Only `omohaaded*` and `game*` binaries are required for the server version, other binaries can be omitted.
2023-07-06 18:32:14 +02:00
2023-08-25 23:25:04 +02:00
### Config file
2023-07-06 18:32:14 +02:00
2023-08-25 23:25:04 +02:00
The config file can be found in different locations depending on the platform:
- `%APPDATA%\openmohaa\<game_name>\configs\omconfig.cfg` on Windows
- `~/.openmohaa/<game_name>/configs/omconfig.cfg` on Linux
This has two advantages:
- On a multi-user system, each user will have their own configuration file
- It doesn't overwrite the existing MOHAA configuration in the MOHAA installation directory.
2023-11-29 18:17:14 +01:00
Note that the configuration file isn't created nor written automatically on a dedicated server (**omohaaded**).
2023-08-25 23:25:04 +02:00
### Game selection
2023-07-06 18:32:14 +02:00
2023-08-15 18:09:22 +02:00
**Medal of Honor: Allied Assault Spearhead** and **Medal of Honor: Allied Assault Breakthrough** are supported in OpenMoHAA using the `com_target_game` variable. To play an expansion, append the following command-line arguments to the executable:
- `+set com_target_game 1` for Spearhead (mohaas/mohta)
- `+set com_target_game 2` for Breakthrough (mohaab/mohtt)
On Windows, you can create a shortcut to OpenMoHAA with these command-line arguments.
2023-08-25 23:25:04 +02:00
The default value of `com_target_game` is 0 for the base game (main).
With `com_target_game`, OpenMoHAA will support the network protocol accordingly.
2023-07-06 18:32:14 +02:00
2023-08-25 23:25:04 +02:00
You can now start a local OpenMOHAA server or play on a server.
2023-08-19 19:41:22 +02:00
### Playing with bots
OpenMoHAA has a basic bot system that emulates real players. The maximum number of bots is defined by the `sv_maxbots` variable, and the number of initial bots is defined by the `sv_numbots` variable. Bots can also be added or removed using the `addbot` and `removebot` commands.
This feature is a great way to test the gameplay and mods.
2023-08-16 00:19:30 +02:00
2023-07-06 18:32:14 +02:00
## Builds
2023-05-18 20:54:12 +02:00
2023-02-03 18:48:42 +01:00
### Server
2016-03-27 11:49:47 +02:00
2023-10-08 20:22:10 +02:00
The server version can be built successfully, but some features are not functional. For example, the Actor system is almost fully implemented, but it is not yet stable. This means that Actor may not work as expected and could cause crashes.
2023-08-15 18:09:22 +02:00
Overall, the server and the fgame components are almost fully implemented, but they may not be completely stable. There could be some minor bugs (and rare crashes), but the game should be playable.
2016-03-27 11:49:47 +02:00
2023-02-03 18:48:42 +01:00
### Client
2016-03-27 11:49:47 +02:00
2023-08-15 18:09:22 +02:00
The client version of OpenMoHAA has undergone partial implementation, with the cgame module being nearly completed. Credits to the SDK of **Heavy Metal: F.A.K.K. 2** both the cgame and fgame modules.
2023-08-16 00:19:30 +02:00
The current operational status for each component is as follow:
2023-05-09 20:03:34 +02:00
2023-08-16 00:19:30 +02:00
| Component | Full | Almost | Half | Early | Bad | Not working | Comment |
2023-05-18 20:54:12 +02:00
|-------------------------|------|--------|------|-------|-----|-------------|-------------------------------------------------------------------|
| Audio | | | | | x | | Very basic implementation from Quake III |
| CG Module | | x | | | | | Missing FX, Marks and decals |
2023-07-30 11:37:41 +02:00
| Client | | x | | | | | Missing GameSpy, server list, binds, map picker, ... |
2023-05-18 20:54:12 +02:00
| Collision | x | | | | | | |
| Model/TIKI/Skeletor | x | | | | | | |
2023-07-30 11:37:41 +02:00
| Renderer | | x | | | | | Missing ghost, marks, sphere lights, sky portal, sun flare, swipe |
2023-05-18 20:54:12 +02:00
| Server | | x | | | | | Probably a few bugs remaining |
2023-10-08 20:22:10 +02:00
| Server module (fgame) | | x | | | | | Actor, and few gameplay bugs |
2023-07-30 11:37:41 +02:00
| UI | | | x | | | | Has core features only (menu, widgets, console, hud, urc loading) |
2023-05-01 20:08:26 +02:00
2023-02-03 18:48:42 +01:00
## Compiling
2023-08-16 00:19:30 +02:00
OpenMoHAA supports any architecture, thanks to the CMake build system and cross-platform code/libraries. While the most common little-Endian architectures (arm, aarch64, x86, x86_64) have been tested and confirmed to work, big-Endian architectures should be supported as well; however, they remain untested.
2023-05-18 20:54:12 +02:00
2023-08-15 18:09:22 +02:00
The following tools are required for all platforms:
2023-02-07 21:20:15 +01:00
- CMake >= 3.5
2023-09-09 23:24:29 +02:00
- Flex (>= 2.6.4) and Bison (>= 3.5.1)
2023-08-15 18:09:22 +02:00
- A C++11 compiler is also required.
2023-08-15 18:09:22 +02:00
The installation directory can be set to the MOHAA directory.
2016-03-27 11:49:47 +02:00
2023-09-09 23:24:29 +02:00
By default, the build will produce both the client and dedicated server versions. The client can be omitted from the build by appending `-DBUILD_NO_CLIENT=1` to the CMake command-line arguments. Using this parameter will result in only the server portion being built.
2023-05-18 20:54:12 +02:00
2023-02-03 18:48:42 +01:00
### Linux
2023-08-15 16:02:02 +02:00
These are the tools required on Linux :
2023-09-09 23:24:29 +02:00
- Clang >= 3.3 or GCC >= 4.8.5
- libsdl2-dev
2023-02-07 20:55:37 +01:00
2023-09-09 23:24:29 +02:00
**clang-3.5** and **gcc-4.8.5** should work (tested on Ubuntu 16.04), but the latest version should be used.
2023-02-07 20:55:37 +01:00
2023-09-09 23:24:29 +02:00
Ubuntu 20.04 is the minimum version required to fully compile the project successfully.
2023-05-29 01:56:06 +02:00
2023-09-09 23:24:29 +02:00
1 line install command with clang:
```sh
sudo apt-get install -y cmake ninja-build clang lld flex bison libsdl2-dev
```
2023-09-09 23:24:29 +02:00
Example with **CMake** and **ninja-build** installed:
2023-05-23 23:47:36 +02:00
```sh
mkdir .cmake && cd .cmake
2023-09-09 23:24:29 +02:00
cmake -G Ninja ../
2023-05-23 23:47:36 +02:00
```
2023-09-09 23:24:29 +02:00
Other compilers can be specified by appending `-DCMAKE_C_COMPILER=/path/to/compiler -DCMAKE_CXX_COMPILER=path/to/compiler` to the CMake command-line.
2023-02-03 18:48:42 +01:00
### Windows
2016-03-27 11:49:47 +02:00
2023-02-03 18:48:42 +01:00
Visual Studio (2019 or 2022) is generally preferred.
2023-08-19 19:41:22 +02:00
Flex and Bison can be downloaded from here: https://github.com/lexxmark/winflexbison/releases/tag/v2.5.25
Append `-DFLEX_EXECUTABLE=...\win_flex.exe -DBISON_EXECUTABLE=...\win_bison.exe` to the CMake command-line to use the package from the link above.
2023-05-19 14:09:03 +02:00
## Screenshots
2023-11-13 23:29:21 +01:00
| | |
|-----------------------------------------------------------------------------------|----------------------------------------------------------------------------|
| ![](docs/images/v0.60.0-x86_64/mohdm1_1.png) | ![](docs/images/v0.60.0-x86_64/training_1.png) |
| ![](docs/images/v0.60.0-x86_64/flughafen_1.png) | ![](docs/images/v0.60.0-x86_64/flughafen_2.png) |
| ![](docs/images/v0.60.0-x86_64/mohdm2_1.png "Playing Freeze-Tag mode with bots") | ![](docs/images/v0.60.0-x86_64/training_3.png "Single-Player training") |
2023-11-14 14:06:57 +01:00
*More screenshots [here](docs/images)*
2023-05-22 18:01:11 +02:00
2023-08-24 23:20:01 +02:00
## Features
### Features added and not present in MOH:AA
#### Server-side
- Bots
- Spectate players in first-person
- Demo recording
- More script commands for mods
2023-11-14 14:06:57 +01:00
- Non-PVS optimization
##### Non-PVS optimization
For each client, the server optimizes by only sending them information about other players that they can see. Clients won't see other players they can't see.
Enable this feature with `set sv_netoptimize 2`.
2023-08-24 23:20:01 +02:00
#### Client-side and server-side
- Security fixes and features from ioquake3
- IPv6 support (from ioquake3)
### Objectives / planned features
This is a non-exhaustive list of objectives and planned features.
#### Server-side
- 100% compatibility with mohaa content
- More feature for mods
- Anticheat
- Stats system
- Multiple roles/abilities for server admins to reduce password-stealing
2023-05-19 14:09:03 +02:00
2023-02-03 18:48:42 +01:00
## Third party
2023-02-03 18:48:42 +01:00
### SDL
2019-07-03 22:24:21 +02:00
http://www.libsdl.org/
2023-02-03 18:48:42 +01:00
### OpenAL
2019-07-03 22:24:21 +02:00
2023-08-15 16:02:02 +02:00
https://www.openal.org/
2023-02-03 18:48:42 +01:00
### LibMAD
2019-07-03 22:24:21 +02:00
http://www.underbit.com/products/mad/
2023-02-03 18:48:42 +01:00
### cURL
2016-03-27 11:49:47 +02:00
2023-02-03 18:48:42 +01:00
https://curl.se/
2023-02-03 18:48:42 +01:00
### Libogg
2016-03-27 11:49:47 +02:00
2023-02-03 18:48:42 +01:00
https://github.com/gcp/libogg
2023-02-03 18:48:42 +01:00
### Libvorbis
2023-02-03 18:48:42 +01:00
https://xiph.org/vorbis/
2023-02-03 18:48:42 +01:00
### Libopus
2016-03-27 11:49:47 +02:00
2023-02-03 18:48:42 +01:00
https://opus-codec.org/
2016-03-27 11:49:47 +02:00
2023-07-06 18:32:14 +02:00
## Communities
### URLs
2023-05-19 21:33:58 +02:00
- https://github.com/openmoh/openmohaa/
- https://mohaaaa.co.uk/AAAAMOHAA/index.php
2023-02-03 18:48:42 +01:00
- https://x-null.net/
2023-07-06 18:32:14 +02:00
### Discord
[![Discord Banner 1](https://discordapp.com/api/guilds/596049712579215361/widget.png?style=banner2)](https://discord.gg/NYtH58R)