现在的位置: 首页 > 综合 > 正文

分布式游戏引擎研究

2013年01月20日 ⁄ 综合 ⁄ 共 12504字 ⁄ 字号 评论关闭
 

Design Document for:

 

 

ParaEngine

 

A Survey and Outlook on Distributed Game Engine

Document No.1.12

 

 

“Evaluate on previous technology, look for the future trend”

 

 

 

 

 

 

All work Copyright ©2005 by Li, Xizhi

 

Written by Li, Xizhi

Email: LiXizhi@yeah.net

LiXizhi@zju.edu.cn

 

 

Version # 1.41

 

Thursday, September 11, 2008

 

Version history:

2005-3-29

Version 1.0 of the paper is started

 

 


 

A Survey and Outlook on Distributed Game Engine

 

Xizhi Li

The CKC honors School of  

Zhejiang University, P.R. China

LiXizhi@zju.edu.cn

 

Chair of the Supervisory Committee:

 

Professor He Qinming

Department of Computer Science

 

Abstract:

       This article surveys on game engine prototypes for constructing distributed 3D computer games. The first part of the paper will discuss technologies for general 3D game engines, as well as common software architectures used in present day game development. The purpose of this part is to provide a reference guide to game technologies: i.e. in what conditions a certain technology should be used, how many choices there are for its implementation and where they can be found or purchased. The second part enumerates new requirements to distributed 3D computer games, which are not sufficiently supported or exploited in present day game engines. These are possible places that future game engines may evolve from. In the third part, I will reference a collection of recent research works for the less explored game genre: i.e. the distributed computer games. They have been organized in a loose framework of distributed game engine. In the end, several new research directions are pointed out, which is the conclusion and the main purpose of this paper.

 

Key words: Distributed game engine, networked virtual environment, simulation

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hangzhou, 2005/03


 

Extended Abstract in Chinese:

The Chinese abstract is identical to the Introduction Section of the paper.

 

文献综述:分布式游戏引擎研究

 

作者:李西峙

2005/04

 

摘要:

       3D游戏引擎已有较长的发展历史,现代游戏引擎已经并正在成为人类开发的最为复杂的软件系统。游戏引擎将渐渐演变成为一个构建和运行高复杂性和交互性3D虚拟世界的标准平台。然而本文涉及的分布式3D游戏引擎目前尚处于原型阶段。本文第一部分讨论了大多数3D游戏引擎所采用的技术,以及基于这些技术形成的游戏引擎的软件体系结构。同时也讨论了不同游戏类型,可采用的技术和可供选择的实现方式,以及提供了相关技术的出处和供应商信息,其内容可作为一般游戏技术研究的参考和指引。第二部分列举了分布式3D游戏新增的技术需求。而现阶段的游戏引擎并不能充分支持这些技术需求。所以,未来的游戏引擎可以在这些方向上进行深入研究。第三部分介绍了一个尚处于初步研究的分布式游戏类型,也即一个松散的分布式游戏引擎框架的原型。文章最后部分指出了一些新的研究方向,它既是本文的总结也是目的。

关键词:分布式游戏引擎,网络虚拟环境,仿真

 

 

介绍

如果我们将网页和3D游戏世界作对比,将网页中的超链接和服务同3D游戏世界中的活动物体作对比,将网页浏览器和游戏引擎运行时的环境作对比,我们将可以想象出一个分布式游戏的简单景象。可能有一天,整个网络将会成为,巨大的虚拟现实游戏世界的一部分。

 

20世纪90年代初期,游戏引擎渐渐演变为一个构建和运行高复杂性和交互性3D虚拟世界的标准平台。在最近几年,游戏引擎方面的研究越来越多的获得众多科研机构的关注,不仅仅是因为迅速发展的游戏产业的需要,也是由于它为广泛的计算机科学和工程技术的研究与开发,提供了成熟和可以扩展的平台支持。它的应用领域包括:计算机图形学、动画系统(如电影)、网络化身、人工智能,虚拟现实和增强现实系统、网络虚拟现实、立体视觉、人机交互、互联网3D技术、多Agent系统、分布式计算和仿真、教育、军事仿真、机器人,等等。有关内容详见参考目录[1] [2] [3] [4] [5] [6] [7] [8]

 

