Archipelagolf

CSC8508-Engineering Gaming Solutions within a Team Project (C++ / OpenGL / PS4)

Introduction

This was the team project for the final year of my degree. As part of a team of 8, the aim of the project was to use C++ to create a cross-platform game for Windows and PS4. The game needed to be a 3D golf game where the player was able to change the fundamental rules of the game as they played, inspired by "What the Golf" and "Baba is You".

In addition to the core golf mechanics, we created 3 main mechanics: Adjustable gravity, possessable objects, and adjustable time. Unfortunately, we were unable to finish the project as it was cut short due to the COVID-19 lockdown.

What I Learnt

As the largest project I have worked on to date, this gave me a huge insight into how large projects are structured and the complexities involved when working on them. This was especially true due to the cross-platform nature of the game, as I have not worked on any other cross-platform project before. Lastly, working on a team project the large has re-enforced the importance of version control software throughout the project, such as GitHub, due to different people working on different parts of the program at any one time.

Video

Implementation

There were two main areas that I was responsible for: The graphics framework and the Level loading.

Graphics

  • I combined the graphics frameworks for the previous two modules: NCLGL from Advanced Graphics for Games, and OpenGL Rendering from Game Technologies. This was because each of the frameworks contained aspects which we wanted to include.
  • I added Cube Mapping (primarily for the skybox), post processing effects, and extended the lighting/shadow mapping of the framework. Sadly I was unable to add some of these features to the PS4 build due to the project being cut short.

Level Loading

  • A CSV file format was used for storing the levels.
  • These were generated from a Unity script which would take a constructed scene and output it into a file.
  • This could then be read into a buffered level within the game itself.

Possible Improvements

  • The obvious improvement would have been to complete the game, even if this was only the Windows side.
  • If we were to do the project again, we would not have branched out as much as we did, as well as focusing more on the PS4 side earlier on.