Posted March 29, 2019 by Bracket
#roguelike #rpg #turn-based #UnrealEngine
This is a pretty large build, with a lot in it!
Turn Restructure
I noticed that I'd forgotten to sub-sort active entities by Dex (to resolve colliding initiative rolls), so I did that. It's also stricter about not running ANY actions in-between you giving a command and the game resolving the sub-turn; no more "I hit up, and another entity moved first and messed things up". This was a pretty serious bug in my turn-based code!
New Player Experience
The game now includes a number of helpful popups to get you started. You can stop seeing them by clicking "Stop Helping!" at any time - and they won't bother you again. It includes an easy way to pick your keyboard schema, a quick explanation of the GUI, and advice for new players just getting started on what to do. I've tried to make it non-intrusive so as to not bother veteran roguelikers, but I'm hoping that One Knight can appeal beyond the strict genre - and a bit of help can go a long way.
Integrating the overworld/story
The main menu shows you a flyby of the overworld, and when levels start you see the levels' location on the overworld map (not all are done, yet) - along with the story text telling you what is going on. It quietly preloads/builds the level while you are on this menu, and as soon as its built you can hit any key (or click the button) to proceed. Hopefully, this proves to be a good balance between quick play and storytelling.
Progression Benefits
As the story gets fleshed out, there's benefits to defeating various NPCs. For example, once Prince Frederick is defeated you will no longer be plagued by skeletal assassins.
Balance
Levels 1-6 are now about right in terms of balance, and fit the stated theme better. I removed the "safe zone" around the path, to make it less likely that you won't meet anyone at all on a trek through the woods, fixed a bunch of spawning and pathing errors, and have a much nicer overall experience.
Progression and Scoring
Score is important to roguelikes - how else can you compare your progress with others, and see that you are improving? I wanted to reward progress more than grinding - a "smart" run that doesn't stop to smell all the daisies is a great thing, and should achieve a great score. A meticulous run in which someone does *everything* should also be rewarded. The scoring system is in its infancy, and will evolve, but I think it's a good start:
So once that was in, it was time to start on the leaderboard system. It's very much pre-alpha; it'll change, and scores won't be kept between releases. But http://oneknight.bracketproductions.com/leaderboard.php . If you've opted in to leaderboard posts, when your game ends you will be included. This was pretty easy; UE4 provides some convenient HTTP and JSON encoding stuff, and the rest is a tiny bit of PHP to place it in a database and display/sort it. If the game really takes off, I'll worry about making it more scalable.
Other changes: