[Original] exploring four open source 3D game engines (preface)

Source: Internet
Author: User


I am at a limited level. I only share the results of in-depth analysis on the design ideas, program architecture, and application of several classic 3D game engines that I have studied for a long time with my colleagues in game development, if there is anything wrong with this document, please point out that we are looking forward to our joint progress.
Engine Name:
1. orge (ghost)
2. irrlicht (Ghost fire ),
3. nebula (nebula)
4. klayge (..)

Currently, open-source 3D game engines are close to commercial engine standards. Many engines surpass many commercial engines in graphics rendering, memory allocation, and network communication. The common features of these open source engines are as follows:
(1) engine framework: Most 3D engine frameworks have a tree structure. The clearest framework and classic game engine is the nebula engine. Parent and Child Nodes constitute the entire framework layer. First, Nebula has a class named nroot, which is the base class of all object classes. nroot has a name variable, there is a parent pointer pointing to its parent node,
There is also a childlist linked list that stores all its child nodes. Because the node is also a nroot class, all the child nodes may also have child nodes,
In this way, a tree directory structure is formed. nroot has an nroot * Find (const char * Name) method. The function is very simple, that is, traversing its own
The childlist linked list compares the names of each nroot Node object. If the names are the same, some object pointers are returned .. Other engines have similar frameworks. For example, the face node under the root node of orge represents each functional module.

(2) memory management: most instances adopt the reference counting mode (the reference counting mode is used to automatically release a pointer every time a pointer is initialized, and this process is counted after the function is run) this solution ensures project controllability, prevents memory leaks, and renames objects. However
(3) graphic processing: three typical modules are used: Scenario manager, resource manager, and Renderer. This division mode is most typical of the orge ghost engine and irrlicht ghost engine. The advanced engine also comes with a set of scripting languages dedicated to Graphic programming. For example, orge has a set of built-in scripts to control the scenario manager and resource manager's graphical parameters and Algorithm for editing, in this way, you can skip the tedious coding process of C ++ and the long Compilation Time of the project and directly run it to check the effect of the modified program. Of course, this script language model is somewhat like the most famous commercial game engine unreal3 unreal 3 engine. Most of the scene-based graphics algorithms use the octal tree and BSP (Binary Space Division) methods to support local rendering for large game scenarios.
(4) cross-platform:
The four 3D engines described in this article have cross-platform development performance and generally support a variety of operating systems and development tools, such as vs.net under windous and codewarrior under Linux. In addition, engines like irrilicht also support multiple languages, such as Vc and VB. However, the current version does not have any scripts available. These engines also support a variety of underlying graphics APIs, such as Dx and OpenGL. Developers can choose familiar 3D rendering APIs to drive game programs at will. Note: klayge is the only Chinese engine selected in this article. However, this engine does not support multi-API rendering. The underlying graphics is implemented using OpenGL.
(5) Poor network functions: Currently, several engines are not very powerful in terms of Network. For example, the famous orge engine is a dedicated graphics engine, the Network Mode of the server-client is not available. Currently, only the starting engine of Beijing graffiti production is excellent in terms of network. It is worth mentioning that bigworld is currently the most popular commercial engine with powerful network capabilities. If appropriate rendering algorithms are used, the engine can easily support hundreds of people.
(6) can receive a variety of 3D art resources, such as the ghost engine can accept Maya, 3 dstudio Max, Collada, deled, milkshape, quake 3 levels, quake2 models, DirectX, Pulsar, my3dtools, resources exported by fsrad and cartography shop tools. However, there are more acceptable orge types.
Supports two typical animation formats: Bone animation and key drive animation.

Well, now we have a basic understanding of the common characteristics of the famous 3D engine on the market. The following describes their features and advantages and disadvantages.
1. orge GHOST:
Advantages: (1) powerful graphic rendering quality. The particle system of this engine is very strong. It produces light and shadows and has excellent atomization effect. In terms of graphics, it is more powerful than ordinary commercial engines such as torque and Zhu bit.
(2) Efficient Graphic programming mechanism. Built-in special scripting language with visual editing tools, allowing you to directly modify external data and perform internal debugging.
Disadvantages: (1) blank Network
(2) The high computing workload and high-precision rendering mode make the memory and video memory a lot of pressure, and the overall efficiency of the program is not high. There is no API for adjusting rendering algorithms and parameters with hardware acceleration.
2. irrlicht:
Advantages: (1) powerful engine framework, similar to orge.
(2) High-quality graphic rendering, although not Orge, is superior in quality, but still slightly better than general commercial engines.
(3) Clear and single implementation of c ++ makes the engine free from redundant external script compilers.
(4) supports adjusting rendering module parameters and Algorithms Based on hardware acceleration. The overall program runs fast and smoothly, but the image quality is reduced. Sacrifice image quality to ensure performance.
Disadvantages: (1) lack of efficient development scripts. It is impossible to program graphics with high quality and efficiency as orge does.
(2) The framework is not highly scalable than other game engines, and the design model is relatively monotonous and concise.
(3) A single graphic algorithm is supported. For example, it is difficult to create multiple pasters in a skeleton animation.

Author: Darren architect
The next article explores four open source 3D game engines (preface)
Content Overview: 1. We will continue to compare the performance advantages and disadvantages of the nebula engine and the klayge engine.
2. We will elaborate on the different types of games that the four major engines are good at developing.

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.