Design and Implementation of a Massively Multi-Player Online Historical Role-Playing Game
Total Page:16
File Type:pdf, Size:1020Kb
Design and implementation of a massively multi-player online historical role-playing game David Alexander Bond H00124719 February 2015 Computer Science School of Mathematical and Computer Sciences Dissertation submitted as part of the requirements for the award of the degree of MSc in Advanced Internet Applications 2 | Page DECLARATION I, David Alexander Bond, confirm that this work submitted for assessment is my own and is expressed in my own words. Any uses made within it of the works of other authors in any form (for example: ideas, equations, figures, text, tables, programs) are properly acknowledged at any point of their use. A list of the references employed is included. Signed: _________________________________ Date: ____ 13-02-2015_______________ 3 | Page ABSTRACT The goal of this project was to design and evaluate the initial version of a distributed, scalable game engine, the JominiEngine. The project focused on developing the essential core of the JominiEngine, and used it to instantiate Overlord: Age of Magna Carta, a game set on mainland Britain in the time period of 1194-1225. Future projects will extend, by degrees, the functionality of the JominiEngine, ultimately resulting in the production of a fully featured, adaptable MMORPG (Massively Multiplayer Online Role-Playing Game) platform. Wargames and historical simulations have been popular pastimes since the last half of the 20th Century, and their value as tools for the teaching and reinforcement of creative decision-making is increasingly being applied across a whole spectrum of occupations. The arrival of computer gaming has resulted in a huge increase in popularity for this type of game; in particular, with the advent of the Internet, the last two decades have seen a huge global increase in the player-base of MMORPGs. The development of a historical MMORPG, therefore, presents the developer with challenges in the areas of both game design, in which a balance has to be reached between the requirements of historical accuracy and player enjoyment, and system architecture, which poses significant challenges with regard to system complexity and scalability. The aims and objectives of the project were to develop: i) A core game model, specifying the basic game objects, interactions, rules, mechanisms, and victory metrics. ii) A core game engine, enabling players to perform the functionality outlined in the game model. iii) A system architecture, enabling the efficient operation of the game engine at varying usage levels. Particular attention was paid to the key areas of: historical accuracy, to ensure educational value and player immersion; modularity, to allow for the future expansion of the JominiEngine in subsequent projects; scalability, to ensure that the game supports up to several thousand concurrent players, at an acceptable level of performance. A game model was developed that stipulated basic class types (PC, NPC, Fief, and Army), key game roles (king, herald, system administrator), and specified component mechanics, rules and victory conditions. The design process was both thorough and systematic, and UML-style diagrams were used extensively, providing a well-documented basis for subsequent work. Using this game model, a core game engine (the JominiEngine) was developed and implemented that allowed players to use the specified mechanics to manipulate objects within the game world in the manner defined by the rules. Modularity was facilitated through the provision of thorough documentation and clear interfaces to game and system components, and existing protocols were used where possible. Historically accurate data was imported into the JominiEngine to allow Overlord to be fully instantiated. The choice of a non-relational (NoSQL), distributed DBMS, Riak, as the backend database for the system architecture is relatively novel, and should help to address the issue of scalability through its ability to sustain performance during periods of high usage, and its distributed nature, which could reduce latency for a widely distributed player base. Additionally, Riak’s distributed architecture also provides a built-in redundancy in the event that one of its nodes should fail. Suggestions were made for future developments, including various expansions to the JominiEngine game model, full implementation of client-server architecture, the addition of game content authoring (modding), and the introduction of a full graphical user interface. 4 | Page ACKNOWLEDGEMENTS I’d like to thank the following people for their help with this project: • Hans-Wolfgang Loidl for his support and wise counsel throughout and for somehow managing to keep my spirits up. Thanks also to Sandy Louchart for some very useful feedback and suggestions on the game design phase. • My family and friends for their unceasing support and for not sounding too bored when I talked about nothing else except this project for eight months solid. • My very understanding and flexible employers for allowing me to take this course, giving me the time to attend lectures and finding a way to fit my ‘work’ work (you know, the stuff I’m actually paid for) around my studies. Also my work colleagues for quietly listening to me drone on about my lost weekends. I’d like to dedicate this dissertation to my wife, Ann, and to my late father, Peter Bond, both of whom I know would have been cheering me on from the side-lines. 5 | Page CONTENTS 1. INTRODUCTION Page 8 1.1 Aims and objectives 1.2 Background 1.3 Requirements and specification 1.4 Report outline 2. LITERATURE REVIEW Page 14 2.1 Game design 2.2 System architecture 3. METHODOLOGY Page 36 3.1 System development 3.2 System evaluation 3.3 Environment and software 4. PROJECT MANAGEMENT Page 42 4.1 Timeline 4.2 Risk assessment 4.3 Professional, legal, ethical, and social issues 4.4 Project management methodology 5. GAME DESIGN Page 48 5.1 Game model 5.2 Game engine 6. IMPLEMENTATION Page 64 6.1 Initial implementation 6.2 The fief: its management and its place in the game world 6.3 Movement and travel interaction 6.4 Backend database management system 6.5 Project extension 6.6 Household management, inheritance and in-game messaging 6.7 Army management 6.8 Combat 6.9 Second project extension 6.10 Royal functions and overlord functions 6.11 Victory conditions and calculation 6.12 System administrator functions 6.13 Code refactoring and testing 7. REFLECTION Page 84 7.1 Compliance with requirements, aims and objectives 7.2 Project management 7.3 Programming practices 7.4 Tools and technologies used 7.5 Required changes to the existing code 7.6 Suggestions for future development 6 | Page 8. CONCLUSIONS Page 96 8.1 Game model and engine 8.2 System architecture, scalability and availability 8.3 Modularity 8.4 Facilitation of future extensions: Content authoring and GUI 8.5 Suggestions for future development 9. REFERENCES Page 100 APPENDICES APPENDIX A: DIAGRAMS Page 105 APPENDIX B: FORMULAS Page 127 APPENDIX C: FILES Page 141 APPENDIX D: TESTING Page 143 7 | Page 1. INTRODUCTION Wargames and historical simulations have been popular pastimes since the last half of the Twentieth Century. Furthermore, their value as tools for the teaching and reinforcement of creative decision- making has been recognised since Georg von Reisswitz first introduced his wargaming rules in the early 19th Century. Indeed, this aspect is increasingly being applied not only in the military profession but also for managerial personnel across a whole spectrum of occupations. The arrival of computer gaming has led to an increased flexibility not only in game design but also in the way in which games are played, and this has resulted in a significant increase in popularity. In particular, with the advent of the Internet, the last two decades have seen a huge global increase in the player-base of Massively Multiplayer Online Role-Playing Games (MMORPGs) such as EVE and World of Warcraft. The development of a historical MMORPG, therefore, presents the developer with challenges in two main areas: • Firstly, game design, in which a balance has to be reached between the requirement for historical accuracy and the need to keep the game enjoyable for its players. • Secondly, system architecture which poses significant challenges with regard to system complexity and scalability, requiring a well-documented modular design with the application of clear interfaces. 1.1 Aims and objectives The goal of this project is to design and evaluate the initial version of a distributed, scalable game engine, the JominiEngine, for a historically-based MMORPG set in a medieval context, entitled Overlord: Age of Magna Carta (hereafter referred to as Overlord). It is intended that this be the first in a series of projects that will extend, by degrees, the functionality of the JominiEngine, ultimately resulting in the production of a fully featured, adaptable MMORPG platform allowing the creation of games in which players will assume the role of nobles and will manage fiefs, generate income, raise armies, fight wars with other players, and ensure their own family's lineage. This project will focus on developing the essential core of the JominiEngine, and use it to instantiate Overlord, a game set on mainland Britain in the time period of 1194-1225. 1.1.1 Aims The aims for this project are to develop the following components: • A core game model, specifying the basic game objects, interactions, rules, mechanisms, and victory metrics (see Figure 5 in Section 3.1 Methodology and Figure 9 in Section 5.1 Game model design). It is intended that the complexity of the initial version be reduced by scaling down the number of game components; therefore, the model is to be designed in such a way as to facilitate future development (see Section 1.3: Requirements and specification, for more details). 8 | Page • A core game engine, enabling players to perform the functionality outlined in the game model (see Figures 10, 11 and 12 in Section 5.2 Game engine design).