Skip to content

About

Arcanum for modern operating systems

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Arcanum Community Edition

Important

This is a beta, technology preview, or whatever other label you have in mind for a pre-release software.

About this fork

This fork tracks upstream and additionally carries the following work:

  • Dialogue text scaling and a resizable window (see Configuration).
  • Optional FFmpeg-based Bink movie playback on macOS and Linux, including support for high-resolution (upscaled) movies (see Building from source).
  • The following upstream pull requests, merged ahead of upstream:
    • #140 — misc fixes: ghost buttons, cursor, ESC behavior, save/load shortcuts, overlay dismiss
    • #142 — populate quest-log dumb_description from gamequestlogdumb.mes
    • #144 — mouse wheel scrolling
    • #147 — script cache leak fix

Status

The game is ready, but I haven't tested everything - just the speedrun - and that was about three months ago, so things might have changed since then.

Regarding the source code, about half of the modules (not half of the code) are in good shape. All APIs have meaningful names, along with brief documentation, annotations, and explanations (see skill.c and quest.c as examples). The other half may have cryptic names, little to no symbols , and no documentation at all (anim.c is extremely large and hard to understand).

Installation

You must own the game to play. Purchase your copy on GOG or Steam.

Minimum installation
```
.
├── arcanum1.dat
├── arcanum2.dat
├── arcanum3.dat
├── arcanum4.dat
├── modules
│   ├── Arcanum
│   │   ├── movies
│   │   │   ├── 00069.bik
│   │   │   ├── 01138.bik
│   │   │   ├── 02112.bik
│   │   │   ├── 50000.bik
│   │   │   ├── 51169.bik
│   │   │   ├── 91568.bik
│   │   │   ├── A0021.bik
│   │   │   ├── G0021.bik
│   │   │   └── movies.mes
│   │   └── sound
│   │       └── music
│   │           ├── Arcanum.mp3
│   │           ├── Caladon.mp3
│   │           ├── Caladon_Catacombs.mp3
│   │           ├── Cities.mp3
│   │           ├── Combat 1.mp3
│   │           ├── Combat 2.mp3
│   │           ├── Combat 3.mp3
│   │           ├── Combat 4.mp3
│   │           ├── Combat 5.mp3
│   │           ├── Combat 6.mp3
│   │           ├── CombatMusic.mp3
│   │           ├── Dungeons.mp3
│   │           ├── DwarvenMusic.mp3
│   │           ├── Interlude.mp3
│   │           ├── Isle_of_Despair.mp3
│   │           ├── Kerghan.mp3
│   │           ├── Mines.mp3
│   │           ├── Qintara.mp3
│   │           ├── Tarant.mp3
│   │           ├── Tarant_Sewers.mp3
│   │           ├── Towns.mp3
│   │           ├── Tulla.mp3
│   │           ├── Vendegoth.mp3
│   │           ├── Villages.mp3
│   │           ├── Void.mp3
│   │           └── Wilderness.mp3
│   ├── Arcanum.PATCH0
│   ├── Arcanum.dat
│   └── Vormantown.dat
└── tig.dat
```

Windows

Download and copy arcanum-ce.exe to your Arcanum folder. It serves as a drop-in replacement for arcanum.exe.

Linux

  • Use the Windows installation as a base - it contains the data assets needed to play. Copy the Arcanum folder somewhere, for example /home/john/Desktop/Arcanum.

  • Alternatively, you can extract the required files from the GOG installer:

$ sudo apt install innoextract
$ innoextract ~/Downloads/setup_arcanum.exe -I app
$ mv app Arcanum
  • Download and copy arcanum-ce to this folder.

  • Run ./arcanum-ce.

macOS

Note

macOS 10.13 (High Sierra) or higher is required. Runs natively on Intel-based Macs and Apple Silicon.

  • Use the Windows installation as a base - it contains the data assets needed to play. Copy the Arcanum folder somewhere, for example /Applications/Arcanum.

  • Alternatively, if you have Homebrew installed, you can extract the required files from the GOG installer:

$ brew install innoextract
$ innoextract ~/Downloads/setup_arcanum.exe -I app
$ mv app /Applications/Arcanum
  • Download and copy Arcanum Community Edition.app to this folder.

  • Run Arcanum Community Edition.app.

Android & iOS

These ports are not currently intended for players. Touch controls are not yet implemented, and window management is subpar. No further instructions will be provided until these issues are resolved (but you can easily figure it out, it's not rocket science).

Building from source

Check ci-build.yml for details on how the project is compiled.

Movie playback on macOS and Linux

Bink movies (the intro and cutscenes) are decoded through RAD's binkw32.dll on Windows. That DLL is Windows-only, so on other platforms movies are skipped by default.

Configuring with -DARCANUM_BINK_FFMPEG=ON enables an FFmpeg-based decoder so movies play on macOS and Linux. It requires the FFmpeg shared libraries (libavcodec, libavformat, libavutil, libswscale, libswresample) to be installed, for example brew install ffmpeg or apt install libavcodec-dev libavformat-dev libswscale-dev libswresample-dev. The libraries are loaded at runtime, so if they are missing the game still starts and simply skips movies. FFmpeg is used under the LGPL and is not linked at build time.

Configuration

Several configuration options are available as command-line switches (admittedly not very user-friendly):

  • -4637: Enable cheat level 3

  • -window: Run in windowed mode (default is fullscreen)

  • -geometry=1280x720: Set window size (default is 800x600)

When HighRes/config.ini from the Unofficial Arcanum Patch is present in the game directory, Community Edition also imports Width, Height, Windowed, ShowFPS, ScrollFPS, ScrollDist, Logos, and Intro at startup.

In windowed mode the window is resizable. The framebuffer is scaled with nearest-neighbor filtering, so the picture stays sharp when the window is enlarged.

DialogScale (in HighRes/config.ini) enlarges conversation text, which is helpful on high-DPI displays where the original bitmap fonts render very small. It accepts a float in the range 1.0 to 3.0 (values above are clamped); 1.0 (the default) keeps the original size. Both the player's dialogue options and the NPC reply are scaled, the reply bubble is widened so long lines wrap sensibly, and the reply is kept clear of the options box to avoid overlap. Example:

Width=1024
Height=768
Windowed=1
DialogScale=2.0

Contributing

Play the game and file bugs if any (there are likely many). Attach a save game for investigation. Suggestions for quality of life improvements are also welcome. The major objective for 25H2 is to clarify remaining functions.

License

The source code is this repository is available under the Sustainable Use License.

About

Arcanum for modern operating systems

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages