
Swaggerfall
Swaggerfall is a first-person open world fantasy RPG that plays in the terminal. The graphics are ascii based and limited to what the command line offers (luckily this includes background colors for text glyphs).
Despite the retro look and procedural generation à la Daggerfall, the game draws a lot of inspiration from modern games like Skyrim (UX) and Expedition 33 (turn based combat with quick time events). I also want to mention SanctuaryRPG: Black Edition as an excellent ASCII RPG, which has planted the seed for this style in my head, over 10 years ago.
You only need a handful of keys to control the game. The E key alone has dozens of meanings based on the current context. TAB brings up an action menu that lets you enter all screens the game has to offer, and also lists their keybinds (if you're more the piano type).
Every action grants xp: Sprinting, Jumping, Climbing, Mining, Smelting, Cooking... even Eating. Fighting enemies will not only grant xp in the skills you use, but will also teach you more about the enemy race, which makes combat easier and opens up more interactions (e.g. if you fought enough of an enemy type, you can tell them to leave you alone).
Become a parcour master. The game has modern features like coyote time to make sure you never fall from a building prematurely when you meant to jump. Becoming more proficient at jumping, you get more and more ledge grab tolerance. So even if your jump comes in two pixels short from a roof, you'll grab onto it and continue your run.
Be the source of rumors. As you act in the world, rumors spread through the world at a fixed speed. "Did you hear about the stranger who slayed an army of minotaurs? Some say it was just a group of catgirls."
Explore the infinite world. The world is infinite, created on the fly by mathematical formulas. The story takes places within a 20x20 km area, but you can go out much further if you want to.
Written in Rust & Ratatui. Ratatui is an amazing terminal library that lets me create sleek UIs in high level code that gets translated and compiled into various backends, including Windows/Linux terminals and a web export.
AI Usage Disclaimer
This game uses AI in the development process and for some of the assets. Regardless, a ton of experience, labor and love is going into it every day. For all the details about AI usage and my gamedev background, see the expanded section towards the bottom.
Controls
Essential controls:
- WASD to move
- Arrows to look
- Space to Jump
- E to interact (chopping, mining, talking, hunting)
- R to eat/drink
- Tab to open action menu (from there you can access all other menus)
In combat:
- Space for quick time events (hit, parry, dodge)
- C for shadow counter (when the bar is purple)
Obvious but important:
- Enter/Space/E to pick menu options
- ESC to open pause/settings menu
- ESC to close menus
The game also has full support for wired Xbox and Playstation gamepads, including dynamic switching for all input labels. You can look up and customize all controls in the "Keys" section in the main menu. With wireless and "non-standard" gamepads, results may vary.
Performance Tips
If the game runs laggy, make sure to restore the default graphics settings, which sets the quality to "high". This is the recommended configuration with a good balance between quality and performance. Lower it if needed.
Settings with highest impact on FPS:
- supersampling
- requires 4x more calculations per cell if enabled, performance killer
- godrays
- expensive to calculate. disabling them can increase your fps by another ~20-30%
- flickering fire
- has no impact on internal fps, but it forces the terminal to redraw cells a lot, as their lighting changes every frame. On some terminals this kills the output framerate. set fire to "steady" for better performance
- color step off
- similar to the flickering fire. no impact on internal fps, but by reducing the color palette, many cells share the same color and don't need updates in the terminal as often. set color step to "light" to get a good balance of quality and performance
You can monitor your frame times with the F1 performance display.
Tips for running on Windows
Please get Windows Terminal, it improves the performance by an order of magnitude. Also, Windows terminal has a "retro terminal effects" setting that I use in my screenshots to get the nice retro look.
For the optimal control about your terminal settings, launch Windows Terminal, open your favorite shell (I recommend PowerShell), then run the .exe from there. For example "C:\Users\Bob\Downloads\swaggerfall-windows-0.1.11\swaggerfall.exe" (Replace the username portion and the version string as needed)
Change the font size with CTRL and +/-.
I recommend a font size that results in around 15000 text cells (displayed in the bottom right). A sweet spot where you can actually see things but the text is still big enough to read easily.
Tips for running on Linux
Please try running the game on your favorite terminal first. If the framerate is very low, or the controls are not snappy, try the kitty terminal, which I playtested.
Optional: If you want to stay with your favorite terminal (without kitty protocol) but have input issues related to key holding/releasing, you can execute this command (needs terminal restart afterwards) to give the game more direct access to inputs:
sudo usermod -aG input $USER
Change the fontsize with CTRL and +/-, in some terminals you also need to hold SHIFT. Aim for 15-20k cells, this is usally where the UI text is still well readable.
Swaggerfall has an inbuilt brightness setting. On terminals without special shaders, I recommend bumping the brightness level by 1-2 notches. (the default is "normal")
Web version: Backup your Saves
In the web version, your saves are stored in the browser storage. Data will be lost if you clear your browser data, or sometimes it may happen on its own. In the Pause menu, you can go to profiles, select the profile you want to save and press C to copy the data into the clipboard. Paste it into a text file to keep a backup. Later you can select a profile row and press V to import a save-string.
On desktop you do not have this issue, savegames are stored in your home directory and never auto deleted.
Pricing
Buying Swaggerfall here will give you access to the Windows, Linux and Web builds, as well as all future builds. The embedded web build is free to play, but it doesn't give you the "true" terminal experience. You can show your support for the project by buying and/or playing it during the Open Alpha. You can also pay more than the minimum price, if that's your jam.
If you already bought the game and want to further support me, you can buy me a coffee: https://ko-fi.com/holonaut
Community
Discord: https://discord.gg/7GzPsWdHKF
Reddit: https://www.reddit.com/r/swaggerfall/
State: Open Alpha
At the current state the game is a vertical slice of functionality. The specific enemy types, skill lines, world generation, dialogue, difficulty balancing and quests are all bound to change. Save compatibility with future versions is not guaranteed at this stage. There may be gamebreaking bugs and lots of small glitches.
Timeline: I expect to work for another 2-3 months until the game could go into Beta state and potentially an early access on Steam. For a full release, I would expect to work on it for one year.
What the Alpha contains
The alpha contains an infinite world with decent procedural generation. So far there are highlands and lowlands, mountain ranges, forest and desert biome. There are large cities, towns and villages. All contract work is taken from an innkeeper. You can level up combat abilities. You can encounter chaos zones (wyrdness) in the world that boosts enemy stats further, the more you have travelled from the center of the map.
AI Usage & A Bit of History
Since 11 Aug 2026, I have worked on the game practically day and night, through my entire vacation, and after that next to my dayjob. Most weeks I use up my full quota in a Claude Code Max 20 subscription - that is around 10-20 million output tokens per week. What are they spent on: generating the low level Rust code for the game, porting the game to different OSes and platforms (e.g. browser), adding accessibility options like gamepad support and customizable keybinds, building tooling around the game, building integration pipelines for sounds and graphics, performance improvements, and refactoring the 200k line codebase on a regular basis. I am removing and reshaping features just as much as I add them.
The more advanced 3D character models are initially created via meshy.ai, which is another subscription. I decimate their polygon count both before they enter the game files at all, and then again during runtime for ultra-low poly versions (e.g. 100) for enemies that only take up a few cells on screen anyway. Some of the 3D models (houses, trees, ores) are procedurally generated from formulas and don't take up disk space.
I have been developing games in my free time since I got out of school in 2011, and I was never great at math or algorithms. And yet, I have sometimes created entire games within a matter of days, for example this Android game I made in one weekend (pulled a few all-nighters) in 2017 https://forum.giderosmobile.com/discussion/comment/51755. Since 2018, I also work as a fullstack developer and further specialized into developer tooling, testing and static analysis. Over the years I have learned several programming languages: Lua, PHP, JS, TS, Java, Scala, Kotlin, Rust, Python. I am using several of those in the project - mainly Rust and Python.
I think this is a matter of mutual respect. I want to respect potential players by being clear about my use of AI in the development process, and their right to be appalled by that. On the other hand I also want to make clear that this game would not exist at this scope, without my decade-long experience in gamedev, my programming background and my sheer love for the game, working on it for 8+ hours per day including weekends. (ADHD hyperfocus is one hell of a drug)
For me, developing this game is not about pride in big-brain algorithms, being a Rust coding prodigy, or flexing artistical talent. I don't claim to have any of those things. I take pride in my substantial background in gamedev and software engineering, and my ability to use whatever tools I deem appropriate for making the best game I can imagine, and keeping it all stable and maintainable (which is not something that happens when you vibe code for more than a week)
Transition to hand-crafted texts. Currently many texts are AI generated so that the NPCs and Quests have something to talk about. During the early alpha stage I simply couldn't afford to sit down for hours and days just to put some text on screen (and no writer can do it that fast either), it's just one of dozens of facets of the game that all need work. All the texts will be replaced with human writing from me, friends and professional writers who are willing to work on the project. This process has already started, and I have created a dedicated scripting system that allows writers to create quests with dialogues, choices and side-effects all on their own. Every quest text has an indicator whether it was created by a human or bot.
Whenever I talk about an issue directly (like here, in a post, comment, or anywhere else), I never use AI for that.
Known Issues
In the web version, the game stutters a lot in the beginning, but it should settle down after 10-20 seconds. When moving through the world there may be occasional stutter as well, because everything has to happen on one thread.
On Linux, the input may not work correctly out of the box. See Linux tips above for how to deal with it.
Growing RAM usage: On Windows the game uses about 300 MB of RAM, on Linux it can be double that. The reason why the number is even 100+ MB to begin with is that multithreading and storing precomputed values (caching) enable much better frame rates at the cost of more memory. This has become more and more necessary as I add more features to the game. Unfortunatley, the low level allocators work differently on different OSes and CPU types and it's quite hard to fix without opening a box of pandora. The allocators may also decide to keep some memory reserved even it's not immediately needed. I am not that deep into the topic, but trying my best to keep the memory load manageable.
| Updated | 2 hours ago |
| Status | Prototype |
| Platforms | HTML5, Windows, Linux |
| Rating | Rated 4.9 out of 5 stars (28 total ratings) |
| Author | holonaut64 |
| Genre | Role Playing |
| Made with | Rust |
| Tags | ascii, Fantasy, First-Person, Procedural Generation, Retro, Singleplayer, terminal, Turn-Based Combat, wasm |
| Average session | A few minutes |
| Languages | English |
| Inputs | Keyboard, Xbox controller, Gamepad (any), Playstation controller |
| Accessibility | Configurable controls, Interactive tutorial |
| AI Disclosure | AI Assisted, Code, Graphics, Text |
Purchase
In order to download this game you must purchase it at or above the minimum price of $5 USD. You will get access to the following files:
Development log
- Discord server4 days ago
- Lore & Writing Roadmap8 days ago
- on steam keys11 days ago
- 0.1.15 shadows, painting, mercantilism, more combat skills11 days ago
- 0.1.14 better cities, new soundtrack18 days ago
- devlog: where is 0.1.14?20 days ago
- 0.1.13 performance & visual fixes28 days ago
- 0.1.12 gamepad support & more28 days ago

















