Infecticide

Card-Based Arena Survival: Survive the Infection, Evolve with Every Wave

2025
3-Person Team
Arena Survival
7-Day Game Jam
Unreal Engine 5.6
Released on itch.io

Project Overview

Infecticide is a medical-themed arena survival game developed in 7 days as a game jam project by team AVISWAZ. You play as a white blood cell fighting off a viral infection, surviving escalating waves of enemies while growing stronger through a card-based upgrade system. The game was built in Unreal Engine 5.6 using Blueprint visual scripting and released on itch.io as a free prototype.

As lead developer, my primary responsibilities were the progression and upgrade system and the wave spawning architecture. The upgrade system drives the core gameplay loop: every wave presents three upgrade cards to choose from, with stat-boosting upgrade cards appearing between ability waves and new abilities granted on waves 1 and 6. Wave 10 brings victory. This card cadence creates a rhythm of incremental growth punctuated by two well-placed ability unlocks.

Given the 7-day constraint, the team prioritized shipping functional, well-structured systems over visual polish. The game reflects that priority: the card upgrade system and wave architecture are clean and extensible, while environmental art and character animations remained minimal. The project demonstrates systematic design under tight time pressure rather than production-level finish.

Design Philosophy

The central design goal was creating meaningful moment-to-moment decision-making through a card upgrade system. Rather than passive stat scaling, each wave completion presents a choice that shapes how your playthrough evolves. This keeps players engaged beyond pure survival instinct. You're constantly evaluating which cards compound best and building toward the wave 10 victory condition.

The ability unlock placement on waves 1 and 6 was a deliberate structural decision. Starting with an ability on wave 1 gives players an immediate high-impact choice that defines their opening strategy. The second ability on wave 6 arrives mid-run when the player has context to make a more informed decision. Stat upgrade cards in waves 2 through 5 and 7 through 9 provide consistent incremental power between those moments, and wave 10 delivers a clear victory condition rather than infinite scaling.

The medical theme directly informed the gameplay framing. Playing as an antibody fighting a viral infection grounds the arena survival genre in a setting that makes mechanical sense: waves of enemies are literal infection waves, and upgrades represent the immune response growing stronger. This thematic coherence was achievable within the jam timeline and gives the game a clear identity despite its prototype scope.

Development Team: AVISWAZ

Key Features

Card-Based Upgrade System

Every wave presents 3 upgrade cards to choose from. Ability unlocks on waves 1 and 6 deliver high-impact decisions while stat upgrade cards in waves 2 through 5 and 7 through 9 build consistent incremental power toward the wave 10 victory.

Ability Unlock Milestones

Abilities unlock on wave 1 and wave 6, giving players two build-defining decisions across the run. Wave 10 is the victory condition, giving the game a clear endpoint rather than an infinite survival loop.

Escalating Wave System

Wave groups with enemy count thresholds, timer-based spawning, and difficulty scaling that increases over time. Each wave must be fully cleared before the next begins.

Medical Theme

Play as a white blood cell defending the body from viral infection. The arena survival genre is grounded in a coherent biological setting that gives the gameplay clear thematic identity.

Development Process

Days 1–2: Concept and System Architecture

Established the medical theme and core concept: antibody vs. viral infection in an arena survival format. Defined the card upgrade system structure early: 3 cards per wave, ability unlocks on waves 1 and 6, stat upgrades on waves 2 through 5 and 7 through 9, and wave 10 as the victory condition. Architected the Data Table structure for card definitions and the Blueprint systems needed to drive selection, application, and persistence of upgrades across waves. Divided responsibilities across the three-person team and set up Unreal Engine 5.6 project with Blueprints as the scripting layer.

Days 2–4: Card System and Wave Architecture Implementation

Built the core card upgrade system using Blueprint data structures, structs, and Data Tables to define and store card definitions. Implemented the card selection UI using Unreal's Widget system, presenting 3 randomly selected cards at wave completion and applying the selected upgrade to the player via event dispatchers. Built the wave spawning architecture with timer-based spawning, enemy count thresholds, wave group definitions, and difficulty scaling logic. The wave completion trigger feeds directly into the card system, creating a clean loop between combat and progression.

Days 4–5: Milestone Ability System and Integration

Implemented the ability unlock logic that detects waves 1 and 6 and routes the card selection to present ability cards rather than stat upgrade cards, and the wave 10 victory condition check. Integrated the milestone check into the wave counter and connected it to the card generation system via event dispatchers, ensuring the correct card pool was used at each wave type. Tested the full loop from wave completion through card presentation to stat or ability application on the player character.

Days 5–7: Integration, Polish Attempt, and Shipping

Integrated all team systems and resolved Blueprint reference conflicts. Time pressure in the final days meant visual polish was deprioritized in favor of ensuring core systems were stable and functional. Enemy and player animations were not implemented within the jam window. Shipped the project to itch.io as a functional prototype with clean upgrade and wave systems, acknowledging the prototype scope in the release description. The game was released free under the AVISWAZ team name.

Card Upgrade System Breakdown

The card upgrade system is the centerpiece of Infecticide's design. Every wave presents 3 cards, with the card pool determined by the current wave number. Waves 1 and 6 draw from the ability pool, waves 2 through 5 and 7 through 9 draw from the stat upgrade pool, and wave 10 triggers the victory condition.

Waves 2-5, 7-9
Stat Upgrade Cards
3 random stat cards covering damage, speed, health, and other base attributes
Waves 1 and 6
Ability Unlock Cards
3 ability cards presented to unlock a new active or passive ability
Wave 10
Victory
Survive all 10 waves to complete the run

Data Table Card Definitions

All upgrade cards are defined in a Data Table, with each row representing a card entry containing its name, description, card type (stat or ability), and the stat or ability it applies. Using a Data Table makes adding new cards straightforward. A new row in the table is all that's needed with no Blueprint logic changes required. This separation of data from logic keeps the system extensible and easy to balance.

Card Pool Selection and Presentation

When a wave ends, the system checks the current wave number to determine which card pool to draw from, using ability cards on waves 1 and 6, stat upgrade cards on waves 2 through 5 and 7 through 9, and triggering the victory screen on wave 10. Three cards are randomly selected from the appropriate pool using Blueprint array operations and displayed through the card selection Widget UI. The player's choice triggers the upgrade application logic and dismisses the UI to resume combat.

Event Dispatchers for Upgrade Application

Event dispatchers decouple the card UI from the player character. When a card is selected, the UI broadcasts the chosen upgrade through a dispatcher rather than directly calling player functions. The player Blueprint is bound to this dispatcher and applies the appropriate stat change or ability grant when it fires. This loose coupling keeps the card system independent of player implementation details and makes the upgrade pipeline easy to extend.

Wave Group and Spawning Architecture

Waves are organized into wave groups defined by enemy count thresholds and spawn timing. Timer-based spawning releases enemies at intervals, with enemy count thresholds preventing the next wave from triggering until the current one is fully cleared. Difficulty scaling increases enemy count and spawn rate as wave numbers rise. Wave completion is detected when the active enemy count reaches zero, which triggers the card system and begins the next wave group after card selection is complete.

Technical Stack

Unreal Engine 5.6
Blueprint Visual Scripting
Data Tables
Blueprint Structs
Event Dispatchers
UMG Widget System
Timer-Based Spawning
3-Person Team

Challenges and Solutions

Challenge: Shipping a Clean System in 7 Days

A 7-day jam forces ruthless prioritization. Early on it was clear that visual polish, animations, and environmental art would compete directly with the time needed to build robust, well-structured systems. The risk was spending time on surface-level presentation at the expense of the card and wave systems that define the game's identity.

Solution:

Made a deliberate decision to deprioritize animations and environmental art in favor of clean, extensible system architecture. The card Data Table structure, event dispatcher pipeline, and wave group architecture were all built with future expansion in mind. New cards, new abilities, and new wave configurations can all be added without touching core logic. This tradeoff produced a mechanically solid prototype that clearly demonstrates the systems design work even at a prototype visual level.

Challenge: Milestone Detection in the Card System

Routing waves 1 and 6 to the ability card pool and wave 10 to a victory condition required clean integration between the wave counter and the card generation system without coupling them directly. Early implementation attempts created fragile dependencies between the wave manager and card selection logic.

Solution:

Used explicit wave number checks on the wave counter to route wave 1 and wave 6 to the ability pool, waves 2 through 5 and 7 through 9 to the stat upgrade pool, and wave 10 to the victory condition. The card system receives only a flag indicating which pool to draw from, remaining unaware of wave management internals. This separation of concerns kept both systems independently testable and made the progression cadence easy to adjust without modifying either system's core logic.

Key Learnings

The most valuable lesson from Infecticide was learning how to scope under genuine time pressure. A 7-day jam doesn't allow perfectionism. It demands a clear hierarchy of what matters most. The card upgrade system and wave architecture were the game's identity, and protecting development time for those systems over surface-level polish was the right call. The prototype shipped with clean, explainable systems, which matters more for a portfolio than polished visuals over fragile implementation.

Using Data Tables for card definitions proved its value immediately. Because card data lived in a table rather than hardcoded Blueprint logic, balancing and adding cards during development required no Blueprint changes, just table edits. This data-driven approach is a pattern worth carrying into every future project where content needs to be authored separately from logic.

Event dispatchers kept the card UI and player character cleanly decoupled throughout development. When player implementation details changed, the card system required no updates. When the card UI changed, the player was unaffected. Designing systems with loose coupling from the start, even on a jam timeline, pays back in reduced debugging time and easier integration across team members working in parallel.

Shipping a public release on itch.io, even as a prototype, added a real deadline with real stakes. Writing a release description, setting the donation model, and publishing under a team name made the project feel meaningfully different from a class submission. That context of building something for an audience rather than a grade is worth replicating even when the scope is small.

Future Development Possibilities

Infecticide shipped as a prototype with a deliberately extensible foundation. The Data Table card architecture and event dispatcher pipeline make expanding the upgrade system straightforward. New cards, new ability types, and rebalanced stat scaling could all be added without touching core system logic.

Expanded Card Library

Add new stat cards and ability unlocks via Data Table entries. More cards increase build variety and replayability without any Blueprint logic changes.

Enemy Variety

Introduce multiple viral enemy types with distinct behaviors like fast but fragile rushers, slow but tanky brutes, and ranged attackers to demand different upgrade strategies per run.

Visual and Animation Polish

The highest priority improvement would be adding player and enemy animations, particle effects for abilities, and environmental art to bring the medical theme to life.

Boss Wave Encounters

Pair the wave 6 ability unlock with a boss encounter, creating a dual reward of new ability plus a climactic mid-run combat challenge before the final push to wave 10.

Play Infecticide or Explore More

Infecticide is free to play on itch.io. Check out my other projects to see different aspects of my game development work.