Master Thesis written at BMW NA for the MSc Computer Games Programming Degree at Staffordshire University
In the automotive world, there is an emerging need to test highly automated driving systems in virtual 3D worlds. The motivation for virtual testing is that simulation can reduce costs and avoid dangers that accompany real-world tests, and it offers the motor vehicle tester sufficient flexibility to explore a wider range of test conditions without being hampered by practical constraints associated with real tests. Currently there is no automated way to generate high fidelity virtual environments for vehicle testing or re-simulation with highly automated driving systems. This dissertation aims to develop software to accurately generate and render a virtual world out of vehicle sensor data, and to analyse the quality and accuracy of the generated world.
The 2D Game Engine is built in a team of three people with the core of it being written in the C++ programming language. It was developed with a strong consideration to software architecture and software development patterns. The idea was to avoid any bad programming practices or code smells and to effectively work together as a team.
The application allows multiple users to create and join game rooms and, when all are ready, to fight eachother in a top-down space shooter style environment. The game features an authoratative server and utilities various algorithms in an effort to improve the user experience including Client-Side Prediction, Server Reconciliation and Entity Interpolation.
The project implements the rainbow islands 2D platforming game with a player controlled by a evolutionary neural network. The neural network takes multiple inputs from the game world and turns them into outputs, which in turn move the player. In the background there is a genetic algorithm working, back propagating the sets of weights to evolve them to find a solution and the best results are saved to file.
BIG Documentation is an application used by BIG Warranties development team that displays various project’s XML tags in a presentable format. When a programmer adds an XML tag to their project to describe anything from a class to a function, BIG Documentation will pick it up and display it in a nice format in the application.