这周不是很忙,因为我们的游戏开发了近一年,由于公司的业务调整,在游戏开第二服的时候,老板果断的把项目停到了。

感觉超级的不爽啊。因为这个游戏项目像我的孩子一样和我一样成长,里边的大概的业务逻辑都是偶实现的,比如

基础系统里的,任务系统,背包系统,公会系统,相关副本系统,商城系统,人物属性相关,运镖,怪物AI,技能相关,地图等等,差不多游戏里的所有业务我都有所涉及

那么对于一个业务是如何设计,如何少的产生bug,和一些漏洞呢。

任务系统

在这里我表述一下,如果是C语言的开发,那么任务系统,属于玩家一个的一个必须要序记住的的数据,因为,我们要在玩家身上找到。

好,那我们就记下来了任务ID,但是我们发现一个游戏系统有很多类型任务,比如

主线任务----主要特征表现在必须做的,不可以放弃的。一般主线任务,同一时刻只允许纯在一种

支线任务----同时可以做很多,同时可以接受很多

循环类型任务-----这个任务可以一天循环做几次。

等等。

因此在设计表的时候涉及到类型,次数也要涉及。还有完成条件,打怪的个数,等等能所有能涉及到的东西。

涉及协议相关的时候,我们要知道任务分为几种状态,可以接,接受状态,运行状态,放弃状态,完成状太。

那么,我们就要涉及到请求接受任务,任务在运行时,随时都可能变化的是刷怪个数,采集否,是否在某个地图等等条件,如果达到了,立即告诉前端,该任务是可以完成了,

如果玩家点击完成,那么我们将送一些奖励给玩家。做一些任务的变化等等。

这里这是大概的说一些基本的东西,很多东西都是需要慢慢的积累下来了。

背包系统

背包系统算是业务系统中比较复杂的了。为什么这么说呢,因为一旦设计不好,那么将会带来效率的问题。

尤其是在道具的堆叠,整理,移动,拆分,交换等等一些操作。

背包也算是玩家的一个重要数据,因此我们会在玩家内存上开辟一段内存。

背包开发当然一定会涉及到道具,那么道具怎么分呢,目前主要我们主要分成道具和装备两大类。

背包的一个个格子,我们就创建一个结构体,这个结构体里是我们使用共用体表示道具和装备。,基本的相同元素,包括全局唯一id,定义id,等,但是装备是具有其他属性的,比如洗练,打造相关。

当我们想加一个道具到背包中,我们就会提供一个接口,来创建一个格子实例,来判断是否能加入,如果判断可以,就直接加入,否则,告诉玩家失败。

设计协议,我们就要有几下,添加道具,道具移动,道具背包移动和背包的道具移动到仓库。消耗背包中道具,具体协议当然是根据需要变化的数据,保持前后端一直。

这里不在赘述。

地图/副本系统

该系统其实也算是游戏业务逻辑的比较复杂的了。

副本其实也是地图,只不过,副本是相对来说人少的,或者说个人的。对服务器压力来说相对比较小,因为对玩家视野,同屏压力较小。

但是我们主世界地图来说是不一样的,所有人都在主世界地图,我要看到其他人,同屏压力就非常大,对与前端也是很大。

那我们是如何设计呢,首先我们要知道二维地图,都是用小格子来表示,一般小格子都是40像素左右的矩形。我们又提出一个冬天区域有包含多少个字,每个格子都可以有那些玩家。

当一个玩家进入到某点,会进行搜索,把相关数据广播出去。同事,该动态区域也会记住玩家ID。其他玩家同事会看到其他玩家。

玩家身上也会记住事业内的道具的内存ID,玩家内存id,怪物内存id.等等。

副本呢,我们会在通过一个地图定义和一个副本定义表来在副本内存池中申请一段内存,那么在该副本的所有数据进行记录。进行一些玩法加载。

公会系统

公会系统唯一要注意的就是如何实现的权限控制。我么你是使用二维数组来进行权限的的控制。其他的就都是在公会内存中操作了,或者在公会的大类里搞来搞去代码了。

怪物AI。

其实怪ai,涉及到东西比较多了。

比如技能,视野。在整个世界里,每个怪物都要tick一遍,因为怪物所有做的东西都是服务器去控制的。玩家去做打怪,怪物就要做一些反应,比如低级怪就要被打,不去攻击玩家,而高级怪可能要去攻击玩家了。

在攻击的时候,根据怪物技能,攻击玩家,然后通过玩家的一些基本攻防的技能来计算伤害值等等。

在业务系统还有很多东西要描述了。在这里不一一赘述了。如果是C++那么就每个都是一个类,然后对这些类操作。

欢迎访问我的博客,跟多文章访问http://blog.csdn.net/wallwind

[置顶] mmog游戏开发之业务篇的更多相关文章

  1. [置顶]unity常用开发套件

    维京人骨骼动画制作(Unity 2D Animation资源包使用指南) 维京人骨骼动画制作2(Unity 2D IK资源包使用指南) -------------------------------- ...

  2. [置顶] SPL讲解(4)--Criteria操作篇

    概念 以前一篇文章中,描述了实体Entity的操作,很明显,仅仅实体的操作是远远不够的.如:我们经常会根据查询条件从数据库中获取记录集并绑定到DataGrid上,会根据条件进行批量的Update和De ...

  3. [置顶] Java Web开发教程来袭

    Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet不过现在使用的很少,Java在服务器 ...

  4. [置顶] SPL讲解(7)--Query高级篇

    SmartPersistenceLayer 2.0 之Query高级查询篇 总述 在看了前面的功能后,大家都会考虑到多表之间的查询怎么办.在这里,我想先讲一下查询在应用系统中的复杂性/重要性/可行性. ...

  5. [置顶] Django 微信开发(一)——环境搭建

    Django 微信开发(一)——环境搭建 随着移动互联网时代的到来,微信——一个改变着我们生活的产品悄悄走近了我们的生活.我们不得不觉得自己很幸运,自己能在这个世界上遇到像QQ.微博.微信这样优秀的产 ...

  6. [置顶] Kendo UI开发教程: Kendo UI 示例及总结

    前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...

  7. [置顶] 【GBT28181开发:SIP协议实践】之设备远程启动

    下面学习的是设备远程控制的流程,和设备信息.设备目录.设备状态的流程差不多,主要是描述的协议字段不同,模拟SPVMN系统向源设备发送远程启动控制指令,记录下交互的消息,详细研究了下: 转载请注明出处: ...

  8. [置顶] (游戏编程-04)JAVA版雷电(奇迹冬瓜)

    注:运行环境必须要JDK 先为大家送上游戏截图 接着在最后有代码下载的链接地址 1.游戏开始动画和主界面 关卡与boss 结束画面 代码下载地址 点击打开链接

  9. [置顶] Android 高级开发 源码 UI 缓存 网络

    1.Android 源码剖析 性能优化  开源代码 2.Android UI效果源码 3.http://mzh3344258.blog.51cto.com/1823534/d-3 4.微信公众平台开发 ...

随机推荐

  1. 【转】DCX (数独-八皇后问题)

    还没学会,先转了再说.. 出处:http://grenet.cnblogs.com/ 跳跃的舞者,舞蹈链(Dancing Links)算法--求解精确覆盖问题   精确覆盖问题的定义:给定一个由0-1 ...

  2. java this 隐式参数

    第37级 this 是隐式参数, 类的方法调用时,会系统自动传递一个this的参数给方法.(这个参数是隐式传递的) 所以在方法里可以使用this这个参数. this在方法中表示对象. this(参数列 ...

  3. 简单的Ajax例子

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 板级支持包(BSP)

    板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主 ...

  5. JMP软件中的晶圆图( Wafer Map)分析

    关键词:芯片 良率分析 晶圆图 质量管理 JMP Minitab 半导体芯片的生产,简单来讲,是将电路通过各种复杂的物理化学方法制作到晶圆上,在生产的最后阶段会进行不同电性功能的测试以确保产品的功能性 ...

  6. QML嵌入到QWidget中方法

    简介 嵌入方法有两种一种是直接拖控件,另一种是cpp代码动态生成, 控件方式 动态代码生成 QQuickWidget *m_quickWidget=new QQuickWidget(); QUrl s ...

  7. perl 正则匹配多个

    Vsftp:/root# cat k1.pl my $_='upDaTe'; if( $_ =~ /^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK| ...

  8. How to: Host and Run a Basic Windows Communication Foundation Service

    This is the third of six tasks required to create a Windows Communication Foundation (WCF) applicati ...

  9. SCOI2005互不侵犯King

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1499  Solved: 872[Submit][S ...

  10. Bat 中特殊符号

    批处理.Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用: @\\隐藏命令的回显. ~\\在for中表示使用增强的变量扩展:在set中表示使用扩展环境变量指定位置的字符串:在set ...