Hi, Habr! For nearly fifteen years, we have been creating and developing web services. Some of them you may know, have experience using, love ardently or have mixed feelings, but this is not about now.
So, we had 2 website builders known to the market - uCoz and uKit, 90+ percent of registrations never convertible into creating their site, an ambitious desire to save at least 5 percent of this audience, and also two and a half people in a team who have no experience in game development. Not that it was the necessary reserve for the release of the game about the web industry ... Well, you understand.
59845 lines of code on the backend and 65675 frontend. More than 2 years of development, feils and dead ends, 7 interface options. All this is now behind, although to some of the team members can come in dreams for a long time.
How did it happen that people and the company, which deals mainly with sitebuilders, suddenly decided to make (and did!) A multiplayer online strategy . Even if the thematic: about sites and webmasters?
At some point, we realized that uCoz, as a product, began to become obsolete, and this was one of the motives for creating uKit. Everything would be fine, but it turned out that the problem is deeper and does not go anywhere in its roots, but in human psychology. Globally, it does not matter which site builder to talk about - uKit, uCoz, Wix, Tilda, Jimdo, LPmotor (forgive all the other colleagues I didn’t call, we are several hundreds, I remember everyone, I love everyone). The vast majority of registered users will never create a website . This is an easily verifiable fact, it’s enough to compare the number of registrations (counting without bots) and the number of actually served domains / active clients.
Why is that? A good question, in search of an answer to which we phoned ours and not only users. Because tomorrow . Or next week. Everything is clear, everything is convenient, but so far there is no time. It's like going to the gym.
It was then that a simple thought arose - we already paid for these people, for their attraction, and not to try to save at least part of this audience by letting them play the creation of websites?
“I believe that everyone who is somehow connected with the creation of Internet projects should definitely play around with managing sites as part of this economic strategy. It’s not for nothing that they say that games can teach something ... This is one of the few cases when you can really understand some of the principles of managing a website team and the peculiarities of working on many websites. And those who are only going to plunge into this industry, to study the mechanics presented in the game, are sure! ”
Dmitry G. aka Dimok (webmaster, blogger, notorious in narrow circles of Runet)
No one will ever believe me, but this really was not prerequisite number one. Although the story is as old as the world. “I’m a musician, let's make a game for musicians!”, “I’m a game dev, let's make Game Dev Tycoon!” - there are many examples of such toys, especially in the indie genre.
Game Dev Tycoon, by the way, is an obvious success. This is evidenced by a bunch of clones, development on the mob. platforms. Our games are fundamentally different (other mechanics, another setting), but Web Tycoon is most often compared with them.
The decision is made, we make the game. He wrote about the teamwork experience in the introductory paragraph, and besides that, the guys are already busy with ongoing projects, it is unreasonable to tear them off. Means what? So you need to entrust the work of professionals. This was our first real pain.
First of all, an honest attempt was made to hire a well-established game-studio for development. Benefit from colleagues and friends in the shop could get advice on who to better contact. At the idea level, everyone liked the project, and the studios were ready to take on such work.
Here are a few scenarios that we are facing further:
The two studios paid not the cheapest diz. docks Received very voluminous results. Work done a lot, no questions. However, it was all about some other game. Maybe even good, but different. To describe the best folk approach: "Whatever the Russians did, all the Kalashnikov assault rifle turns out." It was clear that people are accustomed to and want to do in the genre they know, with mechanics well known and practiced by them, and therefore they are figating in diz. doc
However, there is a blessing in disguise. From this stage of reeling from studio to studio, we learned one thing, but a very valuable one - the name. The original code was uWebmaster (the game is about webmasters, and we are accustomed to calling everything that we’ve called the letter U). An obviously more relevant option was proposed - Internet Tycoon, which was later transformed into Web Tycoon.
When I had to admit that with the studios we have nothing (or they do with us), we decide to do the house. Begins a long selection of fundamental for the process of human game designer. Who would catch the idea, initially was interested in a similar genre, had the necessary competencies, etc.
I don’t want to talk for a long time about a very difficult topic, who are game designers. How to and should I write diz. docks Should a game designer play his game, communicate with the audience, be a manager. This is a very separate and holivarny conversation. I will say one thing: today, for quite different reasons, the project and the team have experienced 4 game designers (including one junior).
Team recruitment was not easy on all fronts. For a long time, its only representative remained a lone gamediz (one of the 4 mentioned above). The main reason for this is the “residual principle” with sufficiently high requirements. That is, first of all developers are needed by the main project, and they were hired there quite successfully. And the techir for the game did not crystallize. So, of course, you can not do. Decided to do - do. But we walked these rakes for a long time.
Even when the techirc finally appeared, he was himself a team leader for a long time, an architect and, for a complete set, a performer. Correct personnel nonsense was hard. It took about six months to form a full-fledged team. The longest, oddly enough, looking for an illustrator. And they suddenly became our office manager.
Summing up this part of the story, we can say that 2 years ago our game team became really working. It was for whom to draw interfaces, and for whom to write code, and even scrambled a bit later, which was already an established practice for the company as a whole.
Now we look like this:
It’s rather unusual for a game, and one could even say that it’s boring and not fan. But this is a meaningful choice. This is more like a web portal at first glance than a game.
People like:
Showing screenshots to friends, I often heard something like: “So this is the admin panel”, “I thought it was someone’s stats, not a game”. Those who are our audience, came at once with a bang. They wanted something really authentic, not toons. Perhaps casual players, we lose a little because of the chosen style, but we believe in its brevity.
Finally convinced that the game does not have to look like a typical game, look at Football Manager. The simulator may not look very playful, but be successful. Genre such.
Within the framework of the chosen style there were several variants of the visual. Below are different solutions from different designers.
"Cosmetics" players love. We have not yet implemented, but have already learned how to generate avatars for the player from a photo. The most curious thing is that this happens with a very innovative specific approach to machine learning and training models without datasets.
It is generated from the elements of our avatar designer, and not styled from a photo a la Prisma. And although the car didn’t win in terms of quality, it caught up with the results, considering the task, we consider it a success.
The technology itself has plans to develop. This story is worthy of a separate post, if not one, and it will definitely be on Habré. If someone really can not wait, knock on a personal, give the opportunity to play with it personally.
The closer we got to the release, the more we understood that the game we have perfectly falls on mobile devices. Somewhere even better than the desktop. At the same time, during the test period, our browser players very much pleased us with the audience. They led active IT conversations in a game chat, wrote bots to automate the game, and picked our undocumented API.
Initially, the game was developed with thoughts about what we are doing now the browser, we test mechanics in it, balance, and then quickly, thanks to the embedded API, we collect native applications. Reality has made its own adjustments.
There is no time or budget left for this excellent plan. Moreover, almost all publishers with whom we communicated were primarily interested in mobile and offered to come to them when we had one.
We had to make a compromise, because for Cordova for a couple of months, we have compiled iOS and Android applications. It is clear that they are not standard (although very decent), but you can play quite comfortably. But to test the hypothesis of "how comes" can be absolutely accurate.
With Apple and moderation in the App Store, I had to wake up a bit. At first there was a rejection with the motivation: “You are a web application. On Apple devices, there is Safari, live in it, don't push. ” But we won.
Then, unfortunately, due to the requirements of Apple, it was necessary to rename the game currency Bitcoin so pleasing to Webcoin. For the sake of justice, they are right, the miss is really possible. Although for us the sensations are not the same.
As far as localizations are concerned, we are fully ready to start an English-speaking audience. However, it is easier and cheaper for us to sharpen and test in our native Russian-speaking market. Therefore, so far they have started only in Russia, but in a week or two we expect to return to “English First”.
I understand that now we are stepping on the thin ice of possible holivars, therefore, I will immediately state that we do not impose anything and do not assert, we obviously agree with "you just do not know how to prepare them." This is just a description of our path, the reasons for choice and experience.
The first revolution in the process of creating the game, albeit soft enough, was the transition from React and Redux to Vue and Vuex.
We in the company are trying to develop all products on an approximately identical technology stack. This is primarily a matter of accumulated expertise, and, in which case, easy transfer between development teams. Basic for us today: NodeJS, React and MongoDB.
Making a game with lots of data and connections was initially dumb on NoSQL. As a result, bloody for a week, we still migrated to it, but first things first.
The arrival of a new game designer changed the centering game mechanics, which drew a serious rework of most of the interfaces in the game. New mechanics were quickly prototyped on Vue, the criterion of this choice was the low threshold for entering the technology. In the same period, we invented and began to implement a vector system for the growth of traffic, profits and energy. Before that, they simply wrote the data over time, but did not operate with the speeds of their change.
Initially, in conjunction with React, we used Redux. Stora grew very quickly - each user action with the site in the game created a new entry. Accordingly, the entire storey was mutated and the getters were recalculated, and in them were complex calculations of traffic and profits, as a result - all this was terribly slow. Of course, it was possible to take MobX, alter the logic of calculations, but this moment coincided with serious alterations in the center mechanics, it was somehow not up to that. Either the stars so matched. Where we tried to solve problems in Redux by connecting several lines, in Vuex everything worked out of the box and was broken into any number of submodules without unnecessary gestures.
We are well-versed with syntactic sugar and Vue flexibility. For example, now, in order to regularly update any value in a component, instead of computed properties, we
foo() { return bar + baz; }
write
foo() { return (this.oneTick, bar + baz); }
A little bit of magic is hidden in the this.oneTick property, which is reactive and updated once a second, causing the component's renderer to change if the result of the expression bar + baz changes.
From the backend, we had one small and one big migration. Initially, the project was done on MySQL. So how fast, simple and thought that we need relays and other amenities. After we matured a bit and switched to PostgreSQL rather painlessly.
The move to MongoDB was more large-scale and difficult. The decision was due to easy scalability and relatively higher performance. Problems during the second move were much more, even though there was an ORM. But setting up the standard ReplicaSet and AutoFailOver took only an hour.
To begin with, we are waiting for them. So far, only Mail.Ru has confidently believed in us. For what colleagues thank you. Very soon we will find out how our browser version comes to their audience.
In smart books and podcasts they say that publishers have to come somewhere halfway, and not in the release stage. We did so, we began to communicate in advance, including we went to DevGamm in November.
What we were waiting for:
“Yes, ok, just redo it and this, and here we are our expertise!”
What we got:
“It’s cool, something fresh and unusual, an interesting setting, but how you start up and there will be monetization technologies come.”
In general, the theory let us down. Attempts to understand why this happened, gave the answer: "You are non-standard, so here."
Hand on heart, I will say that in my opinion, we don’t have so much non-standard, but they know better.
In general, representatives of gamedev react to us positively. It can be seen that the market is tired from the next “Kill the Dragon” and “Conquer the Castle”. Although it may be distorted perception of people from the inside.
Here is a thorny, crooked path, we came to the soft lunch. This is not the case when the winners are not judged, and this is not yet called a victory. Therefore, we wait in the comments for your feedback and questions. We will answer everything promptly!
If we are ready to offer cooperation, we are very much ready to consider it.
Source: https://habr.com/ru/post/447310/
All Articles