OpenRCT2, Porting RollerCoaster Tycoon into 2020

In 1999, Chris Sawyer released the revolutionary and succesful game; RollerCoaster Tycoon (RCT). Many sequels later, the series remains popular to this day, and has inspired fans to develop an open-source re-implementation: OpenRCT2.

The OpenRCT2 project has two goals. The first goal is to bring the original RCT2 experience to modern systems. The second goal is to expand the game. The original game was created in Assembly1 and only ran on Windows and Xbox.2 The OpenRCT2 developers reverse-engineered the original game and rewrote it in C++. This allows the game to run on other platforms, like MacOS or Linux. Furthermore, this new code base enables developers to extend or modify the game more easily.

The second goal of OpenRCT2 is to expand upon the original with fewer limitations and new features. Features like multiplayer, auto-saving and 64-bit support were added.3 Various bugs and issues with the original game were fixed.4 This was done without changing the original premise.

End-user mental model

After launching the game, the user sees a theme park. The park welcomes guests that have to pay an admission fee to enter the park. Guests can walk around and perform activities, such as entering attractions and buying food and drinks. The guests have different desires and properties, which are communicated to the player through a variety of statistics and emoticons. The player can also read guests’ thoughts on the park and attractions.

The player also sees UI components to control the game, such as constructing buildings, pausing the game, or changing settings. Moreover, when playing scenarios, there is a goal to achieve before a certain time (e.g. to reach a number of guests in the park).

The second part of the mental model concerns the way the end-user interacts with the system. To achieve the goal presented at the start of a scenario, the park needs to be managed by the player. The player can build various rides, stalls and sanitary provisions to improve the happiness of the guests. The user can then decide on the ride or store prices and make sure the park runs at a profit. The user can also hire staff, move the people in the park and add cosmetic objects to the park. The user also has access to a menu that sets configurations of the game.

Key capabilities and properties

The key properties and abilities that OpenRCT2 should provide are:

  • Has the properties and functionality of the original game
  • Has compatibility with the original game
  • Runs on modern (operating) systems, in multiple resolutions and graphical modes
  • Has online functionality
  • Code is open-source and free-licensed

Providing the properties and functionalities of the original game was the main goal when the project was founded. After these original functionalities were implemented, key features were added that extended on the original game.

Stakeholders

The stakeholders of OpenRCT2 can be classified in:

  • Players: People playing OpenRCT2 benefit from the project in numerous ways. Contrary to the original RCT games, OpenRCT2 runs on more (modern) hardware and operating systems. Moreover, it has additional features. In the future, the game is planned to be completely free due to independence from the original game data.

  • Developers: Open-source development was started by Ted John (IntelOrca), but the project has progressed due to numerous contributors by others. Other current active contributors include Gymnasiast, duncanspumpkin, tupaschoal, janisozaur, ZehMatt. Furthermore, it is now much easier and faster for developers to customize or extend the game, thanks to OpenRCT2’s open, C++ code-base. In contrary, the original RCT games were closed-source and built using Assembly.

  • Artists: Artists contribute to the game by providing music, textures and models. OpenRCT2 enables artists to apply their creativity to the game.

  • Translators: OpenRCT2 has been translated into numerous languages thanks to various translators. This allows the game to be played in more players’ native language.

  • Testers: Testers write tests or play the game to test specific features or behavior to ensure it is correct.

  • Sponsors: The companies that allow OpenRCT2 to use their tools/resources. The current sponsors for the software are DigitalOcean, JetBrains, AppVeyor, Travis-CI and BackTrace. These companies benefit through increased exposure from providing these tools/resources.

  • Competitors: There are similar open-source reimplementation of classic games such as: OpenLoco, OpenTTD, openage, and OpenRA. These can be seen as competitors of OpenRCT2, but may actually also benefit from OpenRCT2 gaining popularity. Furthermore, more recent theme park simulation games can also be seen as OpenRCT2’s competitors. These include: Planet Coaster, Parkitect, and RollerCoaster Tycoon 3.

  • Original developer: The original RCT games were developed by Chris Sawyer. OpenRCT2 might benefit him by providing renewed exposure to his games, and by providing him with a C++ implementation.

  • Original publisher: RollerCoaster Tycoon 2’s original publisher Infogrames might benefit from renowed exposure to the game, and from players purchasing the RCT games in order to obtain the data required by OpenRCT2.

