Bartłomiej Kaniowski

Projects

Games I've made since 2017, in Unity.

Death Standing

2026

Absurdist parody game where all you do is hold the left mouse button without moving the mouse itself, i.e. you stand still.

  • Designed and shipped a commercial game solo, published on Steam.
  • Built a Steamworks-based online co-op system: lobby creation/browsing, host migration, P2P handshake sync.
  • Built an LLM-assisted Python email scraper (handling Cloudflare and checkpointing) to identify and prioritize streamers matching the target audience.
  • Set up a custom email domain and configured Brevo for outreach at scale.
  • Handled all press, streamer, and community correspondence personally.

Reroll Routine

2026

Rolling clicker inspired by autobattler-style shop systems.

  • Designed and shipped a demo for an incremental game solo, published on Steam.
  • Implemented a Visual Novel-style cutscene system to drive narrative progression.
  • Implemented the upgrade/cost system and balanced it through playtesting iteration.

Salvation of Sisyphus

2023 (WIP)

Rage platformer.

  • Implemented layered physics interactions for throwable objects: stacked objects become solid platforms, while isolated or upper objects remain traversable, allowing the player to move behind, pick up, and throw them.
  • Made a design decision to build the core traversal around forced risk: the player cannot move while carrying an object, so progressing requires throwing it and catching up.
  • Made a design decision to use a picture-in-picture camera to keep both the player and thrown object visible when they become separated.
  • Localized the steam page into English, Polish, and Korean (including visual assets).

Nymn's Game Jam entry (3rd place, $300 prize)

2024

  • Built procedural generation for room layouts, connections, item drops, and enemy placement.
  • Designed a costume system where picked-up items change the character's appearance.
  • Designed multiple boss fights with distinct attack patterns and phases.
  • Implemented a minimap with persistent fog-of-war exploration, permanently revealing rooms as the player entered them.

Game Jam entry (1st place, $1200 prize)

2020

  • Built live Twitch chat integration where each in-game unit was controlled by a different chatter, with chat voting on tile movement and attack targets in real time.
  • Implemented procedural map generation and fog of war.

Various streamer fangames (first games)

2017-2020

  • Consistently shipped finished, playable games, played by some of the biggest streamers in the world (forsen, sodapoppin).
  • Learned to design for a target audience's inside jokes and context rather than a general player.
  • Learned to turn a loose narrative (memes, community events) into a cohesive adventure told through gameplay.

Random Tools

Tools and scripts I've built over the years to support my personal projects and workflow.

Livestreaming avatar multi-purpose tool

2022

  • Built a virtual avatar for livestreaming with text-to-speech, automatic mouth/face animation synced to when it's talking, and a separate command-driven system for triggering full-body emotes.
  • Chained together several external programs from within Unity: DECtalk for text-to-speech, yt-dlp for video downloading, and ffmpeg/Demucs for audio conversion and vocal separation, into automated pipelines (e.g. pull a video from a chat request, strip out the vocals, run them through an AI voice changer, and play it back through the program).
  • Built a system that cleans and validates the speech synthesizer's raw phoneme output, then randomizes pitch and duration per vowel, giving typed text a sung, melodic quality.
  • Developed a Twitch chat bot that lets viewers trigger avatar animations, movement, and on-screen effects through chat commands.

Streamer Email Scraper

2026

  • Handled Cloudflare challenges automatically, detecting them and waiting for them to clear, with a manual-solve fallback when needed.
  • Checkpointed progress throughout the scraping process and exported results to CSV, preventing interruptions from causing previously collected data to be lost.
  • Collected contact emails in parallel across multiple browser instances, with retry logic for failed page loads to increase scraping speed and throughput.

Game Dev Utility Scripts

N/A

  • Automated Steam achievement creation end to end: generated achievement metadata via script, rendered the icon sprites, batch-processed them in Paint.NET with AutoHotkey, then wrote a browser console script that automated entering and uploading everything into Steamworks' admin panel.
  • Sprite-to-points converter: extracts edge contours from a sprite image and exports them as coordinates, for driving particle effects along sprite outlines.
  • Font-to-sprites generator: renders each letter/number from a font as its own image.
  • Palette extractor: pulls the dominant colors out of a reference image to use as shader gradients.

Korean Listening Practice Generator

2024

  • Built a known-word tracker that scans the provided Korean text, strips grammatical suffixes and conjugations, and flags words not yet in my vocabulary list.
  • Wrote a parallelized Selenium (C#) scraper that pulls example sentences for words from an online dictionary, using multiple browser instances simultaneously to speed up the process.
  • The tool generates TTS command-line commands that repeat each phrase a few times interwoven with its translation, and can optionally stitch the resulting audio clips into one continuous file with ffmpeg.

Competitive Gaming Achievements

Years of competitive play across card games and autobattlers, giving me firsthand perspective on how players learn, optimize, grind, and engage with games.

  • "Finished Season 20 of Hearthstone in 88th place on the European ladder (peaked at #20). "
  • "Finished 3rd in 'Hearthstone 1on1 IEM Ticket Challenge Poland' online tournament"
  • "Peaked in the top 0.21% of EUW players in Teamfight Tactics (#720)."
  • "Gwent (beta) - finished #365 on one account; top 1,000 on another."

Let's talk

For commissions, collaborations, work inquiries, or general questions, use the contact details here.

Email me →