Monday, February 21, 2011

Prototyping

I have added three first moves (two basic kicks and the corresponding counter), and restricted the first counter to work only for "hits" (and not kicks). I have done some very basic testing, and it starts to be difficult to think of an always-winning strategy. The counter is now limited to when you can practically guess what your opponent's next move will be (is this too big a nerf? Statistically, a counter deals almost 2.5 times the damage a normal hit does though).

There are two points I am not really happy with yet:
  • The guard and evade moves look more time-winning distractions than moves that are really usable. Guarding considerably reduces the damage received, but doesn't put the defender in any favorable position. And evade only increases the chance of the opponent missing and going to unbalanced state. The way this state is handled today acts merely as a short delay before the next action.
  • Random behavior seems the winning strategy now. While there is no guarantee of success, constantly hitting while preventing the opponent to anticipate looks the best option. I already have a couple of ideas to incite players to play moves with a purpose in mind, and will try and test them soon enough.

The next step for me is to provide a strong system simply based on the elementary moves I have added up to now. It includes balancing the various strategies, and finding a real purpose to the defensive moves. To do so, I'll take my testing one step further, and try it with other players. A simple deck of printed cards and dices should be enough for some real-life prototyping.

First results

I had decided to start with a few very basic moves:
  • A basic hit
  • A combo hit, that is better fired when the player has a "forward" position, to reflect the "one-two" combination.
  • Guard and evade moves, which fire instantly and go on until another move is selected
  • A "counter", which has a lower rate of success but can negate the opponent attacking move and retaliate immediately
I also decided that for moves that were not fired from the "ideal" position, a precision penalty would apply. All being set, I started to play out a few encounters on a sheet of paper. I quickly found strategies that would ensure a systematic win, and recalibrated the various parameters of my moves. I made sure that, statistically, no one (simple) strategy was overpowered. However, it now appears that chaining hit / combo hit, while not overpowered, wins most of the time. And most of all, that the opponent does not have any good way to retaliate. This initially was the goal of the Counter move. However, the move was too strong, and an opponent always playing Counter would statistically win most of the games. I saw two options:
  • Increase the cooldown of the counter to prevent a full-counter strategy. The issue I saw with this is that players would still counter whenever possible.
  • Decrease the strength of the counter, which is what I did, and what led to the current situation.
I am now trying to find a way to solve this. Why don't repeated and relentless attacks work in real life? Why do professional boxers vary their attack pattern, guard and launch a real hit only when they think they have a chance to connect? First, attacking continuously is tiring. And since the opponent would be constently guarding, the ratio damage done vs. energy spent is high. Then, if a martial artist repeats again and again the same move, she becomes too predictable. The opponent can then anticipate and land a succesful counter hit. If the attack pattern is varied or unpredictable, it becomes much more difficult. I will now look at these two directions:
  • Introduce (or not) a kind of "fatigue" attribute
  • Make the counter specific to some moves, like "hit", and introduce a new category of moves (e.g. "kick"), against which the counter will be useless / weak. And of course restore a bit of power to the counter move.

Sunday, February 20, 2011

Building the fighting system

I've started to try out a few approaches to this combat system. I've quickly dismissed a real-time engine, where skills would come from proper timing (e.g. what you see in console fighting games). Browsers are not guaranteed to be fast, and it does not really accomodate with lag.

I'm now considering something closer to what is done in MMOs. I like the timer with cooldowns approach; it gives a good impression of real-time, while still leaving a few seconds for each player to decide on the next move.

However, the issue you often see in MMOs is that fighting consists of repeating the same couple of moves as much as you can, without needing to analyze what your opponent is doing. In my game, I would like to incorporate a strategic perspective. I'd like the skill to come from "fighting intelligently".

So I need the player to be able to choose her next best move based on:
  • The player's current status (has she just been hit? What was the last move? Is she moving forward, retreating?)
  • The opponent's status
  • Any knowledge the player would have gained from the first moves exchanged in the fight.
Given the last point, I need my system to be rather slow (at least for the beginner period), and for the fight to last enough for players to decipher patterns in their opponent's behaviour (does my opponent vary her moves? Is she more the counter type?). For the first two, I need for a move to fire differently based on what the player has done before. For instance, it should be easier to dire a combo hit after a first one has successfully landed rather than if the player has just been hit. Similarly, it should be easier to hit someone who is off-balance or has her whole intent on hitting you rather than when she is trying to guard or evade your blows. I want first to build a working system with a few basic moves (limiting to a couple of different hits and defenses), and add complexity once this is more polished. I am now considering a few elements:
  • Basic notions like time needed to fire a move, cooldown, damage / defense / evade stats for each move
  • Each move has an ideal starting position, and a finishing position. At every moment, the player is in a given "position" (for now very basic, like "balanced", "balanced forward", "unbalanced"). When a move is fired, the player's position will change (e.g. after a hit, the player will be "balanced forward", to mirror the momentum she has gained when dealing the blow). And if the move is fired from their "preferred" position, it gets a bonus.

I will now build a few basic moves, and try and see how they work.

Core system

So, how do you go when you have decided to make a game?

The first reflex I had was to choose a "category". "I want to make a strategy game" or "I want to build an RPG-like game". This has obvious advantages: you are in a familiar environment, and can rely on your players knowing more or less what they will have to deal with.

Precisely because of this, I don't really like the approach. Your creativity will be limited by the constraints of the genre, and the risk of doings things just because they are done in other similar games is big (if I had decided to build a strategy game, I would probably have decided to include several types of resources without thinking about the reason to do so, but only because that is what strategy games are supposed to be about).

So first I want to decide on what my game will be about. What will the main feature of the game be? What will be core experience of my game?

One of my prerequisites is that skill had to play a part. I feel that games where "experience" (which more or less equals the time psased on the game and/or money spent on it) quickly get hollow. However, I am not confident in building a pure skill-based game. You need a very polished and balanced system (that moreover takes into accounts the limitations of the browser-based genre, e.g. some players will have slower platforms, and this should not impact the experience) to build a succesful skill-based game.

What I aim at is a system where the casual player can still have fun (and need only to understand the basic mechanics), enjoy and progress in the game, but which only players who really take time to understand the system can master.

As a core system, I've decided to go for "fighting". It's the most basic element in MMORPGs today, it lends itself very well to multiplayer, and there is a lot of room for innovation and improvement.

Next step will be to draft a basic combat system, that integrates everything above.

Friday, February 18, 2011

First post

Where do I start... Ever since I was a kid, I've always dreamt of building my own video game. Since then, I've starting to work in the computer industry, and developed some skills in programmation. And suddenly realized that it had now become something within my grasp.

Oh, I'm not talking about a big 3D game, but rather a browser-based game. This kind of game has been popular for a long time (I've player my share on Travian, Ikariam or more recently Shakes & Fidget), and they are more in line with what I can develop.

So this blog will be about how I go about developing this game. I'm really no blogger, so I'll have to push myself to write something on a regular basis, but I hope I will be able to capture the main phases I go through. Everything will probably be a bit rough for the first posts, but I hope it will get better as I get used to writing.

So, here we go!