If someone told me on the day when I agreed to participate in the development of a browser game, that we would live until the day of the opening of the project in public access, I would giggle nervously and simply would not believe. And if I have already
told you what sequence of events preceded the actual launch of the project, then I was somewhat silent about the amount of work that actually took place during this time.
I would like to continue the story and highlight some of the hidden moments of development, including both the technical part on my part and the important points of the project from other team members. As a result of recording thoughts, a lot of material came out - much more than last time, so I will publish it in several stages. Fortunately, it was very easy to break it down logically.
And the first part will be about laying the foundations of the project - creating the world, thinking through the mechanics of the game, honing the balance, maintaining order in the system. The entire first part lies entirely in the area of ​​responsibility of our project coordinator. Each event took place directly through him, and each action was done on his part - therefore, everything described later is the work of the coordinator in the project.
')

Coordinator's work
The project coordinator in our team played and plays the role of a liaison — it is by his will and understanding of the structure of the world that certain changes are introduced, it is on his experience of playing and working in such projects that the whole essence of balance, management of players' behavior, the main axioms of the project are built.
For example, from the very beginning of the project it was indicated for the whole team that, in the first place, the game will not give a total advantage to players who buy game currency for real money - an alternative source of extraction will necessarily be offered for each (or almost every) element of the game. This item will be reachable. Until now, there are only two moments unique for the “paid” currency on the project, but even so, you can get cookies without direct payment - through the sale of game items in the game “market”.
It is thanks to this person that the project began, and continues to this day.
World creation
Any project begins with an idea, but some projects require not just the basic idea, but also its detailed description, constant development, reinforcement with its internal “physics”, and at the same time taking full account of every nuance to maintain integrity. Our goal was to create such a world. A world that will develop gradually, but have a solid foundation from the very beginning.
In the last article, I already mentioned that at the beginning of the journey there were two concept designers in our team who were hoped for as generators of ideas, but I did not attach much importance to the description of their invested work in the development of the project. They were invited mainly due to the fact that they already had tremendous experience as players in similar projects and could, in word and deed, prompt the coordinator “in the right or wrong direction” his idea was moving. Subjectively of course, but at the initial stage, the more opinions and discussions, the better for the concept.
So we got three people who understand the internal structure of the "browser".
At the start of the formation of the concept, we created a general Skype chat for collective brainstorming, where ideas that could potentially make up the game world were put up for discussion. It all started with finding out who to populate the game with - a set of several types of game characters was needed that would not overlap with existing counterparts in other games. At the same time, thanks to the found characters, an almost ready-made name for the project could have emerged, and by the time of a general agreement on the use of different types of birds, the project received the code name “birdz”, and later a few months later it was renamed “Pernatsk”. Unique word, free domain.
With the same mindset, currencies were invented - the entire currency, with the exception of coins, should not have been used in other projects at that time in the combination that we will use. And in principle, almost every element of the game should be distant from the existing competitors in the market.
For the normal launch of the project, it is necessary to gain a critical mass of ideas, let them be scattered, practically unrelated to each other and unbalanced in the world. These pieces of the mosaic can be folded in the future into a common map of the project, simultaneously filing the corners of each piece due to the fact that they are somewhat inconveniently joined.
To write down ideas, I wrote a Skype-bot, which, when the message “idea” appeared in the message, copied the entire message into the wiki, with the hope of further analysis of the resulting blockages. And it worked.

Thoughtful slang
As the mass of players grows and a certain community of the game is formed, a certain set of words-abbreviations or anglicisms that characterize certain aspects of the project will begin to circulate around the project. Moreover, if you think about this issue in advance, you can predict and direct players to use words or combinations that are pleasing to us, so that certain names are associated only with our project and with no other.
For most elements of the game (when purposefully in the form of systematic lists, when simply in the form of thoughts) a certain set of associations and variations on writing were created. For example, for rare items that should be obtained in the game by means of “accidental discovery”, we ultimately took the fictitious word “redlick” as the official name, which uniquely and briefly describes the object and its type during the conversation of a group of players, which immediately got accustomed as a unique term .

