最近公司上线了一款游戏,后台服务端出现各种BUG,我简单的将出现的问题做了分类,多线程操作的数据一致性BUG,逻辑BUG,流程BUG。虽然感觉这样分并不能完全表述出现的BUG类型,但我认为至少是这三类问题能概括了目前出现的BUG.  于是大家一起探讨了怎么在上线环境来定位BUG的问题所在。其实,我想更应该在设计开发中来避免这类问题的出现。于是个人总结了一下在开发过程中的一些规范,流程。

个人认为在服务端的开发工作分这几个阶段:前期--设计  中期--开发 后期--测试,当然一般的系统也是这样的,下面阐述在这三个阶段要解决的一些问题。

前期--设计

在前期设计中设计好程序的框架,主要解决并发,性能,做出保证多线程操作数据一致性规范。确定网络线程跟逻辑线程是如何交互的,确定逻辑线程是单线程还是多线程,如果是多线程的,那要给出多线程对数据操作一致性规范。

在这一阶段就从根本上结果多线程的数据一致性问题。

中期--开发

中期开发主要是在前期的设计前提下,做游戏功能开发。如游戏逻辑,算法。这里要遵循前期设计阶段对数据一致性操作的一些规范,来处理数据。

在这一阶段主要是开发游戏功能。

后期--测试

这里要说的是(白盒)单元测试,包括正常游戏的逻辑测试。

说到测试,我们不按照《软件工程》上讲各种测试,只要我们要涵盖的点:

1.边界测试

2.条件测试,保证游戏逻辑中每个分支都要跑到

2.非法数据测试,测试我们的程序对非法数据的处理能力

3 .正常数据测试,这里主要测试功能的完整度

在这一阶段,是要确定我们写的游戏的功能逻辑能否正常的跑。

备注:此文章只是说明在游戏开发中的一些个人体会。至于说性能测试,压力测试,稳定性测试这些游戏服务器经常做的测试,是在以上游戏功能正常运行后进行的。

游戏服务端开发-随想相关推荐

  1. 百万在线:大型游戏服务端开发

    进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...

  2. 速游面经(游戏服务端开发工程师)

    一面:9.15,线下面 一面更像HR面,是一个女面试官,应该是HR,不是技术官,问的专业知识也很浅,没有深挖 我们这个这个岗位是需要转语言的,可以接受吗?(转Erlang) 你的GPA挺高的,平时是怎 ...

  3. Java游戏服务端开发系列文章

    已经好久没有更新自己的学习状态.或许是工作太忙吧,生活被工作羁绊,无法抽身.最近因为某些事情的原因,工作上有点充裕的时间来分享自己的一点小小经验.因为毕竟我也是一个混迹职场几年了 虽然天资不咋地,但是 ...

  4. Java游戏服务端开发之开课了

    从今天开始我将会重新的做一个专栏.这个专栏是专门为新手讲解游戏服务端开发的文章系列.同时也是将自己多年的经验做一个系统的分享. 通过这个系列大家可以掌握到一个游戏开发中的一些概率以及在线游戏服务器所包 ...

  5. 游戏服务端开发-排行榜

    开头 排行榜几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种排行榜实现方式. 结构 每个排行榜对应一个actor,State使用如下结构: %% 通用排行榜结构 -record(rank ...

  6. docker mysql开发环境_跟我一步一步用Docker搭建Beimi游戏服务端开发环境

    跟我一步一步用Docker搭建Beimi游戏服务端开发环境 Stone 摘要 本文为java 0基础的小伙伴介绍如何用Docker搭建开发环境.如果不关心过程直接可 跳到本文最后取代码. 关键步骤为: ...

  7. 游戏服务端开发-AOI-九宫格法解析(附代码)

    1-啥是AOI AOI全称Area Of Interest,中文就是感兴趣的区域,个人理解就是玩家关注的并且可视的地图区域. 在RPG游戏中,玩家角色移动,攻击,放技能等操作都需要向其他玩家广播,但服 ...

  8. 游戏服务端开发-全局唯一ID

    结构 | PlatId (10bit) | ServerId (12bit) | UnixTime(s) (32bit) | IncreaseId (10bit) | | 平台id (10bit) | ...

  9. 游戏服务端开发-好友系统

    开头 好友系统几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种好友系统的具体实现方式. 存储 可直接以user_id为key,存在ETS或序列化后存在Redis等公共安全的内存数据区域 ...

最新文章

  1. 算法 有两个相同大小数组均已按升序排列好 编程计算这两个数组的中位数 C
  2. nurbs非均匀有理B样条实现船体重建
  3. egg风格 什么意思_小小的“egg”,有你想象不到的秘密……
  4. C语言100例01 PHP版(练习)
  5. .NET 6新特性试用 | ArgumentNullException卫语句
  6. java跨库调用存储_存储库仅在第二个调用数据时发送回ViewModel
  7. android list 替换元素_Python数据结构(一)List使用(大厂面试解答)
  8. Linux安装MySQL的完整步骤并有关MySQL8.0版本的问题方法
  9. 网络编程(一)基础知识
  10. setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位...
  11. iOS中NSArray的过滤
  12. java实现插入排序+代码推导
  13. 【ADNI】基本概念整理
  14. shell脚本编写九九乘法表_Shell脚本:打印九九乘法表
  15. python从入门学习笔记
  16. 苹果cms v10影视网站数据采集
  17. URP - Render feature实现镜面反射
  18. 【Security】可信网络连接
  19. Redis配置文件redis.conf内容完整版
  20. 区块链未来三年内将广泛落地

热门文章

  1. Standford parser举例
  2. 正确使用计算机键盘的方法是,电脑键盘的正确保养方式
  3. 边缘检测(Canny,Sobel,Laplacian,Scharrs)的python调用
  4. DEDE fck编辑器插件 图片排版 自动排版 繁简转换
  5. python学习—— IPy 强大的IP地址解析模块
  6. 网站服务器空间扩展,如何扩展服务器c盘空间 - 卡饭网
  7. 小程序开发必备功能的吐血整理【个人中心界面样式大全】
  8. springMvc整合undertow容器
  9. SCI论文总重复率29%,单篇重复达到了4%,请问可以了吗?
  10. Mr. Young's Picture Permutations