游戏开发需要具备哪些技术?

  • 游戏开发基础要求高么?
    • 游戏开发的基础功
  • 经常听别人说游戏开发很复杂,复杂在哪呢?
    • 简单总结游戏模块
  • 游戏开发仅仅是写逻辑代码么?
    • 除了写代码,游戏开发员还需要做的事情

游戏开发基础要求高么?

和其他程序猿一样,要想做一名优秀的游戏开发者,底子不能差,算法,数据结构,语言等基础一个都不能少。当然,除了这些基本功外,还要对游戏有比较深入的理解,比如看到一个功能就能猜出或给出一个大概的实现思路。

游戏开发的基础功

数学基础:根据你所做内容来决定,一般上层逻辑比较少的去考虑到积分等高数内容。但是如果想搞图形学,矩阵线性代数,高数必须要有一定的功底

算法:常见的排序,查找需要理解并掌握,进一步常见的还有分治,贪心,动态规划,有时候现学现卖也是可以的。另外,除了这些基本的算法,在游戏领域还是有很多其他领域不太常用的算法,比如八叉树查找,碰撞检测,A*。还有一些很特殊的情况需要开发者自己去寻找合适的算法。

C++(C#):基本语法,模板,代理,命名空间,const,继承,内存结构,虚表,引用,断言,宏定义等

数据结构:首先是掌握链表,数组,队列,堆,栈,图,树等数据结构,然后是各种排序,查找,遍历等算法。这些掌握了以后可以很快的熟悉stl或者类似的基本库原,用的时候可以更准确的选择合适的数据结构

设计模式:一般来说,我们需要设计模式来快速的搭建游戏逻辑框架,比如前面提到的各种逻辑系统。而且还需要通过设计模式来理解引擎各个模块的设计思路。当然,如果你想设计游戏引擎,那更不能少了设计模式了。

对引擎各个模块由一定深入的理解:这个不用多说,看一遍游戏引擎架构吧,不理解写出的代码经常会出现各种问题(比如同步问题),编辑器各种功能也用不好。

内存管理:可能很多引擎或者语言已经尽可能的帮你处理内存了,但是你难免需要在一些特殊情况下自己处理,内存池技术,各种C++的new的使用,不得不会。

对开发工具的熟悉:这里并不是指只是对某一个引擎使用熟练,而且对不同引擎相关的内容都有一定理解,可以很快的触类旁通。

编译原理,链接,第三方库:经常会遇到各种链接错误,编译错误,打包错误,这需要你有一定的相关知识与经验去解决这些问题。

性能分析与性能优化: 主要就是三个方面——内存,CPU,GPU。着手点有渲染批次,渲染实例化,布料优化,网络同步数据量,物理开销等,加载资源优化(包的合并),裁剪,声音文件加载,LOD,美术资源制作规范化等。调试的时候可以使用引擎内置工具,进一步的细节可以采用Intel的VTune工具(有时间我可能写一个相关的使用文档)

对游戏的理解:虽然不玩游戏也一样能参与游戏开发,但玩过游戏的人还是有优势的。最明显的是玩过游戏的人会对游戏有更多的想法与意见,也习惯去主动学习其他的游戏的技术与优点。(程序这样,策划更是如此)

开发经验:这个就比较宽泛了,难以只言片语说清。比如你的游戏莫名其妙的出现了一些bug,新手完全无从下手,而有经验的人会有各种手段去调试并解决。经验丰富的老手有时真的抵得上N个新手的,所以这需要各位不断的学习与实践了。

经常听别人说游戏开发很复杂,复杂在哪呢?

总结来说就是内容太杂,细分又太深。随便举两个技术方向(渲染,AI)就够你无限深入了。还有一些模块,说难不算太难,但是内容相当复杂,需求变更频繁,处理不好就如无底洞一般~

简单总结游戏模块

游戏逻辑模块系统:游戏玩法核心,包括各种武器,状态,技能,背包,战斗等逻辑系统

动画模块系统:状态机,Montage,动画融合,IK等

物理模块:给需要交互表现的对象赋予物理特性(包括刚体,流体,粒子,布料等),调整重力大小等各种参数,调整交互中力的大小,调整物理约束

AI模块: AI导航,与玩家交互等,玩家的很多功能系统也需要给AI来使用,更深层次的可以考虑将机器学习相关的内容融入

UI模块:搭建各种界面框架(背包,捏脸,地图等),非常耗时间与精力,后期需要不断调整
渲染模块:客户端表现核心,不用多说,内容非常多且深

网络模块:底层架构,同步,网络连接

场景模块:包括地形,关卡,植被,角色管理与优化等

输入与输入处理模块:将玩家输入处理转换成逻辑,需要注意的有组合键,输入法切换等

游戏登录与更新:一般这是专门的工具组来做,比如我们常见的各种游戏登录器,在线更新等。

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

游戏开发仅仅是写逻辑代码么?

当然,不是~~~ 游戏也是一个软件项目,是一个需求变化极为频繁的项目。当你跳出底层的逻辑程序员时,你会发现你还有好多事情要去做。

除了写代码,游戏开发员还需要做的事情

版本控制:一般使用git或者svn

存储与序列化(如protobuf):单机玩家的游戏存档需要通过序列化。游戏中的同步系统也需要通过序列化 对象来搭建

反外挂:保证游戏公平性,一般服务器上做各种校验措施,这个东西真的不容易,而且又麻烦,身边懂得人真的不多,我本身也很希望有高人指点一二

多线程优化:一般用于渲染,物理,网络同步等,减少开销,增加cpu利用率

数据库:什么数据要存在数据库里面,什么存在本地就可以。应该选择什么数据库?之后会不会出现游戏合服数据库合并?合并的Key怎么处理?

CDN /服务器的部署与运行等:这个也很复杂,又要考虑成本又想容纳更多玩家(网游),有时可能需要用到CDN技术来优化网络同步,另外还要考虑成本等问题来决定是否租用云服务器

实现网络穿透 :对于玩家自己开房间类的游戏,需要我们提供网络穿透的手段,才能让两个内网的玩家链接并通信。有的时候,网络穿透技术平台会提供,不需要自己造轮子。

使用性能分析工具:前面提到了性能优化,优化前我们需要各种工具来辅助我们找到影响游戏效率的瓶颈(如VTune)

配置:需要大量策划配置的数据存放在哪里?配置文件?XML?这需要构建一套小的系统(或者引擎提供)

声音数据处理:一般引擎提供基本的音乐与音效处理,但是有的引擎对音频方面处理的更深入,效果更好

平台对接:游戏需要发布到不同的平台,这个平台不仅仅指硬件平台(Android,iOS,PS4,PC,XBOX)还包括各种软件平台(各种应用商店,如PC上的Steam,WeGame。安卓上的应用宝,各种软件管家等)该过程其实也相当繁琐,有一些平台的审核非常严格,需要积累一定的经验才能快速的处理相关内容

国际化与本地化:简单来说,就是不同国家的语言版本不同。如果你的游戏不是只卖给英国美国,你就不得不面对本地化,坑很多

日志系统:开发与运营 游戏上线一定很多bug,你又没办法去玩家电脑上调试,如何快速定位bug,日志系统很有效

调试与维护:开发期 断点调试(最有效)、日志调试、dump调试 、控制台调试,可视化调试(在场景内绘制特定的几何体),截图录屏调试(一般用于调试渲染,动画等)
上线期 日志调试、服务器可以用dump调试,也可以想办法把客户端的dump传送到服务器(做一个内置的自动收集客户端dump程序) 、管理员GM调试(非常重要,可以避免重启服务器)

bug处理:严重损失的bug 有时候已经发生的造成玩家严重损失的bug(如玩家投入大量时间、金钱获取的)无法改变,又不能及时修复,想要弥补玩家,可以通过GM来给予玩家补偿。
游戏崩溃性bug 需要在游戏上线的前两天,把发生概率高的所有Bug通过Dump调试后尽快修复并更新

脚本:简单逻辑代码,热更新

打包流水线,包的大小优化,包的多层递归引用优化:整个项目从编译到配置再到打包需要哪些处理,要注意哪些配置等

工具开发:针对特殊需求开发特定的工具来提高程序、美术、策划的开发效率

当然,上面的内容还远不足以覆盖游戏开发的所有内容。 学习任何东西都需要一个过程,不需要一开始就掌握这么多东西。日积月累,你们都有可能称为一名优秀的游戏开发者。

游戏开发需要具备哪些技术?相关推荐

  1. 游戏开发需要具备哪些技术

    游戏开发需要具备哪些技术 大家好我是艾西,今天跟大家闲聊一下.开发一款游戏在没有参照物或是底板的情况下开发一款游戏都需要具备哪些技术,在开发过程中我们又会涉及到哪些板块或是领域. 一款游戏的开发需要一 ...

  2. 游戏开发需要具备哪些技术_短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?...

    前言 2020 年要属什么最火,肯定是短视频和直播带货了.我自己基本上每天晚上睡觉之前都会刷一会儿 douyin 短视频,不得不承认 douyin 的推荐算法是真 nb ,推荐的都是我的最爱 ? .那 ...

  3. 游戏开发需要具备哪些技术_小程序商城开发具备哪些功能?

    小程序商城开发具备哪些功能?河南互金网络科技有限公司业务范围包括:软件开发.app开发.微信开发.网站建设.微信小程序开发等.在网站开发.APP开发.ERP以及大型软件开发方面积累了丰富的项目经验和技 ...

  4. 游戏开发需要具备哪些技术_生鲜小程序需要具备哪些功能板块?生鲜小程序开发...

    线上生鲜小程序开发让用户购买蔬菜水果更加便捷,不仅可以有利于发展生鲜行业之后的规模,而且也能够吸引更多的用户,低成本获客.那么,这样一款生鲜小程序需要具备哪些功能板块呢? 线上生鲜小程序需要具备什么? ...

  5. 做游戏开发需要具备那些知识或技能?

    做游戏开发需要具备那些知识或技能? 这是我之前在csdn上发的一个贴的名字,今天忽然想起来进行了整理.希望看到关心这方面的人有所启示. 下面是csdner的回复: freezezdj: 游戏分客户端和 ...

  6. 棋牌游戏开发不可缺少的四大技术支持

    随着近几年棋牌游戏大火,棋牌游戏开发技术也在与时俱进,逐步成熟.很多欠缺这方面专业知识的人,都认为其开发是高深莫测,非一般人所能尝试.今天摩天游科技小编凭借十年开发经验,给大家说说棋牌游戏开发所需要的 ...

  7. Java后端开发需具备什么技术?这几个部分你需要关注

    Java后端开发需具备什么技术?对于初学Java并且有志于后端开发的同学来说,需要重点关注以下几个部分: Java开发普遍需要: 1.Java基础 2.数据库 MYSQL/SQLServer/Orac ...

  8. 游戏开发中的新兴技术

    新兴技术的潜在价值正逐渐在世界范围内显现.这就是为什么一些行业正在采取积极措施来整合这些技术.显然,采用新兴技术可能会释放很多价值. 因此,游戏行业可能正在探索整合新兴技术的方法,尤其是与游戏开发相结 ...

  9. android游戏开发原理及关键技术

    一.游戏开发最重要的是游戏逻辑和动画.包括:背景图片控制,动作动画控制,音效控制 1.场景背景图片控制 2.动作动画控制:通过图片来实现动画. 3.音效控制:音频文件. 4.游戏逻辑. 二.游戏的横竖 ...

  10. 最激动人心的游戏开发技术和趋势

    有许多令人兴奋的技术和趋势正在改变游戏.其中包括增强现实.区块链 NFT.加密货币.基于云的游戏和电子竞技.这些技术和趋势将使开发人员更容易为移动和网络平台创建创新游戏.虚拟现实和增强现实 虚拟现实和 ...

最新文章

  1. js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
  2. 怎样查找this的指向
  3. wxWidgets:wxLogNull类用法
  4. 关于gui的skinnableContainer的一点问题
  5. 多选框实现全选_Angular1.x-checkbox-全选amp;单选amp;多选
  6. anacoda2如何连接使用mysql_Anaconda 安装 Python 库(MySQLdb)的方法-(转)
  7. 华农专业课计算机基础,华南农业大学期末考试大学计算机基础试卷.doc
  8. bzoj 4131: 并行博弈(博弈)
  9. wow工程修理机器人图纸_wow修理机器人74a型介绍及图纸怎么得
  10. 常见的传输线阻抗计算软件(轉自笨笨熊的屋屋)
  11. 思科模拟器Cisco Packet Tracer 7.3.0安装配置
  12. 性能测试实战(一):性能测试入门
  13. 基于VPX总线架构下的Virtex-7与C6678信号处理的VPX功能板简介
  14. python实现下载压缩包并且解压
  15. 从三大方面,分析 to B和 to C产品的区别与联系
  16. 计算机网络多项式的定义,多项式
  17. 三-五功能/半亮/25%亮/全亮/爆闪/SOS_专用应急灯手电筒IC方案
  18. android用来管理通知,Android 中通知的基本使用
  19. AWS 中的 Linux 堡垒主机
  20. ATFX:中国10月CPI增速2.1,USDCNH稳定在7.2附近

热门文章

  1. 企业如何做好数据防泄漏需求分析
  2. 仙人掌相关问题的处理方法(未完待续)
  3. STM32+IAP方案 实现网络升级应用固件
  4. 大学必备C语言基础知识(一)
  5. AI如何识别西瓜和冬瓜?
  6. 注册微信公众平台测试账号
  7. oracle分时分段表示,管理信息系统试题及答案三套.doc
  8. 小学计算机课后作业,“互联网+”背景下小学信息技术课后作业设计研究
  9. html编写红头文件
  10. 简单谈谈阿里云和腾讯云的差别