Designing own engine can fully control the direction of engine and product development, this is the main reason. The development cycle of game products is very long, even if develope a single-player game product, it is common to have a time span of more than one year or two years. For such a long time, many things can not be predicted in advance. Sometimes hard choices have to be made in the direction of development, all of these need engine support. The evolution and development of engines must obey my own product planning, so it is better to design my own engine.
Designing own engine can accumulate assets. Game development is a long-term process. Generally speaking, the original game production time will be very long. In this process, there must be asset accumulation, otherwise, there will be nothing left after the time is passed. Making an own engine can make the life cycle of the whole development get the greatest continuity, the direction of engine upgrade will be in the most favorable direction of my own game products. Progressive renewal from generation to generation is necessary, when generation updates, if I have my own engine, I can upgrade according to my own wishes. If it was't my own engine, when forced to upgrade and replace it, everything would have to be cleared up, and then I have to start all over again, and the previous time might have been wasted.
Designing own engine makes it easy to verify the possibilities of ideas. Game design is a very creative process, the game design process must also have many unique and innovative ideas, and also need to verify whether these ideas are viable. No matter how good the ideas are, if the engine doesn't support it, it can't be realized in the end. If it's a self-designed engine, even if the engine does not have these functions, it can also be developed to make the engine fully match the creativity.
Designing own engine helps debug the game. Because of own engine code is very familiar with, so the entire development process debugging will be very smooth. In fact, it takes a long time and a lot of energy to master a commercial engine. In my experience, engines are so complex, if some one want to achieve the details and performance optimization to meet the requirements of commercial products, You need to be very proficient in a very large number of details. It takes so much time and energy, not as good as design it by myself (This turned out to be blind optimism, the actual design is extremely difficult). A lot of work on performance optimization can be done in engine design, and the development speed will be very fast when enter late stage.
Designing own engine allows me to choose my favorite and comfortable programming environment. Because of designing own engine,so I can choose the development environment at will, I chose Linux+Java+Emacs, which I am very familiar with and love. Make game for the first time and design engine for the first time, encountered many difficulties and challenges. Have a very skilled and handy set of tools, can save a lot of time on code and can concentrate on product creativity, this is very important. On the other hand, game development is a long-term process, comfortable programming environment is also beneficial to health and life.
Review after game finished, although the difficulty and workload far exceed the original imagination, I still think the designing own engine is correct. Several examples are given to illustrate:
The first example is the requirement that the computer ten years old can also run my game smoothly. I think if my game could play smoothly on the computer ten years old, there would surely be more users. This requires special optimization of the engine, if it isn't my own engine, I couldn't have done it at all.
The second example is to require the engine to support both client and browser versions. When I designed the engine at begining, because of knowing very little about the game industry, I thought that as long as the game could be made. The game is designed entirely in the Java environment and run entirely in the Java environment. But later, I learned more about the game industry, I feels that HTML5 games are easy to launch social content, have advantages in market, and may be have some steady cash flow. So, the game engine is required to support both client and browser versions. If it's not my own engine, half of the development has been done, if I want to do this, the only choice is replacing the engine. In this way, it is not easy to find such an engine, and it is possible that the previous work is wasted. My own engine is a lot more convenient, modify it directly to support this (Despite the heavy workload). Not only can the preliminary work be retained, but also the new direction of development fully supports my own ideas.
The third example is that Html5's package must be very small. Html5 game must be able to play in a few seconds after the user clicks, which requires that the package must be very, very small, self-designed engines can be specially optimized in this respect.
The fourth example is that each engine serves only one product family. This is a completely different idea from the popular business engine, and the advantage is that the engine can be optimized very well. Necessary functions can be retained, and unnecessary functions can be absent. Performances can be excellent, and package can be very small.
All of this requires that the engine must support. Because it is my own engine, readjusted the direction of development, and finally achieved these goals, and the results are quite satisfactory. My first game VicHeli has not only client and browser versions, but also 1080p versions (including all the content of engine and game resources), the download package is only 1.8M, less than two megabytes. The performance is also satisfactory, and it can run smoothly on very old Toshiba L700D (A4cpu integrated graphics card 10 years ago). It's hard to do all this without my own engine.
Finally, to design a set of engines which can meet publish quality, the workload is still relatively large. At present, all kinds of commercial engines on the market, whether functional or editorial development environment, are becoming better and better, but also a good choice.