Goldfish: success and some final thoughts

Goldfish screenshot

My 7DRL game, Goldfish, was finished yesterday. It is, strictly talking, a 6DRL, but I am lacking both time and energy to further improve the game.

The source code is available on GitHub for inspection. I decided to share some thoughts relevant to this particular game as well to 7-day roguelikes and JS-based games in general.

Preparation

I started thinking about my 7DRL in October 2013. By the time the 7DRL 2014 started, I had basically all ideas and relevant pieces of information available and aggregated in a mind map. This is very important: during the 7DRL week, there is no time to plan, design and get stuck in an A* implementation. Everything must go smoothly as projected and planned before.

The choice of programming language is straightforward: it must be a language one is fluent and proficient with; while I applaud to those who manage to learn a new language and/or framework during the competition, I would be totally screwed in such situation.

Implementation and game features

Having a boilerplate code helped tremendously, as well as an all-purpose roguelike library. Goldfish contains almost all facets of a traditional roguelike game: turn-based gameplay, TTY-like output, procedurally generated levels, attributes, stats, quests, items, inventory, chatting, enemies. Most of them are very minimal, though.

Levels

I decide to use a cellular-automata based algorithm to create underwater caves. This worked well, after some initial experiments and tuning of cellular rules. I solved the issue of potentially-disconnected rooms by applying a flood-fill to the resulting map, remembering all reachable positions. This is the only place where I actually got stuck by an implementation detail: my poor flood-fill algo was hitting a recursion limit in Firefox.

This is my first game that uses a non-black background; a simplex noise was used to create eye-pleasing patterns.

Inventory

Goldfish inventory

The inventory took quite some time to finish, mostly because of precise positioning of individual item slots. This was worth the time, however, as people praise the inventory for its aesthetics.

Font

I decided to use a Droid Sans Mono truetype font. Its glyphs are well suited for roguelike games (check my font testbed, scroll to the very bottom) and it has a pleasing aspect ratio. On the other hand, this particular font seems to be poorly readable, making it a sub-optimal choice for longer game texts. Also, some OS/Browser/Fontsize configurations are causing certain glyphs to overflow the monospace character block, leaving ugly visual artifacts. I am not sure how to improve this.

What is missing

My initial ambitions were bigger; these features did not make it into the final game. Reasons vary: lack of time, burn out, last-time design decision changes, laziness.

  • Multi-character enemies (octopus with tentacles)
  • Oxygen usable as “mana” for special abilities
  • Multiple attack types
  • Outro / better endgame
  • Scoreboard
  • More sophisticated fishermen
  • Better difficulty balancing (the game is too easy for most; the same was true for The Conception)

Closing thoughts

Participating in a 7DRL is a fun and refreshing experience. It requires some careful planning and a respecting wife; also such event shall not be attended more than once a year to maintain inner balance and brain functionality.

Please play the game and let me know what you think; either on /r/roguelikes or via the Roguetemple forums.

1 thought on “Goldfish: success and some final thoughts”

Leave a Reply