Posts RSS Comments RSS Del.icio.us Digg Technorati Blinklist Furl reddit 65 Posts and Comments till now
This wordpress theme is downloaded from wordpress themes website.

Archive for the 'HeroQuest' Category

Improved Hero/Monster 3d Models

Back in 2016/04, I used an EinScan-S (~$1000) to take 3d scans of the HeroQuest models.  They were a vast improvement over boxes-with-photos, but they were also pretty blurry looking.

About a year later (2017/04), a student (Thomas Springer) posted higher quality 3d scans using “ScanStudio” software, which I’m guessing means the ~$3000 NextEngine Laser Scanner.  He did this as a college project.  He posted the STL files as “free to download”, so I’ve used these to upgrade my existing figure/monster models.

You can find the STL files here – https://springer3dscans.wordpress.com/

For each model, I used MeshLab to convert STL to OBJ.  Then in Maya, I reduced each model to ~25,000 triangles (35k for the gargoyle), then reduced the base by ~85%.  Doing these quick edits for each of 17 models took some time, but it was worth it.  There’s still room for improvement (both in terms of quality and in terms of poly count), but overall it’s getting really close to looking like the actual board game pieces.  It’s definitely an improvement relative to my EinScan-S models.

One of the four orcs is missing (the one with the notched sword).  The USA expansions (Mage of the Mirror) and (The Frozen Horror) are included, but not the European expansions.  The Frozen Horror is missing the mercenaries (swordsman, scout, crossbowman, halberdier).

The following screen shots includes the upgraded hero/monster models.  Notice there’s one orc model that’s still using the blurry EinScan-S version.

Thank you Thomas Springer for these awesome hero/monster scans!  They pair great with the furniture that Jean is creating (in Blender).

image image image

Hobby Project Sabbatical

I haven’t posted updates because I was on “sabbatical”.  Jan 2016 to Mar 2017 I was consistently making progress on the HeroQuest UE4 project, but then I changed jobs and moved to a different state (from AMD to Samsung) (from Texas to California).  So I went on “sabbatical” from HeroQuest UE4 development.  During my “sabbatical”, I played more HeroQuest and continued to think about HeroQuest.  But I had to put development on hold while I focused on leaving my old job, on relocating, and on starting my new job.

As of today, I’m officially back.  With the disclaimer that I just changed from being a ~12-13 year veteran to a new hire, so I expect my day job to continue to require extra attention from my brain for at least a few months.  However, I will most likely be making some progress and posting updates soon.

Image result for heroquest Image result for ue4

Furniture Models (Jean)

Background

One of the reasons I chose HeroQuest is to allow me to work on a unique project with a reasonable size and complexity (for a part-time solo project)…  But with a well-defined scope and a lot of pre-existing work that I can build on in terms of game design and asset creation.  Somewhat paradoxically (only somewhat), the assets (including 3d models) are an important part of what makes this project unique, see ( link ).

There’s still significant work in terms of tweaking assets and integrating assets and using them in the game, but I’ve wanted to avoid getting side tracked too heavily on asset creation.  My focus has been more on getting experience working with Unreal Engine (UE4) by writing code (C++, Blueprints) and by creating a well-polished game from start to finish.  So my focus is more about game programming (and game design details), while my work in terms of game art is focused on tweaking assets, integrating assets, and using assets.

The 2d assets are made from 2d scans, and the 3d assets are made from 3d scans.  Higher quality 3d scanning is becoming more available (less expensive).  As seen in my previous posts, I was excited to 3d scan hero/monsters and furniture.  That’s part of what motivated me to focus on HeroQuest as a multi-year hobby project.  The 3d scans are a million times better than placeholder art boxes.  That said, even if I constrain my goals to replication, they’re obviously not production quality – because the geometry is “blurry”.  Maybe in 2018 I’ll consider getting access to a higher end 3d scanner to see if that can give more detailed 3d scans.  Or maybe I’ll consider custom art (or even morphing this project into an original game instead of a HeroQuest port).  Until then, I’ve been happy to use blurry 3d scans.

The hero/monster figures are all one color, so a blurry 3d scan is pretty good for them.  For the furniture, there’s different colored plastic parts, and there’s textured cardboard.  For hero/monster figures, I still had to do work in (Maya, MeshLab, Unreal) to cleanup the 3d scans and import/integrate them.  For the furniture, the Maya work is more involved, so for my initial goal (described in previous blog posts), I just focused on doing the hero/monster figures.  And I tentatively delayed more work on the furniture.

Jean: The Dungeon’s Key

