OpenRCT2 is the open-source implementation of the classic Rollercoaster Tycoon 2 video game released in 1999 by Chris Sawyer. The project aims to recreate the game, add new features to it, and fix bugs that were present in the original.
Rollercoaster Tycoon 2 is a game where the player is supposed to build and manage a theme park. The player can play scenarios or sandbox mode. In scenarios, the player has to build or improve a theme park given certain financial constraints or within a period of time. In sandbox mode, the player is free to build their own theme park unconstrained.
The new features, such as multiplayer, are supposed to be supplemental to the experience of the original game and should not serve as a replacement. A player that has played the game in 1999 should be able to have the same experience with playing OpenRCT2 in 2020.
This essay delves deeper into the software architecture of the OpenRCT2 project. The architecture is first examined from different views, based on the book Software systems architecture by Rozanski and Woods. Then, the software is decomposed and each component’s function is explained. Next, the main architectural pattern of the project is explained and finally the trade-offs between the non-functional properties of OpenRCT2 are discussed.
I’m sure if you’re reading this, you’ve most likely at one point as a kid thought that being a game tester would be an awesome job. Playing games and getting paid for it, sounds great. However, why do video game developers rely so greatly on players to test their games?
A query for “video game architecture” in the library of the Institute of Electrical and Electronics Engineers delivers 446 results, whereas the query “software architecture” delivers a whopping 83,009 results. Clearly, video game architecture is a less researched aspect of software architecture, even though there are over 2.5 billion people who play video games around the world. In this essay we delve into the world of video game architecture and try to lift the veil of mystery of designing these popular software systems.
In the previous essays we have analyzed OpenRCT2’s architecture, but who can give better insights than OpenRCT2’s developers themselves? We have asked the OpenRCT2’s developers questions relating to OpenRCT2’s architecture, the project itself and their experiences while developing for it.