MMORPG游戏中背包系统是很重要的一个模块, 大部分的背包系统的讲解,都是讲如何设计UI,如何显示这些,其实这些东西并不是背包系统的核心,接下来我们来分析一下背包系统的数据结构如何设计,能让策划和程序很好的工作,以及非常方便的扩展。

这里有个学习交流小组点击可以直接进去

1: 设计好背包系统的关键是什么?

背包其实就是描述一个玩家在游戏世界当中拥有哪些物品,一个大型的MMORPG游戏会有很多的装备和物品, 这些装备和物品以及数值经常会修改,增加,减少, 甚至装备上可以镶嵌各种宝石来实现不同的攻击和防御。所以如何设计一套数据组织的方式能方便程序和策划沟通,才是做好背包系统的关键,并不是如何做好背包系统的UI界面。

2: 背包系统物品需求分析

背包系统中的物品分为2个部分,第一部分是物品的属性描述,第二部分是玩家在游戏里面拥有物品的数量,第一个部分就是策划要填写的内容,有哪些物品,这些物品会有哪些属性等,同时程序在使用装备的时候, 去读取里面的数据属性值来参与程序计算。第二部分就是程序要做的事情,当玩家在游戏中获得了某个物品或装备的时候,就更新装备的数量到数据库,程序负责维护好这个数据逻辑。

3: 如何设计好背包物品的数据属性配置

背包物品的数据属性一般是由策划来处理的,我们要设计好一种方式来让程序和策划很好的工作。

策划负责填写表格,程序负责使用表格。如何设计好呢?我们可以把物品分成一些类型,比如药水类型,红蓝药水能够增加玩家的HP与MP。又如装备类型,某个装备有攻击力,防御力等。这么多物品,很容易让程序员懵逼,这么多类型与复杂数据属性如何设计呢?其实仔细分析一下,我们很容易把内在的逻辑设计清楚。

先来分析一个物品的描述,一个物品在逻辑上包含了两个部分,第一部分是文字描述,如"红药水可以增加玩家的200HP",第二部分属于数值描述比如药水类物品的数值[HP, MP, 售价等]。那么我们就可以设计药水的属性配置表如下:

物品id      desic(文本描述)        HP,  MP,   BuyPrice[购买价格],  SellPrice[出售价格]

那么如果是装备呢?装备是防御力,攻击力等属性,药水的描述就不适用了,我们就要建立另外的描述表如下:

物品id     desic(文本描述)     Attack    Define  BuyPrice[购买价格], SellPrice[出售价格]

这样我们很自然的按照物品的数值属性进行物品分类,把每一类物品做成属性描述表,例如药水描述表,装备描述表,武器描述表, 可以根据游戏的需求,定义一类物品的属性。

这些属性配置表在做背包显示的时候,能提示物品的属性和特点,在计算数据的时候能叠加他们的数值到游戏中。策划随时可以增加物品类型,修改物品的属性,增加后马上就可以使用,这样程序和策划就能很好的沟通,策划做数值也方便。

物品id 是对应的此物品唯一的ID号,背包里面, 我们都是以id号来标识物品的,那么给特定一个ID号,如何知道到底是那种类型呢?这里有一个技巧,就是我们把每种类型的物体的ID划分一个范围,比如药水, [100001~199999], 武器[200001~299999], 衣服装备[300001~399999]。这样规定好以后,当知道某个物品的ID,我们就可以通过 ID整除100000 类型, 300001/ 100001 = 3 所以300001属于衣服装备。

4: 程序如何存放玩家拥有的物品?

一般游戏里面会做一个数据表存在服务器上, 这个数据表描述了某个玩家有哪些物品以及物品的数目。数据表的设计如下:

PlayerID(玩家ID)   ItemID(物品ID)   Count(物品数目)

00001                     300001                   5

00001                     200005                  15

当我们要显示00001玩家背包数据的时候,可以通过查询语句把所有的00001玩家的所有的物品以及数量拉取下来(Select * from 背包数据表 whre PlayerID = 00001 and Count > 0) ,再加上配置表的属性描述等,这样背包就做好了。

这里还有一个问题, 有些特殊的装备,可以镶嵌不同的宝石,得到不同的攻击力和防御力,  这种我们怎么做呢?而镶嵌宝石,是玩家操作处理的,这个时候,我们可以在后面再加一个属性表, 用来存放我们配置好的宝石等数据 json文本或二进制数据,如 { 卡槽1: 宝石1, 卡槽2: 宝石3 }。

数据表变成:

PlayerID(玩家ID)   ItemID(物品ID)   Count(物品数目)   Props(JSON or 二进制)

这样设计后,我们游戏的物品与背包设计就变得非常的简单和清晰,希望今天的分享对大家有所帮助。

