Feb 23, 2011

Of URLP and the 7DRL Challenge

I finally managed to figure out the ending of URLP, and now I can get back to writing code again. However, I've decided to postpone that to after this year's 7DRL challenge (5th to 13th of March), in which I'm going to participate.

At the moment, there are some major design issues with URLP that need solving:
  • Map/Item/Creature files
  • Saving/Loading
  • Creature AI
Maps, items, and creatures are currently read from text files, which means they are easy to read and edit by anyone. I know I would go poke them myself the moment the game gets annoying enough, as this happened with Angband. Few changes to monsters.txt and those damn hounds were gone forever! Or at least had lost their breath weapons...

I think my options are either to hardcode the stuff into the game or make the data files unreadable with simple methods. Hardcoding items and creatures are not a big problem, but I'm not sure about all those -- probably nigh hundred in future -- premade maps. I've got one idea already, but it requires editing URLPeditor's source too. Which is horrible; it's basicly a one 1000-line function.

Saving and loading is another can of worms I wish I didn't need to touch. How easy life could be with Java's serialization. I did some reading on the matter, though, and I now do have a vague idea how to do this. I'm going to think about it more when URLP is nearing its completion.

Creature AI is something more pleasant to ponder. URLP has monsters trying to close in to melee the player and run away if feared. But beyond that there's nothing. I'm going to try stuff in my 7DRL in smaller scale and then, if things work out, I'll expand and implement them in URLP.

I won't do any map file tinkering, however, as I plan to make all maps randomly generated. I already played around with wavelet fBm noise; for URLP's second overworld map (which will be random) and for the 7DRL. I'm also considering using it for URLP's main overworld, but I'm not sure it would add any real value to it.

Here's one of the maps my little experiment produced:

I actually tried to make my own mapgen algorithm first. It was rather crude, and the more I tried to improve it, the worse maps it made, and eventually some nasty bugs infested it too, which I didn't seem to be able to get rid of. Then I tried to understand how Perlin noise works and should I maybe use it. After a while, I realized that libtcod already had noise generation implemented (d'oh), and I stopped trying understand, and just started using it. Wavelet fBm seemed to make the most pleasing noise.

The theme of my 7DRL is still a secret. I shall reveal it when it is time.

I'm trying to come up with a name for it, and it's proving to be quite difficult -- everything has been already taken by existing games or the like.

But more of this on next week's Saturday. I think I'll try to blog about my 7DRL progress on daily basis.


I'll leave this here for future reference: 7DRL challenge 2011

No comments:

Post a Comment