Producer (pre-production)
Project management
Task Delegation
Client Communications (throughout entire project)
Scrum lead
Systems Developer
Implementing VR Controls and Interactions
Implementing Ropes system (including interactions, visuals, and influence on boat's behaviour)
Implemented the sail animation logic
AI Programmer
Implemented Goal Oriented Action Planning AI Agents
Soft skill development
Project Management skills
Client Relationship Management
Designing and Implementing interactions for VR
Designing and Implementing dynamic, competitive AI
As Windstriders was my capstone project for my degree, it was a year long project and the longest professional project I'd worked on up to this point. As such, there was many opportunities to develop new and strengthen my existing soft skills. The most important of these for the success of this project was absolutely communication. Working within and managing a team of 5 developers to achieve all the deliverables for the client was a challenge, however by improving my communication abilities, especially regarding keeping the team on the same page with the current tasks and priorities for each sprint, ensured that we created an extraordinary product. The best example of this was early in production when the team was working on developing the sailing system. My teammate Blake was responsible for the physics of how the boat behaved with the wind, while I was working on the ropes systems. As these are directly connected, we were in constant communication regarding the structure of these systems and how they were going to interact, meaning as soon as the rope mechanics were completed they were compatible with the sailing system and didn't require any refactoring for the systems to cooperate. Had the communication been subpar, elements of both the rope and sailing system likely would've had to be restructured and refactored, requiring more time from the limited amount we had.
As Windstriders was a QUT Capstone Project, we were invited to show the game off at the QUT IT and BGIE Capstone Showcase, as well as entering in to showcase it at the Reality Labs XR Showcase at QUT. This gave me an excellent opportunity to develop my Showcasing skills, breaking the project down into an elevator pitch to share with over 100 people through the course of the two nights. With dozens of people trying out the project in VR, and constant interest from the showcase event visitors, I gained lots of experience in showing off games projects, convincing people to both play demos and reach out to connect through various networking platforms, as well as being able to succinctly describe all the different aspects of the project, while deferring to my other teammates for more specific questions I couldn't answer.
For the first semester of development, pre-production and early production of the project, I was the producer for the project and handled team coordination, task delegation, client communications, leading scrums, deliverable submissions, and emergency design decisions. I ensured everyone on the team shared a united vision of the project, both the client and course teaching staff were happy with the project and it's progress, and that development was happening timely and to an adequate standard. This was done through effective utilisation of a number of tools, including Github to ensure we could keep all work centralised to one project, Google Calendar to confirm team availabilities and schedule meetings with the client across time zones, and Trello to track all the tasks being worked on, as well as track the product backlog and create burndown charts.
Handling pivots in design and deciding if they're necessary was another responsibility of mine as the Producer, and one of the first major pivots was in the rope system I personally was developing. The initial ropes were dynamically generated and utilised physics and hinge joints to create the physics of the rope, with a spline overlaid for the visual elements to create a cohesive appearance, however there were numerous issues with how the rope interacted with the boat when physics was enabled for both. As well as this, the ropes could be distracting and hard to find, making the player experience worse. As a result of this, I made the decision to pivot away from physics based ropes, slightly decreasing the realism of the project to improve the play experience and make the game better overall.
A major component to Windstriders is the Race Mode, where you can race in a fleet of sailors on tracks inspired by real Olympic sailing layouts and locations. To make this possible, we had to develop an AI system capable of navigating the course while accounting for the various factors that influence how an individual should be sailing, including wind strength, direction, proximity to other sailors, and the ideal sail shape/tightness for the conditions.
Developing this AI was completely my responsibility, and after some initial research I decided to utilise a Goal Oriented Action Planning (GOAP) system to drive the AI's actions. The two main reasons for this were that the AI boats are required to operate the same way as the player boat by directly controlling the various ropes and rudder, as well as the dynamic, emergent nature that GOAP offers to an AI system. By being able to plan a series of actions independently based on what it believes to be the best option for achieving the current goal, minor differences between each specific sailboat can lead to very different behaviours, with some boats acting far more aggressively with others playing passive and waiting for the perfect moment to shoot around a buoy for an overtake.
Utilising GOAP AI also allowed for a much greater scale of AI much easier than a more manual system. During testing, the AI functioned with 100+ sailboats on the course at once, although the course wasn't designed for this number of boats and so the behaviour became very chaotic. However, the mode was intended to be played in fleets closer to 16-24 ships, as seen below, which the AI performed much better in