通过游戏开发入门系列的学习,是不是对游戏开发有了一个比较清晰的认识?
在最后一篇里面,博主试着概括性的对游戏开发做一个总结,欢迎各位提出意见来完善这篇博客~


游戏模块总结:

  • 游戏逻辑模块系统:各种武器,状态,技能,背包,战斗等逻辑系统
  • 动画模块系统:状态机,Montage,动画融合,IK等
  • 物理模块:给需要交互表现的对象赋予物理特性(包括刚体,流体,粒子,布料等),调整重力大小等各种参数,调整交互中力的大小,调整物理约束
  • AI模块: AI导航,与玩家交互等,玩家的很多功能系统也需要给AI来使用,更深层次的可以考虑将机器学习相关的内容融入
  • UI模块:搭建各种界面框架(背包,捏脸,地图等),非常耗时间与精力,后期需要不断调整
  • 渲染模块:客户端表现核心,不用多说,内容非常多且深
  • 网络模块:底层架构,同步,网络连接 场景模块:包括地形,关卡,植被,角色管理与优化等
  • 输入与输入处理模块:将玩家输入处理转换成逻辑,需要注意的有组合键,输入法切换等
  • 游戏登录与更新:一般这是专门的工具组来做,比如我们常见的各种游戏登录器,在线更新等。

这里面的除了网络基本上都需要美术,策划,程序共同参与与合作。


内功:

  • 数学基础:根据你所做内容来决定,一般上层逻辑比较少的去考虑到积分等高数内容。但是如果想搞图形学,矩阵线性代数,高数必须要有一定的功底
  • 算法:常见的排序,查找需要理解并掌握,进一步常见的还有分治,贪心,动态规划,有时候现学现卖也是可以的。另外,除了这些基本的算法,在游戏领域还是有很多其他领域不太常用的算法,比如八叉树查找,碰撞检测,A*。还有一些很特殊的情况需要开发者自己去寻找合适的算法。
  • C++:基本语法,代理,命名空间,const,继承,内存结构,虚表,引用,断言,宏定义等
  • 数据结构:首先是掌握链表,数组,队列,堆,栈,图,树等数据结构,然后是各种排序,查找,遍历等算法。这些掌握了以后可以很快的熟悉stl或者类似的基本库原,用的时候可以更准确的选择合适的数据结构
  • 设计模式:一般来说,我们需要设计模式来快速的搭建游戏逻辑框架,比如前面提到的各种逻辑系统。而且还需要通过设计模式来理解引擎各个模块的设计思路。当然,如果你想设计游戏引擎,那更不能少了设计模式了。
  • 对引擎各个模块由一定深入的理解:这个不用多说,看一遍游戏引擎架构吧,不理解写出的代码经常会出现各种问题(比如同步问题),编辑器各种功能也用不好。
  • 内存管理:可能很多引擎或者语言已经尽可能的帮你处理内存了,但是你难免需要在一些特殊情况下自己处理,内存池技术,各种C++的new的使用,不得不会。
  • 对开发工具的熟悉:这里并不是指只是对某一个引擎使用熟练,而且对不同引擎相关的内容都有一定理解,可以很快的触类旁通。
  • 编译原理,链接,第三方库:经常会遇到各种链接错误,编译错误,打包错误,这需要你有一定的相关知识与经验去解决这些问题。
  • 性能分析与性能优化: CPU与GPU,渲染批次,渲染实例化,布料优化,网络同步数据量,物理开销等,加载资源优化
  • 对游戏的理解:虽然不玩游戏也一样能参与游戏开发,但玩过游戏的人还是有优势的。最明显的是玩过游戏的人会对游戏有更多的想法与意见,也习惯去主动学习其他的游戏的技术与优点。(程序这样,策划更是如此)
  • 开发经验:这个就比较宽泛了,难以只言片语说清。比如你的游戏莫名其妙的出现了一些bug,新手完全无从下手,而有经验的人会有各种手段去调试并解决。经验丰富的老手有时真的抵得上N个新手的,所以这需要各位不断的学习与实践了。

技术点:

  • 存储与序列化(protobuf)
    单机玩家的游戏存档如何实现?通过序列化 socket 搭建基本的TCP/UDP通信系统
  • 反外挂
    保证游戏公平性,一般服务器上做各种校验措施
  • 多线程
    一般用于渲染,物理,网络同步等,减少开销,增加cpu利用率
  • 打包流水线,包的大小优化,包的多层递归引用优化等
  • 数据库
    什么数据要存在数据库里面,什么存在本地就可以。应该选择什么数据库?之后会不会出现游戏合服?
  • CDN /服务器的部署与运行等
    这个也很复杂,又要考虑成本又想容纳更多玩家(网游),有时可能需要用到CDN技术来优化网络同步,另外还要考虑成本等问题来决定是否租用云服务器

其他:

  • 版本控制
    一般使用git或者svn
  • 性能分析工具
    前面提到了性能优化,优化前我们需要各种工具来辅助我们找到影响游戏效率的瓶颈
  • 配置
    需要大量策划配置的数据存放在哪里?配置文件?XML?这需要构建一套小的系统(或者引擎提供)
  • 声音数据处理
    一般引擎提供基本的音乐与音效处理,但是有的引擎对音频方面处理的更深入,效果更好
  • 平台对接
    游戏需要发布到不同的平台,这个平台不仅仅指硬件平台(Android,iOS,PS4,PC,XBOX)还包括各种软件平台(各种应用商店,如PC上的Steam,WeGame。安卓上的应用宝,各种软件管家等)该过程其实也相当繁琐,有一些平台的审核非常严格,需要积累一定的经验才能快速的处理相关内容
  • 国际化与本地化
    简单来说,就是不同国家的语言版本不同。如果你的游戏不是只卖给英国美国,你就不得不面对本地化,坑很多
  • 日志系统
    开发与运营 游戏上线一定很多bug,你又没办法去玩家电脑上调试,如何快速定位bug,日志系统很有效
  • 调试
    开发期 断点调试(最有效)、日志调试、dump调试 、控制台调试,可视化调试(在场景内绘制特定的几何体),截图录屏调试(一般用于调试渲染,动画等)
    上线期 日志调试、服务器可以用dump调试,也可以想办法把客户端的dump传送到服务器 、管理员GM调试(非常重要,可以避免重启服务器)
  • bug处理
    有时候已经发生的bug无法改变,又不能及时修复,想要弥补玩家,可以通过GM来给予玩家补偿
  • 脚本
    简单逻辑代码,热更新
  • 工具开发
    提高美术策划的开发效率

