9e4918cdbc
- Feature: [#11269] Add properties for speed and length of vehicle animations. - Feature: [#15849] Objectives can now be set for up to 50000 guests. - Feature: [#18537] Add shift/control modifiers to window close buttons, closing all but the given window or all windows of the same type, respectively. - Feature: [#18732] [Plugin] API to get the guests thoughts. - Feature: [#18744] Cheat to allow using a regular path as a queue path. - Feature: [#19023] Add Canadian French translation. - Feature: [#19341] Add “All Scenery” tab to scenery window. - Feature: [#19378] Add command to combine CSG1i.DAT and CSG1.DAT. - Feature: [objects#226] Port RCT1 Corkscrew Coaster train. - Feature: [objects#229] Port RCT1 go karts with helmets. - Feature: [OpenMusic#20, OpenMusic#21] Added Blizzard and Extraterresterial ride music styles. - Improved: [#11473] Hot reload for plug-ins now works on macOS. - Improved: [#12466] RCT1 parks now use RCT1’s interest calculation algorithm. - Improved: [#14635] Scenery window now shows up to 255 scenery groups. - Improved: [#17288] Reorganise the order of shortcut keys in the Shortcut Keys window. - Improved: [#18706] Ability to view the list of contributors in-game. - Improved: [#18749] Ability to have 4 active awards for more than one month in a row. - Improved: [#18826] [Plugin] Added all actions and their documentation to plugin API. - Improved: [#18945] Languages can now fall back to other languages than English. - Improved: [#18970] Trying to load a non-park save will now display a context error. - Improved: [#18975] Add lift sprites for steep hills on the wooden roller coaster. - Improved: [#19044] Added special thanks to RMC and Wiegand to the About page. - Improved: [#19131] Track missing objects when selecting scenery groups in console. - Improved: [#19253] Queue junctions drawn properly when using regular paths as queue. Note: Requires using tile inspector to indicate railings can be used at T or X junctions. - Improved: [#19067] New Ride window now allows filtering similarly to Object Selection. - Improved: [#19272] Scenery window now allows filtering similarly to Object Selection. - Improved: [#19447] The control key now enables word jumping in text input fields. - Improved: [#19463] Added ‘W’ and ‘Y’ with circumflex to sprite font (for Welsh). - Improved: [#19549] Enable large address awareness for 32 bit Windows builds allowing to use 4 GiB of virtual memory. - Improved: [#19668] Decreased the minimum map size from 13 to 3. - Improved: [#19683] The delays for ride ratings to appear has been reduced drastically. - Improved: [#19697] “Show guest purchases” will now work in multiplayer. - Change: [#19018] Renamed actions to fit the naming scheme. - Change: [#19091] [Plugin] Add game action information to callback arguments of custom actions. - Change: [#19233] Reduce lift speed minimum and maximum values for “Classic Wooden Coaster”. - Removed: [#19520] Support for Windows Vista systems. - Fix: [#474] Mini golf window shows more players than there actually are (original bug). - Fix: [#592] Window scrollbar not able to navigate to the end of large lists. - Fix: [#7210] Land tile smoothing occurs with edge tiles (original bug). - Fix: [#17996] Finances window not cleared when starting some .park scenarios. - Fix: [#18260] Crash opening parks that have multiple tiles referencing the same banner entry. - Fix: [#18467] “Selected only” Object Selection filter is active in Track Designs Manager, and cannot be toggled. - Fix: [#18904] OpenRCT2 audio object accidentally exported in saves. - Fix: [#18905] Ride Construction window theme is not applied correctly. - Fix: [#18911] Mini Golf station does not draw correctly from all angles. - Fix: [#18971] New Game does not prompt for save before quitting. - Fix: [#18986] [Plugin] Sending remote scripts larger than 63KiB crashing all clients. - Fix: [#18994] Title music doesn’t start after enabling master volume. - Fix: [#19025] Park loan behaves inconsistently with non-round and out-of-bounds values. - Fix: [#19026] Park loan is clamped to a 32-bit integer. - Fix: [#19068] Guests may not join queues correctly. - Fix: [#19091] [Plugin] Remote plugins in multiplayer servers do not unload properly. - Fix: [#19112] Clearing the last character in the Object Selection filter does not properly reset it. - Fix: [#19112] Text boxes not updated with empty strings in Track List, Server List, and Start Server windows. - Fix: [#19114] [Plugin] ‘GameActionResult’ does not comply to API specification. - Fix: [#19136] SV6 saves with experimental RCT1 paths not imported correctly. - Fix: [#19243] .park scenarios don’t complete properly. - Fix: [#19250] MusicObjects do not free their preview images. - Fix: [#19292] Overflow in ‘totalRideValue’. - Fix: [#19339] Incorrect import of crashed particles from SV4. - Fix: [#19379] “No platforms” station style shows platforms on the Junior Roller Coaster. - Fix: [#19380] Startup crash when no sequences are installed and random sequences are enabled. - Fix: [#19391] String corruption caused by an improper buffer handling in ‘GfxWrapString’. - Fix: [#19434, #19509] Object types added by OpenRCT2 do not get removed when executing ‘remove_unused_objects’. - Fix: [#19475] Cannot increase loan when more than £1000 in debt. - Fix: [#19493] SV4 saves not importing the correct vehicle colours. - Fix: [#19517] Crash when peeps try to exit or enter hacked rides that have no waypoints specified. - Fix: [#19524] Staff counter shows incorrect values if there are more than 32767 staff members. - Fix: [#19574] Handle exits in null locations. - Fix: [#19641, #19643] Missing water tile in Infernal Views’ and Six Flags Holland’s river. |
||
---|---|---|
.github | ||
.vscode | ||
cmake | ||
data | ||
debian | ||
distribution | ||
docs | ||
resources | ||
scripts | ||
src | ||
test/tests | ||
.clang-format | ||
.codecov.yml | ||
.commitlint.json | ||
.dockerignore | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
CMakeLists.txt | ||
CMakeLists_mingw.txt | ||
CMakeSettings.json | ||
CONTRIBUTING.md | ||
OpenRCT2.entitlements | ||
contributors.md | ||
licence.txt | ||
openrct2.common.props | ||
openrct2.proj | ||
openrct2.sln | ||
openrct2.targets | ||
readme.md | ||
shell.nix |
readme.md
OpenRCT2
An open-source re-implementation of RollerCoaster Tycoon 2, a construction and management simulation video game that simulates amusement park management.
Download
Latest release | Latest development build |
---|---|
Chat
Chat takes place on Discord. You will need to create a Discord account if you don't yet have one.
If you want to help make the game, join the developer channel.
If you need help, want to talk to the developers, or just want to stay up to date then join the non-developer channel for your language.
If you want to help translate the game to your language, please stop by the Localisation channel.
Language | Non Developer | Developer | Localisation | Asset Replacement |
---|---|---|---|---|
English | |
|
||
Nederlands |
Contents
- 1 - Introduction
- 2 - Downloading the game (pre-built)
- 3 - Building the game
- 3.1 - Building prerequisites
- 3.2 - Compiling and running
- 4 - Contributing
- 4.1 - Bug fixes
- 4.2 - New features
- 4.3 - Translation
- 4.4 - Graphics
- 4.5 - Audio
- 4.6 - Scenarios
- 5 - Licence
- 6 - More information
- 7 - Sponsors
1. Introduction
OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and maintaining an amusement park containing attractions, shops and facilities. The player must try to make a profit and maintain a good park reputation whilst keeping the guests happy. OpenRCT2 allows for both scenario and sandbox play. Scenarios require the player to complete a certain objective in a set time limit whilst sandbox allows the player to build a more flexible park with optionally no restrictions or finance.
RollerCoaster Tycoon 2 was originally written by Chris Sawyer in x86 assembly and is the sequel to RollerCoaster Tycoon. The engine was based on Transport Tycoon, an older game which also has an equivalent open-source project, OpenTTD. OpenRCT2 attempts to provide everything from RCT2 as well as many improvements and additional features, some of these include support for modern platforms, an improved interface, improved guest and staff AI, more editing tools, increased limits, and cooperative multiplayer. It also re-introduces mechanics from RollerCoaster Tycoon that were not present in RollerCoaster Tycoon 2. Some of those include; mountain tool in-game, the "have fun" objective, launched coasters (not passing-through the station) and several buttons on the toolbar.
2. Downloading the game (pre-built)
OpenRCT2 requires original files of RollerCoaster Tycoon 2 to play. It can be bought at either Steam or GOG.com. If you have the original RollerCoaster Tycoon and its expansion packs, you can point OpenRCT2 to these in order to play the original scenarios.
OpenRCT2.org offers precompiled builds and installers of the latest master and the develop branch. There is also a cross platform Launcher available that will automatically update your build of the game so that you always have the latest version.
Flathub offers flatpaks for Linux distributions that support this application distribution system:
Some Linux distributions offer native packages already. These packages are usually third-party, but we're trying to resolve issues they are facing.
- ArchLinux: openrct2-git (AUR) and openrct2 (Community)
- Ubuntu PPA:
develop
branch (nightly builds) - openSUSE OBS: games/openrct2
- Gentoo (main portage tree): games-simulation/openrct2
- NixOS (
nixos-unstable
channel): openrct2 - Fedora 28 i386/amd64: openrct2
Some *BSD operating systems offer native packages. These packages are usually third-party, but we're trying to resolve issues they are facing.
- FreeBSD: games/openrct2
- OpenBSD: games/openrct2
3. Building the game
3.1 Building prerequisites
OpenRCT2 requires original files of RollerCoaster Tycoon 2 to play. It can be bought at either Steam or GOG.com.
Windows prerequisites
- Visual Studio 2022 (Enterprise / Professional / Community (Free))
- Desktop development with C++
- MSYS2 MinGW Toolchain. The toolchains with supported dependencies are
mingw-x86_64
,mingw-xi686
,ucrt-x86_64
,clang-x86_64
, andclang-xi686
, each of these require the$MINGW_PACKAGE_PREFIX
andmsys
andclangarm-64
are lacking packages for some dependencies- sdl2 (only for UI client)
- freetype (can be disabled)
- fontconfig (can be disabled)
- libzip (>= 1.0)
- libpng (>= 1.2)
- speexdsp (only for UI client)
- curl (only if building with http support)
- nlohmann-json (>= 3.6.0)
- openssl (>= 1.0; only if building with multiplayer support)
- icu (>= 59.0)
- zlib
- gl (commonly provided by Mesa or GPU vendors; only for UI client, can be disabled)
- cmake
- benchmark (optional)
- innoextract (optional runtime dependency; used for GOG installer extraction during setup)
- libogg
- libvorbis
- flac
See the wiki for the actual package names used in pacman.
macOS prerequisites
- Xcode Command Line Tools
- Homebrew
- CMake (available through Homebrew)
Linux prerequisites
- gcc (>= 7.1) or clang (>= 8.0.0) (for C++17 support)
- sdl2 (only for UI client)
- freetype (can be disabled)
- fontconfig (can be disabled)
- libzip (>= 1.0)
- libpng (>= 1.2)
- speexdsp (only for UI client)
- curl (only if building with http support)
- nlohmann-json (>= 3.6.0)
- openssl (>= 1.0; only if building with multiplayer support)
- icu (>= 59.0)
- zlib
- gl (commonly provided by Mesa or GPU vendors; only for UI client, can be disabled)
- cmake
- innoextract (optional runtime dependency; used for GOG installer extraction during setup)
Refer to https://github.com/OpenRCT2/OpenRCT2/wiki/Building-OpenRCT2-on-Linux#required-packages-general for more information about installing the packages.
3.2 Compiling and running
Windows:
Show instructions
-
Check out the repository, this can be done using GitHub Desktop or other tools
-
Open a new Developer Command Prompt for VS 2022
-
Navigate to the repository (e.g.
cd C:\GitHub\OpenRCT2
) -
To build the 64-bit version, use
msbuild openrct2.proj /t:build /p:platform=x64
To build the 32-bit version, use
msbuild openrct2.proj /t:build /p:platform=Win32
-
Run the game,
bin\openrct2
Once you have ran msbuild once, further development can be done within Visual Studio by opening openrct2.sln
. Make sure to select the correct target platform for which you ran the build in point #3 (Win32
for the 32-bit version, x64
for the 64-bit version), otherwise the build will fail in Visual Studio.
Other examples:
set platform=x64
msbuild openrct2.proj /t:clean
msbuild openrct2.proj /t:rebuild /p:configuration=release
msbuild openrct2.proj /t:g2
msbuild openrct2.proj /t:PublishPortable
macOS:
Show instructions
CMake can build either a self-contained application bundle, which includes all the necessary game files and dependencies, or it can build a command line version that links against system installed dependencies. CMake will retrieve the dependencies from Dependencies automatically. You can build the macOS app using CMake using the following commands:
cmake -S . -B build
cmake --build build --target install
Then you can run the game by opening OpenRCT2.app
To build the command line version, you'll need to disable the macOS app bundle:
cmake -S . -B build -DMACOS_BUNDLE=off
cmake --build build
cmake --build build --target install
ln -s ../data data
Then you can run the game by running ./openrct2
.
To link against system dependencies instead of letting CMake download the dependencies from Dependencies, add -DMACOS_USE_DEPENDENCIES=off
to your cmake args.
Detailed instructions can be found on Building OpenRCT2 on macOS using CMake.
Linux:
Show instructions
The standard CMake build procedure is to install the required libraries, then:
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=. # set your standard cmake options, e.g. build type here - For example, -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build # you can parallelise your build job with e.g. -j 8 or consider using ninja
cmake --build build --target install # the install target creates all the necessary files in places we expect them
You can also use Ninja in place of Make using -G Ninja
in the first command, if you prefer, see Wiki for details.
Detailed instructions can be found on Building OpenRCT2 on Linux.
Note: the cmake -S . -B build
syntax is available for CMake >= 3.14. For older versions use:
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=. # set your standard cmake options, e.g. build type here - For example, -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build . --target install
4. Contributing
OpenRCT2 uses the gitflow workflow. If you are implementing a new feature or logic from the original game, please branch off and perform pull requests to develop
. If you are fixing a bug for the next release, please branch off and perform pull requests to the correct release branch. master
only contains tagged releases, you should never branch off this.
Please read our contributing guidelines for information.
4.1 Bug fixes
A list of bugs can be found on the issue tracker. Feel free to work on any bug and submit a pull request to the develop branch with the fix. Mentioning that you intend to fix a bug on the issue will prevent other people from trying as well.
4.2 New features
Please talk to the OpenRCT2 team first before starting to develop a new feature. We may already have plans for or reasons against something that you'd like to work on. Therefore contacting us will allow us to help you or prevent you from wasting any time. You can talk to us via Discord, see links at the top of this page.
4.3 Translation
You can translate the game into other languages by editing the language files in data/language
directory. Please join discussions in the #localisation channel on Discord and submit pull requests to OpenRCT2/Localisation.
4.4 Graphics
You can help create new graphics for the game by visiting the OpenGraphics project. 3D modellers needed!
4.5 Audio
You can help create the music and sound effects for the game. Check out the OpenMusic repository and drop by our #open-sound-and-music channel on Discord to find out more.
4.6 Scenarios
We would also like to distribute additional scenarios with the game, when the time comes. For that, we need talented scenario makers! Check out the OpenScenarios repository.
5. Licence
OpenRCT2 is licensed under the GNU General Public License version 3.
6. More information
Similar Projects
OpenLoco | OpenTTD | openage | OpenRA |
---|---|---|---|
Chris Sawyer's Locomotion | Transport Tycoon Deluxe | Age of Empires 2 | Red Alert |
7. Sponsors
Companies that kindly allow us to use their stuff:
DigitalOcean | JetBrains | Backtrace |
---|---|---|
Hosting of various services | CLion and other products | Minidump uploads and inspection |