Drogue: Welcome to the Dungeon!

I’m working on a new PICO-8 project since having wrapped up PICO Spacewar two player version. (Doing a one player version of that is something I’d like to work on in the future, but I got a bit stumped on how to implement the AI on that one and decided to switch gears for a while).

This new project is more of an old school roguelike, in that it uses a text console only for graphical display. The main inspirations for it are Dungeon Crawl Stone Soup (my favorite roguelike to play) and Porklike (which shows creative ways of dealing with PICO8’s extreme limitations in a roguelike).

Figuring out the interface was the first design challenge but took a little tweaking. I decided to go with a 32×20 console, as this is the largest one can get with even numbers on a 128×128 display with 4×6 character sizes. I came down on using a 15×15 tile map, centered around the player and scrollable. This leaves 17 characters of width for a sidebar to the right to display stats and enemy health levels, and 5 characters of height for text console output below. The console area spans the entire width of the screen, meaning each message can contain up to 32 characters.

Right now I’ve gotten the main loop stuff down, as well as the basic systems for maps, entities, items and player levelling up. What I have yet to address at this poin is the actual procedural content generation, enemy intelligence, and content in terms of the 26 monsters (A-Z) as well as lots of treasure.

Here’s a preview, I’ll post a playable demo once its in a more complete state!

PicoSpaceWar! v1.0

When I was a kid in the ’80s one of my favorite games was the shareware version of Spacewar that was going around at the time. I decided it would be a fun idea to re/de-make it in PICO-8. I took a lot of inspiration from that game and was helped out by others who had already figured out sprite rotation methods I could easily plug in to the code.

Check it out here.

Constructing Iermanz

I’ve had this idea for an alternative history constructed language since high school. The premise is an alternate history in which Rome never suffers a crushing defeat in the Teutoberg Forest, and goes on to pacify most of Germania, holding it for several centuries. After the eventual fall of the Empire, a Romance-speaking successor state develops. This state is Iermänge (pronounced /jɛrˈmeŋə/), whose name is descended from the Latin GERMANIA, and whose language, Iermanz (/jɛrmˈants/), is from GERMANICE.

The alphabet of consists of the letters:

Aa Bb Dd Ee Ff Gg Hh Ii Kk Ll Mm Nn Oo Pp Rr Ss Tt Uu Vv Xx Zz

All vowels may take an acute accent, and three take umlaut:

Áá Éé Íí Óó Úú
Ää Öö Üü

Vowel stress is typically on the vowel preceding a word’s final consonant, and is unmarked. If any other vowel is stressed, then it is marked as such with the acute accent. Umlaut marks stress as well as shifting the sound of the vowel:

ä /a/ > /ɛ/

ö /o/ > /e/

ü /u/ > /i/

In Middle Iermanz ö and ü were /ø/ and /y/ respectively but became unrounded to their modern values. The pronunciation of each letter is:

a /a/

ä /ɛ/

b /b/

d /d/, /ð/ between two vowels

e /e/ in open syllables, /ɛ/ in closed syllables, /ə/ word finally in polysyllabic words

f /f/

g /g/

h /x/

i /i/ in open syllables, /ɪ/ in closed syllables/after vowels, /j/ before vowels

k /k/

l /l/

m /m/

n /n/

ng /ŋ/

o /o/ in open syllables, /ɔ/ in closed syllables

ö /e/

p /p/

r /r/

s /s/

t /t/

tx /tʃ/

u /u/ in open syllables, /ʊ/ in closed syllables/after vowels, /w/ before vowels

ü /i/

v /v/

x /ʃ/

z /ts/

Pronouns:

I iu me mi , you tau you ti , he el him lu , she ele her la

we/us ,y’all , they/them li

Nouns come in two genders like many other Romance languages, masculine and feminine. Masculines typically end in a consonant and add -e to form the plural. Stressed a, o, and u will gain umlaut in the plural. If the singular ends in a voiceless consonant, the plural will contain a voiced version. All three of these can be seen in the word for “wolf” luf ~ lüve /luf ˈlivə/.

In contrast, feminine nouns usually end in -e in the singular and omit it in the plural, as in “list” lixte ~ lixt /ˈlɪʃtə lɪʃt/.

There are three conjugations of verbs, a situation explained by the 3rd conjugation of Latin having been absorbed largely into the 2nd. The three conjugation classes are defined by their unique endings, á í aí. For example the words for “sing”, “lose” and “define”:

txantá /tʃanˈta/

perdí /pɛrˈði/

definaí /defiˈnai/

Conjugation is recognizably Romance, for example as in the basic present tense:

txant /tʃant/ txantan /tʃanˈtan/

txant /tʃant/ txantäi /tʃanˈtɛi/

txante /ˈtʃantə/ txánten /ˈtʃantən/

Dalesquest: The Story So Far

So I’ve been working at making games for a long time. Board games, card games, pen and paper RPGs, that kind of thing. I’d always wanted to make video games. I made some trivial text games in BASIC back in the late 80s, but as far as making “real” video games it always seemed a bit beyond me.

It wasn’t until I became aware of Python that this started to change. To me it seemed pretty simple along the lines of BASIC, but orders of magnitude more powerful, especially given the libraries available to do all kinds of things. Being enamored with both old school NES RPGs (mostly original Dragon Warrior and Final Fantasy) I decided I’d try and do a game along the lines of these childhood favorites, but with board game style combat mechanics as a twist on those primary influences. That went pretty well and I got a map, combat screens, status screen, and a host of baddies made, pretty much a functional game.

After that project I became interested in procedural generation from games like Dwarf Fortress, and also got deeply into the amazing but fairly orthodox rogue-like Dungeon Crawl Stone Soup. Researching how to do stuff like that I learned a lot online, and more from Amit Patel over at Red Blob Games than anyone else. I’ve always loved making maps as a thing, but writing a program to make maps quickly became a passion for me as well.

Then much more recently after I got turned on to the retro fantasy console PICO-8, I decided it was an ideal vehicle to do a new game, learn a new language, which would be a combination of old school 8-bit JRPG and a procedurally generated rogue-like. The stars aligned and by the time I was beginning to do a little more research I stumbled upon Lazy Devs Academy where there was a PICO-8 rogue-like tutorial already in progress. I watched the series once and started coding along. Doing this gave me a good background for coming up with something more my own (though with some functions like pathfinding being directly ripped off from Krystian).

I started with the combat screen, implemented melee combat and a menu system, then ranged combat and healing, followed by simple AI for NPCs to do those three things. Once that got working I got going on the map generator, which creates a 129×129 array of tiles. It’s that size because the diamond-square method of terrain generation requires the height and width be 2ⁿ+1. Combine that with a piece that lowers the elevation the farther you get from the center, and you get a pretty decent island shape.

I’m thinking about posting a bit more in detail about some of this stuff and making progress updates here in the future, so stay tuned! You can see the latest progress here.