The game engine is not only code, but also a perfect tool.

Source: Internet
Author: User

The game engine is not only code, but also a perfect tool.

Starting from brainwashing

I remember a few years ago, when I was doing engine R & D in the company, I often read one sentence: the engine is not only a code, but also a perfect tool. At that time, I used this sentence to motivate myself and find out the principles and positions of engine development. In fact, there is little understanding of this sentence. After many years, this sentence is always in your ears, along with me.

Experience

Later, the engine project was cut down and the browser game product was developed. In the first week of product development, we were faced with the problem of editing animations and scenes. This was the first thing that emerged in our mind. So we spent two weeks working on a simple animation editor and scene editor. The animation Editor only supports simple image import, which is different from the anchor setting function because of the monster size ). The scenario editor only provides the image import and monster placement functions ....... However, these two simple editors allow our project to quickly design level-related content without the help of a program. This is also the first time that I feel that the meaning that tools can bring to the project cannot be summarized in those two sentences.

Scalability and customization

Another company is engaged in development similar to the Empire era. The idea of this company is the same as that of me, that is, to develop an editor and then play games. This company has developed sprite editor, ai editor, and level editor. All their aspirations are beautiful. The only thing that makes me feel amazing is that ai editor and level editor consume a lot of time. At the same time, there are many built-in things that require the program to maintain the Corresponding editor Version for every requirement change to achieve the corresponding function support. Now I think it would be better if I used the configuration file to do something related to requirements.

Upper-layer development language

I once thought that C ++ was the best choice in my life. For a good language like C ++, the bottom layer of graphics and engines are written in C ++, and the upper layer logic should naturally be written in C ++. In addition, the efficiency of the script language is completely incomparable to that of C ++.

This was just the idea at the time. As far as I know, Yi haiqing Tian in Chengdu used the C ++ underlying + JAVA logic development mode very early. I once laughed at this kind of solution and thought it was a bunch of things that could not be made out of C ++. When I got into touch with UNITY3D, I realized how tall the C ++ JAVA mode is. C ++'s efficient features are undoubtedly the best choice at the bottom layer, but the good things are a double-edged sword. The various problems encountered in C ++ logic development cannot be put to an end.

On the mobile platform, scripts are everywhere as upper-layer development languages. The reason is the fascinating IOS. In order for the game to be updated in the game, scripts have to be used for logic development. This also puts the engine on the right track to use the C ++ underlying + script logic. In fact, many early companies or engines did the same. Such as torque and unreal

Release and deployment

In the era of client games, publishing and deployment may not be greatly valued. You only need to compile and place it in the appropriate position.

With the rise of web game transport, the cost of release and deployment has increased, because some features will be customized for different carriers. If a branch is developed for each operator, higher maintenance costs. Therefore, we chose to handle the same branch, and made some marks for carrier-related things and loaded them according to different operators. This is not the end point. To some extent, we can solve the problem.

With the rise of mobile games, we will not talk about the Chinese ANDROID platform. First of all, in the face of IOS and ANDROID systems, our engine needs to be optimized accordingly. Take image processing as an example. In IOS, PVRTC 4bp is usually used, and in ANDROID, ETC is used. If the two versions have different branches, it will be much less scientific. Therefore, We Need To Do Something scripted so that our resources can be packaged or converted into identifiable resources on the target platform before release. Therefore, in this place, SHELL tools have become indispensable, not just for the use of the editor for planning and art.

Shell and python

Many times, we can solve a lot of problems by using shell, but as a powerful scripting language, python provides a variety of tool libraries that are not comparable to shell, such as file search, MD5 generation, image processing, and so on. What makes shell incomparable is that python is cross-platform, which allows us to reuse our written tools on MAC, LINUX, and WINDOWS. Shell requires only some simple operations related to platform permissions. If python can be used, we should try to use it. Because of the development of mobile games, MAC and windows are frequently required.

Unity3D

