Portable, scalable multiplayer 3D game engine design and architecture

xiaoxiao2021-03-06  44

Portable, expandable

Multi-person 3D game engine

of

Design and architecture

Version: 0.1.1

Markus Hadviger

University of Vienna University of Technology, School of Computer Graphics

Zhu De Lun translation

QQ: 4754105

E-mail: zhudelunalpha@mail.9cbs.net

I want to give my parents to my parents.

Dr. Alois and Ingrid Hadwiger,

If you don't have their support, it will not be possible.

table of Contents

1 Introduction…….............................................. ................................................ .............. 1

1.1 3D Computer Game Engine and Graphics Research 1

1.2 About this book two

1.3 Organization 3 on topics 3

1.4 Implemented overall blueprint 3

Part 1, basic knowledge and related work

2 algorithm theory ............................................. ................................................ ............ 5

2.1 Level details Hierarchical Subdivision 6

2.2 OcClusion Culling 8

3 High-performance underlying graphics API .......................................... ............................................. 10

3.1 GLIDE 10

3.2 OpenGL 11

3.3 Direct3D 11

3.4 Geometric Process 11

4 progress in game development technology ........................................ ...............................................

4.1 3D Computer Games with Potential Seminal 3D Computer Games 13

4.2 Consumer 3D Hardware Products 21

Part II, Parsec Engine Design and Architecture

5 outlined ............................................. ................................................ .................

5.1 Engine part of Engine 26

5.2 Game Some of Game 28

5.3 Imagine The Vision 29

5.4 How to build a game How to build a game 29

5.5 How to build an engine How to build An Engine 30

5.6 This chapter summary Chapter Outline 31

6 architecture overview ............................................. ................................................ ............. 33

6.1 Game Program Code The Game Code 33

6.2 Engine Program Code The Engine Code 34

6.3 Engine core ENGINE CORE 35

6.4 Low-level subsystem Low-Level Subsystems 37

7 architecture details ................................................. ................................................ 41

7.1 Program Code Structure and Convention Code Structure and Conventions 41

7.2 Dynamic VS. Static subsystem Bind Dynamic vs. Static Subsystem Binding 43

7.3 Abstract rendering and cover? Abstract rendering and shaders 457.4 portability portability 46

7.5 Scalability EXTENSIBILITY 48

7.6 Game Process Ring Road The Game Loop 48

8 underlying subsystem details ........................................ ................................................ ..... 50

8.1 Host System Package Host System Encapsulation 50

8.2 Graphics API ENCAPSULATION 55

9 management system object .......................................... ................................................ ... 58

9.1 Object Types and Categories Object Types and Classes 58

9.2 World System THE World 59

9.3 Universal graphic object Generic Graphical Object 60

9.4 Object API Object API 65

10 Iter interface ........................................... ................................................ ........... 70

10.1 How to make simple rendering specifying how primitives Should Be Rendered 70

10.2 Iter Rendering Primitives 80

10.3 Iter Rendering Functions 87

11 shaders ............................................ ................................................ ................ 90

11.1 Components of a Shader 92

11.2 Shader Definition 92

11.3 Shader IMPLEMENTATION 94

11.4 Color Animations 94

11.5 TEXTURE Animations 96

11.6 attaching a shader 98

11.7 The Art of Writing a Shader 99

12 the particle system .......................................... ...........................................00

12.1 Basic Definition of a Particle 101

12.2 Particle Clusters 102

12.3 Particle APPEARANCE Animation 103

12.4 Particle Behavior Animation 103

12.5 How The Particle System Uses Particle Clusters 107

12.6 Derived Particle Cluster Types 108

12.7 Particle System API 111

13 network part ............................................. ................................................ .......... 121

13.1 Game Code interface Game-Code Interface 123

13.2 Parsec Protocol Way Parsec Protocol Layer 12513.3 Data News API Layer Packet API Layer 126

14 command console .......................................... ................................................ ....... 127

14.1 User Command Registration? User Command Registration 128

14.2 Console API Console API 131

Part III, conclusion

15 conclusion .............................................. ................................................ .............................

16 reference books ............................................. ................................................ ........ 138

Summary

This article mainly discusses the design and architecture of a 3D game engine - the technology hidden behind the three-dimensional graphics of computer games. After a few years of development, 3D computer games and graphics research have gradually been close to each other and have been combined in many fields. Game developers are using more to study the research results of the community, and the computer graphics experts have also found that computer games have become an important application area in their own discipline related research work.

The underlying engine technology is becoming more and more important as a technique used by computer games and played a decisive role. Correspondingly, in order to enable the engine to have portability from one platform to another, it is generally selected to select the extreme modular design pattern of the encapsulation and system-related portion. Similarly, its scalability is as important as a game engine is used to many different types of game creation processes. These features also encourage those game player communities to develop extension features for their favorite games and make these games to continue to pop at a quite long time.