游戏开发入门系列文章到这里就结束了,希望大家有所收获,也欢迎各位提出问题与意见来完善该系列的内容~


上一篇:游戏开发入门(十一)游戏引擎架构

原文链接(转载请标明):http://blog.csdn.net/u012999985/article/details/79369679

游戏开发入门(十二)游戏开发全总结相关推荐

  1. 【Visual C++】游戏开发笔记十二 游戏输入消息处理(一) 键盘消息处理

    相信大家都熟悉<仙剑奇侠传98柔情版>的人机交互方式,用的仅仅是键盘.在那个物质并不充裕的时代,一台配置并不高的电脑,一款名叫<仙剑奇侠传>的游戏,却能承载一代人对梦想的追逐. ...

  2. 【Visual C 】游戏开发笔记十二 游戏输入消息处理 一 键盘消息处理

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  3. acr单片机c语言开发入门,AutoCAD2013二次开发C语言第一个ObjectArx2013程序HelloWorld.docx...

    AutoCAD2013 二次开发 C++语言的第一个 ObjectArx2013 程序 HelloWorld .八,.■ 刖言 AutoCAD2013 二次开发 C++语言的 ObjectArx SD ...

  4. 【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 本系列文章由zhm ...

  5. 【转】【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI

    原文连接:http://www.cnblogs.com/dyllove98/archive/2012/04/07/2461865.html#commentform 我们常常听闻AI(Artificia ...

  6. 【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI .

    本系列文章由zhmxy555编写,转载请注明出处.  http://blog.csdn.net/zhmxy555/article/details/7434317 作者:毛星云    邮箱: happy ...

  7. [原]【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI

    本系列文章由zhmxy555编写,转载请注明出处.  http://blog.csdn.net/zhmxy555/article/details/7434317 作者:毛星云    邮箱: happy ...

  8. 游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI

    我们常常听闻AI(Artificial Intelligence人工智能)这个名词,比如Dota里面的AI地图.写这篇文章的时候,最新版的Dota AI是6.72f,估计过几天6.73的AI也要出来了 ...

  9. Android开发入门——推箱子游戏开发实战(十二)

    绘制游戏局面 本文是推箱子游戏程序开发的第七步.系列文章前五篇描述准备工作,故本文编号是(十二).本文讲解如何绘制游戏局面. 本文目标 本文讲解如何绘制游戏局面.游戏局面的示例如图1,图2所示.这两幅 ...

  10. 游戏开发入门(二)游戏中的设计模式

    视频链接:游戏开发入门(二)游戏中的设计模式(3节课 时常:约2小时40分钟) 该视频主要围绕游戏中常见的设计模式展开讲解并实践,需要大家多多实践与理解 笔记与总结(请先学习视频内容): 1.有必要深 ...

最新文章

  1. jsp java数据,jsp怎么遍历数据
  2. DayDayUp:博主,在此,祝愿大家(十五种编程语言输出),2019年春节快乐!猪年诸事大吉!学要有所成,劳要有所获!
  3. Dubbo负载均衡原理
  4. android 实例源码解释,Android Handler 原理分析及实例代码
  5. php实现栏目三种类型,WordPress后台edit-tags.php里无限栏目分类实现
  6. 扩大mysql的cpu_MySQL CPU占用超过100%
  7. linux中编辑好的源如何保存,Linux下, Eclipse C/C++ IDE下编辑好C/C++源程序之后要先保存!!!否则,就会……...
  8. 虚拟化部署----USB Server
  9. 毕业论文答辩技巧及注意事项(附答辩自述模板)~
  10. Android7.0 MessageQueue
  11. 腾讯云学生服务器9元/月
  12. SOM网络(Kohonen自组织网络)学习第二篇
  13. VRRP的工作原理及运用
  14. 【洛谷4920】[WC2015] 未来程序(提答题)
  15. Spark入门实战系列--1.Spark及其生态圈简介
  16. 啥牌子的蓝牙耳机音质好?2023公认音质最好的蓝牙耳机
  17. DTU是什么?浅解DTU
  18. git之如何为github存储库获取sha256哈希码
  19. 国产台式计算机,国产台式机哪一款好?
  20. java stream实现分组BigDecimal求和,自定义分组求和

热门文章

  1. oracle导出数据如何强制停止,强制停止ORACLE数据库
  2. VBA 添加日历控件的操作
  3. linux+批量更改文件名后缀,关于linux系统下批量修改文件名和后缀
  4. .NET Framework 各版本介绍和下载链接汇总
  5. C++ 黑科技-文章生成器
  6. 忘记iCloud密码的解决方案 - 仅适用于iOS 7.1以前(不含)
  7. 美女------聚会
  8. 工业数字孪生系统的实施
  9. easypoi 语法_50张思维导图,初中英语语法全搞定!(建议收藏)
  10. Android修行手册 - Chip监听和ChipGroup监听