Managed to complete my 15th 7DRL Challenge Entry, PLAY IT NOW!
Heroes of Noresskia is a setting for AutoDM 0.1, both things were produced during the 7 days time window (although I actually missed 3 days of dev due to the happenings of real life and work). This year I used Phaser again, with a somewhat modified version of the ES6 webpack template. The complete source code is here.
I will start with AutoDM since that’s the justification for my entry. I wanted to create a program that simulated the work of a Game Master / Dungeon Master on a pen and paper RPG session (and no, that’s not what all computer RPGs do). It all came from the research I made for my talk at Roguelike Celebration 2018 and the short article I published afterward. I knew in advance the 7 days timeframe was a bit short, but I believed I could at least do a proof of concept.
The rationale behind it was: Rogue’s intent was to simulate a Dungeon Master able to create Dungeon Dive campaigns, what if I try to create a program that can generate and run Epic Quest campaigns? these two are known as the “simplest” types of campaigns/adventures since the objective is pretty straightforward, and players know what to expect, they are the easier for the Game Master to run.
Of course, there is a lot of terminology on RPGs and none of it could be considered official. I did some research on Day 1 (including this pretty good post) and was really starting to despair since the solution to this seemed too complex and hard to scale down into a first iteration. Seriously, just taking a look at that website and reading two articles is enough for you to want to give up any pretensions of making a program able to do a tiny bit of what a good GM can do.
In any case, for the context of this, an Epic Quest type of campaign is that where the party has to travel the land finding clues to incrementally work towards an epic goal such as saving the world by destroying an arch-villain or finding/destroying an artifact, or a similar cool sounding task. All while surviving battles on the road, and becoming stronger to fight stronger monsters. Check this nicely worded article for more info on Epic Quests.
I have had a very shallow RPG playing experience, and I have never done GM’ing, so I just took what I knew from these sessions along with my research, and used that as a foundation.
The initial idea was to simulate the GM process by generating some key points of the campaign and then reacting to the player actions to build the intermediate steps or tweak the outstanding milestones. However, I ran into issues to implement that as an algorithm and had to settle in the end with generating the complete plotline from the onset.
The first thing the player does is setting up his character; since we are emulating a role-playing session, you don’t really have a lot of control over the other members of your party, but for yours, you can set the name, gender, picture, and re-roll for stats.
After this, you will be greeted with an introduction giving you some context of what is going on. As I mentioned, the campaigns that the program can generate have a certain structure that is hard to miss, but it can still generate some variation and get the player in the mood provided he wants to put some effort into it.
The world is modeled as a collection of nodes, one for each location, connected by roads. The party moves by selecting the location to travel to, based on the available connections. In the main game screen, you see the game map centered in your location, the status of your party and the locations you can travel to.
I initially intended to provide towns view using Watabou’s Toy Town, but had to cut that part.
The campaigns are generated as a linear sequence divided into episodes, the player has to travel the land looking for clues to get the artifacts that are needed to defeat the boss of each episode.
These clues are obtained from people in the different locations of the world, where the engine generates some dialog including an anecdote and the clue itself. Once you’ve gathered all the required items you will face the episode boss (or the final boss if you are in the last episode).
I think part of the charm of the game is these dialogs. The generative space is pretty limited now, and although they work well enough for a proof of concept, using something like Tracery (and a very good design) would probably yield more believable results.
Of course, moving around the map has dangers, there is a chance that you might be ambushed by monsters and have to fight your way thru. The combat system is pretty simple, with each character having attack and defense stats, and damage is calculated as a 2 * roll of ATK – roll of DEF. If damage is > 0 it is deduced from the HP. I didn’t manage to implement any magic system or special skills, time was just not enough.
What monsters appear and what their level is, is however based on your party’s experience level. You level up as a party by getting XP, and all your stats increase.
But seriously, the combat system was not the focus of my entry. I had to put it there to add some friction to the exploration aspect, but my intent was to have it get on the way of the player as less as possible. (In the end, the original 7DRL version has an issue where the players never recover their HP unless they level up, thus making it extremely hard to win).
I actually envisioned other dangers for the exploration, such as running out of supplies, but since I didn’t manage to implement an inventory and stores system, it didn’t make it.
So, the structure of the project had the AutoDM program simulating the GM, but in order to be able to create a campaign, a GM needs a setting to work with. Heroes of Noresskia is a classic Medieval Fantasy setting, I still haven’t delved into the details of it, since that was not necessary for this project. It’s basically what you would expect for a classic Dungeons an Dragons world: medieval cities connected by roads and ships, people with swords and bows, monsters roaming the countryside.
I should, however, note the tools and assets I used to build it even if it was not the development focus of the project, since it’s what it’s more visible and also it served as a proof of what the AutoDM engine can do (and could potentially do if expanded).
First off is the actual world map, after searching around for a bit for map generators, I stuck with Azgaar’s Fantasy Map Generator. It can create worlds that are big enough, detailed and more importantly, it generates towns and the connections between them.
While there are generators out there that do a better job at the physical terrain and others that go in-deep into generating town descriptions and population, this one provided the level of detail I needed to make something similar to a Pen and Paper RPG campaign. Unfortunately, I didn’t manage to map all the locations (Actually Kram helped me map a portion of the map, and that’s what ended up being released in the 7DRL), and the zoom level used in the game was a bit too low, would have been better to zoom in closer and show more detail.
Then, of course, another critical aspect of the setting were the illustrations for the characters and the monsters. I went thru both Unity and Unreal’s asset stores looking for what I needed but wasn’t really happy with the sets I found (see 1, 2, 3). The main problem I had was, well, these are icons, so even if they were presented on a high resolution, it was hard to incorporate them into the layout I had in mind.
I finally went back to OpenGameArt.org and checked back into some assets I had dismissed initially because I thought they were too photorealistic, but on closer inspection, they were perfect for what I needed. They ended up having some interesting backstory, they were created as part of a Kickstarter campaign for the FLARE project (Free/Libre Action Roleplaying Engine) but with the intent of them being useable “[…] in a great many free/libre media projects, from other video and computer games of different varieties, to print board games and rpgs, to modules and adventure scenarios or for use in other media.“. Well, I’m glad I found a good use for them! you can also back the artist’s Patreon to support this great work.
Some other open assets that were used:
- Kujasa – The Beginning, by Sergei Churbanov, aka CatBlack, used for the Title Screen
- Fantasy UI Elements, by Ravenmore, used for the game dialogs
- RPG GUI construction kit v1.0, by Lamoot, used for the in-game buttons
- Weapon and Armor icons by Scrittl, used for the Attack and Defense icons.
- Fonts: Augusta, Offenbacher Schwabacher, Deutsch Gothic
And that’s it! please play the game and let me know what you think 🙂