Artificial Intelligence for a Real Time Strategy Game

This piece of work formed my final year project at university. The original idea was to create AI for workers in a real time strategy game scenario, which would perform tasks (such as gathering resources and constructing buildings) effectively without being given instruction from the player, which is still required in many games.
The first stages were the design of the game systems for the agents to interact with based upon research into the genre. A game engine using DirectX was created to run the world and the systems required. This is the engine I adapted and built upon for most of my final year work. An object-oriented design was used with central control administered by the world model.
The AI for the agents was designed using a two-tier state machine system controlled by a central thinking state. Agents attempt to complete goals of collecting and transforming resources and constructing buildings, and fulfilling their own needs for food and rest. The system performs well with up to 100-200 agents.

A Physics Based Simulation

This piece of work was originally produced for the Games Physics module, which taught the physics required for real-time accurate physical simulations. The program produced models the launching of balls at various objects, all of which are physically simulated and free to move (except the ground). Included within the implementation are: linear and angular velocity, acceleration and momentum; forces and torques; broad phase collision using axis alligned bounding boxes, narrow phase triangle-triangle collision using the Moller method; collision response using wind-back for precision and momentum for resolution; Euler, Mid-point and Runge-Kutta 4 integrators.

Application of AI Techniques for Computer Games

This piece of work was originally produced for the Games Artificial Intelligence module, which taught techniques for creating behaviour and path-planing, two very important areas for Game AI. The program produced uses finite state machines to create the behaviour of two types of unit, which explore an environment and fight and flee from each other. Path planning is handled using A* and A* epsilon algorithms. The program runs well with up to 20 agents.

Online Hi-Lo Cards

This piece of work was originally created for the first part of the Online games programming module, which taught java and how to use it to produce graphical networked applications. The game is turn based high-low card game. Client and server applications were developed, and the client application was created so that it could also run as an applet. Cards are dealt from a model of deck of cards on the server. The game also includes basic ingame chat functionality.

Real Time Multiplayer Asteroids

This piece of work was originally produced for the second part of the Online games Programming Module, which covered the creation of real time networked games using DirectPlay. The game is a real time multiplayer version of asteroids that supports up to four players at once.. A server application runs all game logic, and clients connect to the server by searching the local sub net. A message set was developed to handle communication between the server and clients. Both event and time based messaging are used, depending upon the nature of the game object/state being updated.

A Pre-Rendered Graphics System

This piece of work was originally produce for the Advanced Graphical Algorithms module, which taught techniques for producing very high quality pre-rendered graphics. The program produced is a command prompt progra that uses whitted raytracing to render images. The program models reflection and refraction, uses the Blinn lighting model, uses sub-pixel jittered sampling for anti aliasing, uses logarithmic tone mapping, and uses octrees for optimisations.