Fontmixing - Making a visually pleasing Roguelike - Lonely Spaceman Day 2


I have two big problems with ascii games: First, text isn't written as squares (unless you're using logographs - neat idea for a future roguelike) and so with Latin characters a square grid will look taller than it is wide. this makes movement uneven and prevents intuitive, symmetrical level design. Second, when text is written as a square, it is bad. Some fonts - especially retro fonts like on the Commodore64 - make do, but they often have a limited glyph set (and I'm not trying to make a font although a C64 Soviet-style hack would be cool). Modern, rectangular fonts just become hard to read when spaced out. In both cases they also take up a lot of space which can be a problem unless you're playing with that limitation. The solution is to use both. I created a workaround where I created two game windows, one for the player, and one for the text and inventory. Rather than using popups I divided screen space and so I have a square playing viewport and a much wider (but visually thinner) viewport for rendering text. See https://tapiov.net/unicodetiles.js/docs/html/files/unicodetiles/unicodetiles-js.html#Viewport.Viewport for more info

This solution isn't for everyone. Using a square font does give a retro and comfy feel even when used for text. It could be easily modified to include Cyrillic characters like I want (but not easily enough for me to do it in this 7 day window). It also forces the dev and user to work with the limitations of limited screen space. Exclusively using a modern rectangular font also might give a certain look and feel that a dev is going for. In any case, I guess it really doesn't matter two much because ascii-based roguelikes run on a grid, and so should be able to accept many fonts and layouts without changing the gameplay. If there isn't enough space you can decrease the font size and increase the viewport (on modern computers). But that's what I worked on.

Yesterday was spent largely on technical garbage, overcomplicating things instead of keeping it simple. I eventually figured out what I was actually trying to do and implemented it pretty quickly. Today I'm going to try and make content which is something I've really avoided so far and haven't done a lot of in any game I've made or am making so we'll see how it goes. I'm going to start with making some new tiles and enemies and that will lay the basis for procedural generation. One of the things I absolutely need to finish this. That, combat, and death.

I think giving up on trying to hone my lacking art skills was good because I at least was happier with it than I originally was. I won't get the exact feel down that I want (see the main picture for what our spaceman might be playing on), but now I can say that's done and move on to what is important. Some stuff I've already decided I won't touch unless I somehow finish everything else: an examine mode, menus, sound effects. I need to get back in the practice of programming and making games, and motivated to get through those things by making fun gameplay before I focus on those.

One last thing, I don't work with JS often and I forgot that console.log() is used instead of print(). Print brings up a pdf print window and I couldn't figure out why the browser was so insistent on saving the game as a pdf. That was some of the technical garbage that took me way too long to figure out.

Thanks for reading.

Leave a comment

Log in with itch.io to leave a comment.