UAlbion
A remake of the 1995 RPG Albion
Prerequisites:
- .NET 6
- Game data from an install of the original game (full version or demo)
Screenshots
Current Status
Things that are at least somewhat implemented:
- Rendering of 2D and 3D environments
- Player movement and collision detection in 2D environments
- Interaction with the environment, e.g. examining objects, accessing chests and opening doors
- GUI system for menus, dialogs, inventory etc
- Inventory management
- Conversations
- Sound effects and music
- Loading/saving saved games
- Video playback
- Exporting assets
- Day/night cycle
- NPC movement
Currently unimplemented:
- Lighting model for 3D levels
- Event handling and collision detection in 3D environments
- Automap for 3D environments
- Combat system
- Magic system
Planned improvements / changes from the original gameplay:
- Add hotkeys to streamline the interface, reduce the amount of right clicking required etc
- Add some pathfinding logic to make mouse-based movement easier
- Add a take-all button when looting chests / fallen foes (done)
- Graphical improvements in 3D environments
- Fix bugs in original game (with option to toggle when there is a gameplay impact)
- Modding support
- A built-in editor for modifying and adding assets
Getting started
Game data
You need to have the original Albion game files. These days, Albion can be bought cheaply on GOG.
If you have the GOG version of the game, extract the required game files as follows:
Linux:
- Ensure
wine
anddosbox
are installed - Download the Albion installer for Windows from GOG
- Run the installer using wine (
wine setup_albion_1.38_\(28043\).exe
). Note that the installer may show some errors, but if the game can be launched in the end, it's okay. - Run
dosbox
- Run the following commands in dosbox to extract the data files. Replace
~/ualbion
with wherever you cloned the ualbion repository. Replace~/.wine/drive_c/GOG Games/Albion/
with wherever you installed your GOG version of Albion. Note the double quotes ("
), they are necessary if your path contains spaces.mount C "~/ualbion"
mount D "~/.wine/drive_c/GOG Games/Albion/"
C:\src\Tools\GOG_EXTR.BAT
Windows:
- Download the Albion installer from GOG
- Run installer
- Open the Albion install directory in file explorer (e.g.
C:\GOG Games\Albion
) - Go into the
DOSBOX
directory and runDOSBOX.exe
- Run the following commands in dosbox to extract the data files. Replace
C:\Git\ualbion
with wherever you cloned the ualbion repository. ReplaceC:\GOG Games\Albion
with wherever you installed your GOG version of Albion. Note the double quotes ("
), they are necessary if your path contains spaces.mount C "C:\Git\ualbion"
mount D "C:\GOG Games\Albion"
C:\src\Tools\GOG_EXTR.BAT
If you're not using the GOG version or want to select your game files manually, you can either copy the files into an "ALBION" subdirectory manually or configure data/config.json
to set the paths for the files. The files can also be manually extracted from the GOG version by mounting the game.gog
file using CDemu (it's just a raw binary dump of the CD contents) and then copy the ALBION directory into your UAlbion folder.
Compile and run
To compile and run the project the easiest way is to use the run script (i.e. run.bat
on Windows and run.sh
on Linux).
- To start with default options, use
run
without parameters - To show available options:
run -h
orrun --help
- To run with Vulkan:
run -vk
- To run with OpenGL:
run -gl
- To run with Direct3D:
run -d3d
- To extract all game resources into modern formats under the mods/Unpacked dir:
run -b Albion Unpacked
- To repack the (possibly modified) assets in mods/Unpacked back into the original binary formats:
run -b Unpacked Repacked
(outputs to mods/Repacked)
For developers, any C# IDE should work (e.g. VS Code, Visual Studio, Rider etc). The available solutions are:
src/ualbion.nodeps.sln
: Loads ualbion with dependencies from NuGet (recommended for getting started)src/ualbion.full.sln
: Loads ualbion with local dependencies (requiresget_dependencies
to have been run, recommended for advanced development, e.g. if debugging into the dependencies is required)src/ualbion.ci.sln
: A solution for use by the continuous integration environment in github. Excludes tests that rely on the original assets being present.
Attributions
Many thanks to Florian Ziesche and the other contributers to the freealbion wiki for their efforts in discovering and documenting the Albion file formats.
Thanks to IllidanS4 for the ILBM loading code in AlbLib (MIT License) which my InterlacedBitmap implementation was based on.
Thanks also to the authors of and contributers to the dependencies of this project:
- Veldrid graphics API abstraction by Eric Mellino et al
- ImGui immediate mode graphics library by Omar Cornut et al
- OpenAL audio abstraction API from Loki Entertainment / Creative Technology
- OpenAL-CS C# wrapper for OpenAL (using the NuGet package of the OpenRA fork)
- AdlMidi OPL-3 synthesiser library by Vitaly Novichkov, Joel Yliluoma et al
- Superpower C# parsing library by Nicholas Blumhardt et al