A top-down, Souls-inspired roguelike arena built from scratch in C++17 with SFML 2.6 — no game engine.
A personal project that pairs the “Transform” intake theme with combat that rewards reading enemy types and switching forms at the right moment. You clear procedurally stitched floors, spend coins on weapons, and learn three bosses that each punish the wrong shape — the same loop-driven mindset I use in my Unreal melee prototype, scaled down to 2D vector art and a single codebase you can read end-to-end.
Intake piece for BUas · Creative Media and Game Technologies (CMGT) — Bachelor’s programme, 2026–27 intake.
Same author as Medieval Combat Game (UE5 / C++) — different stack, same focus on feel, clarity, and systems you can extend.
Player — three forms, one scroll wheel
- Circle · fast · dash through enemies with i-frames
- Triangle · ranged · mouse-aimed shots
- Square · tank · ground-pound slam with knockback and shield-breaking utility
- Form matchups: effective hits (1.5×), resisted on later floors (0.5×) — forces real-time decisions, not idle DPS
- Buffs stack (up to 3) after each boss; weapons add a second layer of E-activated specials
Enemies & bosses
- Five regular archetypes (chaser, shooter, brute, dasher, shielder) with distinct movement and pressure
- The Guardian — frontal shield; Square’s slam shatters it
- The Phantom — teleports; Circle’s dash deals bonus damage and stuns
- The Hive — minion economy + ring patterns; Square clears crowds, Triangle picks the core
World & progression
- Procedural floor graph (backtracking walker + branch rooms + guaranteed shop)
- Room obstacle sets — hand-authored layouts + random fallback, doors stay passable
- Shops: 8 weapons with unique effects (vortex, barrier, chain lightning, clone, etc.)
- Save / load with Continue on the title screen; high-score fields persist across runs
Audio & presentation
- Procedural SFX — sine sweeps and noise bursts into
sf::SoundBuffer; no WAV/MP3 assets - Screen shake, particles, slow-motion death / zoom, letterboxed 800×600 view for any window size
- Pause, tutorial overlay, fullscreen F11
| Form | Colour | Ability | Strong vs |
|---|---|---|---|
| Circle | Blue | Dash (i-frames) | Chasers |
| Triangle | Orange | Mouse-aim shot | Shooters |
| Square | Green | Ground-pound | Brutes |
- C++17 · SFML 2.6 (graphics, window, audio) — static link (
SFML_STATIC) + bundled.lib/.dll - Visual Studio 2022 · x64 Debug and Release
- Procedural vector rendering (
sf::CircleShape,sf::ConvexShape,sf::RectangleShape) — no texture pipeline - Plain-text savegame next to the executable · zlib-licensed SFML headers in
SFML/(seeSFML/license.md)
Roughly 3.5k lines across seven translation units + headers.
TransformArena/
├── src/
│ ├── main.cpp Entry: window, events, F11 fullscreen
│ ├── Game.{h,cpp} Loop, maps, HUD, items, save/load, buffs, portals
│ ├── Player.{h,cpp} Movement, forms, abilities, multipliers
│ ├── Enemy.{h,cpp} Grunts + Guardian / Phantom / Hive
│ ├── Room.{h,cpp} Tiles, doors, shops, obstacle layouts
│ ├── Projectile.h Bullets + trails
│ ├── Particle.h Particles, floaty damage text, pickups
│ ├── Item.h Eight shop weapons & icon drawing
│ ├── SaveData.h Key=value persistence + highs
│ └── Sound.h Procedural buffers
├── SFML/ Headers, static libs, runtime DLLs (vendored)
├── TransformGame.sln
├── TransformGame.vcxproj
├── readme.txt Controls & features (assignment hand-in)
├── LICENSE MIT (game code; SFML stays under its own license)
└── README.md This file
git clone https://github.com/KevinRusev/TransformArena.git
cd TransformArena
start TransformGame.sln- Configuration Release | x64 (or Debug | x64).
- Build → Build Solution (
Ctrl + Shift + B). - Debug → Start Without Debugging (
Ctrl + F5).
The post-build step copies openal32.dll into the output folder.
- Windows 10 / 11
- Visual Studio 2022 with Desktop development with C++
- No extra downloads — SFML is in the repo
| Action | Input |
|---|---|
| Move | WASD / arrows |
| Transform | Mouse wheel |
| Aim (Triangle) | Mouse |
| Ability | Space |
| Weapon special | E |
| Shop buy | 1 / 2 / 3 |
| Pause | Esc |
| Fullscreen | F11 |
| Restart (game over) | R |
Game source — MIT. See LICENSE.
SFML ships under the zlib/libpng license — full text in SFML/license.md.
Computer programming student · Bulgaria · gameplay in UE5 (C++) and products on the web.
Also see · Medieval Combat Game — third-person Souls-style combat in Unreal Engine 5 (C++ only for combat, AI, and core systems).