Game engine tutorial is an open source code template built for educational purposes in which a community takes part in the process of lecturing as well as learning. The goal is to overcome the difficulties that embraces the game development area by applying our efforts on creating a common documentation that we will gradually update and maintaining a well-defined and structured engine so we can all work with and use for our personal projects. With this concern in mind, the engine was made as the result of merging three open source code projects:
- - https://www.mcshaffry.com/GameCode/ is a game engine which presents an architecture based on the Model-View-Controller (MVC) architectural pattern.
- https://www.geometrictools.com/ are tools which provides a strong scientist background on graphics, mathematics and physics. It supports low level system, and separates OpenGL/Direct3D implementations.
- http://irrlicht.sourceforge.net/ is a cross-platform real-time 3D engine which integrates many visual features implemented in OpenGL/Direct3D old versions.
GameEngineAI
As example of usage I introduce my personal research project created in the https://github.com/enriquegr84/GameEngineAI repository and aimed to find a challenging system that we can apply on action games, particularly for shooters. We analyze the current state of the art of AI techniques that have been successfully applied on videogames and introduce a new approach that has been implemented on a modified version of the Quake 3 Arena using the GameEngineTutorial framework. This new approach has been separated in the following main development phases:
- - Modeling phase. We define the data structures necessary to represent a discrete approximation of the virtual world and implement algorithms that create the discrete world via physics simulation.
- Decision-making phase. We implement a runtime minimax algorithm for an NPC duel combat that simultaneously simulates both players actions, and the NPC basic behavior to carry out the decision-making plans.
- Challenging phase. We propose a system that replace the most optimal heuristics of the decision-making algorithm with the most challenging heuristics based on the player skills. The player skills are studied using a less constrained minimax search tree and are represented numerically as statistics.