The main argument of this article is a specific game engine - PaSEC - the engine focuses on system architecture and design. This engine highlights the portability of a particular modular architecture. He is also a multiplayer engine, especially it contains a powerful network component, multiple players can participate in the game process simultaneously through this component.

Although the Parsec engine is not a complete generic game engine designed to be designed to be imagined, it would rather be designed to become a high-performance engine framework for a particular type of game, as scalability can achieve multi-faceted The results. Because it has been developed into a close frame with a moving computer game - a multiplayer 3D space combat game Parsec engine - it mainly takes care of the outer space environment of spaceship. While paying attention to the engine architecture and design, another critical goal is to use the engine to develop a new game function and special effects on a certain level as the extension engine.

thank

I especially want to express my sincere gratitude to my "tutor" Dieter Schmalstieg, thank him for helping and guide my topics, and support my views and help me to achieve it, many useful insights and evaluations, and tolerate I want to have a general student to trouble him. And I will not forget the promise of the extension of the Parsec engine.

Since the past many years, the Parsec engine has become a real team outcome, I would like to thank all the outstanding members who have made outstanding work and huge contributions in the Parsec team:

Andreas Varga, Clemens Beer and Michael Wögerbauer, they are great programmers and contribute a lot of inspiration for the Parsec project.

Alex Mastny, he has established more impressive art and designs, which make me feel very surprised.

Stefan Poiss, for so many years, his music talent has been a miracle for me, and in the end, his music has always made me cheer and excite. Thanks to Karin Baier to provide sound effects throughout the process.

Thanks to Thomas Bauer, thank you for providing many invaluable methods, ideas, and thanks to ULI Haböck to use the evening time, many of the math in terms of insight into the discussion and research.

Thank thomas theußl to endure a game technology obsession, let the haired people often appear in his office, occupying his computer, and often enjoying his cup of hot chocolate.

Thanks to Karin Kosina, thank him with an enviable humor, his encouragement and his special experience on music - Kaos Keraunos Kybernetos!

Thank helwig hauser, it prompted me a lot of speeches, Cescg (?), And thanks to Computer Graphics Association --la Tante Est Morte, Vive La Tante!

Thank Gerd Hesina help in many occasions.

Thanks to Anna Vilanona I Bartroli and Zsolt Szalavári brought some happy things.

Finally, but far from the end, I would like to thank all the Parsec enthusiasts, they are eager to hope this final official version ... we are working hard!

Chapter 1, Introduction

1.1 3D computer game engine and graphics research

About ten years ago, computer graphics research and computer game development were completely separated two different areas. Computer games have a unique goal in the consumer market, and in that era, because of the problem of graphics processing capabilities, computer consumption hardware is almost not visually within computer graphics experts. Therefore, experts use expensive high-end graphics workstations, while game developers are facing completely different hardware platforms. This also suggests that the graphics algorithm and technical theory developed and used by computer graphics experts cannot be used by game developers. From another perspective, graphics experts also do not treat computer games as part of their own scientific research.

However, in this last decade, especially in the past two years, we have been able to see the performance of the cheap consumer graphics hardware system - in many fields and even more than the extremely expensive high-end graphics hardware Performance. In this situation, computer game developers will gradually use the scientific achievements of the research community to gradually shrink the gap from a new introduction technology to practical use in consumer goods. The research and development of computer games has become very important in the field of graphics applications.

The game engine that promotes the development of today's 3D computer games is a true unbelievable focus area, in which computer graphics research and engine design are gathered at a point. However, although the graphics system is a component of the current game engine and makes it visualize, this does not mean that a game engine has only a graphics system. There is a saying that a particular game engine behind a game contains all techniques that have an existing game environment but looks also in a system frame that is separated from the game itself. These also include network system components, artificial intelligence systems (AI), scripting language systems, audio systems, and other related technologies.

Figure 1.1 Two highly successful game engines. Left: Raythene Right: Unreal

In addition to the high successful driving of games in their respective fields, the most prominent game engine in recent years has also had a significant successful business authorization case, like the hammer of Thunder, unreal. Although these two engines have been developed for specific games, these engines can also be very ideal for use in other game development processes that are completely different in terms of storyline, image performance, and sound effects. In fact, efforts to develop a top game engine must pay is huge, and also in the business perspective, developing an engine that can authorize other companies is a very wise practice, allowing these companies to main The development effort is more placed in the development of actual game content instead of the program development technology itself. This is important for companies that do not have the ability to develop a complete engine, which is important to develop games, especially those who have developed engine capacity. For the game engine developed for a particular game or a series of games, a small part of the company specializes in the development of the engine, and at the same time they don't focus on the development of the game itself. NUMERICAL DESGN LTD. Netimmerese is a typical example of this aspect, which is an elastic independent game engine technology that is dedicated to authorization development. Due to the high elasticity of the engine itself, it can be referred to as a generic game engine, but, for example, an engine like Quake is defined to limit the game of a single action type or at least a specific type of game. On the other hand, high flexibility is also one of the main inherent problems in the general engine. Because they are not firmly concerned on the game content limited by the box boxes, these engines cannot achieve high performance performance that can be achieved by some engines that are particularly specified for certain game types. There is also a general engine problem is that the vast majority of game developers like to buy the generic engine that has been proven to be successful technology, especially a highly successful sold at least one million games. Game engine.

