The Girl Who Played With The Dragons Nest Days 5, 6, and 7

I have been a bit remiss about blogging the past few days but I’m happy to report that TGWPWTDN successfully completed the 7DRL challenge.
Here is a screenshot:

The Girl Who Played With The Dragons Nest

Altogether I spent about 50 hours out of the possible 168 and I have ~2500 lines of C++ to show for it. They implement moving, fighting, taking and dropping, wielding and unwielding, not to mention quaffing, traps, doors, potions, weapons, armor, and 15 types of monsters some with special powers. The end result is a somewahat playable game.

My big regret is that I was not able to implement FOV. I had some code from roguebasin which I had previously used successfully but this time it was giving me strange c++ errors and I was running out of time so I had to give it up. This means you can see the whole maze which makes it easier to plan moves. Even with this misfeature, TGWPWTDN is rather unbalanced. There are far too many traps and no way to detect them. There are too many doors as well or atleast the door creation algorithm needs to be tweaked as you can sometimes get a series of doors one after the other (my record is 5!) As you have to batter down doors if you don’t have a key which rapidly depletes stamina this is not good.

So in the future I will be fixing these problems and adding more features. I want more items including magical items (scrolls, staves etc.) More variety in monsters including AI and movement perhaps. Character classes or skills. Some sense of time (race against the clock, hunger etc.?) Oh and better graphics. Compared to some of the other beautiful entries, my game looks like crap. I want to look into libtcod or noteye or maybe go the whole hog and make a GUI. After all one of the objectives of the Procedural Death Jam was to use OGA graphical assets.

Anyway here is the link to the source on github. Check it out and let me know what you think.

The Girl Who Played With The Dragons Nest: Day 3

What a difference a ‘!’ makes.  As soon as I got to the computer this morning I realized why my maze generator was getting stuck in an infinite loop.  I had accidently reversed a conditional expression.  With that fixed I made some rapid progress.  I am particularly proud of my function for pretty walls.  It turns this:

tgwpwtdn before

…into this:

tgwpwtdn after

Much better wouldn’t you say?

Also, although you don’t see them yet I have code that populates the maze with monsters and items.  Making them work is tomorrows task.


The Girl Who Played With The Dragons Nest: Day 2

Today I got a lot more done though still not an entire uninterrupted day.  Damn you real life!

I’m going to take the labyrinth part of Procedural Death Labyrinth seriously and set TGWPWTDN in a maze rather than the standard rooms and corridors type of dungeon.  It will only be 15 tiles by 15 because a goal is to have a casual game which can be completed in about 5 minutes.  As well as making it easier to build something I can finish in 7 days, I personally like small scale games like this.  I find I rarely have the time to play long and involved games nowadays but I still want my dungeon crawling fix.  It will be interesting to see how many traditional roguelike elements I can squeeze into such a small space.

So today was dedicated into getting a procedurally generated maze built and displayable.  I used the algorithm from this page on Rogue Basin.  Unfortunately the examples there are in all sorts of languages except c++.  In translation I have introduced some sort of bug which causes the generator to loop endlessly.  I’m too tired to debug it now so that will be job 1 tomorrow morning.

The Girl Who Played With The Dragons Nest: Day 1

As I mentioned before I got very little done on the first day due to family commitments but I made a start at least.  My game is going to be console-mode, written in c++ (with heavy use of C++11 features) and the ncurses toolkit.  My development platform is Ubuntu Linux 12.04 and g++ 4.6.3.   Hopefully it will be pretty cross-platform (to Unixes anyway) but I’m not going to worry about that too much right now.

The architecture is the good old MVC pattern.  I created a rudimentary controller (in, game.h) and just enough of a view (, view.h) to be able to press Q to quit.)  All the curses bits are in the View class so should I decide to port it to another platform or toolkit that should be the only file that needs to be changed.