Skip to content

Bogdan Janjić

Software, games, tools & other experiments.

Developer based in Užice, Serbia. I build desktop apps in C#/.NET, Android software in Kotlin and Compose, games in Godot, Linux tools, and local LLM pipelines. Ember Moose is where all of it lives.

…and things that probably should have been separate projects. I'm Bogdan. Ember Moose is where all of it lives.

Real range, shipped: desktop apps in C#/.NET, Android in Kotlin, games in Godot, Linux tools on an Arch daily driver, and local-LLM pipelines — most of it published, all of it documented here.

01 / featured

All projects

01GamesGodot 4.7.1 · GDScript · 3D

ANTE ZERO

“Count down to nothing”

A dark 3D card-table duel where your remaining lives are counted on the fingers of one hand.

  • Tension structure borrowed from Buckshot Roulette; the central mechanic is entirely different: a custom poker-inspired card game called The Cut
  • Five lives represented by fingers; lose a hand of cards, lose a digit
  • Four difficulty modes, Easy, Normal, Hard and Extreme, each with distinct opponent behavior and configuration
  • Configurable opponent AI, dialogue system and async match flow
  • +3 more on the case study page
ANTE ZERO in play: the card table at COUNT 29, five fingers on each side, three cards left to choose
fig. 02 · The Cut at COUNT 29: in-game capture

02GamesGodot 4.7 · GDScript · top-down

Pillars of Controlex-Stonebrook

A social strategy game about four roles competing for control of one town, designed as a four-player multiplayer match of cooperation, deception and structural dominance.

  • Designed around four competing roles, each a different kind of power: Farmer as supply controller, Businessman as capital controller, Store Manager as information controller, Regulator as legal controller
  • Walkable top-down world with six explorable locations
  • Interlocking economy, reputation and espionage systems: a visible public reputation score runs alongside a hidden actual-conduct score, and the two are not the same
  • Dynamic policy layer: food standards, tax rates, surveillance legality and contract enforcement can all change mid-game through the Regulator’s tools
  • +2 more on the case study page

In development

Pillars of Control role selection: Farmer, Businessman, Store Manager and Regulator
fig. 01 · role selection: in-game capture

03SoftwareC# · .NET 8 · WPF · SQLite

CampaignForge

An offline desktop toolkit for tabletop RPG game masters: dice math, linked lore and encounter tracking with no network in sight.

  • Recursive dice-expression parser: nested modifiers and keep/drop arithmetic evaluated as a proper expression tree
  • Bidirectional entity linking: NPCs, locations and items point at each other from both ends
  • Encounter tracker with an undo stack deep enough to trust mid-session
  • Random table engine backed by SQLite FTS5 full-text search; WAL journal mode for safe concurrent reads
  • +1 more on the case study page

Offline by design

fig. 03 · dice-expression evaluation, parse sketch (representation)

05 / contact

The archive is the résumé. What’s next is negotiable.

Looking for software development work: internships included, and the more advanced the better.

GitHub Get in touch