Search Unity

Movement speed and attack balancing on 5x8 board action game

Discussion in 'Game Design' started by arbak123, Jan 25, 2016.

  1. arbak123

    arbak123

    Joined:
    Jan 19, 2016
    Posts:
    6
    Hi all,

    We are making simple action-RPG game in Unity featuring 5x8 (scalable) tile-based grid (see attached mockup). Player can move 1 cell left/right/up/down. Player character have only short range attack, so he should try to get near enemy without taking too much damage and try to hit him from sides/back.

    Enemy has the same movement pattern, but each has specific attack patterns, e.g. one can hit only straight ahead of him to whole column, the other only diagonally, the other can strike both etc, mostly long range.

    Player can upgrade his HP, attack damage and possibly speed/stamina.

    So the problems I'm currently having are as follows:

    1. Game is not turn based (at least visually at shouldn't look and feel as one), but it seems hard to find correct speed balance between player and enemy, without giving either of sides huge advantage over another. If I set the speed of both to same value, enemy will always win because of various long range attack patterns.
    2. Player should try to get to enemy's back or sides, otherwise he'll be attacked if he appears in the cell straight ahead of enemy. Depending on enemy's attack patterns, this goal can vary from "very hard" to "impossible".
    3. I want to achieve a single formula to calculate each next enemy's HP and attack, and player's attack as well, using possibly same or similar formulas. It should be linear or logarithmic progression, ideally using same numbers as in player's base stats (HP). E.g. Enemy 1 HP = (playerHP)*2, Enemy 2 HP = Enemy 1 HP + 20%, and so long. Same for the damage. But I'm sure that there's a better way to do it, so advice is welcomed.
    4. Can I calculate specific probability of getting to enemy without taking damage, knowing only his attack patterns, speed, and board size? Like Enemy 1 has 3 attack types, each covering 4 cells. Board is 5x8=60 cells, all enemy attack types combined can cover (damage) up to 3x4=12 cells. Knowing only this much, can I somehow calculate how easy is this enemy to beat? This is important to achieve reasonable balance and difficulty progression from level to level.
    Thanks.
     

    Attached Files:

  2. tedthebug

    tedthebug

    Joined:
    May 6, 2015
    Posts:
    2,570
    For part 1 I'd play a paper mock up & start by breaking it into phases & rounds, e.g. 10 rounds a minute or something like that. Each character moves so many phases per round, look at some rpg's like the Hero system that was used by Champions (the superhero RPG) because it split the players speed so that they reacted on certain phases. Play around with the players speeds while playing in the board until the action/reaction feels right, then that gives you the approx ratio that you should work on in game. This is just my suggestion to save time before you start coding it.
     
    arbak123, Socrates and der_r like this.
  3. Socrates

    Socrates

    Joined:
    Mar 29, 2011
    Posts:
    787
    It seems like your player's ability to move is more important than their ability to attack. If this is the case, it seems like you either need to make the player faster or give them some way to temporarily boost their speed in order to lower the goal below "impossible" for enemies.

    My other thought is: If position and refined movement are so important to this game, why isn't it turn based? Trying to do the "dance" of avoiding boss attacks in a game like World of Warcraft is hard enough; trying to dance around what looks like seven enemies in your grid above in a game that isn't turn based seems like an effort in frustration.
     
    arbak123 and tedthebug like this.
  4. tedthebug

    tedthebug

    Joined:
    May 6, 2015
    Posts:
    2,570
    A properly designed turned based game can be paper prototyped easily. If it is still fun to play you also have the option of taking it to tabletop gaming groups & getting them to try it out (I've just done something similar, the feedback is well worth it) & you may end up with the opportunity to also release the game as a physical product or a print & play, both of which could give you an additional income stream.
     
    arbak123 likes this.
  5. arbak123

    arbak123

    Joined:
    Jan 19, 2016
    Posts:
    6
    Is the book the best way to get familiar with the system? Because I can't find any videos or descriptions of the very basic mechanics.

    It's not seven enemies, it's 1 enemy and 6 obstacles, some destroyable (bombs) and some static (trees) :)

    But yeah, after a few days of struggle, we've turned to "turn-based" system. Character makes and finishes his move, and only after enemy makes his move. However, there are a few problems here as well:
    1. E.g. certain enemy can only hit diagonal cells to him, but moves up/down/left/right. On the 5x8 (or 6x10, whatever) board, how I can easily calculate if there won't be a cell where I can stand and enemy won't have a chance to hit me there with his current attack pattern? It is relatively simple example, but I wonder along with adding more complex patterns, how it is possible to calculate if current attack can cover all possible cells on the board where I can stand?
    2. In a case where I have only short range/melee attacks, and enemy has long range attacks, our movement/attack patterns shouldn't be similar, because otherwise one side (enemy) will always have advantage, and I'll always have troubles getting close to him. So the obvious solution is to alternate player's movement, and to make it possible to move diagonally and/or 2 cells ahead. While enemies in their default behaviour move only up/down/left right. What would you suggest?
     
  6. tedthebug

    tedthebug

    Joined:
    May 6, 2015
    Posts:
    2,570
    Yeah, I'd go the book. I played it in the mid 90's so it was way before YouTube.

    You could look at using a ray cast & limit it to an arc to determine if the enemy can see the player. That would allow you to sneak up on the enemy.

    You could also use a radius trigger collider to create a range of sight for the player & enemy. The enemy only know about the player if they are within range & the player only knows about the enemy if they are in range (turn the mesh renderer of the enemy on & off as needed)