“游戏引擎”一词在二十世纪九十年代中期被提出,特别是和3D游戏(尤其是第一人称射击游戏(FPS),如id软件公司设计的DoomQuake)紧密相连。其他的经过授权的软件设计商可以使用它们的内核来设计自己的游戏。随后出现的游戏,例如Doom3Epic's Unreal就是采用这种模式的游戏及引擎,即,将引擎和游戏内容分开来开发。后来持续发展的游戏引擎技术允许游戏内容设计、脚本设计、美工、策划,独立的进行。现代游戏引擎已经成为了人类开发的最为复杂的软件系统之一,它往往要通过数十个系统协调工作,才能使得玩家能够获得最佳的游戏控制和视觉体验。

 

本文对尚处于原型界段的分布式3D游戏的引擎进行综述。分布式游戏和传统游戏模式不同。传统游戏基本上分为单机游戏、客户端/服务器游戏和多角色扮演游戏(MMRPG)等。分布式游戏与之不同之处主要表现在以下几个方面:第一,分布式游戏将游戏的逻辑和运算分布在网络上的多台计算机上;第二,它实现了一个动态的游戏世界网络拓扑结构,即允许网络游戏世界的规模可以在不重新启动系统的情况下进行扩展;第三,它允许网络中的多个游戏世界可以在一个场景中被展示和仿真,也就是说,在一台计算机上融合了一系列连续的游戏世界。

 

文章的第一部分将讨论大多数3D游戏引擎所采用的技术,以及由这些技术组成的游戏引擎软件体系结构。讨论不同游戏类型,可采用的技术和可供选择的实现方式,以及提供了相关技术的出处和供应商信息,其内容可作为一般游戏技术研究的参考和指引。所讨论内容是按照一般游戏引擎框架的内容来组织的。我们可以看到目前大多数商业游戏引擎所支持的多种不同类型的游戏框架,例如室内/室外混合场景游戏,等等。也有一部分游戏引擎是专门为某一类特殊类型的游戏所设计,例如赛车和飞行仿真游戏,外太空仿真游戏等等。在这些游戏中所使用的大多数技术都是类似的,为了达到这些特殊的功能和效果,人们对现有的游戏引擎进行了不断修改和扩展。由于缺少对于这些特殊游戏引擎的详细资料,仅能简单介绍其有关内容。

 

文章的第二部分列举了分布式3D游戏新增的一些技术需求。这些技术需求在现阶段的游戏引擎中并没有被充分支持。所以未来的游戏引擎可以在这些方面进行深入研究和开发。正如前面所提到的,分布式游戏具有与现行的大众游戏不同的显著特征。所以有必要为这类游戏设计一套全新的游戏引擎框架,以满足其特殊功能的需要。现有的已被广泛采用的游戏引擎,则可以通过扩展,快速吸收和采纳新的功能。这一部分所讨论的技术,也将成为未来游戏引擎中的重要组成部分。

 

第三部分中,介绍了一个尚处于初步研究的分布式游戏类型,也即一个松散的分布式游戏引擎框架的原型。文章最后一部分指出了一些新的研究方向,它既是本文的总结也是目的。

 

3D游戏引擎已有较长的发展历史,它是当今计算机邻域发展最迅速的研究方向。现代游戏引擎已经和正在成为人类开发的最为复杂的软件系统,引擎将渐渐演变成为一个构建和运行高复杂性和交互性3D虚拟世界的标准平台。然而本文涉及的分布式3D游戏的引擎目前尚处于原型界段。

 

感谢:

我要特别感谢我的导师 何钦铭教授,对我研究内容的认可与支持,以及对论文中研究方法的指导与指正。


 

Forward

I have been involved in distributed game engine development for over a year, during which time I implemented my own computer game engine called ParaEngine. And it is still under active development. The paper will not talk about how a computer game engine can be constructed, but it does discuss on most of the issues that an engine designer will almost inevitably face with. The purpose of the paper is given in the abstract and it is assumed that the reader knows something about game engine already. In this paper, I will talk about game engine related issues in a high level of abstraction and direct the reader to other literatures for their great details. In a way, the paper is also suitable for reading to people who are new to computer game engine.

 

Game engine is a vast and rapidly evolving subject in computer science. Many new features mentioned today might be outdated tomorrow. I have tried my best to quickly grasp a good many of them for implementation in my own game engine. But I am sure a good many of them has not been covered by this survey or by my knowledge. Yet, I still started this survey, because my mind felt full and I may add new things to it in the future. I would like to hear your opinion about the mistakes in this paper or important things that I have missed.

 

Finally, the paper is in partial fulfillment of my bachelor thesis entitled: “Research on Distributed Computer Game Engine”. I would also take the chance to introduce you to some of my other works in AI, networked virtual environment, HCI and agent technologies, etc. Please find them in the self-reference section.

 

Acknowledgement

I wish to express sincere appreciation to my supervisor, Prof. He Qinming for his vast reserve of patience and knowledge. I would also like to thank my friends and family, specially my father. Without their encouragement and devotion, I could never complete this work.


 

1       Introduction

If we compare web pages to 3D game worlds, hyperlinks and services in web pages to active objects in 3D game worlds, and web browsers and client/server side runtime environments to computer game engines, we will obtain the simplified picture of distributed computer games. It is likely that one day the entire Internet might be inside one huge virtual reality game world.

 

Since early 1990s, game engine has evolved to become a standard platform for constructing and running 3D virtual game worlds of high complexity and interactivity. In recent years, game engine research has drawn increasing academic attention to it, not only because it is highly demanding by quick industrial forces, but also because it offers mature and extensible platform support for a wide range of researches in computer science and engineering. These includes computer graphics, autonomous animations, web avatars, artificial intelligence, virtual reality (VR) and augmented reality (AR), networked VR, stereo vision, HCI, web 3D technologies, multi-agent framework, distributed computing and simulation, education and military training, robotics, etc. See also [1] [2] [3] [4] [5] [6] [7] [8].

 

The term "game engine" arose in the mid-1990s, especially in connection with 3D games such as first-person shooters (FPS). Such was the popularity of id Software's Doom and Quake games that rather than work from scratch, other developers licensed the core portions of the software and designed their own graphics, characters, weapons and levels—the "game content" or "game assets." Later games, such as Doom 3 and Epic's Unreal were designed with this approach in mind, with the engine and content developed separately. The continued refinement of game engines has allowed a strong separation between rendering, scripting, artwork, and level design. Modern game engines are some of the most complex applications written, frequently featuring dozens of finely tuned systems interacting to ensure a finely controlled user experience.

 

This article surveys on game engine prototypes for constructing distributed 3D computer games. Distributed games differ from other game genres, such as standalone games, client/server multiplayer games and massively multiplayer role playing games (MMRPG), in the following aspects: first, a distributed computer game has game logics explicitly distributed on multiple computers on the network; second it features a dynamic game logic topology which allows the scale of networked game worlds to grow without restarting the entire system; third it allows multiple game worlds on the network to be displayed and simulated (interacting) in a single scene, i.e. merging in to one piece of continuous game world on a single computer.

 

Section 1 of the paper will discuss technologies for general 3D game engines, as well as common software architectures used in present day game development. The purpose of this part is to provide a reference guide to game technologies: i.e. in what conditions a certain technology should be used, how many choices there are for its implementation and where they can be found or purchased. Section 1 itself is organized in terms of a general game engine framework. We will see in this section that most commercial game engines today support a wide range of game types, such as indoor/outdoor mixed type games, etc. There are also game engines targeting on a specific game type, such as vehicle or flight simulation, outer space simulation games, etc. Many of the technologies used in these games are the same, while special functions may be achieved by modifying an existing game engine. Due to lack of first-hand knowledge on these special game functions, I will only mention some in brief words in this paper.

 

