Unlichtwesen – Last day and success!

I am happy to announce a success for my 7DRL Unlichtwesen! It was a good time and my second 7DRL was a lot of fun to make. Last minute I decided to add the most complicated feature, but it seems to work.

First things first, you find it here on itch.io and via roguebasin:


News about it on twitter @Nicol_Bolas

and props to libtcod and bearlibterminal that I used to make this happen.

The game is released as 0.9 to be “the nearly complete 7DRL version”.

The game is named Unlichtwesen and the true heros should be the procedurally generated demons that you fight in 1on1 turn-based battles. It is basically only boss battles without any dungeon-crawling or puzzle solving before. These demons own their unique moveset and feature compositions, names and bodyparts and you hardly find two similar enemies.

Interlude 1: The list of bodyparts, features and movesets in the game could be infinite, the more the better. For the challenge I was happy with the number of attacks, patters and descriptions, but I will definitely extend this after the challenge and further work on this game.

The player can choose from two out of four different weapons and take one in each hand to face the opponent. The traditional-roguelike-staple “bump to attack” is replaced by directional swings, swipes and bashes, that affect certain quares when you attack. Every weapon has to independent attacks and you can use these with a respective cooldown. So timing in movement, attack pattern and evasion of enemy attacks is  akey element.

Interlude 2: The weapon choice and additional items and options leave still a lot of design space open. I see the addition of a shield, two-handed weapons and many other movesets possible and when I find time I’ll add on.

There is limited progression in the game, as every battle stands for its own. However, in the beginning 10 demons are created and saved. You can choose, which you want to fight and nothing happens, when you are defeated. You can fight as often as you want, and when you defeat the enemy, it will stay defeated. Deafeat all 10 and you have basically won.

A meta-feature of the game is, that the unique procedurally generated demons, are stored as separate files and will remain even after their defeat. Share them with friends and brag about you victory, or show impossible fights around, whether someone can do it!

This last feature was important for me, I liked the creatures that I summonend and was sad to see them dissapear everytime the game gets closed.

Enjoy the game!

Unlichtwesen – Day 3 & 4

The end of day 4 sees quite good progress on the game. The player char is done, you can choose to dual-wield two out of 4 weapons (Dagger, Sword, Spear, Morningstar) and every weapon has two moves with differnet patterns and cooldown. This part is really fun and I may extend this in the future, thinking of other weapons and how the moves could be like.

The demons have procedurally generated names, titles and bodyparts now, that influence their stats. Example:

A basic set of move and attack patterns is available as well. Some combinations are already quite fun to battle against. However, this is the part I need to extend on until Saturday evening. Adding more and more patterns could also be an endless task, so I have to see what is feasible and wherelse polish is needed.

One thing I will most likely skip is a sort of progression system. I have some ideas in my mind, but they have the potential to completely screw up the game code and end in a last minute bugfest. The game should be fine in just fighting a demon and count win as you defeat it, just to restart and encounter a new enemy.

7DRL Unlichtwesen – Day 1 & 2

My try for this year: ‘Unlichtwesen’ is German somewhat for ‘dark creatures’ and it will be a game about demons. Made some notes before on concepts, but I just hope the scope is small enough for 7 days.
The concept is, to focus on 1on1-boss battles. I always felt boss battles could be an interesting item to create a 7DRL around. Bosses should be more than just powerfull regular monsters, they should be long battles with patterns to memorize and deadly blows while tanking a lot of hits. “Classic video game”-like. The bosses should posess some procedurally generated features, bodyparts and moves, so I made them demons ‘&’ to count for their potential chaotic nature and shape.
However, what I coded so far, is the playground and the basic move sets. The player has attacks with cooldowns and each weapon has a regular move and a strong move. Player is dual-wielding and can use both weapons in both ways to make chains and combos. The demons have a diverse moveset according to their limbs. Teeth bite on close range, fists pound in an area and tentacles swipe the field. All individual moves are triggered by a timer, to make a unique pattern for each demon.
I hope analysing the patterns, dodging the swipes and fencing back will be as fun as I imagine ;).
Latest pic. Split message output for monster and player is supposed to make pattern interaction more visible.

The Prancing Bard – Day 7 & Success


Day 5 & Day 6 I was off for work.

On Day 7 I included a very basic Highscore Mode, where you just fight monsters until they can overwhelm you and your highscore gets saved with your name. Very simple mode, pretty difficult, as monsters swarm you eventually and for moving in a pattern is less and less space. The implementation is quite rough code-wise, the highscore .txt file can be edited with notepad, but it does the job.

I realized on the last day, that all my mechanics with finding a notes in the melody of the world is relying on identifying colors. As colorblindness in not particularly rare, I added a switch to change the colored notes to colored alphabetic characters. I hope this makes things easier and it reveals by the way how the game mechanism is setup in the code: every note is a string a,b,c,… and the melody of the world is a string and the bard song is also a string.

if bard_song in melody: … pretty simple

Several dictionaries translate ‘a’ to ‘purple note’ then.

Last but not least I switched from py2exe to pyinstaller for generating an executable and pyinstaller is very nice once it runs.

I am happy to have succeeded! Version 1.0 was having a misdirected control scheme, as the Numpad input had a conflict with the 123qweasd input I envisioned. Therefor, I changed to the unusual wersdfxcv control scheme for laptop people and lefties (plus regular vi-kes). The very reason I did not go for extending wasd to qweasdyxc was, that I have a German keyboard and this pattern and vi-keys suffer from y/z-switch. v 1.1 should also have one crash less on level 4.

I am very happy to announce v 1.1 as my official 7DRL-entry, everything else will be added as post-7drl updates to a seperate version. (sound is a popular request)

Download The Prancing Bard v1.1 7DRL here.

Find it on RogueBasin here.

Discuss on the reddit 7drl megathread.

Or give feedback in the roguetemple forums.

The Prancing Bard used REXPaint a lot.

Find my 7drl week in tweets @Nicol_Bolas #7drl.

Play notes while you move and chime into the melody of the world to unleash the harp of the storms.

Fight your way through 5 stages to defeat the cyclops or strive for the highscore in an endless stream of foes.

* Movement patterns have to be matched with the streaming notes to unleash magic
* ASCII graphics and effects
* 5 stages with monsters
* Defeat the Boss to move to the next stage
* Endless mode for highscores
* Colorblind option

The Prancing Bard – Day 3 & Day 4

Day 3 – I was coding until late yesterday, so I am a little late with this entry. I faced some major challenges. I was happy to include .xp files from REXpaint into my game via the xp_loader. This saves a lot of drawing for the UI and for in-game effects. In the python script it works well, however, as soon as I created an executable (with py2exe), the program crashes on loading .xp files… Puh, this was unexpected and could have stressed me on the last day.

I don’t know, whether someone solved this already, but as it’s 7drl, I coded a workaround: I used the loader in a seperate script which writes all the .xp data to dictionaries and then into a shelve of the shelve module. This file can then be easily opened and loaded also by the exe after py2exe.

See it in action:


I included monsters and tested my concept. Moving 5 turns in a pattern to cast an attack works quite well on the test stage. I have the feeling that in narrow dungeon corridors this works not so well. 5 turns is a long setup, when you spot a monster near you. At the moment I go for levels in the shape of big rooms. This way the player can see most of the map and better plan ahead. Monster constantly spawn from nests and approach the player in the test stage, but I think this works well as a game. With no items and inventory, this is probably closer to a tower-defense game than to an RPG… I like how this is slowly changing scope.

Day 4 – Added maps, the game will have 5 levels with a boss to defeat each level. Moving further away from adventure and exploration, closer to a puzzle. The main attack works and next is testing and balancing, a little cleanup here and there and tie pieces together. Been doing things like the title screen, menues, a minimum of story… Need to put it in shape as I will find no to little time for coding in the next two days.


The Prancing Bard – Day 2

Today I got some code down, the main things work in the dummy test stage. Enought to put all parts on the screen for a good impression where this may go.

Here is a first screenshot:


Moving and playing notes works, matching songs with the melody and arrows to indicate the sequence works, random shrubbery works.

Parts of the UI were drawn in REXpaint and loaded into libtcod directly. Thanks to Kyzrati and RCIX, this makes layouting things easy!

Monsters are in the making, I coded the scheduling timer described at RogueBasin already in to take care of different movement speed of monsters.

The Prancing Bard – Day 1

Yay, 7drl and I chose to work on an idea I was having for quite some time.

The planned core mechanic in a nutshell:


While you move, you play notes, depending on the direction. With this you play songs to throw magic at monsters. I have still no idea, wheter this will work out in a dungeon crawler. Is it applicable for a roguelike anyway? Let’s find out!

Code-wise I use libtcod in python and took my published roguelike rng clrc as a start. I ripped out all code apart from the basics, in fact this lead close to the libtcod+python tutorial.

Here are some things, that inspired me:

Darren Grey’s 7DRL Mosaic has pattern and music coupled in an interesting way.

The Hunting Horn from the Monster Hunter-Series is a lovely weapon.