Although I have never used this product development project, I have been paying attention to it since the 2011 engine project was cut down. At the beginning, I was very unacceptable about it. I felt that it was so closely bound to an engine and tool that I had to start the UNITY3D IDE while debugging the program, it is a very unpleasant thing. It was very early to use flash cs to develop FLASH games. We always expect that UNITY3D will be able to develop a pure code development environment like flash builder. However, it was found that UNITY3D was powerful because of its editor rather than its high-end componentization design. A purely componentized engine cannot work effectively without a good combination of tools, and may even write a lot of code. The ingenious component design can decouple the editor from the project requirements. It also refreshed my understanding of the engine architecture-in addition to tools and rendering, a good upper-layer structure is still important.

The introduction of the Mono platform makes the UNITY3D package slightly larger, and it is difficult to use a low-CPU model. Many people complain about this, but I think everyone should acknowledge the changes of the times.

Although the introduction of Unity3d 2D support was too late, it fully demonstrated the momentum of Unity3d in 2D. Although the heavy MONO platform brought a certain amount of overhead even for 2D games, I think, low-end devices that are less compatible with certain quantities are also allowed to ensure product stability and fast iteration.

Cocos2d-x

It should be said that the open-source engine that has an influence on the Chinese game development industry, except for the well-known OGRE in the early days, now only has it. Many people say that its architecture is very good. Many people say that he is actually a stockade, and many people say that he can write it out in a short time. We will not discuss the right and wrong of these people. Let's look at the market share. Maybe you will say it is vulgar. But it is reasonable to have one thing. An engine can meet your project development needs and save you a lot of time. How many reasons do you not use it? Instead, you have to DIY a lame engine on your own. Do you think there must be fewer traps than others?

3. x version of cocos2d-x has been different from the past, I am very happy to see the cocos2d-x in the code structure innovation. Not just remove the CC prefix)

Although cocostudio is still a semi-defective product, it has to be said that the open-source project is still rare for the open-source project to develop a commercial editor. Everyone should give it time to grow. During the growth period, we should use the most suitable solution to build our own project. Imagine that there were countless success stories before cocostudio appeared.

Irrlicht

This is my favorite engine. It is accompanied by my college life. I often read its code and comments in my bedroom, although I don't have a special harvest because I don't understand it at all), I am still enthusiastic about the engine.

Nicko has developed an irrEdit for this engine, but it is no longer updated over time, because nicko found that irrlicht has no idea, and irrEdit and irrKlang have little benefits. So I switched to the development of a superCube. Supercube is expensive and supports flash, html5, android app, ios app, and windows exe. Both functions and features are NB-intensive, but the interface and actual functions are really similar to what the children do. If you are interested, try it.

OGRE

This is the second engine that I have come into contact with. Its size makes me look at it. We are fortunate to have studied tianlong Babu code and its material system during the R & D process. The whole thing is quite OK, but what is lacking in the United States is that it is like a warehouse where everything is pushed in, and many things are stuck at the academic level. If you want to invest in a project, you have to make some changes on your own. Cocos2dx can be said to be very direct. Some people say it is because 2D is very simple, but I think it is because cocos2dx positioning is very clear, or because cocos2d positioning is very clear ). OGRE does not include an editor. Earlier projects were not decoupled Based on UNITY3D, and many were custom editors for specific types of games. I have studied Datang, mantra, Tianji, And the tianlong Babu code and editor. They are all customized for MMORPG and directly related to the game content. This may be the engine development level at that time.

Glitch

This is an engine developed by Irrlicht. Although the core part has many extensions and its performance and features are not the same as those of Irrlicht, the core part still maintains the IRRLICHT style. The only difference is that the upper-layer logic development mode is exactly the same as the UNITY3D mode, which reminds me that any engine can be slowly aligned with the UNITY3D logic development mode, including cocos2dx, and even ogre. Because glitch uses internal engines and the tools are customized by itself, the design idea of the tools is similar to that of unity3d. This is something that I really appreciate.

The times are evolving and the industry is making progress. We must keep up with the pace of the masses in order to win our own battle in this war without smoke...

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.