The “featheredness” that characterizes the player’s “coolness” in the rating, some players call “yay” because of the external similarity of the icon, which, in general, if you abstract from the image, it can even carry some true meaning.
The main "bot" of the game - the enemy available to attack at any time with the characteristics calculated by the server based on the characteristics of the attacker - is called "Iron Birds", and the players call it "piece of iron" or "piece of iron."
I repeat - these moments of the game can be thought out in advance, offer the players their options, accept them as a feature of the game, which will give the world its small interesting features, the right touches and accents.
Data store
I already mentioned that we opened the wiki to write down ideas, but keeping thoughts in order and systematization is no less important part of the work on the project than directly generating them.
Due to the fact that our project coordinator had some experience in developing websites on our own, we had special sections for the developer, special sections for the artist and sections for everyone on the wiki. To quickly write the admin panel, I had before me a huge list of properties of a character that I had to load into the database, normalizing in my head and making up the right architecture - but I always had a basis for pleasant work.
Any article on the wiki went through two or three stages: a sketch of the main idea by the conceptualist, giving a readable form (from the breakdown into sentences, to the introduction of additional functional conditions), the technical requirements for implementation. The project coordinator worked for us with some C3PO - connected between people and cyborg - helping me translate the flow of emotions from concept workers into working code.
Now our game has a section called Biblio - the ideological heir to the wiki: a description of each location, each action and interface element. The organization at the beginning of the development of a wiki was the beginning and, in principle, introduced the idea of ​​creating a knowledge base inside the game.
After six months of development, we identified for ourselves the set of functionality that was supposed to be ready to launch alpha and beta versions.
I’ll reveal a small secret: of the planned functionality currently (public beta), about 70% have been implemented. Why is that? The answer is simple, in the end we came to the conclusion that we simply could not do everything that we had in mind without depriving ourselves of energy or of reason. Part of the requirements were cut, and the other part was postponed to “after the start”. However, to the list available at that time in the process of work, additional important modules were added, overlapping the missing functionality.

Heart of the system
Before it is possible to create at least some actions in the game, it is necessary to determine the main parameters, from which practically everything will be calculated in the future. First of all, you need to make a list of the characteristics of the character and determine what meaning this or that parameter will have. In our case, five characteristics were singled out, to which later two more were added to introduce additional complicating factors.
In fact, if I am asked to demonstrate some piece of the source code of the system, I will easily show any, except for only one - a class with formulas. A single file forms all the logic of the work and the whole balance in the game, it is this file that is constantly being modified and supplemented in the process of debugging the balance. And in order to create such a file, or even one formula for calculating at all, it is necessary to decide on the desired player behavior.
Below I will give an example of the concept and possible implementation. The example is not actual.Suppose that we want to keep a “just registered” player on the first level exactly one “working” day with his interest in it. To do this, we determine by the method of “scientific spear” that a player needs to conduct 50 battles per day, receiving exactly one experience point for each battle - thus, to reach the second level, the player must gain 50 experience points. In order to make it impossible to conduct more battles in a day, we are determined by the delay in the time between battles - we agree on 10 minutes of real time. Total for 8 hours a day with constant monitoring of timers, the player will gain 48 experience points.
Next we need to determine what kind of fight we want to see, and what events should be present in it. Suppose in battle you can hit the enemy, inflict critical damage, miss, block a blow - this set of “events” must be combined in a battle with such a frequency that the number of events can be adjusted by changing the player’s characteristics, and with an increase in his level uncontrollable number of such events. Each of the “events” should be roughly estimated which parameters of the player should directly influence their advance.
Now we can assume that for the fact of critical damage, we need the value of the attacker's accuracy and the value of the defender’s intuition - the outcome of the event should depend on the combination of these two parameters. The impact force will depend on the value of the same characteristics of the attacker and the value of the defensive characteristics of the defense. And, again, we assume that we want to see 1-2 such blows in one battle out of 10 rounds.
All other desired events follow the same path of creation.As a result, a large number of such “assumptions” form the initial picture of the character’s behavior in battle, later adjusting depending on what we want to receive.
Today there are a large number of formula models of calculation for the duel between the players. But, creating something of your own, you will practically poke your finger at the sky - adjusting, analyzing and experimenting.
To improve the characteristics of the character itself, the currency is used, which also needs to be somehow obtained. And if we want to limit the number of characteristics that a player can improve at a certain level, we can estimate the amount of currency necessary and sufficient for production over a certain period of time.
For example, you can limit at the first level the values ​​of the characteristics of the limits from 1 to 10, for all parameters (in the amount of money spent). At the second level - from 10 to 25, at the third - from 25 to 40, and so on, so that at high levels the interface and typical restrictions of the database fields contain the necessary indicators.