游戏服务器背包系统,Unity MMORPG 背包系统如何设计相关推荐

  1. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  2. 游戏服务器技能系统,MMORPG游戏服务器技能系统设计【上篇】 - 踏踏实实,认真工作 - CSDN博客...

    MMORPG游戏服务器技能系统设计[上篇] 收藏 本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖 ...

  3. 分布式游戏服务器全服匹配玩法设计

    背景 如今的社交类游戏,大多采用分布式服务器架构,也就是说所有区服的数据存储在一个集群中,玩家可以无阻碍交互,一同游玩. 再谈游戏中的匹配,多数匹配玩法都属于在线匹配,属于非常实时的一种匹配,匹配节点 ...

  4. 牛人写的设计游戏服务器

    转载自 zeeman的博客 - 牛人写的设计游戏服务器 :http://blog.sina.com.cn/s/blog_55d572ca0100uvzt.html 有段时间没有研究技术了,这次正好看到 ...

  5. 游戏服务器设计(转)

    有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨. 另外由于为避免与 ...

  6. 游戏服务器领域的 “状态同步”、“非状态同步”

    目前游戏服务器领域服务器类型分为:三个大类 1.状态同步 2.非状态同步 2.1.帧同步 2.2.状态帧同步 3.无状态同步(类似 Web 后台应用开发) 状态同步(一): 状态同步服务器指,当游戏客 ...

  7. 一个手机游戏服务器的架构

    原文: http://www.youxijishu.com/blogs/19.html 说起来游戏服务器的开发,是一个非常宏大的命题.到如今谁也说不清楚服务器到底是一个什么.无非就是游戏逻辑计算,数据 ...

  8. mmorpg 游戏服务器设计

    MMORPG不同于其它的局域网的网络游戏,它是一个面向整个Internet的连接人数过万的网络游戏,因此他的服务器端设计则极为重要 服务器的基本设置 在大型网络游戏里,通常设计为C/S结构,客户端不再 ...

  9. Unity MMORPG游戏优化经验分享

    今天由Unity技术支持工程师高岩,根据实际的技术支持工作经验积累,分享如何对Unity MMORPG游戏进行优化. 在优化Unity游戏时,我们一般从四个方面:CPU.GPU.内存.工程配置等入手, ...

  10. 如何设计大型游戏服务器架构?

    一.游戏服务器特征 游戏服务器,是一个会长期运行程序,并且它还要服务于多个不定时,不定点的网络请求.所以这类服务的特点是要特别关注稳定性和性能.这类程序如果需要多个协作来提高承载能力,则还要关注部署和 ...

最新文章

  1. 号称下一代监控系统,来看看它有多强!
  2. python教程:列表(list)、元组(tuple)、字典(dict)
  3. 用Python编写小工具下载OSM路网数据
  4. Delphi的System.Str - 将数字格式化为字符串
  5. Javascript 运行上下文和作用域链
  6. 高性能 TCP amp; UDP 通信框架 HP-Socket v3.2.3 正式宣布
  7. PostgreSQL客户端验证
  8. 手写bpnn算法实现iris多分类
  9. [渝粤教育] 浙江工商大学 工程英语口语(王晓英) 参考 资料
  10. 2010年的一些总结感悟
  11. NX二次开发(C#)-UIStyler-ListBox(列表框)的应用
  12. 多系统折腾记录(老电脑MBR分区)
  13. 下一个五年,存储的生意在哪里?
  14. Unity3D官方案例1-星际航行游戏Space Shooter
  15. 《神经科学:探索脑》学习笔记(第24章 学习和记忆的分子机制)
  16. 【C#】工具篇 vspd虚拟串口的安装
  17. 金融是不是一群不事生产的人,对社会毫无贡献的人,互相对赌的零和游戏?
  18. android开发笔记之Retrofit
  19. SpringBoot Jar包构建源码分析
  20. 【rk100】的各种问题

热门文章

  1. 移动宽带连不上微软服务器,移动宽带有些网站打不开怎么解决?
  2. 改了后台登陆地址后无法上传图片_如何找到路由器后台管理账号及密码 找回路由器后台管理账号及密码方法【介绍】...
  3. dreamweavercc 数据库_Dreamweaver CC
  4. 软件测试之蚂蚁金服面试题,含答案
  5. 蚂蚁金服出品,这个企业级前端应用框架你值得拥有
  6. 利用python编程,制作自己的游戏“外挂”!
  7. 亮眼的PPT文字填充特效
  8. 安卓ssr无网络连接_安卓手机不能上网无法链接网络的原因及解决方法
  9. 苹果手机!!!fiddler自动抓抓包iphone上的http(或https)请求,手机设置完http代理,但是手机不能上网了。即(fiddler iphone http代理 不能上网)
  10. Unity操作文件对话框