Browser game through the eyes of a game designer
This is my first project on creating games, I've never worked in a similar field. Many of the tasks were new to me – something simple and some difficult. Sometimes come up with ideas, but they are very difficult to put on paper. What begins and where it ends...
All, as in any project starts with an idea. The idea was to create an online browser game about football fans. The concept of the game: football fans gather before the match and protect the interests of his team. We already have a target audience that we set the stakes (football fans), but the game should also be fun for casual gamers. My problem is that the game was as entertaining.
Ideas usually, a lot. Every day there were at least 2-3 constructive ideas. I relied not only on myself, I have helped friends and even mom, although she never played anything except solitaire and Zuma Deluxe. Sometimes the idea comes from the most unlikely source. It is important to stop, analyze and weed out the junk. Sometimes you have to abandon great ideas because they do not fit into the overall concept. Sadder when had to give up due to lack of funds, or the probability not to meet the deadline.
Disputes within the team was very consistent, everyone was treated the project very emotionally and with full dedication. Any little thing could turn into a scandal – starting from where it is better to arrange the buttons and ending with strategy, balance and change techniques. Everyone tried to make a contribution, so it is difficult to judge how the fate of the project depended on my vision of the game. Truth is born in disputes. And while we argued, the project continued.
The game has 3 classes: the "Instigator"(the Instigator) (little life, little damage, lots of chance to uporoto and increased the chance of Crete), "Fighter"(Fighter) (average life, high damage, small chance of evasion and a small chance of Crete) and the "Ringleader"(Defender) (lots of life, average damage, small chance to uporoto and a small chance of Crete).
Each class has its antipode: the Instigator is a Fighter, the Fighter is the Defender, the Defender is the Instigator. The principle of operation is as follows: one class I gave strengths and weaknesses, antipode I gave the quality that ignores the strong side and is weak qualities of his opponent. For example: defender a lot of armor, much health, 3 units (the damage to the block equal to zero, Crete is divided into two) and average damage. The Instigator of the little life, little damage, greater chance of Crete and uporoto, and about. armor. From the fact that the defender has little chance to hit, its damage does not pose a threat to the instigator, the instigator of the increased chance of Crete, that breaks the block, and about. armor. According to such methods work and the rest of the antipodes.
Characters gain experience after winning the fight, resulting in raise the levels. Each level opens up new opportunities, skills and techniques.
I calculate the experience gained after battle is probably the easiest way. Is the maximum experience which a person must achieve in order to raise the level, this experience I shared with a number of fights which needs to win the character. With each level the number of fights increases, with the resulting experience after winning the fight also increases. It creates the illusion to the player that the next level is not so many fights we must win.
Four attributes that harakterizuet each character: strength, agility, intuition and endurance. The game has the maximum value for each of the attributes (except strength) which a player can achieve. If a player reaches the maximum value, it will have a 100% chance to uporoto, Crete, and maximum armor. Of course things that give so many stat points to reach this maximum, no. This maximum is the cap.
We did cap the level, each level cap increases. Thus we killed two birds with one stone: in the early game classes that are based not on the damage, and overate, Crete, armor, etc. will also be uvaritsya almost like the last level, provided that players will be procured in accordance with their levels. There will be people walking around in set 4 being 10, and to save money for things for the next level.
How is the damage: Weapon Damage + Power*(1,3)(1,4) (1,5). The numbers in parentheses is the number corresponding to each class. This is not the final damage that will be caused, because it depends on who made the damage. The first formula that I used, looked like this:
Damage = Damage * protection from Damage
Damage resistance= 1 – Armor/Armor cap
Give the values to make it clearer:
Damage resistance = 1 - 500/1000
Damage = 100*0,5= 50
500 is the current level of protection of the character of cap at its current level equal to 1000, eventually the damage will be halved.
But we still have about. Armor that need somewhere to cram. After various attempts and tests I came to the optimal formula.
Damage resistance = 1 – (Armor*Pro. Armor)/(Armor Cap*Cap About. Armor)
Will give the same values as in the previous example:
Protection from Damage =1 – (500*500)/(1000*1000) = 0,75
Damage = 100*0,75 = 75
In the end, the armor was reduced by 50% and he the initial damage has been increased by 25. The damage may increase if about. armor will be more than KAP at this level.
If one of our player work the chance to score a critical hit, the damage is multiplied twice. In case of unit damage is multiplied by zero. In the case of block and Crete at the same time, the damage remains unchanged, and in the case of evasion the damage is multiplied by zero, regardless of whether it was a crit or normal.
The player has 5 points, which he can hit and 5 points, which he can block. At the same time he can block 2 body parts at once (in the case of tanks with two handle, he can block once 3) he can only hit one (in the case of two one-handed, he can attack 2 points at the same time). The player can use the techniques immediately, and then they go into a rollback for a certain time.
The exchange occurs by rounds, the player is not obliged to share with each player. While it can hit an unlimited number of characters at the same time. The computer randomly choose your opponent. For example, there is a 2x2 battle, one team is a Defender and Instigator, and the other two fighters. The task of the tank throughout the fight as long as possible to keep himself on these two dps-jers, as the Fighter little about. armor. The protector will pretend to be the tank which covers the infantry, while the Instigator will be able to make damage without any obstacles. At the same time, the Soldiers must outsmart, Defender and find a window to get to the main threat: the Assailant.
All of the above will occur when you use competent techniques. Win the one who will take better decisions, or who will show restraint and will be able to calculate your opponent.
At the end of the battle, the winning side will be rewarded with experience and other features. All players bring their contribution to the victory (besides AFK), so all the winning party gets the same bonuses.
At first I wanted to make players will receive a bonus in accordance with the damage. The idea was doomed to failure, as there are classes that are designed to bring the team victory, not damage, but in other ways, as there are some techniques which improves the attributes of your team, or neutralizes a major player in the enemy team. So we decided that the best option will all give the same amount of experience and bonuses, because each of them something and helped out.
Starting from the first level each character has to appear first appointment. Some of the techniques have all classes and some are designed for only one class. In order to use the techniques the player is required energy/aggression/resistance. The receptions are rolled back. Than taking stronger, the he rolled back the cost increases.
Some of the techniques have delivered a lot of trouble: they did not work as originally planned, it did not work. Some had to remove it because it was not able to do, and some do not fit to one class and had to be replaced.
At first I did a very big mistake – gave the antipodes techniques that enhance their weak side. In the end, lost interest in the game and all classes became the same. My advice to you: never give techniques that improve the weak side of the character.
The Instigator was the one thing that will replenish the life in the course of 6 rounds. I didn't want to change the properties, but due to the fact that he has little maximum life, it is not getting enough of life and the reception is useless. Two days I tried to find this balance, and failed, in the end, I gave this technique the Defender and came up with the new Instigator, which increases its chance of evasion.
One feature which was recently implemented is the regeneration of energy. One programmer, playing for the Defender, said it is too quickly spent, the level of resistance and techniques that restore it, do not help sufficiently. I didn't want to give more energy for the use of a receipt and couldn't decide what to do.
It got me thinking: what if the skill level would be regenerated passively. But all the classes are different and my goal was to regeneration energies depended on the players too. A feature is the following: each class will get some energy/aggression/resistance depending on successful strike, Crete or successful block. Everything will happen this way:
Energy recovery
Successful hit = 2энергии
Successful Krit = 3 power
Recovery aggression
Successful hit = 2 aggression
Successful Crete = 4 aggression
The restoration of resistance
Successful hit = 3 durability
Successful Block = 1 durability
In the calculation I took strong, not forgetting about the weak quality of each of the classes (who are more blocks, and he gets the bonus and who is less likely to happen blows and gets more bonuses). Taking part in fights where a lot of opponents, the tank will get more durability, as he has 3 units, thus the chance of blocking attacks.
From the beginning I wanted to create a type of fighting that would measure the skill level of each player and to the system itself found it more suitable for the player.
I came across a very interesting formula that is currently used in chess. It is called "the Formula did EAT." This formula finds the chess player with an opponent who is equal in experience and skill. About the same formula I used in this game.
The principle of operation is similar. Calculates the skill level of the player. If the player just started, then this number is equal to zero. Then the system searches for an opponent with about the same rating that he did. Suppose that the system found an opponent with a rating equal to 10. At this point, calculated the odds of winning of player A with player B.
The probability of winning for player A = 1/1+10^[(eloB-eloA)/400]
The probability of winning of player B = 1/1+10^[(eloА-eloB)/400]
*elo A= current rating of the player And
*elo B= current player rating B
That is, the probability of winning for player A if of 0.48, and the probability of winning of player B ≈0,52. Then need to calculate what rating is received And in case of a win or how much you will lose in case of loss. The same should be calculated for player B.
In case of a victory of the Player And
In case of defeat of the Player And
A new Player Rating A = elo A – k(1-exB)
In case of a victory of Player B
A new Player Rating A = elo A + k(1-exB)
In case of defeat Player B
A new Player Rating A = elo A – k(1-exA)
*exA the probability of winning of the player And
*exB – winning probability of player B
*k Is the number will decrease after the first 30 fights, and then stop for 25 (50 25). This is done so that new players could expect to determine your rating.
In simple words, the formula rewards players who had little chance of winning, while not losing much ranking in case of defeat. Also, players with large rating will be more to lose in case of defeat against players whose skill level is much lower.
I think that's all the major problems I encountered in the process, the game designer. I must say that the design of the game is cool, but even over such a seemingly simple project requires a lot of effort, diligence and patience. Hoped that creating games easy and fun is not necessary. I should be grateful for constructive criticism.
The game itself is located at the address: www.fbgates.com
Article based on information from habrahabr.ru
the Idea
All, as in any project starts with an idea. The idea was to create an online browser game about football fans. The concept of the game: football fans gather before the match and protect the interests of his team. We already have a target audience that we set the stakes (football fans), but the game should also be fun for casual gamers. My problem is that the game was as entertaining.
Ideas usually, a lot. Every day there were at least 2-3 constructive ideas. I relied not only on myself, I have helped friends and even mom, although she never played anything except solitaire and Zuma Deluxe. Sometimes the idea comes from the most unlikely source. It is important to stop, analyze and weed out the junk. Sometimes you have to abandon great ideas because they do not fit into the overall concept. Sadder when had to give up due to lack of funds, or the probability not to meet the deadline.
Disputes within the team was very consistent, everyone was treated the project very emotionally and with full dedication. Any little thing could turn into a scandal – starting from where it is better to arrange the buttons and ending with strategy, balance and change techniques. Everyone tried to make a contribution, so it is difficult to judge how the fate of the project depended on my vision of the game. Truth is born in disputes. And while we argued, the project continued.
Game
The game has 3 classes: the "Instigator"(the Instigator) (little life, little damage, lots of chance to uporoto and increased the chance of Crete), "Fighter"(Fighter) (average life, high damage, small chance of evasion and a small chance of Crete) and the "Ringleader"(Defender) (lots of life, average damage, small chance to uporoto and a small chance of Crete).
Each class has its antipode: the Instigator is a Fighter, the Fighter is the Defender, the Defender is the Instigator. The principle of operation is as follows: one class I gave strengths and weaknesses, antipode I gave the quality that ignores the strong side and is weak qualities of his opponent. For example: defender a lot of armor, much health, 3 units (the damage to the block equal to zero, Crete is divided into two) and average damage. The Instigator of the little life, little damage, greater chance of Crete and uporoto, and about. armor. From the fact that the defender has little chance to hit, its damage does not pose a threat to the instigator, the instigator of the increased chance of Crete, that breaks the block, and about. armor. According to such methods work and the rest of the antipodes.
Characters gain experience after winning the fight, resulting in raise the levels. Each level opens up new opportunities, skills and techniques.
I calculate the experience gained after battle is probably the easiest way. Is the maximum experience which a person must achieve in order to raise the level, this experience I shared with a number of fights which needs to win the character. With each level the number of fights increases, with the resulting experience after winning the fight also increases. It creates the illusion to the player that the next level is not so many fights we must win.
Capa
Four attributes that harakterizuet each character: strength, agility, intuition and endurance. The game has the maximum value for each of the attributes (except strength) which a player can achieve. If a player reaches the maximum value, it will have a 100% chance to uporoto, Crete, and maximum armor. Of course things that give so many stat points to reach this maximum, no. This maximum is the cap.
We did cap the level, each level cap increases. Thus we killed two birds with one stone: in the early game classes that are based not on the damage, and overate, Crete, armor, etc. will also be uvaritsya almost like the last level, provided that players will be procured in accordance with their levels. There will be people walking around in set 4 being 10, and to save money for things for the next level.
Counting Damage
How is the damage: Weapon Damage + Power*(1,3)(1,4) (1,5). The numbers in parentheses is the number corresponding to each class. This is not the final damage that will be caused, because it depends on who made the damage. The first formula that I used, looked like this:
Damage = Damage * protection from Damage
Damage resistance= 1 – Armor/Armor cap
Give the values to make it clearer:
Damage resistance = 1 - 500/1000
Damage = 100*0,5= 50
500 is the current level of protection of the character of cap at its current level equal to 1000, eventually the damage will be halved.
But we still have about. Armor that need somewhere to cram. After various attempts and tests I came to the optimal formula.
Damage resistance = 1 – (Armor*Pro. Armor)/(Armor Cap*Cap About. Armor)
Will give the same values as in the previous example:
Protection from Damage =1 – (500*500)/(1000*1000) = 0,75
Damage = 100*0,75 = 75
In the end, the armor was reduced by 50% and he the initial damage has been increased by 25. The damage may increase if about. armor will be more than KAP at this level.
If one of our player work the chance to score a critical hit, the damage is multiplied twice. In case of unit damage is multiplied by zero. In the case of block and Crete at the same time, the damage remains unchanged, and in the case of evasion the damage is multiplied by zero, regardless of whether it was a crit or normal.
Fighting System
The player has 5 points, which he can hit and 5 points, which he can block. At the same time he can block 2 body parts at once (in the case of tanks with two handle, he can block once 3) he can only hit one (in the case of two one-handed, he can attack 2 points at the same time). The player can use the techniques immediately, and then they go into a rollback for a certain time.
The exchange occurs by rounds, the player is not obliged to share with each player. While it can hit an unlimited number of characters at the same time. The computer randomly choose your opponent. For example, there is a 2x2 battle, one team is a Defender and Instigator, and the other two fighters. The task of the tank throughout the fight as long as possible to keep himself on these two dps-jers, as the Fighter little about. armor. The protector will pretend to be the tank which covers the infantry, while the Instigator will be able to make damage without any obstacles. At the same time, the Soldiers must outsmart, Defender and find a window to get to the main threat: the Assailant.
All of the above will occur when you use competent techniques. Win the one who will take better decisions, or who will show restraint and will be able to calculate your opponent.
At the end of the battle, the winning side will be rewarded with experience and other features. All players bring their contribution to the victory (besides AFK), so all the winning party gets the same bonuses.
At first I wanted to make players will receive a bonus in accordance with the damage. The idea was doomed to failure, as there are classes that are designed to bring the team victory, not damage, but in other ways, as there are some techniques which improves the attributes of your team, or neutralizes a major player in the enemy team. So we decided that the best option will all give the same amount of experience and bonuses, because each of them something and helped out.
Methods
Starting from the first level each character has to appear first appointment. Some of the techniques have all classes and some are designed for only one class. In order to use the techniques the player is required energy/aggression/resistance. The receptions are rolled back. Than taking stronger, the he rolled back the cost increases.
Some of the techniques have delivered a lot of trouble: they did not work as originally planned, it did not work. Some had to remove it because it was not able to do, and some do not fit to one class and had to be replaced.
At first I did a very big mistake – gave the antipodes techniques that enhance their weak side. In the end, lost interest in the game and all classes became the same. My advice to you: never give techniques that improve the weak side of the character.
The Instigator was the one thing that will replenish the life in the course of 6 rounds. I didn't want to change the properties, but due to the fact that he has little maximum life, it is not getting enough of life and the reception is useless. Two days I tried to find this balance, and failed, in the end, I gave this technique the Defender and came up with the new Instigator, which increases its chance of evasion.
One feature which was recently implemented is the regeneration of energy. One programmer, playing for the Defender, said it is too quickly spent, the level of resistance and techniques that restore it, do not help sufficiently. I didn't want to give more energy for the use of a receipt and couldn't decide what to do.
It got me thinking: what if the skill level would be regenerated passively. But all the classes are different and my goal was to regeneration energies depended on the players too. A feature is the following: each class will get some energy/aggression/resistance depending on successful strike, Crete or successful block. Everything will happen this way:
Energy recovery
Successful hit = 2энергии
Successful Krit = 3 power
Recovery aggression
Successful hit = 2 aggression
Successful Crete = 4 aggression
The restoration of resistance
Successful hit = 3 durability
Successful Block = 1 durability
In the calculation I took strong, not forgetting about the weak quality of each of the classes (who are more blocks, and he gets the bonus and who is less likely to happen blows and gets more bonuses). Taking part in fights where a lot of opponents, the tank will get more durability, as he has 3 units, thus the chance of blocking attacks.
Fighting "Ranked"
From the beginning I wanted to create a type of fighting that would measure the skill level of each player and to the system itself found it more suitable for the player.
I came across a very interesting formula that is currently used in chess. It is called "the Formula did EAT." This formula finds the chess player with an opponent who is equal in experience and skill. About the same formula I used in this game.
The principle of operation is similar. Calculates the skill level of the player. If the player just started, then this number is equal to zero. Then the system searches for an opponent with about the same rating that he did. Suppose that the system found an opponent with a rating equal to 10. At this point, calculated the odds of winning of player A with player B.
The probability of winning for player A = 1/1+10^[(eloB-eloA)/400]
The probability of winning of player B = 1/1+10^[(eloА-eloB)/400]
*elo A= current rating of the player And
*elo B= current player rating B
That is, the probability of winning for player A if of 0.48, and the probability of winning of player B ≈0,52. Then need to calculate what rating is received And in case of a win or how much you will lose in case of loss. The same should be calculated for player B.
In case of a victory of the Player And
In case of defeat of the Player And
A new Player Rating A = elo A – k(1-exB)
In case of a victory of Player B
A new Player Rating A = elo A + k(1-exB)
In case of defeat Player B
A new Player Rating A = elo A – k(1-exA)
*exA the probability of winning of the player And
*exB – winning probability of player B
*k Is the number will decrease after the first 30 fights, and then stop for 25 (50 25). This is done so that new players could expect to determine your rating.
In simple words, the formula rewards players who had little chance of winning, while not losing much ranking in case of defeat. Also, players with large rating will be more to lose in case of defeat against players whose skill level is much lower.
Opinion
I think that's all the major problems I encountered in the process, the game designer. I must say that the design of the game is cool, but even over such a seemingly simple project requires a lot of effort, diligence and patience. Hoped that creating games easy and fun is not necessary. I should be grateful for constructive criticism.
The game itself is located at the address: www.fbgates.com
Комментарии
Отправить комментарий