Note: this project is currently in development, therefore the following page is subject to change over time!
Infinite Opera is a narrative-driven roguelike/survivor game. It takes inspiration from survivor-likes like Megabonk or The Spell Brigade, while also taking cues from the storytelling and social systems found in games like Fire Emblem Awakening and Fates.
Follow the story of Ren, Kyra, and Roderick, who are forced to join the Imperial Army of Oria after their village is destroyed. At the controls of their heavily armed mechs, these young pilots and their allies will stop at nothing to defend their planet and the Tree of Life against the assaults of the mysterious Specters, whose invasion seems tied to the empire's past.
Started in February 2025 and rebooted in February 2026, this project lets me work as a solo developer on Infinite Opera. This journey has given me the chance to pick up new skills while strengthening my expertise in narrative and game design.
Project: Full Game
Genre: Thrid-Person auto-shooter / Roguelike
Engine: Unreal Engine 5
Platform: PC
Team Size: 1 person
Role: Solo Game Developper
Duration: February 2026 - Present
Solo Game Developper
Designing, scoping, and iterating on core gameplay loops and systems to ensure project viability.
Prototyping and developing character controllers and gameplay mechanics through visual scripting (Blueprints).
Establishing narrative frameworks, worldbuilding, character arcs, and dialogue.
Researching and setting up the art direction.
Researching and setting up the sound direction.
Upskilling through projects, game jams, and self-learning on engines and tools (BP, Sequencer).
I learned how to script in Unreal Engine 5 to prototype my project, test its mechanics, and iterate on my game design.
I leveled up my technical and artistic skills in Blender, as well as with Unreal's shader and VFX tools.
I got hands-on experience with project management, learning how to properly scope and prioritize my ambitions while anticipating production needs and costs.
I sharpened my game and narrative design vision by finding ways to make both aspects resonate with each other through complementary mechanics and storytelling frameworks.
I worked for several months on a personal project called “Infinite Opera,” a turn-based tactical video game with role-playing elements, inspired by the “Fire Emblem” and “Advance Wars” franchises.
But as I progressed, I realized that the project was starting to hit a wall, particularly due to its complexity and scope for a solo developer.
So I decided to reboot the project after 9 months, while trying to keep some of the work I had already done, particularly on the narrative side.
After thinking for a while about the type of game, its mechanics, and my ability to make
it on my own, I decided to go for a game that would mix auto-shooter/survivor gameplay like “Vampire Survivors” and “Megabonk” with a story, characters, and relationships like “Fire Emblem Awakening.”
The game would follow a reworked version of the story from my previous project and would take place in the same universe: a techno-fantasy/sci-fi/JRPG world.
Based on these ideas, I decided to introduce two unique systems for a “survivor-like” game:
A companion system, where players will pick up companions on the battlefield who will reinforce their squad and multiply their attacks.
A system of relationships that develop between characters as they fight together, adding dialogue between them based on their relationship rank, but also adding combat bonuses when these characters are together.
From there, certain goals began to emerge:
To ensure narrative immersion through the story, the universe, the characters, and the evolution of their relationships.
To offer new mechanics that are consistent with the narrative aspect, but also with the mechanics and fun specific to “survivor” games.
To create a universe and characters that are distinctive and memorable, both in terms of design and personality, capable of generating a “fanbase” effect.
From these objectives, the following intentions were identified:
Intention #1: The carnage+
Offer players an intense carnage experience in the spirit of the “survivors” genre, while standing out thanks to IOL’s unique content and mechanics.
Intention #2: The narrative
Create a complete story for a game genre that normally uses very little narrative, adding originality to the title and allowing us to establish a strong and memorable world and characters.
Intention #3: The “community” effect
Through its universe, story, characters, backgrounds, and relationship systems, Infinite Opera aims to build a strong community around the game. The goal is to craft a world and characters that players can connect with, relate to, and feel inspired to create content around.
With the game's format having changed, the narrative also had to be modified, whether in terms of the story's progression and proportions, the way it is delivered to the player, the way it is integrated, or even the ties and consistency it shares with the gameplay, artistic direction, and other aspects of the production.
For several centuries now, the Vokhyn Empire has unified the planet Oria and offered peace and protection to all its inhabitants thanks to its ships and armies of “knights,” huge mechanical suits piloted by loyal servants of the emperor. The stability of the world is ensured by the Emperor himself, chosen by the Tree of Life, which nourishes the world and ensures the longevity of the eternal ruler.
But for two decades now, Oria has been the target of attacks by strange invaders from the far reaches of the galaxy, the mysterious “Wraiths,” ghostly aliens controlling robotic bodies. No one has yet been able to determine where these brutal beings come from, nor the reasons for their attacks, but the empire, the protector of humanity and the Tree of Life, is doing everything in its power to drive them back into the void of space.
After the destruction of their village and the loss of their loved ones during their childhood, Ren, Kyra, and Rodrick joined the Oghma Military Academy to become knight pilots. But when their academy itself is targeted in an assault, and our trio are among the few survivors of the slaughter, their training is cut short and they are ordered to immediately join a group of ace pilots to counter the imminent invasion approaching on the horizon.
Then, fate leads them across countless battlefields on land and in space. But during their journey, our young heroes uncover ancient secrets about the deep ties between their invaders, the Tree of Life and their empire, which they thought they knew so well.
Discover the truth and forge unbreakable bonds that will bring down the most brutal waves of mechanical wraiths and uncover the darkest secrets surrounding the very origins of your world.
The game highlights several themes and messages, whether through the main story and dialogue, character interactions during relationship rank-ups, or the universe itself.
As a result, the narrative explores three different yet interconnected subjects to varying degrees:
Ecology: Our relationship with the planet and its changes, social inequalities in the face of disasters, looking for a new home versus saving the old one, resource sharing, and the balance between nature and progress.
War: The cycle of violence, past grudges, forgiveness, the scars of war, and resource conflicts.
Authoritarianism: Propaganda, repression, surveillance, and the hoarding of wealth.
How do you implement an engaging narrative that stays consistent with the gameplay in a survivor-like game, where gameplay usually takes priority over story?
By combining fixed, story-driven main objectives with random secondary objectives that add variety to missions.
By building the narrative around the playable characters—giving them distinct personalities, backstories, character arcs, and bonds through both the main story and the relationship system.
By creating a feedback loop between narrative and gameplay: character choices and relationships grant in-game bonuses that make progress smoother, while playing the game is what actually improves those relationships and, indirectly, your progress through the story.
By applying these methods, I was able to build systems that reward player investment during missions and cutscenes, without alienating players who care less about the narrative.
I crafted a story scaled properly to the game's scope that works in total synergy with the gameplay.
I learned how to design simple systems and stories that remain coherent with the genre, the nature of the plot, and the delivery method, while adapting them to the specific constraints and limitations of the project.
The goal of a mission is to survive waves of enemies within a time limit while completing the main objectives and defeating the boss that appears once they are done.
The character must defeat enemies to gain experience and level up. Upon leveling up, the player can choose from three random upgrades to strengthen their build and adapt to the increasing difficulty. As the match progresses, the number, power, and types of enemies increase, pushing players to stay on their toes and keep up the pace.
Players can also attempt to complete secondary objectives to earn extra bonuses and experience. Among these, certain objectives allow the player to call in another character as reinforcement. This ally joins the squad to help out while also leveling up on their own, expanding the player's tactical options and firepower.
When the player loses all their health, the mission fails and must be restarted from the beginning. Winning unlocks the next part of the story and completes any finished challenges.
At the end of a run, the player can choose to repair (and reset) their mech, or keep it as is for the next mission (which will be more difficult). A meta-progression system is also in place between runs, letting players earn currency to purchase permanent upgrades.
While missions feature fixed main objectives, a specific boss, a set biome, and predetermined environments, the secondary objectives and the maps themselves are procedurally generated.
In order to bring together the main outlines of the project and all of its components in a single document, making it easy to find all the ideas and decisions made about Infinite Opera: Legion, as well as simplifying exchanges with potential colleagues, I have started to create a Game Design Document that will grow alongside the project.
As with the previous version of Infinite Opera, I chose Unreal Engine 5 for the development of “Legion.” Alongside production, and with a focus on perfecting my expertise in Blueprints and programming logic, I completed several projects and took specialized training courses. The results of these efforts have been directly applied to IOL.
I am currently working on a prototype of the game, starting of course with the
3Cs, enemies, combat mechanics, some weapons and playable characters, as well as the data tables and the pooling system that allows me to summon a large number of actors (exp, bonuses, bullets, mobs) while limiting the resources of a normal "spawn actor".
By nature, survivor-like games require a massive amount of elements on screen at once, particularly enemies and projectiles (along with their associated impacts like AoEs, VFX, etc.). While spawning and destroying actors is usually inexpensive, doing it constantly with this many elements will quickly cause performance costs to skyrocket.
The solution was to implement object pooling to save resources. Instead of constantly destroying and spawning elements, they are hidden and deactivated at the end of their lifecycle, then stored in an array (the "pool"). When an actor of that class is needed again, it is pulled from the pool, initialized, made visible, and moved to the desired location. A new element is only spawned if the pool is empty when requested.
I also set up data tables to group and manage multiple classes within a single pool.
By using pools to manage enemies, projectiles, effects, consumables, XP drops, etc., I was able to lighten and optimize my systems.
By combining pools with data tables, I reduced the total number of pools needed by allowing a single pool to handle items with different behaviors (e.g., missiles, bullets, mines), while making it much easier to add new content (new weapons, new projectile types, etc.).
Thanks to these improvements, I could test my game for longer sessions while displaying a much larger number of enemies and projectiles simultaneously. This helped me better balance the long-term difficulty curve.
I learned how to design performance systems tailored to the optimization constraints of a resource-heavy genre, while structuring my project to easily add new content and systems, such as the enemy wave manager.
Pool system for projectile
With so many characters, attributes, weapons, and skills, it is easy to get lost, multiply blueprints, and run into data transmission issues between them.
I used structures and data tables to create structured containers holding all the information for the various game elements. For example, in a character's data profile, I list their name, model, weapon, and base stats. I can then use this data anywhere without relying on heavy dependencies or costly techniques.
I integrated these tables into my pooling systems to streamline integration and reduce the total number of pools.
Using structures and data tables optimized the project while keeping blueprints clean and clear.
By centralizing information into globally accessible files, the risk of bugs related to data exchange is minimized, and adding new elements is greatly simplified.
I learned how to use structures and data tables to structure a project modularly and design robust systems built around their use.
Character Data Table
Weapon Data Table
A large part of the narrative in Infinite Opera is delivered through visual novel-style dialogues, reminiscent of Fire Emblem. Some scenes will also require the player to make dialogue choices.
Implementation of UI using Widget Blueprints
J'ai donc commencé à développer un système de dialogue avec des options de choix multiple.
Pour cela, je me suis servie de Data Tables dans lequel je renseigne les dialogues et leurs traductions, mais également les personnages présent, leur position, les réponses, etc.
Dialogue display and sequencing system
Dialogue Data Table
Aiming to make the game accessible to as many players as possible, I also began developing multiple options to customize the player experience.
I also ensured that these settings persist across levels and sessions by implementing save slots and a save system.
Dialogue system and settings showcase
Language options, auto-read mode, dialogue speed, font size
and typography, etc.
Options system
QUICK INFO