Development of a “browser” - a year of life and three years of torment

    In fact, a year has passed since the last article - the whole year silence was associated more with the lack of large-scale interesting moments, which, for the most part, were covered in the first articles [ 1 , 2 , 3 , 4 ]. However, a new story can at least illuminate the results of the project’s annual work from the moment it was launched into public access.

    For those who are not interested in the details, but just wanted to know the result - no one became a millionaire, they did not open offices with lounge areas, the market was not captured, competitors are still a cut above us in terms of development and size of the business. However, one of the positive aspects is the fact that the project is alive and developing, the team has become wider, more involved in the development process and, as a result, more interested in work - the team and the project have a future, which we are working on.

    Pernatsk :: Labyrinth of the gloomy forest

    Workflow and team


    In fact, in the main form, the process of working on the project has not changed: we still have several deployed projects from different branches of the version control system for testing, we collect updates every two weeks, but some details have changed. Firstly, the team has expanded quite a lot since the last post: game masters, moderators and testers were added, and very good testers, given the verification of various twists in the functionality, to which my brain does not immediately think of. Secondly, another person was added to the team of artists who works under the strict guidance of our main artist, which means that the style and ideas will be as wonderful as they were a year ago.
    Pernatsk :: parrots
    Thirdly and fourthly, there were some events with different completion times, which led to a change in the time of work on the project for some of the core developers. In early autumn, the project coordinator left the main workplace and switched to the project on a permanent basis, since there was clearly not enough strength to combine it - this is undoubtedly a plus for the project, but a constant risk for the family budget. Following him, at the beginning of this year, I personally, in an attempt to change my job, did not hold on to the new employer due to the difference in technology, and also switched to the project on a full-time basis. As a result, the ease of working on their own project throughout the day, the absence of bosses hanging over their heads, their own responsibility for their own terms, the ability to distract from work, if necessary, outweighed all the advantages of a high salary.

    There were some ideas related to the project, but not directly affecting the project - for now I can’t say the details, but the idea can bring a new audience and open a new direction of work. Since all current labor resources have already been scheduled for the year ahead, it was decided to take an additional developer as a junior student for part-time work (2-4 hours a day), just for a separate project, in order to help some person start his journey and at the same time get in the future a loyal trusted developer who can be trusted, ready to join our team for a full-time work, when such a moment comes. The first “pancake” turned out, as usual, lumpy, despite the presence of some knowledge in humans. The absence of development issues, the constant work “silently” nullified our cooperation, since it turned out that mentoring on our part is not necessary, and loyalty cannot be achieved. The new person who replaced the failed colleague had somewhat less knowledge, but this was offset by desire and desire, although the result was again periodic “holes” in the work schedule, silence again, again lack of interest.

    A few years ago, at a conference, codefest heard a phrase that was the only one I remember from the whole conference (rather, because it consisted entirely of self-speakers of the speakers, while still costing enough money): “For an employee to work at least somehow, he needs a“ carrot ”in front and carrots in the back. But for an employee to work really well — he needs a “carrot” inside, ”everyone will understand in his own way, but only the main development team has a“ carrot ”inside, and it’s quite difficult to organize its presence for newcomers. Most likely, when things become a little less, we will try to organize a new sortie in order to find an assistant student, but forcibly forcing and pulling someone certainly does not make sense.

    Pernatsk :: Rope of power

    Society and fame


    This is a rather unusual feeling when a stranger, with whom for some reason it is necessary to make a dialogue, turns out to be familiar with the history of the project. Undoubtedly, this is flattering and creates some additional motivation for action.

    For example, recently there was a problem that made it almost impossible to make payments through Robokassa using bank cards, and I had to write and call “support” several times in order to resolve this issue. In one of these calls, the girl manager still transferred my call from the "first line of defense" to the actual technical support department. I reported the transaction number for which there were complaints from users, after which I heard something like the following: “One minute, I'm looking for a transaction. Yes, yes, I see, payment by credit card, one hundred rubles, Pernatsk store. Is Pernatsk a game? I read about you on Habré ". By the way, the solution to the problem began precisely with this call, as promised, our situation was decided on time and in our favor - very grateful. True, the problem then arose again, and again, and again,

    In addition, there are a sufficient number of cases of writing articles about the game for personal blogs and near-game sites, which gave an additional increase in registrations. It should be noted that there was a clear contrast of articles about competing projects: they spoke better of us, however, I didn’t feel the difference in the comments (probably, the specifics of the sites played a role). As an additive, letters with reviews, tips and suggestions are periodically received, for which additional thanks to everyone who is interested in the fate of the project. And in addition to the general emotions, three issues of the “underground newspaper” were added, formed under the inspiration from the events taking place in the game (the pictures are clickable).
    Pernatsk :: Underground newspaperPernatsk :: Underground newspaperPernatsk :: Underground newspaper

    Undoubtedly, there will always be those dissatisfied with every little thing, inadequate and others. Almost from the very beginning of the project, there are well-known personalities who criticized every update of the game - from expressing dissatisfaction with the quality of performance to complaining about the inconsistency of the conditions and the delirious nature of the undertaking, but it is worth noting that such players persistently continue to chew our "cactus". The only time in a year of the game was the occurrence of an insane spammer, uttering foul language in a common communication channel, for which it was necessary to resort to emergency measures in the form of a redirect of this individual to non-consumerism, because an ordinary ban did not give a long-term effect.

    Someone else's money


    One of the most important questions of any “startup”, with which we do not consider our team and our project, is “Do it, do it, but who should get the money from?”. The financing problem, it would seem, in our time is not a problem as such - in the presence of start-up parties, a huge number of investors, kickstarter and other similar projects - there is always something to choose from. However, someone thinks about financing, stopping the project for searches, someone instead tries to solve the project on their own - and we chose the second option.
    Pernatsk :: Eagles
    I can’t say that we didn’t look for investments, on the contrary, we were in some kind of passive search for several months: we placed offers on investment sites like napartner.ru, we talked through acquaintances with “big uncles” who could potentially invest money (and money it really needed a lot, otherwise all the financing did not make sense). And I will say even more - several times interesting conversations on the topic of cash flows began to spin. After the placement on napartner, one of the investors contacted us, with whom we talked for a rather long time for several days, but it all ended with a loss of interest on the part of the investor after receiving a full breakdown of our current income at that time (notorious APRU \ ARPPU and the like who actually don’t really interest us, but people with money are very interested). We did not begin to torment the person with further questions: it is not interesting - so it is not interesting.

    Then there were conversations through my good friend, who for some reason helped me a lot on various matters, including at one time and finding a job, without asking for anything in return. He has some connections with the “business sharks” that are really engaged in investing, and there was interest from the “big uncles”, but there is always some “but” that allows the interest to fade away. We always understood that the investor wants to invest his money somewhere and earn an income that is at least three to ten to thirty times higher than the initial investment, and it is better that the return period does not exceed a couple of months - it’s exaggerated, but true. And we could never guarantee either a return period short enough to release the hormone of happiness from the investor, or a multiple increase in funds that relaxes the muscles of the jaw joint.

    Several times there were situations when a person came to us with the intention of creating his own game, offering his own means (and, most importantly, ideas) as initial investments. The size of the proposed investment in all cases was slightly higher compared to our expenses before the launch of the project, but also small enough to contain a development team. Let's be honest: if we, as a team, were able to create a project without practically investing money in it (and our budget spent over two years is practically nothing), this does not mean that our team will abandon the current project and begin to make a new one on the same conditions. If the investor wants to create a game, this implies the full hiring of the entire team, since two parallel projects are no longer possible and paid work to maintain the family budgets of developers is required.

    “But you can take a ready-made alien engine, take part of the graphics, draw a little bit - and get a beta version!” - often answered us in response, not even realizing that digging in a strange engine written 5-10 years ago, adapting your illustrations to ready-made strangers, coming up with a development concept within the framework of the functionality of a finished project only complicates the task, and there will certainly be “ bottleneck requiring either a restart or rewriting. We did not see this point and positive emotions during work, therefore, refused.

    Every month at startup sites, we updated our indicators (those that are APRU \ ARPPU) in order to show the positive dynamics of the development of the project at our own expense, but it did not bring any sense. Someone bows at the feet of investors, makes numerous presentations, attends every startup party in the country, while spending a lot of time and money on this - we are not sure that the time spent in this way, and even more so the money, will bring results specifically for of our project, since we are not creating something new and incredible. Therefore, the attitude towards potential investors has always been quite simple on our part: if there is no interest equal to our motivation for three years of development, you should not hope for further cooperation, because we can’t guarantee financial benefit, therefore, the lack of an investor will give us our own peace, which is equivalent to having a multi-million dollar budget. And personally, I’m not sure that now it generally makes sense to consider investing in current realities with a crisis and general hysteria, as well as the level of development of the project.

    Pernatsk :: Totem

    Own business, own resources and own profit


    Making any profit, regardless of its size, entails the payment of taxes to the state, the obligation to honestly share income between the team, and make decisions related to the project. And if the question of taxes is due to specific rules “from above”, then for everything else, you have to move your brains and agree.
    Pernatsk :: Parrots

    Together with receiving the first funds to the account, the first major acquisition was made on behalf of the company: registration of a trademark for the possession of the rights to the name and design of the logo. As it turned out, our state is not at all oriented towards working with companies that own “virtual” assets - to register rights to a trademark, it is necessary to indicate the scope of rights (for example, aircraft construction is not included in our work plan, so a suitable item for such work can be excluded from list), but at the same time, there are no suitable items that apply to online activities. For a long time, we sat in the office of a company engaged in registration of this kind, reading through the list of goods-services subject to registration by trademark, choosing at least some remotely suitable classes.

    Sharing profits is always a somewhat uncomfortable topic for public discussion, and no specific numbers will be announced. Let's just say that there is a narrow circle of people who are engaged not only in the main tasks of the project, but who are also responsible for managing the general business of the company, this circle of people distributes profits among the team members, taking into account rental costs, advertising, taxes, and so on. Further. The separation is carried out according to the principle: "first, the team at the base rate, then the team as an increase in the rate, then the team according to merit, and what is left is already shared between the founders." This approach allows, first of all, to gradually increase the financial motivation of the team in order to increase their involvement in the process, while leaving enough funds for the interest of the founders, from which comes the maximum amount of strength from the whole team. At the same time, accounting is maintained on the basis of an outsourced organization, although we conduct the main reporting layer for ourselves.

    Advertising


    It so happened that several years ago I had to work in a company engaged in online advertising (and I am grateful to the leaders of that company for the opportunity to work, I really took a lot from those projects for myself). During his work at the company, he had the opportunity to participate in the development of the teaser network, CPA network, and affiliate programs, and this additionally provided some information about the online advertising market.

    The first thing, of course, we had to try on our own at targeted advertising sites with really tiny budgets: we tried to place advertising posts on entertainment sites, tried banner ads, social networks, but the return was completely inadequate even for the small funds that we spent. The next step was to place ads in thematic groups on social networks related to birds and animals - the effect was, but not too much. Spending “at zero” all the revenue could not bring the desired number of registrations - because of the specifics of the project, because of our unwillingness to turn the project into pumping money out of the population. Therefore, for the most part, we consider point advertising to be a breakdown of the market, and nothing more.

    The second stage of the advertising campaign began from the moment when responsible people from the team began to place advertising articles on gaming-related catalog sites. Some catalogs asked for money, some asked for a lot of money, but many agreed to post a “description link” for free. The greatest response from users at that time fell on literally one or two resources that requested a fairly small and adequate amount of funds for us (for example, gametarget.ru).

    Pernatsk :: Beaver ZombichAnd finally, with an increase in the advertising budget, the option of advertising through CPA networks has become available. I was lucky to stumble upon one of the networks that provided a more or less adequate service, where managers understood what they were doing - conducted traffic testing, determined target achievements, converted the cost of registration into level goals. As the advertising budget dried up, we looked at the profit from such advertising, which was approximately equal to the invested funds, which was quite enough for the gradual development of the project. I understand that people who work through the CPA as webmasters who advertise, like investors, want to get their chunk of profit, and are free to choose those advertisers who pay more and faster, but at that time we could not afford to give large sums of money to the goal for “registration” or the goal “achievable in 2-5 minutes” of playing time. Two goals working in our campaign were achieved within a few hours and two to three days, respectively, and the final effect was equal to the initial test reference amount of 15 rubles for registration.

    Subsequently, webmasters stopped directing traffic to our project, switching to more profitable sites, and there can be no complaints on our part, however, for us, increasing the price of goals or switching to minute achievements is equivalent to a waste of money, which will not have any opposite effect - we, of course , adjusted their goals in favor of webmasters, but, again, within reason. In addition to the CPA network that we have worked with (and is working to this day), there were other offers - from competing CPA networks, but the more managers talked to us, the more inappropriate prices we saw - it reached 60-100 rubles for registration without any guarantees of the quality of traffic and urgent recommendations not to use deferred goals, which go more than 5 minutes. Such prices maybe

    We do not draw specialized “landing pages”, offering discounts, bonuses and golden mountains for registration, we do not try to lure and deceive any visitor, squeeze every last drop, we are ready to work only with the target audience voluntarily. Probably because of this, we will not be able to achieve the success of our competitors to the full, but at the moment, this approach is the basis of our work.

    At the moment, we continue to cooperate with a CPA network, which receives fairly stable traffic that supports the volume of registrations, we cooperate with one well-known television-media company that places our banners on its projects (thanks to the very friend who once again brought us together with "big uncles"), we begin cooperation with another payment aggregator, not only on the front of payments, but also in the field of shares and the dissemination of information on their side. In other words, development on the advertising front is proceeding at its own pace, due to the need to deliberately spend the advertising budget.

    Pernatsk :: First Bird Pyramid

    Pest control


    It is worth saying a few words about competitive projects, after all. Yes, we are not alone in the market, and the project is not unique, but over the past year there have been several events that are forcing users to look for other resources to spend time. One of the events was the complete closure of two projects of the main competing company. The second event consists in a “wipe” (complete cleaning of the database) after several years of constant work of our other competitor.

    Pernatsk :: AerosolEvery few days, in a so-called “pwitter” inside our project, a newcomer will surely appear who begins to tell with all revelation which game he came from and why, there are surely several people who will confirm the correctness of his decision and help to understand the main points of the new habitat player. By the way, it is such players - the ideal target audience for the project, which form the main backbone of active players for us, therefore, like a year ago, word of mouth remains the best method of disseminating information about the project, just like for any other project, only In our case, the factor is enhanced by the destructive actions of competitors, for which they are especially grateful.

    And since we started talking about pests, how can we not mention the presence of “bugs” in the code - no matter how carefully each update package is tested (in an adequate framework, of course), there will still be a factor of a hidden error that will definitely pop up the most inopportune time. However, strangely enough, not every mistake is destructive to the environment and negative according to user reviews.

    For example, for one of the events dedicated to the football championship, a special location was made in the form of a football field where the match took place - players were asked to influence the outcome of the match by setting obstacles, delaying the players on the field, and the match itself took place automatically. The location provided for a number of rules for the behavior of football players, including movement towards the goal, an attempt to take the ball and movement of the goalkeepers, however, due to some inaccuracy in interacting with the obstacle, one of the matches failed - the striker ran through the goal and retired from the field “ battlefield. " The administration did not immediately react to what was happening, as this was not the first match in a series of games, and no one watched the course of events so closely,

    Against the background of the error, it was possible to additionally organize a small interactive event to find the ball with the issuance of symbolic prizes, and, of course, fix the problem in the code. By the way, the match ended in a draw - 1: 1.

    Pernatsk :: Football Championship

    Plans and promises


    The most difficult in the development process, as expected, was to keep their promises. On the one hand, we tried to promise nothing, but at the same time, for the players, it was necessary to confirm the fact of developing the functionality that had long been assumed and expected.

    Pernatsk :: Pack warsInitially, the plans were kept strictly inside the team, and only an approximate sequence from the list of global improvements was announced to the players, but the sequence was constantly changing, diluted with stocks, urgent brilliant ideas and other improvements. Thus, the initial plan for introducing swarm wars from September last year first moved to December, then to the end of December. At the same time, the fact of writing code and rendering illustrations was fully present. In December, the players “in confidence” began to receive information that “is just about”, but the time was sorely lacking in view of constantly arising additional tasks and holiday events.

    By mid-December, a piece of new functionality was written that supported the main feature of the battles in the form of a simplified generator of maps, terrain and the influence of terrain on the player, but it was still far from the actual completion, given the need for rigorous testing. The deadline has shifted to the point “after the new year”, and an additional New Year’s campaign has been added to the list of works, external problems have piled up (exchange rates, personal New Year’s affairs, which has given an additional delay factor).

    As a result - pack wars are introduced on the birthday of the game with a delay of many months from the original plan. The future functionality of the plans is huge, but we are unlikely to advertise and indicate specific dates, although in view of the current changes in the amount of available working time, it will be easier to meet deadlines.

    City Tales and Ghostbusters


    Except for possible errors in the code and undocumented features of the interaction of locations, I can frankly and officially declare that the code does not contain any tricks, loopholes and prejudice towards different types of players. However, this does not mean that the players will believe it - they have their own level of suspicion and hysteria. Pernatsk :: Kucha-mala

    Moreover, the crowding of players in packs provides an additional factor in the spread and isolation of distrust of the system. Any assurances of the administration about the absence of problems in the code are often perceived “with hostility” up to and including veiled foul language in the direction of the administration.

    I see two problems, and the first problem is the lack of understanding by the players of the conditions of the calculation formulas and the unwillingness to accept the argument. For example, for a certain action, the condition is indicated: the chance of obtaining an item is 10% - this means that when the action is performed, a random number from 1 to 100 is obtained, which is compared with the number 10 to obtain the result (and for more correct results, the calculation is accurate to hundredths) . But you must admit, in this case, a 10% chance does not mean that out of 10 attempts, the item will definitely be received once; this does not mean that out of 100 attempts, the item will be received 10 times; and does not even mean that out of 100 attempts, the item will be obtained at least once; but it does not mean that out of 100 attempts, all 100 will not have a positive result. Chance means chance and there are no conditions on the history of approaches to adjust the chance to a greater or lesser extent, ensuring the transformation of the condition “chance” into the condition “mandatory receipt”. Thus, in the eyes of some players, the condition “10% chance” turns into “works in 0.1% of cases, and admins lie,” and for them there is no difference in such calculations, but there is a heap of complaints about the “randomizer” and the project code as a whole .

    Problem number two is trying to create your own ways of defeating the system in the absence of leverage. This factor is akin to playing the lottery - if you jump on your left foot, at the same time marking only even numbers on the ticket, and playing only in the last week of the month, then the victory will be guaranteed. Similar tales are slowly spreading among the players, actually increasing the veracity of the tales, since the “infected” player is trying to repeat the “recipe for victory”, eventually getting a random positive result from this. But from the administration’s side, such stories look nice and with a bit of humor, which can’t be said about blind confidence in the calculation of percentages.

    And yes, the rumors can be so strange that the nature of their origin may not be clear at all. Including there is a bike, as if the composition of the developers came from the project of competitors, who left for free bread, having pulled back the achievements for their own start. Such assumptions and conjectures from a number of fiction, not even supported by basic arguments, but any discussion is still a manifestation of interest.

    Pernatsk :: Halloween

    Iron needs


    By December of the past year, some flaws in the speed of the system were noticeably felt - not that all the work stopped, but in some cases the page loading lasted up to several seconds, and in rare cases - up to 10-15 seconds (for example, when using the list mail or logs). From the point of view of the insides, the server was bombarded with both external requests and suffered from a load of tasks from the scheduler’s list, including both a “combat” project and two test ones.

    Pernatsk :: Electromagnetic gridThe need for restructuring the system from the iron admin side became obvious, for which two new hardware servers were rented at Hetzner: PX120-SSD (the top non-branded current line) and SB41 (from the auction number). If previously everything was spinning on a “combat” server - from a truly “combat” project, test and “dev” projects to “small” sites, then the restructuring was really massive.

    To begin with, the new PX120-SSD server became the home only for the “combat” project, they decidedly didn’t let anyone else go there - this would reduce the unnecessary overhead of the server’s capacities. Further expansion of the server upwards in terms of tariffs will not work, and a gradual increase in breadth is planned due to dividing the reading base by replication and dividing the frontend from php-fpm as necessary. Then the second SB41 server (it is obviously slower, but also with a sufficient supply of resources) was divided into three virtual machines, respectively: for the “test” and “dev” versions of the project, for the repository and monitoring (Pinba and Zabbix), for “small” projects and everything else. Later, the fourth “virtualka” was added, which replicates from the battle server with a delay of 30 minutes to support the “hot” data backup.

    And if within the framework of one server the deployment system was quite simple, then for the new system I had to twitch the admin to establish connections between the servers, split access rights, organize backups. In addition, the move was supposed to be painless for users, therefore, by the day of the move, the new “battle” server contained database replication from the old server and obediently synchronized files, while the old server was ready to proxy all requests to the new server to ensure the transparency of the move while updating dns records.

    Who said replication needs to be checked? On the day of the move, after the actual switch, it turned out that the replication did not start, and the database on the new server was a day or two behind - naturally, I had to switch back, postponing the move for several days to find the causes of the problem, good, for the users it didn’t bring any inconvenience. On the second attempt, the switch was successful, and two weeks later the old server went into oblivion, paving the way for the "young".

    Double fast and furious


    Every day there is a growing need for additional game resources - promotional events, locations, new functionality, in the end, a lot of what is expected by the players. With all the desire to work on something global, you have to be distracted by additional “little things” like holidays (February 23, March 8, New Year and others), semi-holidays (April 1, Halloween), events (football championship, project birthday ) - it actually turns out that some event occurs once every 1-2 weeks, and this schedule needs to be monitored.

    Despite the obvious need to maintain the stable development of the project, releasing "new things" with a frequency of 1-2 weeks, additional attachment to events somewhat prevents the organization of permanent locations in the game. With all this, it would seem that you can confine yourself to the standard mechanics of “assemble five caps and get a glass,” but this option remains for the most extreme case, since it does not contain a unique approach. Each time it is necessary to balance between "long-term construction" (as, for example, the same pack wars) and momentary necessities.

    Gradually, the desire to create something new and unusual turns into a race against time. Often, ideas for a particular action arise literally a few days before the event, often these ideas are too extensive and have to be reduced, often the events practically overlap, which forces them to stay late with the code. At the same time, no one does away with the need for two stages of testing each update package, which also can often introduce additional conditions for refinement, which we did not even guess when compiling the task.

    As a conclusion from the whole situation, if you begin to develop a project and conduct it for a long time quite realistically, participating in the process on the basis of part-time employment, then over time a critical mass of plans will be accumulated, forcing you into the stream and trying not to drown in it.

    Pernatsk :: Pack wars

    Development trail


    A year has passed since the start of the project in public access, as many as three years have passed since the inception of the project. Yes, that's all. It has passed - it has passed, each project has its victories and failures, each project goes through the stages of formation and development, each team is transformed from separate individualists into a working mechanism, and we are no exception.

    There are no innovations in our project, both in terms of architectural and mechanical aspects, and in terms of management or the path of formation. We are not a “start-up”, but a group of enthusiasts that has brought the matter to half (what is now is clearly not the end), starting with a simple experiment and a source of experience, ending with an attempt to turn the project into a coveted work. And, I hope, after a while we will have something else to tell.

    Also popular now: