Reusable Python framework for repeatable, replicable, & reproducible experiments using OpenTTD - Charemza, Michal (The University of Edinburgh, 2024)
OpenTTD is an open source business simulation game based on the 1994 game Transport Tycoon Deluxe, and in spite of being designed for recreation, OpenTTD has been used in a number of academic studies, notably ones that investigate the behaviour of algorithms programmed into its flexible AI system. However, many of these studies have problems regarding the repeatability, reproducibility, or replicability of their experiments: this is a concern given the ongoing replication crisis in many fields of science. In response, I created OpenTTDLab, a reusable Python framework that allows OpenTTD to run experiments with AIs that avoids many of these problems. Starting with a review of the existing studies to identify and categorise these problems, and then a review of the existing behaviour of OpenTTD, I applied a highly agile process to create OpenTTDLab to augment the behaviour of OpenTTD to address the problems found—highly agile in the sense that I conducted many cycles of development informed by concurrently conducting proof-of-concept experiments using the output of the development. The combination of this design process and these experiments shows three things: firstly, that OpenTTDLab achieves its aims in terms of aiding the repeatability, reproducibility, and replicability of experiments using OpenTTD; secondly, due to the range of the experiments conducted, that OpenTTDLab is reusable; and thirdly, since some of the results appear to have real-world meanings, that OpenTTD has the potential to be used to simulate properties of the real world. Thus, while there are of course further steps that can be taken, OpenTTDLab is already a useful tool for conducting repeatable, reproducible, and replicable research that leverages the rich capabilities of OpenTTD.
A reusable Python framework for repeatable, replicable, & reproducible experiments using OpenTTD
Keywords: OpenTTD; Python; simulation; repeatability; replicability; reproducibility; reusability; games; business; supply chains; algorithms; agile