`
sooxin
  • 浏览: 257671 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

谈谈游戏编号规则

阅读更多

文章来之:http://hi.baidu.com/mr%5Fziqiang/blog/item/6f05c507f707c7cb7a894756.html

 

感谢伟大的群主

做过执行策划的朋友应该至少对网游元素的编号有概念上的了解了,网游由各种各样的元素组成,其中有我们所熟悉的NPC、任务、物品、怪物、魔法、地图等等,也有一些部分人印象并不深的特效资源、动作资源、图片资源等等的元素,所有这些存在于客户端和服务器上的资源和数据,组成了我们所熟知的网游世界。

    这些元素都是需要编号的。编号的理由很简单,元素的编号是客户端和服务器通讯的依据,就如同每个人的身份证号码一样,对于同种元素,其编号都是唯一确定的,通过一个编号就能确定同种元素中的一个元素,由于客户端和服务器的程序和数据库上有了这种约定的共识,于是通过一个编号的检测,双方就能知道这个是一个什么元素,有些什么特征,从而就能从数据库中查询到元素的其他具体属性,然后在客户端详细的表现出来——或文字、或图像。

    在游戏的设计前期,对游戏元素的ID编号规则的规划很重要,如果在前期不注意其ID编号的规划,在后期的维护和增删元素的过程中就会碰到很多的麻烦。试想游戏元素中的编号是随意定下的或者是按流水号在制作的过程中顺序生成的,让我们来看看会造成什么后果:

1、最大的问题在于程序,如果编号是有一定的规则的,程序可以抽象出来分类来定位,定下元素的类型和具体属性,然而如果元素是仅仅通过感性的任意编号或者是流水生成,而没有什么规则,这样程序就必须记住并且枚举出所有的元素的ID,客户端也要保存一份这样的ID表,对于维护和更新的时候,同时也要对客户端更新这份表,这样一来对于程序的代码优化十分不利,二来最重要的是安全性很差,这些ID如果暴露在客户端,对于安全性很有问题。

2、第二个问题在于维护和管理,随意定下或者按流水号来定下的ID编号,即使对最初定下的人来说,到了以后维护的时候,从ID上完全看不到丝毫的信息,该ID除了一个标识以外就只有标识了,其信息量的浪费是很严重的。

    当然,以上只是从最极端的情况——没有丝毫规则的定下编号——来谈后果,很多公司在真正定下编号的时候还是有或多或少的编号规则的,然而优劣在于信息量的足够程度——足够,不过多也不过少的信息含量。

    让我们来看看身份证的编号,看看从中能获得什么启发:

    身份证的编号为:【前六位是你户口所在地区的代码,中间是你的出生年月日,后面就是你的身份认证号码了,旧的身份证中,如果是女性,最后一位号码就是双数,男性就是单数。

新身份证号码是在旧身份证号码出生年份前加了19或者20,这是为了解决千年问题;】在旧身份证号码最后又加了一位数,是居民证号。居民证号取消了旧身份证的男女单数和双数之分,也就是说女性的最后一位号码也可以是单数,男性的也可以是双数。

    编号规则中最重要的是【】中的内容,对于每个人来说,其个人信息最重要的不过是时空的概念——时间和空间——人所在的地方和人所存在的时间,而其次是一个编号的标识,这些组成了身份证的编号——一个人类唯一的标识。

    对于游戏中的元素也是一样的,在规划一种元素的编号规则前,首先要注意的是哪些信息对于这种元素是最重要的,其次对这些元素定下位数,最后对这些位定下其编号的规则以及位的意义,这样就是一种元素的编号规则的设计流程。

下面以NPC的编号规则为例。

    对于游戏中的NPC,像人一样,需要记录空间的信息,然而无需记录时间的信息,另一方面,NPC还需要记录其类型,因为游戏中的NPC都分为多种,有的是功能性的,有的是专门给玩家任务的,而另外的一些是用于场景点缀的,因此这样归纳下来,NPC的主要属性有三个:

空间信息:该NPC所存在的场景,对应场景地图的ID
功能信息:该NPC所属的功能类,是功能性NPC、任务性NPC还是点缀性NPC
编号信息:该NPC的唯一性编号,有了前面的两种划分,剩下的这个编号可以用流水号来记录了

    根据这三个主要属性,可以对NPC的ID定位为8位,前四位为地图ID号(前两位为片区,后两位为地图),中间一位为功能号(0为功能性,1为任务性,2为点缀性),末三位为全局的流水号(至于为什么是全局的流水号,在附带文档中有说明)

    以上只是笔者所认为的NPC的一种编号规划方式,没有最好的通用编号规则,只有最适合项目的编号规则,编号规则的规划需要因地制宜,需要因项目而作出调整和修改,笔者目前也只是尝试从游戏的通用元素的通用特征中提取一个通用的编号规则,而后可以在进行特定的项目的时候,以其作为模板,进行进一步的适应项目的细节修改。

分享到:
评论

相关推荐

    谈谈学习与游戏.doc

    谈谈学习与游戏.doc

    谈谈Unicode编码,

    BMP在Unicode的编码空间中占据了第一平面,编号从U+0000到U+FFFF,总共65,536个字符。 BOM(Byte Order Mark)是Unicode编码文件的可选开头标记,用于指示字节顺序。在UTF-16和UTF-32编码中,由于字节顺序可能有...

    谈谈游戏行业CRM的建设.docx

    三、游戏行业 CRM 应用游戏行业在 CRM 建设上有着独特的应用场景:1. 玩家生命周期管理:从新手引导、活跃玩家、付费玩家到流失玩家,每个阶段都需要不同的运营策略。CRM 系统能帮助游戏公司识别玩家的生命周期阶段...

    语言程序设计资料:Unicode-程序员读物:谈谈Unicode编码.doc

    《谈谈Unicode编码——程序员的趣味读物》 在IT领域,字符编码是一个基础且至关重要的概念,特别是对于程序员而言,理解和掌握Unicode编码至关重要。本文旨在解答关于Unicode编码的一些常见问题,帮助程序员更深入...

    谈谈辩证法问题读书笔记.doc

    谈谈辩证法问题读书笔记.doc

    谈谈Python编码问题和U.ppt

    在IT领域,编程语言Python在处理文本数据时,特别是涉及到编码问题时,常常需要理解Unicode、ASCII、MBCS(多字节字符集)等概念。这篇内容将深入探讨Python中的编码问题,以及如何在实际操作中处理这些概念。 首先...

    谈谈辩证法问题.pdf,这是一份不错的文件

    谈谈辩证法问题.pdf,这是一份不错的文件

    今天我想和大家谈谈GAAS-main这个神奇的概念

    首先,我们来谈谈我们所熟悉的游戏。众所周知,现在游戏业已变得十分庞大和流行。游戏开发商也在不断努力推出新的游戏,以吸引更多的玩家。但是,这种游戏产业也存在很多难题。例如,游戏开发需要付出大量的时间、...

    笛卡尔 谈谈方法

    笛卡尔 谈谈方法 这本书对于人的思维与研究都很有帮助

    让我们来谈谈符号 代码解码指南.zip

    3. 解码:根据编码规则,解析模块的排列,确定数据部分。 4. 验证:检查校验位以确认数据的正确性。 5. 转换:将解码后的二进制数据转换为人类可读的文本或数字。 《让我们来谈谈符号 代码解码指南》可能详细介绍了...

    c#不规则透明窗体

    接着,让我们谈谈“透明窗体”。在C#中,窗体的透明性可以通过设置`Opacity`属性来控制,但默认情况下,透明只适用于矩形区域。要实现不规则透明,我们需要使用`SetStyle(ControlStyles....

    HANUOTA.rar_c语言 游戏_益智游戏

    在游戏编程中,递归可以用来解决复杂问题,如树形结构的遍历、迷宫求解或像这个问题中可能的益智游戏规则的实现。递归通常涉及基本情况(base case)和递归情况(recursive case),在每个递归调用中解决问题的一...

    Flash 游戏开发应用课件 3

    这包括游戏规则、得分系统、关卡设计和AI(人工智能)的实现。这部分内容将教你如何创建动态的游戏环境,设置游戏胜利或失败条件,以及如何设计智能的敌人行为。 在“Flash 教程”中,每个章节都会配以实例和练习,...

    游戏策划面试题

    - **儿童**: 需要有教育意义和简单易懂的游戏规则。 - **骨灰级玩家**: 对游戏深度和复杂度有更高要求。 **二、单机游戏与网络游戏对比** 1. **问题**: 你最喜欢的单机游戏是什么?列举几点理由。 - **解析**: ...

    《谈谈方法》 笛卡尔

    根据提供的信息,《谈谈方法》是法国哲学家笛卡尔的重要作品之一。尽管这部分内容没有提供具体的章节细节,我们依然可以从标题和描述中提炼出关键的知识点。 ### 一、对各门学问的看法 在这一部分中,笛卡尔可能...

    谈谈方法(笛卡尔)

    关于笛卡尔的方法论,谈哲学,谈人生,谈方法。欢迎下载。

    计算机怎样解几何题:谈谈自动推理.pdf

    在《计算机怎样解几何题:谈谈自动推理》这本书中,作者探讨了这一主题,并详细说明了计算机如何运用其基本功能解决几何问题。书中主要使用了LISP语言,这是一种在人工智能领域常用的编程语言,它的易学易用性使得它...

    谈谈辩证法问题读后感参考.doc

    谈谈辩证法问题读后感参考.doc

    谈谈信息时代如何加强档案管理.pdf

    谈谈信息时代如何加强档案管理.pdf

Global site tag (gtag.js) - Google Analytics