But then I got lucky.  Jean, a HeroQuest fan and 3d printing enthusiast, volunteered to collaborate on the 3d models.  He’s learning Blender (and 3d printing) for this.  So with Jean’s help, the HeroQuest video game is getting a much needed upgrade in terms of furniture models.  Jean is doing the core of the work in Blender, but it still requires effort for me in terms of collaboration, integration, and tweaks.  For example, I’ve sent Jean 3d scans, high resolution photos, caliper measurements, screen shots, and detailed feedback.  Jean’s blog ( https://thedungeonskey.blogspot.ca/ ).

Working with custom digital assets and digital artists is good experience.  A lot of my hobby projects have been solo (or using public assets), but I’ve also done games that involved collaboration with digital artists and level designers (for custom art and custom levels).  Examples include DirectX 8 college games (Super IsoBomb, Xundar, Mega Monkey Mayhem), Torque 3D game prototype (City Hero Defense), and now this project – an Unreal Engine (UE4) game (HeroQuest).

In Progress

To keep things simple, my current plan is to continue using the blurry hero/monster 3d scans, and to integrate the Blender-created furniture from Jean (thanks Jean!).  With both monster/hero models and furniture models, the current plan is to focus on authentic replication (nostalgia).  I’ll probably stick with this plan for 2017.  In 2018, it’s TBD.  In the long-run, it might be cool to have an option to toggle nostalgia 3d models versus more detailed 3d models (which may include animations for hero/monster models such as walk, attack, defend, etc).

But for 2017, I’m excited to focus on replication for the 3d models.  These furniture models are a huge upgrade from the previous furniture models (which were just boxes with low resolution photos).  I’ll close with some screen shots of integrated furniture models.  The furniture models are still a work in progress, but overall it looks very promising!

map1 map2 map3

IMG_20170223_1318342

HeroScribe Pem’s Fork

The latest release of HeroScribe is HeroScribe 1.0pre1 (December 25th 2004) ( http://www.heroscribe.org/download.html ), but luckily it’s open source.  And it was incredibly simple to setup a NetBeans project and start tweaking the code.  Thanks to the HeroScribe authors (and thanks to NetBeans & Java).

I’ve used C++ the most, but I also have experience (comfort, familiarity) using Java, C#, and Python.  So there wasn’t much of a learning curve for me to make some simple edits because I’ve already used NetBeans and Java for previous hobby projects (and I used Java in college classes).

The main thing I’ve added (thus far) is keyboard shortcuts to enable me to edit maps faster.  Added keyboard shortcuts for the main editor.  Added keyboard hotkeys and mnemonics to the File etc menus.  Tweaked the tab stops.  Improved text filtering (JFormattedTextField) for zorder input.

Being able to edit maps faster has multiple uses.  I can verify my code and its corner cases – recent examples include secret doors, monster AI, and traps.  In the long-run, I also plan to have two sets of maps – a nostalgia version and a balanced (play-tested) version.  Finally, improvements to the editor will be useful for others to create custom maps.

image image

Trigger Traps

The basic game has four types of traps – spear trap, pit trap, falling block trap, and treasure trap.  Each trap type has its own set of rules (game logic), details, and corner cases that result from those rules.  I implemented support to trigger (spear trap, pit trap, falling block trap).  I’ll come back to (treasure trap) later because it has quest-specific rules.

Spear trap rolls one combat die; a skull does 1 body damage and ends the hero’s turn; anything else and the spear misses.

A pit trap always does 1 body damage and ends the hero’s turn.  The pit remains, and multiple heroes can fall into it.

A falling block trap rolls 3 combat dice (each skull does one damage), prompts the hero to move one square, then ends the hero’s turn.  The fallen block remains (it’s like a normal block).  When prompted to move, you can’t move on another hero.  If you move onto another trap, it gets triggered, so theoretically you could have a chain of falling block traps.  A chain of falling block traps could result in a hero that is permanently trapped forever (and thus dies).  This never happens in the official quests.  However, it’s theoretically possible, so I implemented this corner case.

image image image image

Search for Traps

I implemented (search for traps).  It’s pretty much the same functionality as (search for secret doors), so I made an effort to share code.  Eg I have a SpawnSpace() function that takes a SpawnType argument that’s SpawnType::See, SpawnType::SecretDoors, or SpawnType::Traps.  If you’re in a room, the game does SpawnSpace() for each square space in the room.  If you’re in a hallway, it uses line of sight (does not see into rooms).

In the physical board game, there are no tiles for unsprung traps.  When you search for traps, Zargon just points to the squares that have traps.  So I created tiles based on the quest book trap icons.  NA quest book uses orange, while EU uses white.  I think orange looks better and clearly communicates “unsprung trap” with a heavy dose of HeroQuest nostalgia.

In-game screen shots and a juxtaposition of pit trap “discovered” versus “sprung”.  This is a nice example of how you can convey information with visuals.

image image image image

_pittrap pittrap

Monster AI mode

I made lots of progress in 2016, but there’s more work to be done for this to become a robust playable experience.  My goal for this project is to make a reasonably complete playable game – and to get experience making it with Unreal (UE4).  To achieve that goal in 2017, the AI doesn’t need to be super advanced.  However, it needs to be functional. and I’d prefer that it makes mostly reasonable moves.

So I’d like the AI to do some of the obvious strategic things.  Pick a good attack target (eg the hero with the lowest body).  If Zargon has a room full of monsters, then surround the door entrance – don’t just blindly charge and attack through the door (a counter to door camping).  In the normal situation, we want the maximum number of monsters to get an attack, so monsters already adjacent to a hero may do (attack then move) so that another monster can take their spot via (move then attack).

Most of this can be done using branching AI rules (conditionals), though I may need to iterate through possible moves (and pick a best move using a heuristic).  Each individual monster has a set of moves.  And Zargon’s entire turn can be referred to as a “move”.  That’s because Zargon can move the monsters in any order (unlike the Heroes who have to pick a turn order at the start of the quest).  So more advanced AI would need to iterate through possible Zargon moves (rather than just individual monster moves).  Beyond that, there may be scenarios where it’s useful to consider not just the current Zargon move, but also multiple moves in advance (and possible hero moves).

My high level plan is to start with something simple.  Simple AI is enough to make the game fully playable.  Anything beyond that is really an additional feature.  I can iterate on it, and gradually decide later how much effort (for 2017) to put into improving the AI.

For now, I implemented a first pass of a simple but functional AI mode.  Previously the monsters were controlled by the player (just like heroes), and I had implemented A* – which did nothing except display a path.  In this next step, I refactored monster control to be done by an AI.

On Zargon’s turn, player control and UMG menus are disabled.  Instead, monster AI creates a list of monster AI actions (strategy design pattern).  For each hero lowest-to-highest hero body, monster AI checks for a path using A*.  If there’s a path, then add move and attack to our monster-actions queue.  Once the monster AI is done with this “planning” stage, it moves to an “execution” stage.  The turn logic state machine takes input from either the player (for Heroes) or from AI (for Monsters).  The monster-action state machine executes one monster-action in the queue at a time – execute A, wait for done A, execute B, wait for done B, etc.

For this first AI pass, the AI just blindly charges at the hero with the lowest body and attacks.  This can lead to some blatantly non-optimal Zargon moves, but it’s still a milestone because it’s arguably sufficient (in terms of AI) to make the game “complete”.  Monsters are now fully controlled by AI, and they use A* to find a path to a hero, then move to the hero and attack him/her.  Here’s a video showing the new AI mode in action:

I haven’t decided what I’ll work on next.  Some ideas are – more AI, wandering monsters, traps, spells, basic systems for win/lose, or start looking at the HeroScribe source code.  The latest release of HeroScribe was December 25th 2004, so that’s pretty old, but I still love it, and it comes with source code, so I may add some enhancements to make map editing faster.  Whatever I go with, updates will be in my next post.

I’ll definitely do some more AI in 2017, but the priority is TBD.  If I decide not to invest too heavily in making the AI more difficult, then difficulty can be increased via simpler mechanisms – more monsters, higher stats, or limiting hero power.  A highly skilled AI would be cool, though it doesn’t necessarily make the game “better”.  It could even be argued that having the monster AI be less than perfect is more enjoyable than having a flawless Zargon AI that always does the most optimal move.  To increase difficulty, it’s arguably more fun to add more monsters (rather than by raising AI skill).  On the other hand, having a really “dumb” Zargon AI as the only AI option does seem a bit lame 😉

The rest of this post is just some quick brain storming notes on ideas for how I can improve the Zargon AI.

Hero(es) in a Room

image

Monsters can (move then attack) or (attack then move).  The mummies can only move four squares, so they can’t reach the barbarian.  The orcs should attack the barbarian, then move out of the way so that the goblins can attack the barbarian.  The skeletons should attack the wizard, then move out of the way so that the mummies can attack the wizard.  If the AI system does the monsters one-at-a-time and the goblins happened to be first in the monster turn list (because they spawned first), then they would fail to attack a hero.

For Zargon’s turn, he does a number of monster moves (“move” meaning move-then-attack or attack-then-move).  The number of possible Zargon moves is limited by monster movement – mummies move 4 spaces, goblins move 10, etc.  Different paths to the same square can be considered the same monster move, so that also limits the search space.

Let’s refer to the above monsters using “north” and “south” eg orc-north and orc-south.  Orc-north can move 8 (anywhere in the room), so if Orc-north goes first, then Orc-north has 20 possible moves.  It’s actually 40 because the orc-north can attack-then-move or move-then-attack (no available attacks).  The mummy only moves 4 squares max, but to keep it simple, let’s just say 8 monsters and 40 possible moves each.  If monster turn order was pre-determined, that would be 40^8 = 6,553,600,000,000 (or ~6.5 trillion).  The total number of possible Zargon moves is actually a lot more than that because monster order is not pre-determined.

How many turn orders are there?  The number of ways to order N objects is called a permutation.  Eg six permutations of the set {1,2,3}, namely: (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), and (3,2,1).  The number of permutations is n! (aka n factorial).  8! = 40,320.  So the number of possible Zargon moves in this example is something like 6.5 trillion * 40,320 = 262,080,000,000,000,000, which is ~262 quadrillion.  And that’s for our single room with 8 monsters.  I think that’s kind of on the high end (above average), but there definitely exist scenarios in the game with more than 8 monsters and/or more than 20 possible moves per monster.  And that’s assuming we only consider Zargon’s current turn.

I’m not sure how long it would take on my Kindle Fire’s 1.2 GHz dual-core Cortex-A9 (ARMv7), but 1.2 GHz is 1.2 billion Hz.  MIPS depends on various factors such as type of instructions, execution order, presence of branch instructions, etc.  But for what it’s worth, wikipedia lists Cortex-A9 as 1.5 GHz dual-core at 7500 MIPS.  So if we checked 262 quadrillion moves and each move took 20 instructions, then maybe we’d get 375 million moves per second, so 262 quadrillion moves would take 698,666,666.67 seconds or ~22.14 years.

To improve performance and to simplify debugging, we obviously don’t need to iterate all possible Zargon moves.

One way to narrow our search space is to only consider monster moves where the monster gets an attack.  For goblin-north, this means there’s a maximum of four possible moves, or less (depending on which monsters moved out of the way before goblin-north’s turn).  For the mummies, it’s only a maximum of two.  If a monster can’t make any attacks, then we can have it move towards a hero (such as the hero with the lowest body that isn’t blocked).

Another way to narrow down our search space is that for adjacent monsters (orcs, skeletons), they can attack then move out of the way – to the nearest space that’s not adjacent to a hero.  That means the adjacent monsters (orcs, skeletons) only have one move each.  Plus, adjacent monsters can go first.

So each orc has one move, each skeleton has one, each mummy has two, and each goblin has four.  If we assume a pre-determined turn order (that puts adjacent monsters first), then that’s only 1^4 * 2^2 * 4^2 = 64 possible Zargon moves.  64 is a lot less than 6.5 trillion!

Each of these turn orders has less than 64 possible Zargon moves.  But how many trimmed monster turn orders do we have?  Orcs and Skeletons move first – they just attack then move, so we only care about the Goblins and Mummies.  That’s just 4! = 24.  So 64 * 24 = 1536.  1536 is a lot less than 262 quadrillion!

We could then search through each possible Zargon move (that we didn’t trivially skip) and use a heuristic to calculate a guess at which Zargon move is the “best”.  One idea for a simple heuristic is just to make sure we get the maximum number of attacks.  If the goblins attack the wizard first, then the mummies wouldn’t get an attack – because they can’t reach the barbarian with only 4 move.

If the mummies were orcs (with an attack of 3, and enough move to reach the barbarian), then our heuristic might prefer higher attack dice against the wizard since a good Zargon strategy is to focus on killing a hero with the lowest body (especially if the wizard has lower defense and lots of unused spells, but lets ignore that for simplicity).  So orcs would attack the wizard (with 3 attack) and goblins would attack the barbarian (with 2 attack).  If the first orc killed the wizard, then that would trigger the AI to to recalculate (the rest of) Zargon’s move.

One scenario that “breaks” the above AI is if we have an Orc next to the Barbarian and an Orc next to the Wizard.  We’d prefer that both Orcs attack the Wizard.  If the Wizard is blocked, then we may need one Orc to attack the Wizard then move out of the way, so that the other Orc can move then attack the Wizard.

So we may want to consider the possible turns with adjacent monsters going first (and non-adjacent monsters going second).  That’s less than 8! = 40,320.  Instead, it’s 4! * 4! = 576.  So our algorithm could iterate through those 576 possible Zargon moves and pick one that maximizes the number of monster attacks (in our example it’s 4 attacks).  Because some attacks are better than others (eg more higher attacks on our favorite target is better), we could include that as part of our heuristic.  We could have the heuristic calculate the move with the best odds of doing the most Body Points of damage.  However, a better Zargon strategy is to focus on killing the weakest Hero.

This scenario assumes we have monsters in only one room and there’s heroes in the room.

No Heroes in a Room

image image

But things are different if there are no heroes in the room.  Because we don’t want to let the heroes door camp.  Our game even has modified rules to prevent door camping – can’t shoot crossbow or spells through a door.  If there’s no heroes in the room, then our AI should surround the door.  It’s also nice to block corners to make it harder for the wizard to move into the room, cast a spell, then be protected by two other heroes.

If a monster is able to attack the wizard in the hallway, then it might be worth it, because the wizard is the best target (the glass cannon).  An effective hero strategy is for the wizard to move into the room, cast a spell, then the other three heroes move adjacent to the wizard to protect the wizard from Zargon attacks (or kill all the monsters before Zargon’s turn).  So going after an open wizard might be a corner case (an exception) to the standard surround-the-door strategy.

The same idea applies to another big target – a hero with low body.  We could say 3 body is “low body”, so a big target can be defined as a hero with the lowest body (the wizard starts with 4 body).  Or we could say the big target is the hero that’s easiest to kill (account for the hero’s defend dice).  Or maybe the lowest body, and prioritize the wizard as a tie breaker.  Another consideration (for prioritizing Hero targets) besides current Body is number of attack dice, number of defense dice, and number of remaining spells.

Multiple Rooms

For game balance, I already designed rule tweaks that encourage players to do one room at a time.  When attacking (or casting a spell) through a door, you can only target adjacent.  When you enter a room, the doors have a Zargon force field that prevents you from leaving until all monsters in that room are dead.  So the standard situation is one room at a time.

But for AI, we need to realize that’s not always the situation.  If the heroes don’t optimize their strategy, then they might not do one room at a time.  The game also has scenarios where a trigger causes a room to be revealed – so we can end up with monsters in more than one room.  Ideally our AI will handle other scenarios too.

If two rooms have monsters, then…  If both rooms have no heroes, then surround the doors.  If only one monster-room has heroes and the two monster-rooms are adjacent, then consolidate your monsters into one room.  If the room is full (or blocked), then wait by the door to the monster room, or surround the other door(s).

Room Camping AI

Another corner case is…  Usually monsters can wait in the room they were spawned in, because heroes will have to attack.  But in some scenarios, the heroes could open the door, look in the room, then decide to go somewhere else.  Or in some cases, a quest trigger reveals a monster room, but the heroes aren’t obliged to enter that room.  If the AI is programmed not to leave the room to chase them, then that could result in some scenarios that make the AI look bad.  We could “fix” this by not letting the heroes complete a quest until they’ve completed all rooms (eg killed all monsters), in which case we could just say the monster’s preference to stay in their rooms is actually a “feature”.

Or we could have a (should we leave the room) check to the AI.  But be careful because if the (leave the room) check is something like (wait until the nearest hero is 10 squares away), then this would be easy for the player to exploit.  One idea is to have two modes that are specified per room (in each map).  If it’s a room we want to defend, then the AI will room camp.  Else, we chase the heroes based on some trigger such as (the nearest hero is 10 squares away).  In either mode, we will still chase the heroes if they reveal a nearby room with monsters in it.  In either mode, if there’s a good target in the hallway that we can immediately attack (eg Wizard or any Hero with less than 3 Body), then we make an exception.

Epic Campaign Reviewed

Another post about design (rather than code).

I did more research on the expansion order.  Let’s start with the obvious:

1) Basic: Original Quests, Kellar’s Keep, Witchlord
2) European: Against the Ogre Horde, Wizards of Morcar
3) North American (and Advanced): Dark Company (EU Advanced Quest), The Mage of the Mirror (Elf Quest), The Frozen Horror (Barbarian Quest)

The order is obvious within “1” and “2”.  Within “3”, the order is less obvious.  According to boardgamegeek.com, the quests were released Mirror then Frozen, but most people say Frozen is more difficult.  As for Dark Company, some say to put it before Mirror/Frozen, some say to put it after.  It’s hard to tell just by glancing at the quests, so I’ll have to do some mathematical analysis and/or play testing.

Another nuance is that the European version of the game has easier monster stats, eg every basic monster has only 1 body point.  So using NA monster stats in the EU expansions (including Dark Company) makes them more difficult.  Even with that caveat, Ogre and Morcar are less difficult than Mirror and Frozen.  For Dark Company, north-american.yeoldeinn.com links to a pseudo-official localized version with NA style monster stats for Dark Company’s unique monsters (Dark Warriors and Doomguard).

Thus far I’m still leaning towards the following order.  Dark Company is a big challenge with a big reward at the end.  Mirror you get Elf spells.  Frozen you get mercenaries.  So I’m tentatively sticking with that order, unless I see a reason to change it.

When everything else is done, I plan to playtest and balance the maps to make sure the difficulty increases gradually and hero advancement happens gradually.  The game will increase in difficulty faster than the heroes (non-literally) level up, plus it will become more complex as more options (items spells etc) are added.  And I’m hoping to make the game focus more on strategy/tactics within a particular quest (ie deemphasize cross-quest item hording).  I’m still going for authenticity and nostalgia, but the game needs tweaks, balance, and play testing.  This was true of the original game, and it’s especially true for merging NA and EU versions into a well structured video game epic campaign mode.

