top of page

DOOM-LIKE

This ASCII art based roguelike was a blast to work on. The idea here was to make a game which is entirely data driven giving designers the power to fiddle with the project and come up with their own adventures. The dark and heavy theme of this project is heavily inspired by 2016's DOOM which at time of making this project had become one of my favourite games of all time.

Features

  • Fully data driven adventure, data-driven entities include: -

    • Actors​

    • Loot

    • Adventure

    • Items

    • Maps

    • Tiles

  • Text based intro editor.

  • Font Distortion using audio specturm analysis.

  • Memory system: -

    • fog of war where the player forgets previously visited parts of the map over time.

  • ASCII art with letters dancing to the music.

  • Dark and Heavy Theme.

SAMPLE XML FILES TO SHOW DATA DRIVEN NATURE OF THE GAME

Utility Based AI

Traditional AI works on behavior trees which is basically a series of if-else statements. The problem with that approach is that maintaining that tree can get very difficult very quick and accounting for each and every possible situation is also a hard task. Instead, I've implemented a utility based system that works on basis of utility of each action an actor can take. Every time an actor acts, it calculates utility of each of it's behavior and then chooses the behavior that is of the highest utility to it. Doing this doesn't only make scalability of possible behaviors simpler than in traditional methods but this also feels way more organic than a (very frankly) predictable  behavior tree.

Audio Based Font Distortion

​I used the same spectrum ​analysis methodology that I used in the Visualizer Globe project. Infact, the vertex shader for font distortion and that visualizer globe project is very similar.

Text Based Intro Editor

My project supports an intro which can be edited from XML using "IntroLines" node and using the attribute "lifespan" to specify the lifespan of the intro screen. For every line the designer wants to add he can just add an "IntroLine" child node. The "IntroLine" tag also adjust it's "delay" attribute which will let you tell a story line by line.

Gradual Fog of War

Unlike traditional fog of war systems, I've made fog of war in this project a little more 20th century. Instead of having a hard cut of if a tile is currently visible to the player or not, my implementation of fog of war lets that effect happen over time which is in direct relationship to how we as people perceive our surroundings. That is, what we've seen recently is more clear to us than somewhere we have not been in a while(we start to "forget" the details), which in turn is more clear to us than a place we've never been to.

Dancing Characters and Disco Tiles

It is amazing what just how much you can do with a couple variables like audio spectrum's bass and treble values. Again, the way I get those values is the same as how I get them in the Visualizer Globe project. All I do to make the characters dance to the music is I offset their y coordinate by a factor which is dictated by the treble variable. Disco tiles are done by adding tint of a random color held by the tile to the base tile color if the tile is within certain distance of the player. How much of the random color will be added to the base color of the tile is dictated by the bass variable.

(610)-714-1741

  • linkedin

©2025 by Dharmik Dave.

bottom of page