I've always been enchanted with tabletop roleplaying games, and it is sorta what got me started in game development. And while I've done several medium sized projects by myself, I have yet to tackle something as massive as an rpg. So I figured it was time to get back to my roots, and in the interim learn a bit about procedural generation. Enter The Stories of Edar: The Second Age.
From the outset, I wanted this project to teach me as much as possible. Thus far, it hasn't failed in doing that. I also wanted to capture the essence of immersion you feel when reading a good book, or that feeling of exploration you got as a kid just imagining and playing pretend. But I didn't want to create a static world that I made myself, and wanted the computer itself to carefully craft a dynamic universe ripe with adventure. So I've basically thrown out any idea of a real design document and just said "procedurally generate everything possible!" And by everything, I mean everything from the level maps, the background music, the world map, terrain features, cities, monster stats, the various puzzles in the game, the world's history and flavor, the NPC personalities, even the story of the entire game, everything - and all at run-time.
This is easier said than done. Actually, that list is pretty long, so it's probably not that easy to say to begin with! But I like a challenge. And there have been plenty of challenges, let me tell you that! Everything from actually figuring out how you'd make a random dungeon (without going into an endless loop!) to the entire program just crashing because of my sloppy code. I'm not even gonna bother listing off all the difficulties I've had so far.
But one piece that has been more fun than frustration has been working with ways to make the background music. At first I just tried piecing together little bits of music randomly, but it doesn't sound right half the time, and then gets really old after hearing the same bits over and over. So then I tried Markov Chains, which was a little hard setting up, but after it was working it was so much fun to play with! Right now I really like what it does when I use it to make some chord progressions, and then build a melody on top of that. You can get a lot of control over the style and genre, and it makes some really good sounding stuff. I might try and add some more to this, but as it stands now I'm already proud with what it can do.
I still have a lot of stuff to work on, like finishing the game mechanics for combat, fixing up the inventory system, polishing the random dungeon generator, and plenty of other things. But I'm gonna keep working at it! Anyways I hope you enjoyed reading and that you have a great day (or evening or whatever)!