So here’s the order again:

1) Original Quests: 14 quests
2) Kellar’s Keep: 10 quests
3) Return of the Witch Lord: 10 quests
4) Against the Ogre Horde: 7 quests
5) Wizards of Morcar: 5 quests
6) Dark Company: one long 13-stage quest (4 boards)
7) The Mage of the Mirror (Elf Quests): 10 quests (3 solo, 5 group, one double)
8) The Frozen Horror (Barbarian Quests): 10 quests (3 solo, 5 group, one double)

At this point, I’m not planning to include any unofficial fan quests or semi-official quests from magazine etc in the primary Epic Campaign mode.  Although the game will support custom quests using the standard HeroScribe XML format.  And I may even add a random campaign mode (that’s separate from the standard epic campaign).  So far I am really just focusing on developing a polished version of the original 14 quests, because the expansions don’t just add new maps and art assets – they also add new content that requires me to implement (and debug) more code.  My main focus is on implementing the game (ie programming), but I occasionally take breaks to consider design issues (as seen in this post).

It’s turning out to be more work than I’d originally expected for a part-time hobby project, but I love HeroQuest and it’s a unique contribution to the HeroQuest community (fandom) (niche).  Plus the work is giving me great experience using Unreal Engine 4 (UE4) and with detailed game design issues like balancing and player experience (UI/UX).

To close, how many quests is the epic campaign in total?  If we count Dark Company as 4 quests, then it’s 14+10+10+7+5+4+10+10 = 70 quests.

The epic campaign is going to be my primary long-term focus.  Beyond that, I may also add a custom quest mode and a random quest campaign.

Image result for heroquest Image result for heroquest kellar's keep Image result for heroquest return of the withlord

Image result for heroquest the ogre horde Image result for heroquest wizard of morcar Image result for heroquest advanced quest dark company

Image result for heroquest mage of the mirror Image result for heroquest frozen horror

Treasure Card Code & UI

I continued to work on the treasure card code and the related user interface (UMG) for items.  I also fixed some corner cases that I found during testing, and I implemented other details related treasure and items.  For UI, the Character (items) screen is revamped.

For treasure card code…  The original game has 24 treasure cards – 11 are unique.  I added Potion of Speed (from EU version), so it’s 25 treasure cards, 12 unique.  Each of the 12 unique treasure cards requires code to be implemented.  There’s 2 hazards and 4 gold cards, so there’s really only 8 unique cards (in terms code behavior).  Gold and hazards are simple.  I’m saving the wandering monster card for last.

I implemented five potions – each potion has a different behavior.  Potion of Strength and Heroic Brew are used before attacking.  Potion of Strength just adds two combat dice to your attack.  Heroic Brew allows two attacks (instead of one).  Potion of speed is used before moving – to double your movement dice (eg 4 instead of 2).  Potion of Defense: when a monster is attacking a hero, if the monster rolls a skull and the hero has a Potion of Defense, then prompt the Hero to use it (or not).  Potion of Healing is similar – when a hero dies (eg from a monster attack or hazard), prompt the hero to use Potion of Healing (or not).