Next, you need to simulate the behavior of the character at each level, including all the work items that take time for the player. It is very important to foresee in advance possible “distortions” in activity levels. Although it is impossible to achieve the ideal. In addition, random variables can be entered into the game formulas so that the calculation of duels, resource extraction and other formula dependencies are not linear and controlled by the expectation.
It is necessary to think over and assume a lot - with the actual absence of specifics, there is a huge picture of all kinds of interrelations that one has to keep in mind in order to correct a certain part of the system.
After the appearance of scattered pieces of information, an abundance of relationships between the basic parameters, many hours of discussion, drawing up models of the main types of players, it is time to write the formulas themselves and put them into practice.
In our case, the project coordinator personally wrote a summary analysis of the formulas: a huge page, with several dozens of fields for entering parameters, which, by pressing a single button, calculated several hundred battles with specified values ​​of characteristics, resource extraction models. The final “exhaust” of the calculations was analyzed, the coefficients were modified, and the calculation was restarted. This selection of coefficients and the type of formulas took almost two months, while the main admin modules were developed and a general concept of illustrations was created.
The main task, which has been solved and is still being resolved, is to create a balance of resource extraction, gaining experience, featheredness, increasing the characteristics and structure of the battles, when character development takes place evenly, taking into account side mini-games and additional functionality that opens with an increase in level.
During a public beta test, we received some negative feedback that the balance was disgusting and incorrect. The player’s argument was that his character was simply obliged to dodge the opponent’s blow in absolutely all cases of the duel. By the way, the player has fully invested all the funds he has invested in one single characteristic “dexterity”, proving that his approach is the only correct one. Our understanding of the balance is made up of other principles, and the formulas will adapt to the general understanding of character development, and not to overt "distortions" in an attempt to obtain a total winning situation, which, in fact, is an imbalance.
Hateful by many "random" in such formulas was minimized, but did not disappear completely. Characteristics are limiters and multipliers of random variables, and not the only factor of calculation, and the enormous bias in one characteristic between the two characters is not the actual key to winning, since it only affects the chances of a successful hit in a range of random variables only appropriately. This approach to the formulation of formulas allows two fights between the same characters to pass each time in different ways, and leave a chance to win over a stronger opponent.
Until now, the main responsibility of the project coordinator is to continuously monitor the battles conducted in order to identify the slightest hesitation away from the planned goals and the desired behavior of the players. During the entire beta testing, appropriate adjustments are made to the formulas, and the balance is adjusted. It is worth noting that one of the latest functions introduced into the system before the beta was launched was the collection of a large layer of statistics - more than three hundred indicators - which are aggregated with a certain periodicity. In addition, for each action related to the consumption or receipt of funds and indicators in the game, a separate log entry is made. These two large tracking tools allow you to adjust our understanding of the actions of users and, accordingly, change the balance in the right direction.
If you try to give a free description to the browser game, then this is a “kind of big engineering calculator”, slightly “seasoned” with graphics, where players try to solve a large system of equations with a huge number of unknowns. They solve the "spear" method, analyzing the overall change in the behavior of the environment from changing any parameters. In this case, the administration, in turn, is trying to formulate a mathematical model in the form of a system of equations using ready-made indicative invented solutions of equations. In general, you know, this is a thought, it will be necessary to try to somehow involve the mathematician in the work.

Team star
Do not forget that the project coordinator, besides the main responsibilities for creating the world, has on his shoulders the entire burden of creating the right connections in a team. At the same time, it is absolutely not necessary for all team members to somehow communicate with each other, moreover, personally, I deliberately moved away from general conversations within our group - this is a feature of my character, and the coordinator fully accepted this behavior on my part as normal and acceptable. This allowed me to work calmly on my part of the project and not to climb into the current social abyss, which could affect me completely unpredictable.
Thanks to the coordinator and his magical abilities to create a favorable arrangement of people, we were able to organize as a team, and work in the future, not falling apart. Yes, some left us, but these losses were eliminated by the coordinator, and the project did not stop on the spot.
Since from the very beginning our project was planned as a long-term one, it was not possible to do it with a complete lack of guidelines. Any plan, even impracticable, gives a certain confidence and purpose to which you can strive. That is why, after thinking over and organizing the creation of the world, we approved the approximate dates for launching each of the project stages (pre-alpha, alpha, closed beta, open beta testing, launch), making a detailed list of modules that should be ready.

