{"id":50537778,"url":"https://github.com/Abzac/fliprogue","last_synced_at":"2026-06-20T12:01:00.464Z","repository":{"id":359753961,"uuid":"1247382273","full_name":"Abzac/fliprogue","owner":"Abzac","description":"FlipRogue is a tiny roguelike RPG for Flipper Zero: pocket-sized ASCII dungeons, class perks, magic scrolls, charms, hazards, flooded rooms, mimics, lurkers, eels, and just enough chaos to make one more floor feel like a bad but tempting idea.","archived":false,"fork":false,"pushed_at":"2026-05-23T10:33:51.000Z","size":230,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T10:36:45.167Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Abzac.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-23T08:32:35.000Z","updated_at":"2026-05-23T10:33:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Abzac/fliprogue","commit_stats":null,"previous_names":["abzac/fliprogue"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Abzac/fliprogue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abzac%2Ffliprogue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abzac%2Ffliprogue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abzac%2Ffliprogue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abzac%2Ffliprogue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Abzac","download_url":"https://codeload.github.com/Abzac/fliprogue/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abzac%2Ffliprogue/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34568743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-03T18:00:23.217Z","updated_at":"2026-06-20T12:01:00.457Z","avatar_url":"https://github.com/Abzac.png","language":"C","funding_links":[],"categories":["Games"],"sub_categories":[],"readme":"# FlipRogue\n\nFlipRogue is a tiny roguelike dungeon run for Flipper Zero.\n\nIt is inspired by Brogue, NetHack, Pathos, and DCSS (Dungeon Crawl Stone Soup),\nthen folded into a pocket-sized Flipper adventure. Felicia Mirabel's\n[Flipperhack](https://github.com/LordKaT/flipperhack) was an early reference for\nFlipper app structure and Canvas/Input work, but FlipRogue now has its own game\nrules, generation, UI flow, tests, and release tooling.\n\nNew to the Dungeons of Yonder? Start with [`docs/HOW_TO_PLAY.md`](docs/HOW_TO_PLAY.md).\nFor spoilers, numbers, class perks, monsters, and magic tables, see\n[`docs/MAGIC_TABLES.md`](docs/MAGIC_TABLES.md).\n\n## Concept\n\nFlipRogue is not a port. It is a short pocket dungeon:\n\n- 18 floors, 64x32 maps, 4-directional movement;\n- three classes: Warrior, Ranger, Mage;\n- bump combat, straight-line ranged attacks for Ranger/Mage;\n- doors, grass, water, sand, ice, fire, traps, grates, chests, shrines, secrets;\n- unknown potions, scrolls, wands, Charms, small gear upgrades, food, gold;\n- the Orb of Yonder at the bottom, and the Warden after you take it.\n\nThe intended feel is readable and slightly mean: small choices, short logs,\nquick deaths, and just enough dungeon texture to make the tiny screen feel old.\n\n## Screenshots\n\n| Dungeon map | A rude little fight |\n|---|---|\n| ![FlipRogue dungeon map](imgs/map-view.png) | ![FlipRogue combat log](imgs/combat-log.png) |\n\n| Early floor | Game over |\n|---|---|\n| ![FlipRogue early floor](imgs/early-room.png) | ![FlipRogue game over](imgs/game-over.png) |\n\n| Inventory tabs | Flooded room |\n|---|---|\n| ![FlipRogue inventory tabs](imgs/inventory-tabs.png) | ![FlipRogue flooded room](imgs/flooded-room.png) |\n\n\u003e **Flipper memory note:** FlipRogue is near the practical memory edge for a\n\u003e tiny external app. It may still occasionally quit with an out-of-memory error\n\u003e on device. Sorry about that; if it happens, restart the app right away and try\n\u003e another run.\n\n## v1.2.* Scope\n\nThe current release is the first public-ready build. Highlights:\n\n- seeded procedural floors with room templates, corridors, doors, terrain\n  decorators, special-floor biases, and compact floor persistence;\n- Warrior/Ranger/Mage starts, automatic level bonuses, and class perk choices at levels\n  3 and 6;\n- persistent High Scores on SD, sorted by gold with Orb runs promoted;\n- `Sound: On/Off` saved to SD as a simple setting;\n- finite fire fields, Frost-made ice, flooded rooms, eel packs, sand patches,\n  arrow/fire/snare/poison traps, grates with keys/buttons, chests, mimics,\n  lurkers, and old god statues;\n- the Orb of Yonder and a 199 HP Yonder Warden that follows through saved floors;\n- monster behavior for packs, sleep/wander/chase, fleeing, bat blink-strikes,\n  archers, slimes, cubes, eels, dragonlings, and other small pests;\n- compact Canvas UI: title, class select, map/HUD/log, inventory, item actions,\n  chest choice, look/target modes, help, scores, game over, and victory;\n- host-side C regression tests for core gameplay rules.\n\nDeferred on purpose:\n\n- save/resume;\n- merchants and richer economy;\n- heavier AI and larger hazard simulations;\n- custom font work beyond the current small tile sprites.\n\n## Controls\n\nMain play:\n\n| Input | Action |\n|---|---|\n| D-pad | Move, bump-attack, or ranged line-shot for Ranger/Mage |\n| Hold D-pad | Repeat movement; repeated held attacks wait for release |\n| OK short | Rest, use stairs/buttons, or interact with nearby objects such as chests |\n| OK long | Look mode |\n| Back short | Game menu |\n| Back long | Return to title |\n\nInventory:\n\n| Item | OK behavior |\n|---|---|\n| Potion | Choose Quaff, Throw, or Drop |\n| Scroll | Choose Read or Drop |\n| Wand | Choose Zap or Drop |\n| Stones/Darts | Choose Throw or Drop |\n| Charm | Choose Wear/Take off or Drop |\n| Food | Eat from the menu |\n\nLook and target modes use the D-pad to move the cursor, OK to inspect/apply,\nand Back to cancel.\n\n## World Rules\n\n- Walls and closed doors block sight. Closed doors open when stepped through and\n  close later when nobody is nearby.\n- Tall grass blocks sight, can hide lurkers, and becomes trampled underfoot.\n- Puddles and water extinguish burning. Deep water costs two world turns to\n  cross, blocks land monsters, and can hold eel packs.\n- Frost can freeze connected water into slippery ice; ice can slide actors along\n  their movement direction.\n- Fire deals 1-3 damage, can ignite actors, refresh finite fire fields, and is\n  blocked or doused by water, ice, sand, grates/chests where appropriate.\n- Sand blocks fire spread but does not douse a burning actor.\n- Ranger sees traps early. Other classes must search, reveal, or step badly.\n- Grates are visible locked barriers; a same-floor key or button opens them.\n- Chests block movement. A real chest offers one item; a mimic bites first.\n- Old god statues are solid. Bump one to hear the dungeon mutter.\n- Monsters act after real player turns. Alert monsters remember you, packs wake\n  together, and the Warden keeps hunting after the Orb.\n- HP 0 ends the run. Victory is taking the Orb back to the surface stairs.\n\nThere is no gas, chasm, floating-item water physics, or merchant economy in\nv1.2.1.\n\n## Build\n\nFlipRogue builds as an external Flipper app (`.fap`) with\n[UFBT / micro Flipper Build Tool](https://github.com/flipperdevices/flipperzero-ufbt).\nUFBT is the lightweight Flipper toolchain path for standalone apps; the official\ndownloads page also links to its documentation:\n[flipper.net/pages/downloads](https://flipper.net/pages/downloads).\n\nRequirements:\n\n- Python 3;\n- a host C compiler such as `cc` or `clang` for tests;\n- UFBT installed for the same Python used by the build command.\n\nRun host tests:\n\n```bash\npython3 build.py test\n```\n\nor:\n\n```bash\nmake tests\n```\n\nBuild with UFBT directly:\n\n```bash\npython3 build.py build\n```\n\nor:\n\n```bash\nmake build\n```\n\nBuild, test, and copy the `.fap` into `dist/`:\n\n```bash\npython3 build.py package\n```\n\nor:\n\n```bash\nmake package\n```\n\nClean generated files:\n\n```bash\npython3 build.py clean\n```\n\nor:\n\n```bash\nmake clean\n```\n\nIf `python -m ufbt` fails, install/update UFBT in that exact Python environment,\nfor example `python3 -m pip install -U ufbt`, then run the command again from the\nfolder containing `application.fam`. On first use, UFBT may download SDK/toolchain\nfiles; let it finish. For SDK channel, firmware mismatch, or USB launch issues,\nfollow the official UFBT docs rather than this README.\n\n## Manual Install\n\nAfter packaging, copy:\n\n```text\ndist/fliprogue.fap\n```\n\nto:\n\n```text\n/ext/apps/Games/fliprogue.fap\n```\n\nThe app stores small runtime data on SD:\n\n```text\n/ext/apps_data/fliprogue/hiscores.txt\n/ext/apps_data/fliprogue/settings.txt\n```\n\n`settings.txt` currently contains `sound=1` or `sound=0`.\n\n## Developer Notes\n\nCore rules are split by gameplay layer:\n\n```text\nsrc/game_logic.h\nsrc/*actions.c\nsrc/*state.c\nsrc/monster_*.c\nsrc/room_*.c\nsrc/terrain_effects.c\n```\n\nThe Flipper wrapper is intentionally thin:\n\n```text\nsrc/fliprogue_app.c\nsrc/ui_*.c\nsrc/score_store.c\n```\n\nBefore adding more content, keep the host tests green:\n\n```bash\npython3 build.py test\nmake tests\n```\n\n`build.py` discovers `src/*.c` for host tests and UFBT uses `sources=[\"src/*.c\"]`\nfrom `application.fam`, so new C modules should be picked up without hand-editing\nsource lists. The generated release artifact is `dist/fliprogue.fap`.\n\n## Repository Notes\n\n- License: GPL-3.0.\n- Generated artifacts live under `dist/` and `.host_build/`.\n- Design notes live in [`docs/PROJECT_NOTES.md`](docs/PROJECT_NOTES.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAbzac%2Ffliprogue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAbzac%2Ffliprogue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAbzac%2Ffliprogue/lists"}