Swarmancer

Goal: Survive for 10 minutes.

Command a massive, fluid horde of the undead in Swarmancer with necromancy! This fast-paced 16-bit arena survival game puts you in control of a skeletal swarm battling under the scorching desert sun. Outmaneuver heavily armored royal knights, dodge devastating magic, and raise fallen enemies to grow your army. Will your swarm survive the heat, or will they crumble into dust?

My submission for The Long PyGame Summer Jam 2026.

Controls

  • Mouse Cursor: Guide the swarm's movement.
  • Left Mouse Button (LMB): Condense the swarm for precision dodging.
  • Right Mouse Button (RMB): Scatter the swarm to cover more ground.
  • P: Pause the game.
  • Spacebar: Close the Upgrade Shop and return to the action.
Skeleton Chalice Meme

Cheers to the graveyard shift!

Features

  • Diverse Skeleton Army: Command not just standard grunts, but raise your own skeleton archers and plague wizards to overwhelm the enemy with ranged attacks and toxic magic.
  • Fluid Swarm Physics: Experience smooth, boids-based AI movement where every skeleton dynamically reacts to your commands.
  • Deep Upgrade System: Visit the Upgrade Shop to unlock multi-tiered synergistic buffs like Spectral Agility and Necrotic Momentum.
  • Escalating Threat Levels: Survive a grueling 10-minute run against increasingly difficult waves of knights, archers, and royal wizards.
  • Arcade Aesthetics: Enjoy a vibrant pixel-art desert setting backed by an upbeat, energetic retro soundtrack.

Developed by DragunWF with Python and the PyGame library.

Download

Download
Swarmancer-Source-Code.zip 13 MB

Comments

Log in with itch.io to leave a comment.

(+1)

I had quite a bit of fun playing the game!

There is an issue that I'm having on Firefox. The canvas remains square even after starting the game.

I had the same issue on my game, when using the "noctx" pygbag template. Doing this on main.py before pygame.init() fixes it: 

import sys, platform
ON_WEB = (sys.platform == "emscripten")
if ON_WEB:
    platform.window.eval("window_resize()")

Glad you enjoyed it! Really appreciate you taking the time to share the Pygbag snippet. Quite helpful context for web builds. Thanks for playing!