Monday, July 30, 2012

First Playable Prototype

Sometimes, game design seems an imprecise job of vague ideas and undocumented decisions. Thankfully, prototypes serve a very precise function: they help you answer a question. In my case, the prototype's question is rather simple:

Are Vampire: the Masquerade combat rules fun to play in a video game?

As simple as it sounds, it is a fundamental question that can make or break Vampire the Masquerade: Renaissance so we better face it as soon as possible.

Another interesting feature of prototypes is that they don't need polish at all. They have to be quick and functional, even if they are ugly. So I focused on shooting firearms and downloaded a Unity third person shooter test project, featuring a walking human character and a robot orb which infinitely gun at each other. I added my Vampire: the Masquerade dice rolls under the hood and in just about no time, the prototype was running. You can run and shoot the orb as in any traditional action-RPG but when you hit your enemy, ten sided dice are rolled to determine if your attack was successful and how much damage you inflict to your opponent. If you force your eyes you can see in the picture there's a debug log on the bottom of the screenshot. That's where the gory details are displayed, the combat roll and the damage roll:

Rolled 5 dice (diff. 6) = 8 2 8 9 5
Success
Rolled 5 dice (diff. 6) = 0 2 4 8 0
Damage = 3

The prototype assumes both character attack with 5 dice, with a base damage of 3. In the example, the human obtains 3 successes in the attack roll (8 8 9), thus adding 2 dice to the original 3 dice of damage. Even though the movement is awful, the prototype serves its function perfectly: it proves that Vampire: the Masquerade rules are quite fun to play on its own.



Prototypes however have another interesting side effect: they arise new questions that need to be answered.

Is it fair to hit the enemy and get a fail or botch in the dice roll?

Pointing and shooting (the action part of action-RPG) is sometimes challenging enough to require a reward. If players actually succeeds hitting the target, why force them to fail? What's the point of rolling a combat check in the first place? Well, the combat roll allows you to add extra successes to your damage, somewhat similar to a critical hit (which sure comes with the risk of fail and botch). However, we could replace the combat roll with the action mechanic of aiming and shooting. If the player hits the target, damage is directly rolled.

Which leads to a second prototype to answer the second question. Let's try it out. My first impression is that by removing the combat roll the player feels always rewarded by hitting the enemy, which is fairly reasonable. However, the damage roll can also get you a zero damage ("Miss"). So we've not completely solved the problem of fairness. Removing the combat roll eliminates botch and fail, but leaves the smaller problem of zero damage. Well, I think both prototypes have served their function. Now it's only a matter of tastes.
  • Prototype #1 with combat and damage rolls. Pros: it's close to Vampire: the Masquerade rules, it has "critical hits" and botches, which may be fun to play. Cons: failing when you hit your enemy feels unfair.
  • Prototype #2 with only damage rolls. Pros: it solves the fairness problem, when you hit your enemy you're rewarded with damage being dealt. Cons: Still zero damage results in "miss".
Maybe both prototypes can live together. Combat rolls can be used in a higher difficulty mode, giving the hardcore fans all rolls and consequences. Or maybe melee combat works best with combat rolls and firearms only with damage rolls. We'll see in future prototypes.

Note: both prototypes are fully playabe with Unity web player so if you want to try them out just leave a comment and I'll upload them to the internetz.

2 comments:

  1. It would be really cool to be able to play the prototype.

    ReplyDelete
    Replies
    1. Yeah, we're already working on that! Sharing the prototypes is not easy but I'm sure we can work it out :D

      Delete