Hell and meat grinder
Since we didn’t know how the server and the system as a whole would lead to an increase in load, which user threshold should be considered critical, during beta testing we were protected from possible avalanche attacks of users by entering the presence of a mandatory invitation to register in the game.
In fact, a really tangible “habraeffect” did not happen in the direct sense of the word, although the situation was much better than I had imagined. I humbly waited for a replica: “Another browser” - along with virtually no interest in the project, but in just a few days the number of registered people increased almost tenfold compared with the situation before publication - from 180 to 1600 people. Our server now lives under the “load” of 4-12 requests per second and practically does not notice this, having an average CPU utilization rate of around 4%.
But not that was “habraeffekt”, from which we assumed that they were protected. The main explosion in the project turned out to be a stream of discussions, recommendations, and reports on misprints and errors, which we tried to break through at an accelerated pace during the first week. We have six channels of communication of users with each other and the administration on the project - internal support service, external support service (including incoming letters in the mailbox), “twitter”, a forum, news comments, private messages. Each of these communication channels was fully loaded with incoming data for us, which had to be processed quickly in order not to throw users into obscurity.
For the first few days, the project coordinator practically lived without sleep - even if he said that he was “going to sleep” already, he still continued to answer the questions of the users. My character does not allow me to easily and simply communicate with people in "fast mode". And I cannot write a message without a style peculiar to me, which not everyone can perceive adequately, without seeing any disdain or arrogance in it (although this is not true to my real thoughts at that time). Therefore, all that I could do in this situation is to correct the “bugs”, add interface improvements and fulfill the wishes of users, without entering into real contact with them.
But the coordinator was not the only one - two people who joined our team from the moment of alpha testing came to help in the analysis of the “debris”. And since the start of beta testing, the team has expanded again and now has 8 people, having acquired the administrators and moderators of the game.
Sure, beta testing has greatly benefited the project. Both in catching "bugs" and in communication with players.

Squirrel in a centrifuge
With each new piece of update being introduced in the project, the amount of information and knowledge that should be placed in the head of the coordinator increases. In addition to simply knowing what we are doing in the project, we need to see and notice everything that the user and administrators do, answer repetitive questions, monitor every possible unintended action, making a list of “bugs” or improvements - this is a daily minimum monitoring, which is carried out by the project coordinator.
And so much has already been written on the topic of the fact that the manager always works around the clock, in our case - this does not just fully reflect reality, but is practically written off from our situation. In theory, all that is needed to solve this problem is to find a source of funding for the project, and to attract more people who can complete tasks on the basis of a full-fledged employee. However, the search for funding is accompanied, firstly, by huge investments of temporary resources (“start-up-parties” celebrations, presentations, pleas for investors and so on), and, secondly, a large drop-out among potential applicants for investment, which somewhat reduces our chances.
It is impossible to fully hope for a miracle or other people in the team, transferring their responsibilities to someone. Just as I can’t write the project module’s writing to the coordinator (despite his development experience), the coordinator will not be able to delegate to me the responsibility of creating a concept system, although at the same time we occasionally throw some good ideas together. In addition, there is a banal jealousy for their work and its quality - I personally thought many times whether to continue searching for a programmer to help us, but the main question that stops me remains: “What if another developer spoils something, steals the code , do the dirty trick, incorrectly write the module or something else? ".
With all the volume of work, one has to somehow find time for a family, personal rest, the main work. There are bags under the eyes, the number of alarm clocks in the morning is approaching a two-digit number, in a dream solutions are being sought for problems that have arisen during the waking period.
What is most interesting, literally a couple of days before the last article on Habré, this situation was not observed - but with each new registered user the amount of work and responsibility on the project suddenly increases. And all this is done with the hope of ever hearing from a complete stranger “mentioning our project in conversation with someone,” and, of course, with the hope that this whole undertaking will bring some more profit, besides the huge baggage of experience already gained .
And I can also embroider ... and on a typewriter too
What I personally didn’t expect in the first month of beta testing was the appearance of those people who are ready to “suddenly do surprising things for the project”, without demanding anything in return, and not claiming a place in the development team.Once at the project forum, for no reason at all, one of the players became a kind of “instigator” for games and contests - he wrote stylized texts, distributed actually acquired “wealth”, organized players to “cultural events”. At the same time, no one from the administration of the project has ever seen or heard of such a player, no one understood why and why he does it, and does so qualitatively that it was a shame not to help us in his endeavors.Here is an example of a list of users who are browsing the theme of the contest from “Mad Filin” at the time of the contest:
Later, the same player wrote excellent concepts for public events - we were not accustomed to this approach with the project coordinator. Recalling the conceptualists who left us, their work could not be compared with the quality work done by Mad Filin.In addition, on the eve of the New Year's update, the support service received an unexpected offer from another player - to help in drawing the winter design of the game, with a ready-made draft and a vision that hit the target in terms of the style of the game.Sometimes such acts of complete strangers give a new batch of motivation to work, as there is “a little bit” more hope and confidence that the community of players is interested and needs our project, and we spent these two years for a reason.Public opinion
Since the project is not done for developers, but for players, the users' opinion sometimes plays a major role in resolving issues. Of course, not every user needs to be listened to, but not everyone can be ignored - the reasoning, the correctness of the problem, the mass character of the phenomenon and the adequacy of the presentation are the main indicators for a close examination of one particular review.In just one month of the project’s work, many changes were made in the form open to the players (corrections, interface improvements, and improvements to the logical and formulaic component). The amount of experience needed to get the levels was changed, the interface was refined almost on every page, the conditions for attacking other players were changed (they limited the "beating" of weaker players), the possibility of joining the "packs" was moved to a level below, and so on.The very fact of the possibility of influencing the development process by the players is perceived as bilateral loyalty from players to the project and from project to players. In the process of beta testing, the players suggested a lot of options for the further development of the world - from mini-games to full-fledged gaming locations with mass actions. Some of the ideas already proposed have been planned, the other part will be accepted as additional ones that can be developed.Administrators of competing projects also did not leave us without attention - there were registrations with postal addresses we knew. No conflict situations arose, but the fact of interest from competitors pleases.In addition to real feedback, there was also an indirect one - at the very "new year" we were offered to sell the project. The proposed amount was disproportionately small compared to our invested labor costs, and we refused the deal, but, again, we felt some pride in our project.
Test period
In general, beta testing was aimed primarily at not catching code errors (although there were a lot of fixes with this, too), but, nevertheless, at creating a competent database of the game. This stage of development was to identify those moments of the game that would directly affect the easy achievement of advantages over the other players - inaccuracies of the battle formulas, calculations of awards, the cost of the characteristics, the conditions for obtaining “feathered”.Each theory, each assumption that was made in the process of closed development, must be tested and corrected in accordance with the desired behavior of the players. Since the entire project rests on such assumptions and unproved theorems, a real launch would be almost impossible.For example, on the New Year holidays there was a big stage of recalculation of “feathered” to all players, which implied preliminary adjustments to the calculation formulas. The requirements for easy-to-reach statistical units were increased and reduced for hard-to-reach ones, and the degree of complexity was just revealed as a result of a month of full-fledged game of users. At the same time, the real complexity could be assessed on the basis of a statistical report for the entire project, which, for example, can give an idea of ​​the average value of a particular indicator for all users (which can confirm or deny the expected complexity of the indicator).In addition to adjustments to the formulas on the project, errors associated with the logic of the project, directly affecting the achievement of players' goals, are identified. For example, there is a mini-game (called “scales-shka”) with a “local” currency, where a unit of currency is put on the table and the player tries to guess among the five presented closed variants of a “heavier” item - if you win the bet doubles, if you lose, you lose . This mini-game implies an additional global reward for a certain amount of winnings, and each global reward in turn carries an additional amount of player points that can be spent on “buying” skills. Thus, if a player repeatedly won a mini-game, then he is guaranteed to receive an additional opportunity to improve his skills,and in the case of a large amount of time (or the possibility of writing a game bot), getting a reward is not difficult. In this case, the right decision was to limit the number of mini-games available in one day, so as not to give users a quick and without any difficulty to get the desired plus points.For obvious reasons, we cannot continue the game after beta testing with that set of received “achivok” - some players managed to grab their own piece of cake, noticing the imperfection of the system, while others did not have time to do it. It would not sound sad, but by March the entire current progress of the game will be completely canceled, with the exception of a few indicators left as encouragement for three months spent with us (and, of course, the accumulated actual experience of the people themselves who understand the basic principles pumping "character). Everyone was warned about such a fate at the current stage of the project by means of a letter upon registration, and we still hope that this will not cause the players to leave the project.Where did two years of life go?
Over the entire period of work on the project, the coordinator was not only the immediate chief manager, but also carried out a huge layer of work that was beyond the power of the rest of the team - modeling player behavior, creating the concept of the world, developing and editing calculation formulas, supporting communication with players. To find such a person in the team is the actual key to the success of the project in terms of completeness and launch. At the same time, there are no irreplaceable people, of course, but in our case we would have to search for several people at once.The conceptual level of the project - an understanding of the structure of the world and drawing up its rules - is the foundation of all our development, just as the work of the coordinator in a team is the basis for maintaining employees in a team, and ensuring communication with the players is the key to user interest and loyalty.The entire beta test of the project is aimed not so much at identifying errors in the code and texts as in correcting the main process of the game. The beta test should show the consistency of the system so that we can finally understand whether we are moving in that direction and whether our logic works correctly where we lack real knowledge of developing such projects. In the end, the beta test should give us a basis for further development - that foundation, which is confirmed practically in the course of a real game, and can be used for similar logical conclusions in building the next steps of the project.