The mechanics (and UI) for spell cards will be similar.  There is also more to do for items.  For now, here’s screen shots and a video:

image image

HeroQuest game balancing notes

Most of my HeroQuest Unreal Engine posts focus on code (and UE4), but this one focuses on game design.

I had a great holiday break and I was able to playtest HeroQuest (physical version) and review some of the game balancing.  I still plan to make the video game version focus on the authenticity of nostalgia.  However, there are some balance issues, design exploits, and other design improvements I plan to use for the video game version.  The tweaks (and interpretations) do not stray far from the original – even the original is open to interpretation because some of the rules are ambiguous and there’s two versions of the game – European and American (and some rules are clarified in expansions).  I also suggest using theses fixes (improvements) when playing the physical board game.

Problems:

1) What order to play the expansions?

2) Treasure Grind.  NA end of each quest you can search each room four times and get potions that you save between quests.  You quickly become absurdly OP with infinite potions of healing.  Treasure Grind is also the most boring part of the game if you do it.  You play an actual quest 1+ hours, then you spend another 1+ hours doing treasure grind which is boring and lame and OP.

3) Too many one-time use items, and not enough permanent leveling up.  Especially in the basic expansions (Kellar’s Keep + With Lord).  Especially if you keep treasure card potions between quests.  This makes the game put too much emphasis on what you did in previous questions.

4) Basic Expansions (Kellar’s Keep + With Lord) too easy

5) Door Camping exploit.  Heroes can stand by door entrance with 6 defense hero using a crossbow.  If Zargon attacks through the door, he only gets max two attacks per turn max.  But heroes can attack diagonally through the door with longswords (and Wizard’s Staff).  If heroes figure out this exploit, it completely breaks the game.

6) Line of sight rules are vague and confusing.

7) Some of the rules can be interpretted in more than one way

8) Game slows down if heroes try to optimize play and literally roll dice for every move, and search every room no matter what

9) Wizard spells add a lot of fun to the game but he has so few that it encourages hording of spells.  Elf only gets 3 spells typically Earth.

10) Advanced Expansions (Elf + Barb) too hard (unless you horded one-time use items then it’s too easy)

11) Each quest should be balanced as its own game that assumes you’re at a certain level.  Then balance each quest to be a challenge based on that assumption, which overall gradually increasing difficulty (and complexity).  Again, we can keep some one-time use items for emergencies or to get through difficult quests.  But these should be rare.  Instead, we want heroes to "level up" gradually eg with artifacts that you can use once per quest.

12) The game only has one difficulty setting.

