The history of the development and life of one small game. Start
I like to read such articles, sometimes they manage to draw good ideas, sometimes they inspire, and sometimes just pleasant Friday reading about the same developers. I decided to tell about my thorny path to indie developer and tell about the creation of my own small game and share some grains of experience. It was 2013, I was tempted to develop games, I was young and loved bicycles ... At that time I already had one game in my asset, but it was not serious. This game was written with one goal - to bring it to release, and this goal it has achieved.
Video games
I did not intend to stop at what had been achieved and wanted to make a game to be played, and of course, which would bring in money.
I already had a good experience in XNA on Part 2d, as well as in mobile development on the Windows Phone platform. I decided to start the development of the game by studying the Windows Phone Marketplace, on the subject of vacancies, with a suitable level of complexity. My choice fell on games like Hill Climb Racing. At that time - October 2013, there was no Hill Climb Racing in the app store, there were analogues with poor graphics and very primitive ones. After some deliberation, it was decided to make a game with similar mechanics of “Hill Climb Racing”, but with a modified gameplay in the direction of the trucking, the player needs to transport some cargo from point A to B. ')
The creation of such a game requires the use or creation of a convenient physics editor. Unity was somehow unheard of at the time, and other game engines cost money that was not there. And of course, why take ready-made solutions when you can do everything yourself ?!
At the same time, Windows Phone was updated to version 8, and development under WinRT seemed very attractive. So I decided to migrate from XNA to Monogame.
The plan was:
• The end of October, the developed concept of the game, the beginning of work on a game prototype. • November, attracting a designer and working on a gaming prototype. Unfortunately, I don’t know how to draw, and I was going to make one of the stops in the game for graphic content. • The end of November, the finished prototype of the game. • Beginning of December, creating music content, creating gameplay, creating game content, testing the game, working on balance in the game. • Mid-December, connecting payment systems, pre-release preparation, creating reviews and preparing for an advertising campaign. • The deadline for release is December 20th.
The plan for early October seemed real, but things did not go as planned.
Instead of playing gaming prototypes, I went into the creation of a "game engine." It was a mistake number one.
If I identified with the physics engine right away, it was Farseer. But with the GUI under XNA everything was much more complicated, the existing solutions left much to be desired, on the one hand there were quite a lot of them, and on the other they all had their own bunch of minuses. As a result, I decided to write my own, and take as a basis the approaches of the generalhi GPF and XAMLite library, the main reason for which I took it - a bunch of different developments, the experience of the previous game, where everything was self-written. First of all, I felt sorry for my works, and I wanted to unite them into one whole and continued to develop. For a couple of very difficult months I received:
Physics editor
Particle system
GUI (on video the second version of GUI)
Also, for some reason, I went into optimization, without any particular need, I began to combine all graphic content into textural atlases and compress it in .xnb with the ability to apply DXT compression.
All this is of course great, but very little was done on the game itself, of course I was working on a design document on the game and searching for a designer in parallel, and nobody canceled full-time work, but 2014 was already coming and all deadlines were thwarted.
Finding a good designer turned out to be harder than I thought. Initially, I was looking for a full-fledged partner to make the game together and the only place I knew about was the game development forums, but unfortunately, the search on the forums didn’t work and after a while I had to give up this idea and restrict myself to hired labor. I found a good artist who painted in the style I needed, we agreed on the front work and payment. After the end of the work, we continued to cooperate, but as partners. So there was our small team of two people.
Initially, I wanted to make game runs fully auto-generated, but I didn’t have enough skills to combine a beautiful picture and auto-generation of levels. I came to the decision that there is a landscape, it is divided into blocks, the blocks are divided according to complexity. When loading a map, the blocks are shuffled within the specified complexity. We spent a lot of time to dock all the blocks with everyone.
Sketches of the first cars
Sketches of the first blocks
I thought it was a bad idea to run a game without a server, and the main goal of the game development was towards real-time races with other players. MongoDB was used as a database, and UDP was used as a transport. A binary protocol for communicating with the server was written. The server was maximized on performance. At the time of release, he was responsible for registering users, for collecting game logs about races and based on their rating, for charging the daily bonus, for charging and unlocking the game functionality.
In general, the server played its role in resolving negative situations with users, by calculating gambling currency compensation, as well as collecting analytics.
The server project was divided into two parts: a common one, which can be used for other projects, with the possibility of expanding and adding its data types and their handlers for the current project, and a private one for this game.
During server testing on bots, the normal maximum execution time of a server tick is 100ms, on average, it processes about 500 packets per tick, which allows processing more than 10,000 one-time connections.
All graphic content was drawn in a vector, and after it was cut to a resolution of 1280 * 768 and packaged in textural atlases. And at the final stage of development, it became clear that we went beyond 90mb for WP71 devices and therefore had to go only on WP80. It’s not a problem to make graphic content for 800 * 480 resolution, but repacking and rewriting all the keys would have killed a lot of time, so we decided to give up WP71. And in 2014, the percentage of WP71 devices was quite large.
Study of the first map
Monetize the game decided through micropayments. I already had experience with banner advertising in applications, but integrating it into monogame was not easy, or rather just laziness, but the user loyalty had to increase, as a result, it was abandoned. Alternatives to banner ads in the form of full-screen and video ads on WP were few.
The thorny path of development was completed only in September 2014.
The game was released on the WP8 platform with 5 landscapes, later their number was increased to 7. Coins are awarded for the arrival, the amount of profit depends on the number of stones transported, on the type of stones, on the passage time, how far the stones were taken and several factors. We also made 9 different machines that can be bought for game currency, but they could not be modified in any way, considering that this is not the necessary functionality, but more on that in the next article ...
Promo games
Findings:
As little as possible cling to the old, it can pull you back, try to look forward, if something is good at the current moment, then perhaps after n months of development it will not be relevant. As the saying goes -
road spoon for dinner
At the end of 2013, this game was in demand, but at the end of 2014, it was not enough, in the summer of 2014 Hill Climb Racing and other games came out.
Of course, I gained invaluable experience, but I wanted a little more ...
Write in the comments what aspects should be paid more attention or even tell in detail.