快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

下载澳门新葡亰官网App:从头开始思考游戏的数据管理系统(一)BR游戏数据管理的重要性BR游戏数据可以有几多笔BR游戏数据的概念分析BR选择标识符BR之后



和一样平常利用软件有点不合,大年夜部份游戏软件都必要应用大年夜量的游戏数据(game data)──下载澳门新葡亰官网App或称为资本(resource)、资产(game asset, 但平日asset包括数据的原始款式, 不是终极运行游戏所需的数据)。在制作游戏时,若何治理这些数据是一个异常紧张的问题。曾经看过和应用过不合的规划,现在归回原点,阐发基础的需求,随条记录笔者所选的规划思路。

游戏数据治理的紧张性

假如从游戏软件的产出(deliverables) 来阐发,一个游戏软件可以分为三部份:

游戏引擎: 对照固定的、和游戏性无直接关系的程式

游戏唯读数据: 脚本、图像、音效、关卡、影像

游戏读写数据: 游戏存档、游戏设定、玩家克己内容

从现今的游戏实际容量来看,游戏引擎可能占1~10MiB,游戏读写数据10KiB~10MiB,另外以GiB为单位的全是唯读数据。以开拓职员来谋略,开拓引擎可能是数人,但制作那些唯读数据的步队因此百计的,主如果游戏性程式设计师、人物美工、场境美工、关卡设计师等等。本文主要谈游戏唯读数据,以下「数据」或「游戏数据」皆指「游戏唯读数据」。

游戏数据可以有若干好多笔?

接着笔者随便预计一个"小"游戏必要的数据笔数(笔数鄙人节定义)

20 关卡 × (200关卡贴图 + 100关卡模型 + 200游戏物件) = 10000

40 人物 × (3人下载澳门新葡亰官网App物贴图+ 2人物模型 + 20人物动画) = 1000

200视觉效果 × (5效果贴图 + 5动画) = 1000

20应用者接口 × 25贴图 = 500

(100物件脚本 + 80人物脚本 +20应用者介面脚本) × 5原始代码文件 = 1000

180音效 + 20音乐 = 200

总和 = 13,700

以这个推算游戏的数据笔数,其数量级一样平常在104 至106。笔者感觉极限只是会到107,由于大年夜量数据是模型、贴图、动画等,匀称值不会少于10KiB,而107 × 10KiB 已经是10GiB。

游戏数据的观点阐发

笔者心目中的游戏数据是有以下特征

独一性(uniqueness): 每笔数据有它独一的标识符(identifier),透过一个标识符可以读取一笔数据。

弗成瓜分(atomicity): 当把一些数据瓜分成多笔数据是没意义的,就算是一笔数据。例如假设一张贴图不会读取、应用此中一部份,则视为一笔数据。

依存关系(dependency): 一笔数据可能会靠identifiers引用其他数据。这和上弗成瓜分属性也有关系,由于是用identifier依存某一个数据,而不是下载澳门新葡亰官网App该数据内的一部份。笔者未想到会有轮回的依存关系,暂时把依存关系算作一个Directed Acyclic Graph (DAG)。

一样平常文件系统的文件,和这里的数据有点不合。文件的路径可以视为Identifier,但很多文件的内容是可以再瓜分的,而且没有显性(explicit)的依存关系。

选择标识符

笔者看过和想到的数据标识符(identifier)有:

路径 (path): 例如 Texture/wall.jpg

统一资本定位符(URL): 例如Tex下载澳门新葡亰官网Appture/wall.jpg、http://www.mysite.com/news.jpg

整数: 例如 0x54AF4C58

全局独一标识符(GUID): 例如{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

路径

档案系统的路径可能是最直觉的数据标识符。我曩昔做过的引擎,和很多商用引擎也会应用文件和路径这个表达要领。路径平日是相对付某一个目录、或一个压缩文件(例如id公司的引擎会把档案压缩在一个zip文件里)。

路径的好处是和我们日常用的操作系统治理档案的要领一样。层阶式(hierarchical)的目录布局让应用者可以自行分类治理,你亦可以历遍 (traverse)目录布局,例如读取某一目录的*.lua。它实作简单,由于操作系统已供给所需功能。也可以应用一些现存的版本治理对象去直接治理这些数据,如SVN、Perforce等。

路径的坏处包括: 大年夜小写问题、多国翰墨问题、储存效率差、运行效率差。前二者太概都轻易明白,不再胪陈。储存效率差是指用字串去记录每个标识符,包括引用时的标识符都邑花费不少空间,而且路径(不单是档案名)的长度可以很长(例如可能要256 位元组)。而运行效率差是由于对照两个路径慢,谋略一个路径的hash code (例如用路径identifier做hash_map或hash_set 的key)也很慢,並且不是常数速率。在游戏运行期,这些路径翰墨资讯是冗余的,由于玩家不会看到。

统一资本定位符

统一资本定位符(Uniform Resource Locator, URL)算是路径的延伸。这延伸的好处是它是一个标准(不会有平台相关、大年夜小写、多国说话等问题),而且有些XML里也会用URL作为引用的标识符。别的,可以选择性支持不合的协定(protocol),例如透过http存取互联网上的资本。其他坏处和路径差不多。

整数

整数是最简单的标识符。平日关联式数据库(relational database)的表(table),都以一个整数栏作为列的主键(primary key)。相对前两种标识符,整数的好处是储存量小而速率快。整数标识符的毛病是下载澳门新葡亰官网App,整数对应用者而言没有任何意义,也没有层阶式的治理系统。

别的,若干位元才足够呢? 从之前的预计,107笔数据用32-bit就足够了。用另一个角度想,假如一个5年的项目有100个成员会添加数据,一周事情7天,匀称每人逐日可增添23534笔数据。这应该足够吧,除非数据常常大年夜量删去又创建数据(每次都孕育发生新的标识符)。

要澈底杜绝标识符不敷用,可以重用旧的删去了的标识符,或是把现有的所有标识符从新编号。整数标识符在多人同时建立数据的时刻,还要斟酌若何令标识符不重复。办理法子之一,是连线到一个有标识符孕育发生器办事的伺服端法度榜样。

全局独一标识符

着末,全局独一标识符(GUID)的好处是确保在不连线情況下,每人也可以获得不会重复的标识符。毛病是GUID的大年夜小一样平常为128-bit,是32-bit的4倍。

之后

笔者将继承写有关这些游戏数据的应用流程,并着末阐述现在做的引擎在这方面的设计。

本文原本是繁体中文,在2009-03-13颁发于http://miloyip.seezone.net/?p=104,本文經過修正。

您可能还会对下面的文章感兴趣: