MSc Dissertation: Games that learn about their users and adapt
September 9, 2010
This dissertation is about describing those techniques that can be used to develop a computer player that has the ability to adapt to its opponent and its environment in realtime, by learning about them. For this purpose, there has been a lot of research done, mostly academic, in fields such as expert systems, machine learning and others.
I choose to investigate the usefulness of some Machine Learning and Case Base Reasoning techniques because I felt that it consists of some very promising methods. I did that by presenting their general usability and possible applications in games and more particular in Real Time Strategy games.
I choose to research the applicability of such algorithms in an online (realtime) unsupervised environment as this is a requirement of the initial research subject.
Furthermore, this dissertation has as a goal to present one of the algorithms that are under the scope of this research in a practical manner. I did this by using an open-source software game engine and applying our my implementation of the algorithm.
The algorithm and general concept was inspired by the work Pieter Spronck, especially this paper.
Resurrection
April 25, 2010
Resurrection is a 4-person project and basically a full fetched game. It is based on rough design spec written by a professional game designer. The main game consisted of a spaceship guided by the player from a top-down view that had to destroy enemy spaceships in order to collect just the right amount of energy to build an energy bomb and then fire that bomb at a crater.
Collecting energy, creating bombs and firing them at craters, is puzzling because they all depend of the three different colors the game uses to represent energy forms. E.g a blue crater needs a blue bomb to be destroyed and a blue bomb needs 50% green energy and 50% yellow energy to be created. Hence, destroying the enemies with the right colors and balancing the energy space the spaceship can have, is not trivial!!
We designed the game using Model-View-Controller design pattern which turned out to be extremely handy. We added several maps with different features and enemies with various characteristics, all with different difficulty levels.
Physics Simulation
March 30, 2008
This is a second semester project. It is a physics simulation comprising of a deformable cloth object and rigid spheres. The user can interact with the surrounding cube by rotating it in two axis, add and remove spheres at any time and also record a try and replay it.
The physics are running a basic Euler integrator, with a very small time step though. The tessellation of the cloth is high, 20×30 vertices with one particle (point of mass) per vertex.
The collisions taking place are between planes and particles as well as between particles and particles. That being said, I must point out that all rigid bodies are treated as a single particle, while the cloth is, as expected, treated as multi-particle object. Hence a collision with the cloth is actually a collision between all its particles and the other object. No optimizations so far.
The whole thing is running in a single thread at the moment and it is VERY CPU consuming, but I intend to apply serious optimizations. Right now I am developing on an Intel T7500, so I have room to spare.
The system is designed as component-based, with lots of decoupling and great inter-component communication.
Spacegame Simulation
February 6, 2008
This game was developed during my first semester in the games programming master and at the time was the first large scale game I had ever made.
The graphics are done in OpenGL and shaders in GLSL. The stage has per-pixel lighting, basic [CPU] particle systems and collision detection/response.
It comes with two camera views, a first and a third person camera, quaternion based in order to create smoother movement, a minimap and recording capability.
Firing the laser weapon
- leaves scorch marks on the walls
- triggers doors to open
- stops blades from rotating
- disables forcefields
- and destroys enemy laser turrets.
The game was programmed with a component-based object architecture, but the design is pretty immature.
Particle System
February 5, 2008
This is one of the very first particle systems I have programmed and is three years old already.
The physics and rendering are handled in a separate thread, with no particular reason. The particle system was experimental, a way to understand how to develop a multithreaded application and implement multiple simple particle systems.
Undergraduate Graphics Project
February 5, 2008
This is the project for a graphics module I took in my third year.
It was a very simple project that required a scene with four different objects, a moving wheel system, and a spot light. For the spotlight, instead of using a lightmap, I used a tessellated surface and I also added textures and more controls just for fun.
Start Wars
February 4, 2008
This very simple, silly and colorless little application is my first attempt to make a game in 2002.
It uses DirectDraw and has only three enemy ships that spawn from the right side of the screen in a random vertical position and just move in a straight line until they reach the end of the screen, in which time they re-spawn from the right side.
The player can fire up to three bullets and every time he hits an enemy ship, gets one point. When an enemy ship dies, it immediately re-spawns.
The graphics were made with Windows Paint.
