📜 ⬆️ ⬇️

Development of the first game. Impressions and work on the bugs. Part 1



Creating the first game from start to early access to Steam. Subjective opinion on indie development on your own. I share my personal experience, the problems that I will have to meet. I will touch on the future update of my game as an example of working on bugs.

So that you understand correctly, I have been developing games for about 10 months, 5-6 months of which is a thorough study of the game engine through articles, video lessons and books. One even ordered from Moscow. I live in Kazakhstan, Kapchagai. The remaining 5 months is the development of the game.

I am engaged in web development and contextual advertising, but last year I decided to smoothly change the scope of activities to develop games.
')

Why!?


First , tired.

Secondly , web technologies are developing very quickly, but it is in demand from large companies. Everyone needs fast and cheap. Most of the works are not interesting and monotonous.

Thirdly , extremely high competition, often dumping prices. Pay attention to my "deep" comparative analysis of web studios and game studios in Almaty.


Web studios in Almaty


Game Studios in Almaty

Of course, this analysis is a small joke. If web studios can compete locally, then game developers will have to compete in the global market.

Fourthly , my opinion from a web developer is an extremely dubious future, in which AI and machine learning, design will draw and the site will write. Especially when you know what the future of personalized pages for the user is coming under his preferences and other factors that the black box considers important. Only very large companies can afford it.

I will spend a little bit of a visionary, and suppose that in 5 years the sites for small and medium-sized businesses will disappear or will not be effective. The business will go to large trading platforms including social. networks where it will compete for a click price or a percentage of sales.

Therefore, I decided to engage in the development of games is not too late.

Pros:


Minuses:


Why so few cons. I do not want to spoil my mood.

My first game


I will not spend much time describing the game and the development of the first version, which was released in early access Steam September 15. Run as briefly as possible.



Horde attack is an arcade strategy game. There is a playing field where independent cities are located with different numbers of warriors in them. The player is given an army of riders, which follows your orders (the target on the map). You cannot control a specific rider, only all squads. The capture of the city is very simple, if the number of your soldiers exceeds the number in the city you capture the city, and he in turn begins to create soldiers for your army. Of course, there is an enemy general in the game, trying to outrun you and destroy you.

At first glance it may seem that the main goal of the game is to accumulate an army and capture all the cities. And this is true =) But why I consider my game to be original is a multitude of mechanics who diversify the game. In my game there should be so many of them, each fight will be unique. And it will be very difficult to work out one tactic even with bots. The many unknowns in the game are one of my basic principles.

This will be especially noticeable in a multiplayer game. I will be frank. The balance in the game will not be its most powerful feature. Its absence is one of the advantages. The game should be fun. I will answer any claims to this as one of my favorite heroes.

image

If there is an overwhelming desire to play, welcome to Steam

I want to note that in the early access now a lot of what I write is missing and will appear in the next updates. The closest end of October or the beginning of November.

Development of the first version of the game


Earlier, I released 4 articles on the first version of the game development. It is enough to enter in the search “The first game from full zero to alpha. I am writing my story of the development of Horde Attack "and read. Plus, many development themes will overlap with the chapter on updating the game.
For Habr, I left the most delicious. Observation and conclusions made during the development process and work on the bugs.

Like this, release the game on Steam. Personal impressions.


After Horde Attack passed the Greenlight. Learned the process of preparing the release of the game in the early access. This one is not difficult, but it will take a lot of time. First you need to get the status of IP so that you can sell the game, here it happens quickly. It took about 5-7 days to complete the paperwork, receiving invoices and so on. After you receive all the documents, the data must be sent to Steam for verification, which takes 30 days.

One of the difficulties that you encounter is the "amount of various information." You are required to study the issue of taxation, legal issues, licenses, copyrights, and all this applies to another country. Some items have to devote a lot of time to study. I did not leave the feeling of error or correctness of the entered information. I'm still not sure that I did everything correctly =)

As a result, after filling in all the necessary forms, on July 10 I sent the data for verification and on July 11 at 5 am I boarded a plane and went with a friend to travel to 15 cities in southern Russia. I needed a rest.

The answer about successful checks came on August 5, and I returned to Kazakhstan on August 7. After that, the next stage began, the design of the game page in the store. Feels like this, too, can not be called a simple lesson, a lot of tabs, questions, screenshots. Everything seems very simple, but at the end of the day I was like a surviving lemon.

The page in the store is checked for 2-3 days. And if you are mistaken, then you need to re-send to check and wait for a response. Once I was rejected. The second time they approved, but they asked for a number of changes to increase efficiency. Those. Steam support is friendly, thanks a lot to them!

The next stage is the preparation of the game assembly. Here I had no difficulties, Steamworks SDK is quite simple. Verification takes 3-5 days. But even here I came across, indicated that there is a Russian language in the interface, but it is not there. I had to move the issue for another 5 days.

The game was released on September 15th.

At that time, while we were checking the store and assembling, I devoted time to studying materials on development, optimization, animation. And it so happened that Unity 2017.1 was released. Spent time exploring her chips. A new update is being developed on it.
I didn't play at that moment. But it is not just like that.

Game life cycle


I regularly read Habr and other sites. Sometimes come across articles on the development and release of the project. And the majority of large and not very large companies are switching to the release of frankly raw products that are finished in the process. The main reasons are the modern rhythm of life and the life cycle of the project and the second cost of testing. Very handy when testing a user and you get feedback. This allows you to save resources and pay attention to the most important and problem areas.

For me it is very important. From my workforce this is a laptop and me. Therefore, we cannot talk about full testing. I took the risk and released the raw product. Especially when early Steam access is intended for this.

I was ready for any criticism in order to get quality feedback. And received….

What can I say? I am impressed! Impressed with the game, gameplay, epic spectacle and developer courage.

I'll start with the last item. Developer courage to be envied. I don’t say boldness or confidence, I don’t know how much more work is to be done before the release, but so far there is almost nothing in the game. There are a lot of things in the description, but in reality, so far there is only a gameplay demonstration!
...
Mihailovich



But overall the feedback is positive and helpful. Here is the video game from Mihailovich

Most people asked for mouse control, more content, more warrior diversity. Ok, in the next update I will add. A couple of days after the reviews, I posted a short article with screenshots of the planned warriors. In the facebook group, I received 70 likes and comments.

That's how it works for me for my game. And I will stick with this strategy.
I hope that the article and the game will interest you and you will also leave a huge review with constructive criticism and suggestions.

Promotion of the game after the start


For me, the gaming market is new and I don’t know many rules. Therefore, it is necessary to study by trial and error the reaction of users and promotion channels. Now I have used social networks, specialized sites dedicated to indie games. All promotion methods that I use are free and cost me only a waste of my own time. One of my latest Facebook achievements is the coverage of gaming video 15,092 and 3,600 views. I need to write about this later and in a separate article, not much time has passed and the result cannot be called correct.

But I ran into one of the phenomena, I hope those who encounter this will share with me in the comments.

After launching the game, letters began to arrive in my mail or chat with offers for 1 or more keys to make a review. Or people write that stream on Twitch or Youtube. And they ask for the keys to play in their broadcast. For me, this is new. And of course, I distributed several keys to see what it is and how it works. To measure the effectiveness in the end, no wonder I connected the analytics to the store page.

But about this story in the following articles.

Updating the game, had to think about a lot.


Creating warriors and their destruction


Since Horde Attack is my first game, then of course I did not know all the subtleties of optimization and features in development. All my experience was based on articles and video lessons from YouTube.

Some time later, when I had already prepared the first version for early access, I gained very important knowledge. Most of the lessons show how to solve the problem, but do not set the task to optimize it at all.

I felt it when in my game the opportunity to generate more than 1000 warriors appeared. In the Unity editor, braking began when over 300 warriors were generated. In the created assembly under Windows 64bit. Comfortably play at 800 - 1000.

The video review of the user on Steam shows that at 1200 small brakes start, but at 1 700 you can play, gritting your teeth. More on the video noticeable problems with NavMesh. Some warriors freeze for a few seconds.


I knew about this problem before going to Steam, and in parallel with the development I was studying materials on how to solve it.

First of all, with the help of the Unity profiler, I found problem spots. The narrow neck in the game is the moment of generation of warriors from the city.

The problem is this small piece of code:
Instantiate(warrior, gameObject.transform.position, Quaternion.identity);

What is the problem. The player is followed by a detachment of warriors. When a player points to a city, cavalry disappears within the city limits and increases in numbers.

Destroy(other.gameObject);

The number of guards + the number in the squad. Provided that the player owns the city.
When a player leaves the warriors are generated, and at that moment there is a tremendous load. The creation of 100 ... 300 ... 1000 objects.

I used this method because of ignorance and lack of experience. In most lessons, the creation of an object is performed using this method. And not about any garbage collector does not say. Only after a while I learned that with a large number of deletions of objects, a memory overflow occurs and the collector works.

In short, the problems were using Instantiate () and memory overflow and garbage collection.

I started looking. Unfortunately, there are not so many sources that tell about solving these problems. But in some articles there is a mention of using Pool Manager.

The idea of ​​pools is simple. When an object disappears, it is not deleted, but is hidden by the benefit of SetActive (false). If it is necessary, we activate SetActive (true). That's all.

Now I am creating the Pool Manager in my game. Now I can reserve (create in advance) 1000, 2000, 3000 objects for player and enemy warriors. Then activate as needed the necessary amount. But because of this adjustment, I had to return to the level of cubes and cylinders.



Few screenshots








You can read about Pool Manager in the books “Optimization of games in Unity 5” and “The art of creating scripts in Unity” and of course the search.

Another decision that I made was to reduce the load at the time of the generation of soldiers from the city. Even with the use of Pool Manager, peak load occurs. For several frames, the computer creates 1000 objects. Therefore, at the entrance to the city, the necessary number of soldiers are hiding to capture the city, the rest remain on the map.

One of the tips for game creators is to minimize the use of Instantiate () and Destroy () for objects that will be constantly used in the game.

On this I finish this article. In the next article I will continue the story of other errors, their correction and future innovations in the game.

Waiting for your constructive feedback on the article and the game. I hope you will like it.

Source: https://habr.com/ru/post/339200/


All Articles