13) Chaos Spellcasters are rare and fun.  Optimized hero attacks will kill Zargon spellcasters first turn which ruins the fun.

14) Expansion quests add stuff…  What do you do with the new stuff when you move on to the next expansion?

Solutions:

1) Elf and Barb expansions are definitely meant to be played last after your heroes are already maxed out.  So a basic North American quest order is original, kellar’s keep, witchlord, elf, barbarian.  If you want to include European expansions, then do: original, kellar’s keep, witchlord, ogre horde, wizards of morcar, advanced heroquest’s dark company, elf, barbarian.  In summary I call this original, then basic expansions (kellar’s + witchlord), then European (ogre + morcar + dark), then advanced expansions (elf + barb).  References:

https://en.wikipedia.org/wiki/HeroQuest#History : release dates suggest: Basic Game (EU 1989), Kellar + Witch Lord (EU 1989), Ogre (EU 1990), Morcar (EU 1991), Elf + Barb (NA 1992)

http://aginsinn.yeoldeinn.com/faq.html : storyline suggests: Basic Game, Kellar’s Keep, Witch Lord, Ogre Horde, Morcar

https://boardgamegeek.com/thread/530070/which-order-should-we-play-expansions : random user claims dark company is harder

2 & 3 & 4) The (original, kellar’s keep, witchlord) are too easy and (elf, barb) are too hard.  Make everything in the armory cost double gold, so heroes "level up" slower.  Treasure you can only search each room once (not once per hero).  Treasure card potions can not be saved between quests because they are overpowered (OP).  I think these treasure rules are the most reasonable way to interpret the EU rulebook – I’d actually call the NA version a "bug".  The EU character sheet does not even have a space to write ”Potions & Other Items” – this was added to NA version.

To allow the heroes to "level up" in basic expansions, make artifacts reusable as spells.  Most you’d give to the Wizard.  “Spell” means it counts as an action, and Wizard with wand of magic can use two spells.  Kellar’s Keep Q3 you only get one magic dagger.  Q9 magic daggers count as a second scroll, so you end up with 4 random spell scrolls in Kellar’s Keep (make them unique) (use 8-sided die or randomly pick one of 8 monster cards to randomize which of the 8 scrolls you get each time).  This gives the heroes incremental permanent leveling up (instead of hording one-time use items).  Sacred water (Witchlord Q2) also counts as a spell (use once per quest) (in EU it’s treasure card).

Even Elixir of Life and Ring of Return are reusable once per quest.  This may seem OP, but it’s much less OP than hording potions of healing.  Not keeping treasure card potions (eg potion of healing) between quests also makes the expansion potions less overpriced.  Otherwise you end up hording a million potions of healing and if you optimize it then you’ll save them all for Elf + Barb expansions, so you’ll end up with like 40+ potions of healing, which turns the Elf + Barb expansions from too hard to absurdly easy.  Also, when you can’t horde treasure potions, 500 gold for a potion of restoration becomes reasonable.

4) Even after these changes, Kellar’s Keep and Witchlord are too easy, assuming you started with heroes who are already maxed out from the first quest book.  You can live with it and just say okay these are easier quests that gives players a chance to increase their skill.  Or you could manually add monsters to each room.

5) To solve door camping, don’t allow spells and ranged attacks or diagonal attacks through a door into a room.  When a hero enters a room, a one-way Zargon force field blocks the hero from leaving through the door until all monsters in the room are gone (veil of mist or dust of disappearance can allow a hero to pass through the force field).  This forces heroes to enter rooms.  Zargon should surround the door but not attack heroes through the door in most cases.  It’s always the heroes responsibility to progress the quest.  It’s not Zargon’s responsibility to charge out after the heroes.  If this causes a stalemate then you could make a rule like every 10 turns a random hero loses a body point, but this shouldn’t be necessary as long as heroes understand their goal is to progress, and Zargon is really just the non-competitive AI (computer).

6) For hallways, use line of sight.  For rooms, if you’re in a room you can "see" everything in the room (don’t use line of sight).

7) I won’t get into all of these since some of them are quest-specific.  But one example that isn’t is the Battle Axe.  Heroes can have two weapons (or three), but Battle Axe means no shield.  By the end of the original 14 quests, maxed out non-Wizard heroes will have crossbow + (broadsword or battle axe).  Actually, one hero will have spirit blade instead of a broadsword.  One hero will have Orc’s Bane, which is a slight bonus vs. Orcs (better than crossbow or broadsword but not as good as a Battle Axe).  If you give one Hero Battle Axe + Borin’s Armor, then all three heroes can have 5 defense.  But there’s other combinations.  Plate Mail is also an option but be careful because rolling a 1 sucks unless you start at the door entrance.

7) Witch Lord Q2, it has something lame happen which we ignore (potentially lose Orc’s Bane + Borin’s Armor forever is lame).

