How we made the engine and the game on it for a year and a half
Hello everyone, dear friends! Here I sit, look at the endless sheet of code, conduct a review with a jar of red bu. A year has passed. A year, damn it, just a year - so many and so few at the same time. We had Napoleonic plans for this year, and now it seems that we did not have much time. On the other hand, we managed to do something that was worthy to enter the annals of aity marked "Dementia and courage." I would call this story "How to gash your engine with tools and render from scratch in just a year." The publication will be released in several volumes, but where to go, you have to start somewhere. So let's go!
Exactly a year ago, we started with a project, which I now plan to write about in full detail. From the height of the experience I can safely say: this is one of the most risky and ambitious things that we have ever started. I think the experience of our team will be useful to other game developers, but he will at least amuse the players. Here I should introduce myself: my name is Ivan, I am the technical director of a young but ambitious company. The last 5 years I have been developing commercial engines. In the past 7 years he worked in a large gaming company, where he worked on an engine for a cross-platform session multiplayer game. Well, before that, at all previous places of work, he created either engines or the whole game. And an important clarification: it so happened that almost all of my experience in developing engines is associated with mobile platforms.
The first project I participated in was developing an OpenGL compatible 3D engine for mobile devices for Motorola. Then there was an engine for casual games, where our customers were Electronic Arts, Chillingo, Big Fish Games and other eminent and not very eminent companies. Subsequently, this engine was used on a large game project. ')
In general, the engine that I worked on has evolved over the years. It was an open source technology, and we began to develop it when the company under whose auspices we made games for our customers was still quite small. We continued to finish it, as a result we released one of the first shooter MMOs on iOS / Android on it, having made a kind of breakthrough in the still emerging market of mobile shooters.
About a year ago, I took my heart and decided to leave the company, leave the project so beloved and dear to my heart, to go on a free voyage. It was not easy, I doubted for a long time, but the accumulated experience and the knowledge gained over the years of work suggested that all my luggage could be packaged into something no less, or maybe cooler. I even had some idea how this can be done, but I was not sure that we could do it with the help of a small team, that we would be able to make high-quality and popular technology on the market in a short time. But, as you know, fortune favors the brave, and we succeeded. Quite quickly, we assembled a team of professionals, driven by a common desire - to make a new, completely unique technology that will show the market how to get the most out of the iron of modern mobile devices.
And here the fun began. After a month of the existence of our game startup, a plan has been formed. Something completely new and completely unique, surpassing all existing solutions. Sounds very ambitious and cool, right? And there is! But there were risks. We set a goal - to realize our immodest idea in just a year, and in a year and a half to launch our first game.
I know, I know, at this moment it starts to sound absurd. But - unexpectedly - this crazy idea in our team found many supporters (and this once again proved how important it is when trying to turn mountains to enlist the support of the same adventurous like-minded people). It’s a sin to hide, the idea of ​​cutting your own engine motivates programmers to exploits. Many remembered the long history of 4A Games, where developers, having left the GC, created from scratch an engine for the acclaimed Metro game. It seems to me that the success of the guys from 4A motivates more than one prog team in the same way as he inspired us.
In general, we decided. This will be my story. In our blog, together with my colleagues, I will tell you in what torment our technology was born, through which thorns we made our way to the stars and why we made exactly those decisions that we ultimately made. I will tell you in chronological order the story of the Blitz Engine from the very first day of development to the final release. Without any embellishment of the inner kitchen, only pure truth.
The first question you are likely to ask is: “Why not Unity or Unreal?” Well, the question is quite logical and correct.
In general, choosing the dream engine - the one on which the very game that will earn millions will be made, all indie developers eventually face a choice: Unity or Unreal. Actually, both of them have their pros and cons, but why didn’t they suit us?
Let's start with Unity. There are few questions to it, with the exception of one: it is C #, and we are sawing in C ++. Accordingly, Unity disappears. If you want to advise us on Unity, because it is an excellent technology that allows you to write in C ++ with a great desire, then let's be honest: it is not full-fledged C ++. And we are not C # -developers and we do not plan to become them yet. The second problem is that despite the efforts of Unity developers, it is not the fastest technology in terms of performance. The decisions taken impose restrictions, including on performance.
Unreal - it seems, both in ++, and the guys wrote sensible. But the engine began to be written about 10 years ago. The architectural solutions that are used there are state of the art solutions of that period. But the world has changed, and over 10 years many new and progressive ideas have come up. Perhaps not so original to write UE5, but enough to make a decent breakthrough. We decided to bet on these new architectural solutions and approaches.
“Yes, Unreal Engine is cool, it is written in C ++ by professionals,” the attentive reader will say. Of course it is. But let me remind you: our goal is to squeeze the most out of mobile devices and move the industry forward. Unreal Engine is a general-purpose engine, and this is not bad, it gives a plus to universality. Such technologies are designed for games in different genres, and this advantage carries with it architectural restrictions for the developers of the engine. And at the start, we planned to break down borders and stereotypes, and not fit into them.
As a result: choose Unity - choose an environment that is alien to us, choose Unreal - make an average project.
Everyone knows that top-end modern shooters on PC are made on their own studio engines. EA has DICE and a Frostbyte engine, Activision and Ubisoft have their own technological solutions, 4A Games also built their own engine, id Software has id Tech. Developers of top shooters on consoles do the same. Yes, of course, labor, time, money and everything else in this situation takes more. But on the other hand, you have full control over the technology: you can choose solutions that will be faster and more effective than ready-made solutions "for everyone." The whole thing, in fact, is in customization: you decide what is important to you, and put emphasis on it. Exclusives for consoles are designed to squeeze the most out of super-powerful cantilever iron. And this is what we need, not just from consoles, but from cell phones!
But we decided to go from the opposite: do not try to create a solution for top-end iron, but first look at the weakest devices that we definitely need to support. We took into account their characteristics and began to look for technologies that would allow us to run on these devices in high quality. That is, squeeze a maximum of cool visual out of a minimum of characteristics. And yes, of course, the solutions had to be such that later on we could easily improve without limitation them for top-end mobile devices, up to the level of console and PC quality.
Almost all modern mobile shooters are based on Unity or Unreal. You already understood everything about our ambitious plans to turn the industry around, so it will not come as a surprise to you that we decided to introduce innovations already at this stage. We ignored the traditional Unity vs Unreal dilemma, and began to cut our engine.
To begin with - I will show you the video. This is what happened in a year. We did our best to squeeze the maximum out of mobile devices and create a product that can, if not compete with desktop games, at least get closer to them in quality. Actually, as I have already said, our main goal, no matter how pathetic it may sound, is to make mobile games much better and move the industry forward.
There is such a rule “know your hardware”. Its importance is difficult to overestimate. We have often seen how top teams do something impossible for consoles - because they know what to build on from, and decide in advance that they will try to surpass. We always wanted to make shooters, but we soberly assessed our strengths: today the shooter market on consoles and PCs is huge and full of high-quality products. At the same time, the mobile market is undeservedly deprived of attention, although much can be done there. In general, everything came together: we decided to rectify the situation.
Summarizing, we have formed this general direction:
Own technology
Console quality level on mobile platforms
The main focus is on shooters
Session Game Network Engine
Infrastructure for operating the game
And, actually, a cool game.
We planned to implement all this in 1.5 years.
Naturally, from our colleagues in the workshop, we constantly heard that making your own engine with Unity and Unreal is dementia (and without much courage). We were offered a huge number of ready-made solutions on which someone was already doing something. But we had a completely different opinion. We decided to give it a try, and now I can proudly say that we are doing well. The engine is already there, and it is very promising. Exactly the way we wanted. We are actively working on our new game, we plan to launch it already this year.
I will not hide, people are still skeptical of our idea when, when we meet, we share our plans. But everything changes when we take out the iPad and show the achievements and trailers. People understand what it was all about. We show the schedule of our game at the interviews of new employees, and they do not believe that this is a product for mobile phones. Sometimes they specify three times whether we are joking. A revolutionary product requires innovative solutions. Yes, this year was difficult, we had to work a lot. But now we have a revolutionary engine, an excellent BattlePrime game and a funny story that will be interesting to many developers.
Usually after watching this video we are told that they do not believe. Which is sure in the final release everything will be different. In general, it is not customary in our industry to trust trailers ... But you really believe it. And tell us in the comments how you are!
We want to tell how we developed the Blitz Engine, and for this I will release a series of articles about the year of our development.