top of page

Final Year Group Project

  • Writer: Fabio Pereira
    Fabio Pereira
  • Jul 25, 2024
  • 5 min read

Updated: Jan 1


Overview

We were a VR laser quest team developing a pirate-themed VR game framework for our client, Alex, the Director of CCIXR in Elden. Alex’s brief requested a VR multiplayer framework for Focus 3 headsets, enabling players to walk within the mocap room, which translates into in-game movement. He wanted us to add a haptic vest and gun into the framework and develop it to allow game designers to use it as a toolkit to make VR experiences.


Additionally, for our submission, we were required to use this framework to develop a game; our game is a target-shooter where players defend a town against ghost pirates, aiming to eliminate them before they can attack.


There were 4 programmers, 2 artists, 2 producers, and 2 designers. It lasted 2 teaching blocks – this was a 5-month long project – and we committed to 2 days a week. It was overscoped, we lost some team members, and we couldn’t implement some requirements, but we delivered an experience and framework the client was happy with.

 

What I did

VR Mechanics and Interaction System Development:
  • Developed a versatile grabbing system for VR, enabling object pickup, usage, and dropping, with dual-wielding and two-handed grip support.

  • Implemented a modular design, splitting functionality across a grabbing component (for hands) and a grip component (for grabbable objects), ensuring consistent integration across characters.

  • Designed with delegate functions for custom behaviours, enhancing flexibility and expandability; suggested future improvements for debugging and code consistency.

Enemy Wave Spawning System:
  • Built a dynamic enemy wave spawning system within the game instance, supporting movement-based and stationary spawn locations for VR gameplay.

  • Integrated probability weighting for enemy variety, allowing designer-specified rarity and planning for resource optimization via object pooling.

  • Addressed a scoring system bug, reinforcing the importance of comments and parameter constraints for maintainable code.

Task Management and Team Leadership:
  • Organized tasks in Google Sheets for workload visualization and prioritization, preventing low-value efforts and enhancing team efficiency.

    ree
  • Mentored junior developers through pair programming and code reviews, raising submission quality and building team confidence in Unreal and VR development.

  • Collaborated with producer to organise workload and project scope.

Code Management and Workflow Optimization:
  • Managed challenges in Perforce due to limited task branching, ensuring stable code integration and quality control despite complex review and refactoring processes.

  • Balanced dual roles of lead programmer and core feature developer, coordinating with producers and delegating tasks to maintain project momentum and prevent burnout.

Feedback and Continuous Improvement:
  • Positive peer feedback recognized team morale-boosting, organization skills, and effective programming leadership.

  • Demonstrated proactive problem-solving by identifying and resolving issues early, preventing feature creep, and maintaining a commitment to team success and growth.


 

Post-mortem and reflection

  1. Meeting Client Requirements

    1. Successes: Delivered most client requirements with a well-received mobile-rendered game that showcased the capabilities of VR hardware (Focus 3, B haptics Vest).

    2. Limitations: Due to time constraints and inexperience, multiplayer functionality was cut. This resulted in a single-player experience instead.

  2. Documentation and Knowledge Sharing

    1. Comprehensive Documentation: Developed user guides, task lists, technical art documentation, and framework docs, ensuring continuity for future developers. Used a consistent documentation format in Confluence for easy reference and a unified knowledge base.

    2. Challenges in Exporting: Found Confluence beneficial as a “single source of truth,” though exporting to PDF or HTML for client handoff was less effective, as formatting could be improved for clarity.

  3. Challenges Faced

    1. Project Overscoping: Due to an overambitious scope influenced by our lecturers wanting to push us to grow, some features (like the Striker Gun and volumetric scans) were cut. The team struggled with workspace limitations and had less frequent client feedback than anticipated.

    2. Technical Constraints: Encountered issues with Perforce source control, leading to lost work and difficulties with versioning. Some assets required re-creation, and new technologies (e.g., haptic vests, Focus 3) added complexity.

    3. Networking and Unreal Challenges: Due to the learning curve in VR optimization, Android Studio, and APIs, implementing networking was beyond the team’s time and experience.

  4. Team & Individual Performance

    1. Team Cohesion: Overall, the team worked well, balancing VR learning and complex project requirements. However, communication and time tracking could improve, as JIRA and Confluence were abandoned near the end in favour of Discord.

    2. Reflected on Feedback: Addressed feedback about burnout by delegating tasks and increasing support for producers, working towards a balanced workload and team dynamic.

    3. Enhanced Communication: Team communication around game design and task prioritization, could be improved to avoid heated debates. But I learnt how to communicate with people in a professional and constructive manner, allowing us to work through problems.

    4. Consistent Task Tracking: Maintaining usage of JIRA and Confluence throughout the project, rather than switching to Discord, would have helped with accountability and organization.

    5. Team Leadership: Actively led the programming team, maintained communication via Discord, managed morale, and organized workspace and documentation for efficient collaboration. Received positive peer feedback for supporting the team and providing constructive feedback.

    6. Self-Assessment: Emphasized learning through teaching (the "protégé effect") and recognized the value of thorough documentation and team mentorship. Acknowledged the importance of collaboration for both personal and professional growth, which I aim to carry forward in future projects.






Team Feedback

During the project, we had to submit team feedback. These are a few extracts written by my team:


  1. Assisted the whole team with Confluence and Miro. Undertook a lot of programming documentation and started helping other programmers.

  2. Fabio has been working extremely hard this week helping some of the other programmers with Unreal. He has also provided the team with a complete project Gannt chart. Fabio has also started the folder structure in Unreal, added time estimation and logging into Jira and started a prerequisites page. Fabio has been very talkative in conversation and overall has helped out all of the team members at least once already.

  3. Worked hard on project scoping. As continued to help the other programmers and has contributed massively to the programming side of the presentation. No criticism to give

  4. Has been on top of meetings and has contributed a lot of documentation into perforce. He has been very communicative both on discord and in our in person meetings. He delivered the Art side of the presentation solo. Nothing bad so say so far.

  5. Working very hard. Has a very logical and professional viewpoint on every idea presented. He is continuing to lead the programming team helping Ersan and Will. He has been coming into Eldon to work on the Headsets to begin working on the framework. No criticism to give.

  6. Continued to work on the Focus 3's. Looked into VIVE software and started working in stick movement. As always Fabio has been helping others, this week he helped Ersan get a Quest 1 working. Has been really active on discord. No criticism to give.

  7. Fabio has continued to set up the Focus 3's this week. Fixed issues with the headset crashing. Set up a PC in CCIXR for Ersan. Worked on further Perforce documentation

  8. Incredible amount of progress this week. Continued to add to tasks for game mechanics on Jira. Created a score counter system. Began on enemy spawn code. Created an enemy spline path actor with documentation.


Comments


Commenting on this post isn't available anymore. Contact the site owner for more info.
bottom of page