Current and future context

The list below shows the context in which OpenRCT2 currently operates.

Distribution

OpenRCT2 currently has stable and development builds for the Windows, Linux and MacOS operating systems. A development build is also available for Android and it can be expected that further development for that platform will allow it to be included as a stable build. There is currently no iOS build (stable or developement) for OpenRCT2 and this might be something that could be added in the future.

A launcher is available for the Windows, Linux and MacOS platforms, which automatically keeps the latest stable build up-to-date.

Compilers

OpenRCT2 uses msbuild to build the game for Windows, Xcode for MacOS, and CMake for both MacOS and Linux.

Community

OpenRCT2 has an active community of developers and users, which communicate mostly through Gitter. Gitter is a chat and networking platform meant for communication among and between GitHub users and developers.

Aside from Gitter, the official OpenRCT2 forums are also used for user and developer communcations. Other platforms for users to connect on are the OpenRCT2 subreddit and Twitch.

Programming languages

OpenRCT2 is written in the C++ programming language, unlike RCT2; which was written in assembly.

Integrated Development Environment (IDE)

The developers of OpenRCT2 are provided with a free license of CLion from JetBrains for the development of OpenRCT2.

Version control

OpenRCT2 uses only GitHub for storing code, raising and closing issues, releasing builds and writing and updating the wiki.

External libraries

OpenRCT2 uses the original data files of RCT2 for the textures and sprites. OpenGL is used to render the graphics of OpenRCT2.

The development team is in the process of developing their own open-source textures and sprites, such that current and future players are not required to use the original data files of RCT2.

Testing

Code tests are performed by writing and running unit tests. OpenRCT2 has testers playing the game to test for specific features or behaviour.

Continuous integration (CI)

OpenRCT2 uses AppVeyor for continuous integration on Windows and Travis-CI for continuous integration on Linux and macOS.

Hosting

DigitalOcean is a hosting company that provides OpenRCT2 with free hosting for the OpenRCT2 domain, website and forums.

License

OpenRCT2 is licensed under the GNU General Public License version 3 (GPL v3); a copyleft license that allows anyone to change and distribute the software, as long as the author is credited and the same freedom of changes and distributions are passed on to recipients of the software.

Documentation

The OpenRCT2 wiki provides general information about the game, guidelines for contributing to the project, technical information about the game, and information on how to build the project on various platforms.

Product roadmap

The main goals in the future development of OpenRCT2 currently are:

  • Raising limitations of the original game
  • Creating a new save format
  • Creating open-licensed graphics and prerequisites
  • Fixing bugs and issues
  • Adding features.

RCT2 has various hard limits, such as limits on the number of rides, sprites, or map size. An intended goal in the future development of OpenRCT2 is to increase or remove these limits. Currently, OpenRCT2 uses the save format SV6, the native save format used by RCT2. SV6 imposes many of these limits. Hence, a new save format is being developed. This will allow limits to be removed or increased.

As of now, a copy of RCT is required in order to play OpenRCT2. OpenRCT2 uses the original, copyrighted game data such as graphics and sounds. In the future, free-licensed graphics and sounds will be created in order to remove the dependencies of OpenRCT2 on this original game data. These projects are currently in very early stages of development.

  1. https://www.eurogamer.net/articles/2016-03-03-a-big-interview-with-chris-sawyer-the-creator-of-rollercoaster-tycoon 

  2. http://www.chrissawyergames.com/info.htm 

  3. https://openrct2.org/features 

  4. https://openrct2.org/changelog 

OpenRCT2