First, a bit of bookkeeping stuff; I’ve decided that as another Patreon reward, you can get next week’s FFF, this week! FFF #5 (this one) will be released on 29 July 2022; patrons will be able to read FFF #6 on the 29th too. Non-patrons will get access to FFF #6 on August the 5th, when patrons will be reading FFF #7.

TL;DR this week I’m writing two FFF’s to kick off the week advance, as opposed to not having an FFF for non-patrons this week.

Anyways! This week’s post is about a problem I’ve had a lot during development; What do I do with the layout of the grid? It’s a question in two parts: how large do I make each tile in pixels, and how many tiles large do I make the screen.

The two limiting factors for tile size are pixel density and text size. Having the textures too large means you can’t actually see the pixel art, and makes it impractical to draw any amount of text without it becoming too big. But having the textures too small makes it hard to visually distinguish things at a glance.

Window size has a similar problem. I’d love to cram as many tiles as I can onto the screen to get really nice big zones, but that makes the displayed visual size of each tile smaller.


Caves of Qud, my fallback for when I don’t have any idea how to do something, uses 16x24 textures and has a zone size of 80x25 tiles.1

A screenshot of Caves of Qud, with the player standing in the starting village of Joppa. There are ramshackle buildings, some farmers, 
and a small copse of plants growing in salty water.
Always pat Ctesiphus before you leave Joppa.

The earlier screenshots of Foxfire I’ve been posting here were in that vein; 16x24 tiles, and 8x8 text. But, there’s a few problems with that. The problem is I want Foxfire to actually be playable in a real terminal, and that means the tiles and characters have to be the same size (cause the tiles are going to be characters.)

Caves of Qud does have a text mode, but it cheats with the game log and renders it smaller than it really should be able to if it was in a real terminal.

The same scene as last time, but the pixel art tiles have been replaced with characters in a console font.
To be honest, I wish Qud's font was 16x24 instead of the smooth curves.

Imagine how little you could see if the log’s characters were as big as the characters making up the game world!


Here’s a little test scene in Foxfire with 16x16 tiles and an 80x50 zone:

SP-1R17 standing outside a rectangular building. The game log on the side is comically large and many of the words spill off the screen.
The font is 16x16, but it's just an 8x8 font I've scaled 200%. I couldn't find a good DOS 16x16 font that wasn't serifed.

The problem here is that the log is really REALLY big. Making it wide enough to actually print a line of any length would make it cover a ton of the screen at all times… and we don’t have the advantage of Caves of Qud where they can draw it semi-transparent, either.


And here’s the same scene with 8x8 tiles, and a 120x72 zone.

The same scene but with 8x8 tiles. The game log is less comically big.
I couldn't figure out how to fit SP-1R17's head and body in 8x8 pixels, so it's just a head.

And this looks … alright, I guess. But given the line-of-sight calculations, there’s gonna be a whole lot of empty space on the screen. Plus, the log still covers a lot.

What am I Going To Pick#

Rorax pointed me towards this game called Cogmind, which kinda seems like Foxfire but better.2

Scenes of a tank moving and shooting around a really beautifully rendered world.
Maybe this whole "16 color palette" thing isn't actually a very good idea, cause hot DAMN does Cogmind look pretty.

I haven’t bought it, but looking at screenshots of it I notice two things:

  1. The zones are really large, but you only see so much of it at any given time because the camera follows the player.
  2. There’s no game log.

That second one was something I had never thought of before, to be honest. A roguelike without a gamelog? Absurd.

Joking aside, I do want a game log in Foxfire, because I’m a much better writer than pixel artist and really love Nethack’s snarky little quips and Qud’s unapologetic purple prose. So I think I’ll take a hybrid approach:

  • 8x8 tiles
  • Have a smaller game window on the left, maybe 96x72 tiles3.
  • Have zones be MUCH larger, 8x8 screens or more.
  • Have a static game log on the right that never covers anything.

I might also take a page out of Nethack’s book. Nethack replaces the normal UI at the bottom of the screen with your HP and XP and all with a log line when it’s added to the log, and then keeps displaying the UI once you press a key. And then there’s a button to bring up the whole scrollback of the log.

I found that system kind of annoying because I would always accidentally keymash through it, so I might constantly display the last 2 or 3 lines of the log at the bottom of the screen and have the quick HUD above it. I do want some form of HUD, though, because HUDs feel very robot-y to me. A HUD might increase the verisimilitude of playing as a robot, really, if I play my cards right.4

I’m also really inspired by Cogmind’s particle effects! So I think I might extend the colors in Foxfire to a larger palette. Here’s a post by the creator of Cogmind with a bit about how the palette in that game works; the TL;DR is that he defines a set of 21 base hues, and the game produces 10 colors for each based on different brightnesses at runtime.

But of course that all takes time to implement… so I’ll see you all next week with progress on that. Or, if you’re a patron, you can read next week’s post today!

  1. The window is taller than just the zone, but the area outside of the main game display isn’t pixelated, so I’m not counting it. ↩︎

  2. And also, yknow, actually out. ↩︎

  3. I’m not sure I’m actually old enough to have nostalgia for 4x3 displays, and yet I do anyways. Hm. ↩︎

  4. I looked for that Questionable Content comic episode where Faye and Bubbles are talking about robot senses for a while and then kinda gave up looking. If anyone has a link to it I would very much appreciate it!! ↩︎