Master Server: A centralised server for accepting and distributing available game servers.
I undertook this project originally as part of a much larger and complete multiplayer architecture for the learning experience. My primary motivation to reinvigorate my knowledge and exceed the shortcomings of Archmage. Scope being as large as it was and time escaping, I reduced the scope to a solution of what I saw as a shortcoming of Unity3D itself. The shortcoming as I saw it lay within the pricing scheme for their multiplayer services. That is, this service charges for all the data sent through it, while necessitating all data for a multiplayer game to be sent through the same service. With Unity3D being, as I see it, an engine for indie developers trying to make it big, “big” would be limited to what is immediately fundable using these services. My solution to replace these services provides a master server with minimal other functionality in order to keep running costs low. Accompanying this, I have also developed a client to interface the master server as well as distribute the rich information about available game server necessary for players to make informed decisions. This project gave me a thorough understanding of Unity3D’s networking LLAPI and refined my technique for socket based servers.Master Server RepositoryMaster Server Client Repository
I completed the BGIE majoring in Software Technologies and minoring in Advanced software Technologies at QUT in Three years and one semester. Though claiming to be primarily games related it was essentially a bachelor of IT with games electives and a games related capstone project. Despite receiving the lacklustre content of the general software engineering units anyway, I would not choose the bachelor of IT given another chance. The BGIE’s capstone project was the real draw to this bachelor and proved to be an excellent experience working and communicating with team members from completely different educational backgrounds to complete a product.
|2016||1||Microprocessors and Digital Systems||100%||High Distinction||12|
|2016||1||High Performance and Parallel Computing||93%||High Distinction||12|
|2016||1||Network and Systems Administration||93%||High Distinction||12|
|2016||1||Modelling Information Systems||88%||High Distinction||12|
|2015||2||Modelling and Animation Techniques||82%||Distinction||12|
|2015||1||Discrete Structures||96%||High Distinction||12|
|2015||1||Game Project Design||84%||Distinction||12|
|2015||1||Real Time Rendering Techniques||80%||Distinction||12|
|2015||1||AI for Games||96%||High Distinction||12|
|2014||2||Agile Software Development||N/A||Distinction||12|
|2014||2||Mathematical Tools for Computing||86%||High Distinction||12|
|2014||1||Computer Technology Fundamentals||88%||High Distinction||12|
|2014||1||Data Structures and Algorithms||93%||High Distinction||12|
|2013||2||Introduction to Games Production||93%||High Distinction||12|
|2013||1||Building IT Systems||95%||High Distinction||12|
|2013||1||Computer Game Studies||76%||Distinction||12|
2015 Dean's List Award - Semester 1 - Science and Engineering
2016 Dean's List Award - Semester 1 - Science and Engineering
This project was about showing of what web-based technologies I am capable of utilizing as well as having a cool portfolio to show myself off with concrete examples. Notable tasks were repurposing this Material Framework to allow different navbar layouts for varying viewing devices, and editing/adding additional CSS like this groovy drop down box.
I undertook this class as an elective in my final semester. My intentions were to concrete my programming foundations with knowledge of interfacing hardware at a low level and working in minimal memory environments such as microcontrollers. While accumulating 100% of the marks for this class I obtained a new perspective on bit manipulation and a better understanding of hardware and how processes interface it. With IoT becoming quite popular and more commonly used I believe that the understanding of serial communication protocols such as USART from microcontrollers will prove to be a very beneficial learning outcome. A notable personal achievement with the first assignment was developing an extensible and typical game loop with functioning delta time and virtual joysticks, though not required by specification of the first assignment.
This project was undertaken as an assignment for a parallel programming class, the objective was to optimize a selected piece of software and ideally having it running faster than the original sequential code. Unfortunately, I did not achieve a speed up due to the nature of GP-GPU computing and the data sizes of the selected software. However, I still achieved great marks due to achieving scalable parallelism (shown below) and undertaking a significantly difficult problem and coming out the other side alive with something to show. Though I must admit, only just. This project taught me not only the current extent of GP-GPU computing but also the limitations and bottlenecks that must be considered when optimizing with this technology. Another notable personal achievement with this assessment piece was implementing essentially AFR with regards to compute shaders. Specifically, as I had GPU devices available I allocated problems to each device alternatively reducing some of the memory overheads and reducing the overall runtime.
This project was initially undertaken as a key data structure for implementing A* in a compute shader for an assignment on parallel computing. However Due to the scope of this idea and time constraints for the assignment I had to go with another idea. I consider this project notable as extensive research showed no fully functional array based AVL tree implementation was available to translate and adjust as required. I utilized this repository as a template to initially start but the tree rotations were incomplete for my needs and had to implement them myself from theory alone. In hindsight the constant and almost random additions to this data structure by an A* algorithm would almost render it useless for my intended project and would have been better off constructing my own memory allocation program within a compute shader.
This was another personal project that was the inspired by and the initial foundation for long running project to make a remote controlled dart cannon. Other motivations for this project were to have an extensible and open source piece for my portfolio. This project was my first attempt at implementing a standard protocol (The WebSocket Protocol) and consequently my first experience of bit manipulation which proved to take up the most development time. As this protocol was only a minor part of this project it was only implemented to the minimum requirements for correct functionality, optional features such as security were left unimplemented. Though considerations were made and the framework shown here would allow these to be added easily. With regards to the overall functionality of having a WebSocket communicate with general input/output pins, this project also allowed me to refine my skills with multithreaded systems, specifically, a multithreaded socket server. After completing this project, I then modified it slightly to allow hardcoded security features for working with stepper motors. Source shown here and an image of the hardware running the server below.
Archmage, a mage themed, multiplayer third person shooter, with MOBA elements, was the capstone project for my Batchelor of Games and Interactive Entertainment. Archmage was completed within the academic year of 2015 and our team was awarded 6/7 for the end product. The team consisted of 7 persons for the majority of the term, their roles were a Programmer/Designer, a Designer, a character artist, an environmental artist, a texture and graphic artist, another programmer and myself, also a programmer. My roles primarily consisted with the network code, constructing production tools and some minor graphics programming, Though within these roles the Network code took up the vast majority of the time as it tended to be the most problematic.
This Unity3D project was undertaken as a piece of assessment for a real time rendering class. This class was first attempt at GPU programming and my introduction into their unforgiving nature. Despite being foretold as one of the harder classes QUT had to offer from the start, I was still able to achieve 28/30 for this project and 80% of the marks overall. Within the countless hours spent on this assessment alone I implemented common shader effects such as shadow mapping, Displacement Mapping (and the collision detection on unity’s side), Billboarding and various types light sources with normal mapping. Though this was my first experience with CG shaders I believe it was an excellent example of the quality of shaders I am capable of as well as a great foundation for GPU experimentation later to come.
This Project was undertaken as a piece of assessment for an AI for Games class, this assessment required us to implement reactive agents using finite state machines. Using Unity3D I chose to implemented the agent receivers using C# delegates, this allowed for easily maintainable and extensible code as well as an ultimately simple implementation. This assessment piece also taught me the widely used A* path finding algorithm. My implementation of this algorithm made use of Unity3D’s ray casting classes to allow a dynamic pathfinding which allowed agents to avoid dynamically moving obstacles as well as working for changing environments. Though this implementation is processor intensive it was sufficiently suitable for the size of the level I was working with. Full marks were achieved for this piece of assessment.
This project was undertaken as a piece of assessment for a data structures and algorithms class. This piece of assessment required us to implement a weighted, undirected graph where vertices were locations on a map, with this we then had to then implement algorithms to find the minimum spanning tree and shortest paths such as Dijkstra’s single source shortest path and breadth first search. This piece of assessment gave me a thorough understanding of graphs and all their benefits and applications as well as a taste of how intriguing algorithms can be. Achieving 29/30 for this assessment also makes it an excellent example of the C++ skills I acquired.