CHARLIE HA

VR Zapper Game

VR Zapper Game Thumbnail

Project type:

VR Game in Unity.

Project description:

VR Zapper Game is an immersive virtual reality shooting game inspired by the classic Nintendo Zapper. Set in a virtual shooting ground, players aim and fire at dynamic targets using laser pistols and automatic laser rifles.

------------------

Point system:

Large red targets: 5 points

Small blue targets: 10 points

Moving red targets: 7 points

Moving blue targets: 15 points

------------------

Game modes:

Sandbox Mode: Unlimited time for casual practice and experimentation.

Timer Mode: Players have 90 seconds to score as many points as possible and targets will spawn faster, increasing difficulty and encouraging competition and high-score chasing.

------------------

Scope:

This was a two-part project developed over 10 weeks, with each phase lasting 5 weeks. The project evolved based on the team's creative direction, with the second phase focused on expanding gameplay mechanics and improving the user experience.

------------------

Team structure:

The game was developed by two separate teams across both phases. I was the lead developer in both teams, contributing to core gameplay implementation, VR interaction design, and scoring logic.

Date:

February 17 - May 7, 2025

Role:

Game Developer and Gameplay Designer.

Project highlight:

Game mechanics:

Laser Pistols that have 20 bullets.

Laser Automatic Rifles that have 40 bullets and can shoot continuously when the player holds the trigger.

Please choose 1080p for highest quality.

Reflection:

Throughout the development of Laser Target VR, our team encountered several technical and organizational challenges that provided valuable learning experiences. Below are the key issues faced, how they were resolved, and what I learned from them.

1. Version Control & GitHub Conflict

In the final week of the project, a GitHub conflict caused a critical branch to break due to a team member’s push error. I resolved the issue by:

• Creating a new branch

• Pushing the correct content from a local backup

• Recloning the repository

This process involved multiple trial-and-error attempts, which delayed development. Moving forward, I plan to create multiple backup branches and maintain local zipped project folders as redundancy measures.

2. Target Spawning Collision Bug

An issue arose where blue targets failed to function correctly. Initially, we assumed the issue was within the target logic. However, I later discovered that a box collider from the initial spawner (which I kept for positioning reference) was unintentionally blocking signals. This collider interfered with spawned targets, rendering them non-functional.

To avoid this in the future, I will:

• Remove placeholder colliders early on

• Recloning the repository

• Leave annotated notes or use development-only gizmos for positioning references

3. Team Resource Management

Due to miscommunication about the submission deadline (I mistakenly assumed we had class time to work on it), only two members, including myself, were available to complete the game the night before submission. I’ve learned to:

• Confirm submission deadlines in advance

• Ensure better team coordination by scheduling collaboration earlier

In future projects, I will more proactively involve the entire team and assign tasks based on realistic timelines.

5. Target Spawning & UI Mode Switching

Creating functional buttons for spawning targets and managing both game modes (sandbox and timer) was complex. Initially, duplicating UI buttons led to inconsistent behaviors—sometimes activating the wrong mode.

I solved this by utilizing Unity Events in the XRInteractable script, significantly streamlining the logic. This taught me the importance of using Unity’s built-in event systems for modular and scalable UI interactions.

6. Team Leadership & Scheduling

As a team lead, I:

• Set clear internal deadlines

• Accommodated teammates' needs (e.g., giving more time to a team member due to health concerns)

• Ensured the core development stayed ahead of schedule

This proactive planning helped reduce last-minute stress and allowed us to focus on polish rather than emergency fixes.

7. Code Documentation & Scene Organization

I identified the need for better in-code documentation and scene hierarchy organization:

Some bugs resulted from forgetting why certain objects were left active (e.g., target spawn colliders)

As the scene became more populated, it became difficult to find objects, slowing development

In future projects, I will:

• Leave detailed comments explaining each function, its use, and any temporary setups

• Maintain a clean and organized hierarchy with consistent naming conventions

• Use folders and grouping for large scenes to streamline navigation

8. Performance Optimization

The scene suffered from performance drops, especially when the player turned around. I took initiative by asking a teammate to implement Level of Detail (LOD) systems for the trees. While I intended to reduce tree count manually, I struggled to select them due to terrain selection issues.

Next time, I will:

• Use Unity’s hierarchy or isolation tools to manage dense environments

• Investigate optimization earlier in development to ensure stable performance

Final Thoughts

Despite challenges, this project was a valuable learning experience in VR interaction, team collaboration, problem-solving, and game optimization. I’m proud of our progress and the functionality we achieved. In future projects, I aim to:

• Improve team-wide task distribution and communication

• Allocate time for polish and performance tuning