Mark Phillips


Hi there! Thanks for checking out my portfolio.

I'm a Game Programmer from Melbourne and this is where I get to show off a range of projects that I have worked on. I am currently studying at AIE Melbourne and loving it.

Projects


Contact


The Noodling

Unity C#


The Noodling is a local multiplayer arena based game with up to four players. This game was the result of my final project during my first year at AIE. The game centers around a "pool party" theme in which players must hit each other with pool noodles to push them off the coloured platforms. This was my first real experience with Unity and C# as well as working in a team of other programmers, artists and designers.

My roles

Buoyancy

The main challenge which I was able to overcome was creating platforms that would look and feel like they are floating on water. Initially I attempted to re-create real buoyancy physics but soon found I was out of my league and so looked into various other ways I could achieve the same effect. The solution was utilizing Unity's rigidbody, physics forces and code that will keep the platforms level in relation to water. Working with rotation in C# for the first time was also a challenge, however overcoming this really helped me understand rotation when working on future projects.

Platform Behaviour

One aspect of the gameplay is having platforms that do various things at certain points during a match. I wrote code that made platforms animate and sink in a clock wise direction at certain time intervals into a match. I also made it possible to have "slippery" platforms which would decrease the drag of any player standing on them.

Game Manager

Game manager logic was still a new concept to me at the time in terms of being a persistent entity throughout all scenes. By the end of the project I had learned a lot just from this one aspect, including restarting/changing scenes, respawning, coroutines and setting up a working UI in Unity.

Game Juice

When I first heard the game idea and theme I immedietely thought of the fun things we can do with a pool themed game, one being a beach ball. Towards the end of the project I was able to implement a beach ball that would be "thrown" in from off camera at random interval and would knock players backwards on contact. Although minor it made the game more unpredictable which players really enjoyed.

Source

Build

Close Project

Bury The Hatchet

Unity C#


Bury The Hatchet is a western top-down shooter and the result of my final project at AIE. Play as a sun-beaten gunslinger and traverse the Red Rock Canyons while picking off bandits with your trusty six-shooter.

My roles

Enemy AI

My main focus during the course of the five months we worked on the game was the enemy AI. Having never implemented AI in a game sense it was a challenge from the start. The code design started as a simple switch statement with three functions Seek, Flee and Reload. However over time this was refactored more and more as the game evolved.

After some research into State Machines and Behaviour Trees I was able to come to a solution which would involve a State Machine class that would be templated to work with any AI script that needed to use it. A parent class for AI was created as the initial game design included various types of enemies such as range and melee. One thing that I quickly realised was the amount of unexpected behaviour that would result over the course of testing the AI and so this took a large portion of my time.

The final Enemy AI included the following functionality:

Cover - A Cover system was implemented in which any game object tagged as cover would be used when enemies are in range of that object. Enemies will find and walk behind cover to reload or strafe between cover while shooting the player.

Peek - When enemies are behind cover they have a chance to either "peek" the player to get several shots off or run to another cover object while unloading their gun on the player.

Reload - Enemies will find cover when they are out of bullets and once they're there, can safely reload their weapon.

Seek - As enemies continually switch states their chance to "seek" increases, when this chance is high enough they will run towards the player while firing off all their bullets in an aggressive tactic to overwhelm them.

Attack - Utilizing a weapon controller script created by another programmer in my team (Michael Corben) enabled me to easily give any AI the ability to shoot as well as quickly change any values such as spray range or bullet speed.

Game Juice

At the very end of the project I felt the game world was lacking "life" so with the help of some Unity Assets I was able to create some basic AI for birds and snakes. Coupled with some sound effects and the game was already a lot more enjoyable.

Source

Build

Close Project

World Loader

C++


This project was developed as part of the Complex Game Systems unit at AIE. World Loader is a demo application which utilizes the "Chunk Manager" header-only library that I created which loads and unloads "chunks" of tiles/textures.

Features

Templated Header Library

This demo uses a templated header-only library called Chunk Manager which contains all chunk loading functionality. Chunk Manager uses a dictionary to hold each array of templated Chunks. I decided to use this container method as it uses keys to link data which made it easy to access a chunk as well as the associated tiles within that chunk.

World Loader Application

This demo app is responsible for drawing and updating chunks using the Chunk Manager library. As I worked on the World Loader app I continually realised I needed to add more and more functionality to the Chunk Manager library to ensure I had all the data required to successfully draw and position tiles within each chunk.

Source

Build

Close Project

Project Name


Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.

Close Project

Project Name


Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.

Close Project

Project Name


Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.

Close Project