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

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

附视频教程:MMORPG背包系统的设计与实现

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 二进制)

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

Unity3D MMORPG 背包系统如何设计相关推荐

  1. unity 陶瓷质感_一种基于Unity3D的虚拟陶瓷设计方法与流程

    本发明涉及虚拟现实领域,特别涉及一种基于Unity3D的虚拟陶瓷设计方法. 背景技术: 陶艺工艺制作环境要求严格:不仅在拉坯成型需要利用旋转机器,在烧制过程则需要窑炉锻造,如何将陶瓷制作工艺与虚拟现实 ...

  2. unity3d制作背包系统(3)--UI部分

    unity3d制作背包系统(3)–UI部分 UI这块比较大,花了挺长时间从项目中抠代码,也发现了原来项目中有这么多垃圾代码.这部分既要写代码,又要在unity3d中调整UI. 注:这篇文章下面的所有& ...

  3. 从数值、玩法、社交模块入手谈MMORPG手游设计

    剑灵手游在韩服首发已有一年半,上个月登录台服,稍稍体验了一下.本文接下来将轻度漫谈一下--韩国与国内MMO手游设计,包含的范围主要为数值->玩法->社交三点. 我们先对三个模块进行简单的定 ...

  4. 如何做一名主程之Unity3D网络游戏服务器架构设计

    下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...

  5. mmorpg 游戏服务器设计

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

  6. C1:Unity3D制作智能家居设计软件——前沿

    产品视频简介 智能家装设计软件 2017年还在做服装定制行业,2018莫名其妙进入了家具行业,使用Unity3D引擎从0到1做了个智能家居设计软件,接下来的篇幅会详细介绍此软件开发过程中的各个实现细节 ...

  7. Silverlight MMORPG WebGame游戏设计(六)-----Server和Client的婚后协议[附上完整15M游戏DEMO]...

    上回说到Server少爷和Client小姐好不容易踏入婚姻的殿堂,洞房花烛之夜,Client小姐却要Server少爷签下婚后协议.Server一脸不快:"都一家人还签什么协议啊?" ...

  8. MMORPG 游戏服务器端设计

    之前有过一篇介绍游戏服务器端的博文 http://blog.csdn.net/liuxialong/archive/2011/06/12/6539762.aspx 但是篇幅太长,而且过于关注细节,适合 ...

  9. MMORPG游戏服务器端设计

    之前有过一篇介绍游戏服务器端的博文 http://blog.csdn.net/liuxialong/archive/2011/06/12/6539762.aspx 但是篇幅太长,而且过于关注细节,适合 ...

  10. MMORPG大型游戏设计与开发(part5 of net)

    上一部分将服务器的具体代码的实现介绍给了大家,想必大家也了解到了服务器处理一次消息的复杂度.如果大家能够将各个过程掌握清楚,就会发觉其实整个逻辑与交互过程是比较清晰的.那么服务器与服务器之间的通讯,其 ...

最新文章

  1. MyBatis-03 MyBatis XML方式之select元素
  2. QML从右到左的用户界面
  3. sql 1行拆分成两行_EXCEL总表拆分成100个分表,同事用1天,我只用10秒钟
  4. 在FSM模型中使用两态数据类型
  5. 关于SQL2012里,出现“表中的数据受保护,不能修改”的情况的解决办法
  6. InformaticaPowerCenter调用存储过程
  7. tcpdump非常实用的抓包实例
  8. Tomcat部署记事
  9. Equinox MANIFEST.MF 中文处理 Bug
  10. 纯JS实现简易扫雷小游戏网页项目
  11. 清华大学朱小燕教授做客雷锋网沙龙,分享 NLP 和人工智能的那些事儿| AAAI 2017...
  12. tp6加载静态资源文件
  13. OutMan——Objective-C中的ARC介绍和block的使用
  14. html表格数据按公式自动计算,Word表格怎么自动填充和计算数据
  15. 阿里云oss添加cdn
  16. 微信小程序如何获取高清用户头像
  17. MySQl排序,别名
  18. map-box地图点击图标高亮事件
  19. Jquery判断动态表格中行数据是否重复
  20. Unity 进阶 之 实现简单的音频可视化封装(包括音频和麦克风)

热门文章

  1. c语言指针实现数组排序算法,C语言实现数组快速排序算法
  2. css3 dyoe_【跑马灯】纯css3跑马灯demo
  3. echarts 闪光_echarts legend 图例文字闪烁显示
  4. CTF挑战赛-合天网安实验室-Reverse逆向100writeup
  5. 动态电路中的动态元件——电容和电感
  6. android逆向笔记 -- 记一次解决飞天助手未知模拟器方法
  7. MySQL学习1 基础入门
  8. 运筹说 第19期 | 线性规划经典例题讲解
  9. 南佛罗里达大学计算机科学硕士,去南佛罗里达大学读硕士好吗
  10. facebook是什么