Volatile Frameworks — Game Development
Unity/C# internship work across gameplay systems, performance, automation, debugging, QA, and UI, with an independently developed gameplay test bot as the flagship contribution.

Internship Overview
During my internship at Volatile Frameworks, I worked in Unity and C# across gameplay systems, performance optimization, gameplay automation, debugging and release QA, and UI implementation. Alongside the test bot, I implemented or iterated on runtime systems including enemy spawning, objective positioning, item drops, inventory, and tutorials.
The strongest individual contribution was an independently developed gameplay automation bot, but the internship also involved shipping and iterating on several gameplay and technical systems used in the game.
Whispering Lights — Gameplay Context
Flagship Contribution — Automated Gameplay Test Bot
I independently developed a gameplay automation bot in Unity and C#. It automatically played the game using simulated player input while making decisions from internal game-state information. The bot was normally started manually and was commonly used before live updates as broad gameplay, regression, and release testing.
Problem
Testing ahead of releases involved repeated gameplay runs. Performing these runs manually was slower and more difficult to repeat consistently across the game.
Approach
The bot simulated player input but made decisions from internal game state rather than reading the rendered screen. A relatively simple state-driven strategy guided progression through the game, while movement relied on the player character’s existing navigation and pathfinding instead of a separate bot pathfinding system.
Technical Value
The bot made broad gameplay runs repeatable, produced diagnostic logs for investigating failures, and exercised multiple game systems together before live updates. It complemented the project’s existing automated and unit tests rather than replacing them.
Selected Gameplay and Technical Contributions
- Context-aware enemy spawning: I implemented a new enemy spawning system tied to the player entering new areas. It could vary enemy count and type using game-state, balancing, and quest information and was used in the live game. A separate system could provide information about player performance; I did not implement that system.
- Main-story objective positioning: I investigated the existing story-spawning, positioning, and save/load flow, then reworked objective positioning to address cases where important story points could end up very far from the player. This was a rework of an existing procedural system, not ownership of the full world or story-generation architecture.
- Rendering performance: Using Unity Profiler, I implemented custom visibility and frustum-based culling so off-screen objects could avoid rendering and casting shadows. This reduced unnecessary GPU work and improved frame rate, particularly on lower-end devices. I also evaluated occlusion culling, but that experiment was not retained because its benefit was limited and it introduced undesirable behaviour.
- Item-drop runtime optimization: I reworked the item-drop system so drops were no longer all spawned at the same moment. Spawning was spread over roughly one second, and some common drop objects were pooled instead of repeatedly instantiated. The resulting system was used in the live game.
Other Contributions
Additional work during the internship included a contextual combat-tutorial iteration, conditional boss add-waves, an inventory refactor, unit tests in the existing Unity test suite, quest/shop/objective UI work, and general gameplay debugging, bug fixing, regression testing, and release QA.
What I Learned
The internship strengthened my ability to reason across connected gameplay systems, profile and improve runtime behaviour, design automation around real gameplay, and debug integration problems in a production context. It also reinforced the value of separating broad gameplay validation from focused automated and unit testing, and of keeping technical changes grounded in observable player and system behaviour.