Section 2 enumerates new requirements to distributed 3D computer games, which are not sufficiently supported or exploited in present day game engines. These are possible places that future game engines may evolve from. As mentioned previously, distributed games have distinguished features that are not commonly shared by present day games. It is absolutely necessary to prototype a new game engine framework for the functioning of such games. Like many new features that are quickly absorbed by other well formed game engines, the prototype discussed in this section is also likely to be merged in existing ones.

 

In Section 3, I will reference a collection of recent research works for the less explored game genre: i.e. the distributed computer games. They have been organized in a loose framework of distributed game engine. In the end, several new research directions are pointed out, which is the conclusion and another main purpose of this paper.

2       Review of Game Engine Technologies

Game engine is an all encompassing subject in computer science. The part that deals with graphic storage and displaying is often called 3D engine or rendering engine. Rendering engine is usually the core component in a present day game engine; but a game engine usually includes support for many more aspects of a game's architecture than just the 3D rendering. Some part of game engine may be implemented by “middleware”. Middleware developers attempt to "pre-invent the wheel" by developing robust software suites which include many elements a game developer may need to build a game. Most middleware solutions provide facilities that ease development, such as graphics, sound, physics, biped animation, networking and AI functions. E.g. physics engines such as Novodex [10] and Havok [11] are commonly used by top commercial game engines to construct physically convincing games. In the viewpoint of a game development corporation, integrating middleware in their game engine is usually called outsourcing [12].

 

The continued refinement of game engines has allowed a strong separation between rendering, scripting, artwork, and level design. It is now common (as of 2005), for example, for a typical game development team to be composed of artists and programmers in an 80/20 ratio. Hence, game engine should also include a complete suite of virtual world constructing tools, which are usually used by artists. For example, 3D models, key framed animations, physical specification of game objects, etc are usually made by professional tools such as 3DsMax and Maya, and then exported to engine digestible file format by exporters; cinematic, game levels, etc may also be made in a similar way, whereas some game engine provides more specialized tools, such as visual script editor, level editor, which allow artists and level designers to compose game scenes on the fly (i.e. graphics attained at design time appear exactly as in the final game). For example, Quake series level editing tools are popular among hobbyists and also used optionally by some open source game engines [13] [14].

 

In this section, a general game engine framework used in my own game engine (ParaEngine) is presented for organizational purposes; because without proper organization, a brainstorming jot-down of game engine technologies can be quite a chaos. See Table 1.

Table 1      A quick jot-down list of game engine technologies

Category

Items

Graphics

scene hierarchy, skinning, shadow / lighting model, particle systems, shader model / material system / associated tools, vertex and skeletal animation, alpha/texture sorting, terrain, clipping/culling/occlusion, frame buffer post-processing effects,  split-screen support, mirrors/reflection, procedural geometry, text rendering/font issues, level of detail, projected textures, …

Resource management

loading, resource lifetimes/garbage collection, streaming resource scheduling, rendering device change management, file access (pack files)…

sound/music

3D, 2D, looping, looping sub range, effects, …

in-game UI

also related to graphics and scripting.

I/O

key remapping, force feedback (haptic devices)

time management

frame rate control: time synchronizations with various engine modules

Scripting

Lua/python/?, saving and loading game state, security, performance, profiling, compiler and debugging, in-game cinematic, …

Tools

level editor, terrain editor, particle system editor, model/animation viewers

trigger system tool, cinematic tool, MAX plug-ins – exporter, …

Console

In game: debugging, in-game editor,

recording/playback: frame-based, time-based

compatibility: cross-platform compatibility, graphic device support

抱歉!评论已关闭.