1.2 On the topic of this book

This topic contains a lot of materials belonging to the general game engine architecture, but most of them are about a particular engine design and architecture. This engine called Parsec is a multi-person game engine with high portability and scalability. The engine is designed and developed in accordance with modular, scalability, scalability, and more of portability.

For a generic game engine, the Parsec engine belongs to a certain class or a engine system that belongs to a particular type of game. This means that it is developed at the same time as a action class game, not because it is very coincidental as Parsec, there is no safe distance during this period.

Figure 1.2 PARSEC

Parsec is a multiplayer 3D combat game, especially for Internet Network online entertainment. Basically, players can interact to join the game plot to enter the game plot of the solar system, can also jump between a so-called star door from a solar system to another. The focus of the game is the fast-paced action, the fascinating image and the wonderful background sound and the music reflecting an infinite external space space set. In the fifth chapter of this book, you will detail the game and its background story content.

The PARSEC engine utilizes a high performance graphic image performance with an abstract rendering API, as well as a modular subsystem encapsulated with system-related functions to achieve high portability. The network subsystem is also independent of the underlying host system and the transfer protocol already used. The current system has implemented support for network protocol system systems such as host systems such as Win32, Linux, and MacOS and TCP / IP and IPX. Because a major goal of the Parsec Engine development process is to achieve high-portability, transplanted to other different host systems, different graphics API systems and network protocol systems are an extremely direct, simple process.

In the description of the Parsec engine, we will focus on architecture and design. However, in order to help developers who use, expand the Parsec engine, and the rich Parsec engine provide enough technical details, but also develop Parsec engines, we have begun to be tired in this process. 1.3 Organize this article

This article consists of three main parts.

The first part - foundation and related work - which includes the basic issues of a very important graphics algorithm in many game engines. It is also included brief description and descriptions of the underlying graphic API function interface in the computer 3D game, such as OpenGL and GLIDE. There are also some review of the very popular related works in the 3D computer game field and the consumer 3D computer hardware in the past ten years. In this section, we involve many background materials on computer games and their algorithms and techniques they are using and have been used.

Part II - Parasec Design and Architecture - This is involved in the main topics in this paper, that is, the design and architecture of the PARSEC engine. Although we have focused on design and architecture, more implementation will involve a lot of details. The transplantable key design is based on the entire architecture of the engine as a center. We will first review the Parsec game itself, then give the general view of his architecture, followed by architectural details and implementation. After these summary introductions, we will set up a chapter separately to each primary engine component.

Part III - Conclusion - Summary and Provide Summary of Summary.

1.4 Implementation Overview

The work introduced in this paper is the implementation and use of Parsec, Parsec Engine, and Parsec SDK (Software Development Kit Software Development Cap).

PARSEC is a space combat computer game that uses the same name game engine, in order to provide players with interactive game experience.

Parsec SDK is a sub-part of the Parsec engine and its code. The Parsec engine and its code will be available on the Internet, in order to make users modify and add new features, such as add new weapons and special effects. New game modes, even complete modifications, such as modifying almost completely different types of games.

This paper also provides background information and reference materials to developers who wish to work on Parsec SDK.

Currently, all of these engine components consisting of 180,000 multi-source code are written by C like C, which is included in a total of approximately 7MB of code source files. The supported system consists of Win32, MacOS, and Linux systems. All OpenGL and GLIDE (3DFX) are used as the graphics API target function supported in the host system. The available network components implements the IPX protocol of TCP / IP protocol clusters and Novell.

The entire code of the engine is very modular, especially between different host systems and graphics APIs. He is very transparent to a system of aside formats (eg, Intel X86 series processors) or supports descending format (eg, PowerPC Series Processor), and encapsulates those for system details for different target platforms.

The engine code is included in the hierarchical source code, and the number of code itself corresponds to the corresponding target subsystem architecture, the host system and graphics API layout. This is the main part of the paper (Chapter 2) describe. Because the part is clearly separated and classified, it can be easily extended for special target platforms or graphics APIs. Source code files.

And next chapter on the architecture and chapters of a specific subsystem, including more implementation in Chapter 5, in Chapter 5.

(Fail)

转载请注明原文地址:https://www.9cbs.com/read-61002.html

New Post(0)