8) To make quests go faster, we allow time warping assuming that everywhere was searched for traps and that there’s nothing special.  Usually this makes the game faster, more fun, and streamlined.  The rare time it’s an issue is when you have to tell heroes "no you can’t warp" in which case they know something special is coming which can ruin the surprise.  Another concern is situations like Witch Lord Q2 where the revolving door is meant to separate the heroes, but time warping makes them not get separated.  This may be less of an issue for video game.

8) Missing special treasure is lame (especially for physical game).  To optimize this, a good player will do every room.  But then you never have the option to complete a quest early by going straight to the goal.  To simplify this, we just say you can’t end the quest until you’ve found all special treasure.  So when you try to leave, Zargon will tell you you can’t until you go back and get all special treasure.  Like "2", this also helps make each quest more of a game in itself rather than being based on how well you optimized previous quest results.

9 & 10) This is already addressed by previous items.  But to take it a step further…  When you start the Elf expansion, give all 12 original spells to the Wizard, and give all 8 Elf spells to the Elf.  This is more fun.  I don’t think it’s OP because the heroes need a boost.  It’s also a way to make the game gradually increase complexity and challenge.  More thoughts see “14”.

11) I came up with these when playtesting the physical board game.  For the video game release, I plan to do playtesting of each Quest to balance it even more.  Heroes gradually "level up".  Quests get harder at a slightly faster rate than the heroes level up, and complexity increases as the player gains skill.  So we’ll have two copies of each map.  The original and the rebalanced version.  The original is technically the NA quest maps (note EU quest maps for original + Kellar + With Lord are technically different).  For the video game release, the player can choose "original" (easy) maps if he/she really wants to play them for the nostalgia, but the default will be the "rebalanced" maps.  The rebalanced maps will be 90-99% the same.  The rebalanced quest maps will just add additional monsters (and maybe fix some quest-specific bugs).

12) The rebalanced quest maps won’t be insanely difficult.  So the video game release will have an option to play an advanced difficult mode.  I’ll revisit this later.  My current idea is to increase monster stats (Attack, Defense, Body, Mind, Move).  Even the highest difficulty will still be beatable (in fact I plan to play through each quest on the highest difficulty with no cheats!).  Monster difficulty stat bonuses will get bigger as the quests advance.

13) You can’t attack a spellcaster until there are no other monsters in the room (or if the monster is in the hallway then its line of sight)

14a) New Treasure Cards: only use for that quest book?

14b) Wizards of Morcar: 9 spells:

http://english.yeoldeinn.com/wizards-of-morcar.php
=> spells detection to Elf: treasure horde too dangerous for wizard, other two ok for Elf
=> spells protection to Wiz: invisibility helps wiz stray alive, wall of stone too, dispell instead of atk
=> spells darkness to Wiz: all three use instead of atk

Kellar’s Keep artifacts:
* Q2: magical throwing dagger x2… instead make it dagger x1 and scroll x1
* Q4: fire ring… instead ring only blocks one spell per quest
* Q6: magical throwing dagger x1, random spell scroll x3… instead do scroll x1, scroll x2
* Q7: elixir of life
=> total: daggers x3, scrolls x3, fire ring x1, elixir x1…  so instead of (daggers x3, scrolls x3), we can do (daggers x1, scrolls x4) which is 4/8 unique randomly chosen
=> basic exp artifacts count as wizard spells (everything except elixir x1)

Witch Lord
* Q1: dust of disappearance x2
* Q2: sacred water x1
* Q3: magic dagger x2
* Q4: ball of flame x1, fire of wrath x1
* Q6: lose all gold (???)
* Q7: rabit boots x1, pass through rock x1
* Q8: anti-poison quill x2, heal body x1, courage x1
* Q9: armband of healing x1, daggers x2,
=> wizard spells: ball x1, wrath x1, rock x1, heal x1, courage x1, sacred water x1
=> anyone: armband x1, boots x1, dust (reusable) x2, quill (reusable) x2
=> magic daggers x4: too many + OP => just ignore them

After Kellar + With Lord, Wizard has scrolls x9, dagger x1, fire ring x1, sacred water x1 => x12 total… which is perfectly fine bc that’s x21 spells and the Elf will get x8
We also have armband x1, boots x1, dust x2, quill x2, which can go to anyone, they aren’t wizard spells, they don’t count as an action
Wizards of Morcar has another x9 spells, Detection goes to Elf, so wiz x27, elf x11…  Or if we let Elf keep one elemental (eg Earth) then its Wiz x24, Elf x14
There may be additional spells (or spell-artifacts) in other expansions, so I can revisit these details

When the video game development is further along, I will do extensive play-testing to balance the quests.

I also may end up adding spells earlier (gradually) to gradually increase the fun.  We want the quests to gradually introduce new items to the heroes.  This makes the epic questing experience gradually become harder (and gradually introduce more options / more complexity).

The early quests should be easy even if the player does newbie mistakes like separating the heroes, but by the time you get to the later expansions, you’ll lose some quests unless you play better (even on the default difficulty).  Of course players can always restart the quest until they learn to play better.

Next »