BleedThrough
A downloadable game for Android
1. Overview of the Game
Bleedthrough is a room-scale virtual reality shooter built in Unity for the Meta Quest headset using the Oculus Integration SDK (OVR). The game spans three interconnected scenes, each offering a distinct combat experience.
In Scene 1, the player faces a wave of enemies in a VR environment and must reach a kill threshold to unlock a portal leading to the next level. In Scene 2, the player fights waves of beast enemies across multiple rounds, with the challenge escalating as waves progress. In the final scene, the player confronts three waves of biological spore enemies—Micro Spores, Toxic Spores, and a final Boss—in an AR passthrough environment that blends the real room with the virtual threat. The game uses physical VR controllers for aiming and shooting, with haptic feedback on each shot. If the player dies in any scene, the game returns to Scene 1 to restart from the beginning.
2. Development Process
The project was developed iteratively, building on an existing Unity VR template with OVR camera and controller scaffolding already in place. Development proceeded scene by scene. Scene 1 and 2 were built first, establishing the core gun mechanics, enemy health systems, and score UI.
The final spore scene was added later with its own manager, prefab-based enemy spawning, and a wave progression system. Enemy prefabs (Spore, corona, and BossEye) were assembled from imported FBX meshes with game logic components such as Spore, ShootingTarget, Rigidbody, and SphereCollider added on top.
The gun system uses Physics.Raycast from the controller muzzle point to detect hits, calling TakeHit() on ShootingTarget components to process damage. Player health is tracked via a PlayerHealth singleton with a UI fill bar, while SporeGameManager maintains its own lives-based health for the spore scene, displayed as a programmatically generated health bar. Scene transitions are handled through Unity's SceneManager, with all three scenes defaulting to Scene 1 on player death to ensure a consistent restart flow.
3. Successes
We thing the core shooting loop feels responsive and satisfying in VR. The combination of haptic feedback, bullet trail visuals, and immediate enemy destruction creates a compelling moment-to-moment experience. The three-scene structure provides a clear sense of progression, with each scene offering a distinct visual and mechanical identity.
The spore scene’s AR passthrough integration is a standout feature. Enemies appear to inhabit the player’s real environment, creating strong spatial tension. The wave system in our final scene with “Wave X of 3” announcements, a health bar, and a completion screen adds a polished gameplay loop.
The BossEye encounter, which spawns directly in front of the player at eye level and requires multiple hits to defeat (>8), introduces a more demanding and rewarding challenge. Additionally, the codebase is cleanly organized, with each scene having its own manager and shared components reused efficiently without tight coupling.
4. Challenges
A major challenge during development was prefab and scene configuration errors that were not visible in the editor but caused issues at runtime. Some enemy prefabs had misaligned SphereColliders, placing hitboxes far from their visible meshes, which made it seem like the gun was not functioning.
Another issue involved incorrect prefab references, such as linking directly to raw FBX assets instead of prefab variants containing the required scripts, resulting in enemies spawning without logic.
Physics.Raycast also introduced challenges. Rays originating inside colliders fail to register hits, so enemies that got too close became unkillable. This required adjusting the ray origin behind the muzzle point. Layer masking caused additional problems, as mismatched layers prevented enemies from being detected by raycasts. Duplicate class definitions also led to compile errors, halting builds until resolved.
Also, the use of DontDestroyOnLoad caused persistent state issues when restarting scenes, such as retained scores and already-spawned portals, preventing a proper reset.
5. What You Learned
This project highlighted the importance of understanding the relationship between visual meshes and physics colliders in VR development. A model can appear correct visually while its collider is misplaced, leading to silent gameplay issues. Verifying collider alignment during runtime is essential.
Working across multiple scenes emphasized the need for proper singleton lifecycle management. Systems using DontDestroyOnLoad must handle resets carefully to avoid persistent bugs after scene reloads.
The project also reinforced the importance of using GetComponentInParent when dealing with hierarchical prefabs, as raycast hits on child objects will not detect parent components otherwise. Additionally, it revealed how Unity’s reference system differs when assigning assets from the Project window versus the Hierarchy, which can lead to subtle but critical runtime differences.
Since this was a team project with three members, each of us was responsible for building one scene independently. While this allowed us to move quickly in parallel, integrating the scenes together into a single cohesive experience turned out to be one of the most difficult parts of the project. Differences in setup, references, and scene management created unexpected conflicts, and the process of assembling everything into a stable build was honestly quite painful—but ultimately very valuable in understanding collaborative workflows in Unity.
6. Possible Future Revisions
Future improvements could include adding a main menu with difficulty selection, control instructions, and scene navigation to improve accessibility and onboarding. The spore scene could be enhanced by using OVRSceneManager to spawn enemies on real-world surfaces, making AR interactions more immersive and spatially grounded.
Expanding enemy behaviors would also improve gameplay depth. For example, enemies could split into smaller units upon defeat, or bosses could reposition dynamically, requiring more strategic engagement. Visual feedback such as hit effects or enemy health bars could further improve player clarity.
| Status | Released |
| Platforms | Android |
| Author | Boxxelf |
| AI Disclosure | AI Assisted, Code |



Leave a comment
Log in with itch.io to leave a comment.