想学习游戏开发需要具备哪些基础才能学?0基础能学吗?
1. 如何系统地自学游戏开发?
我的建议是先学习使用成熟的游戏引擎, 自己或者组队制作几款小游戏, 把游戏开发所涉及的各种知识有个概念上的了解, 再选择自己感兴趣的深入学习. 当然, 主修游戏玩法也可以, 在不断地优化和提升的过程中, 肯定会遇到技术瓶颈, 那时候就有学习和改进的动力了.
2. 自学游戏开发应该自上而下还是自下而上?
虽然我自己是自下而上的, 但是我更建议自上而下. 因为自下而上的话, 更多的是在学习底层技术, 却与游戏相关性不大. 很多人可能很想做游戏引擎, 但是不了解游戏的人做出来的引擎是没人用的, 建议还是先对游戏制作的各方面做一下了解, 再去学习会少走很多弯路.
3. 建立在有足够的耐心逐步学习的基础上,应该先打好图形学基础再开始游戏开发吗?
图形只是游戏的一部分, 不是游戏的全部, 而决定游戏画面好坏更多的是美术而不是程序. 而且图形做到后来会极大地依赖数学, 我个人就是因为这个限制住了提升空间. 不只是图形, 计算机的各科课程在游戏开发中都会用到, 理论基础都很重要, 这决定了你之后能够达到的高度。
尝试过directx加win32编程的。
1.先学习基础的程序算法和原理,然后学习dx的2d编程,写个小程序,包含一些简单的图像处理的函数,从放大缩小到旋转到色相处理等等,能将多个图像系统的组合处理的。例如控制一个小人在屏幕上移动,能发射直线的子弹,子弹打到墙上会消失等等。
2.找一个小游戏,例如网上各种flash小游戏(因为可以直接反编译里面的资源出来用,方便),防照一个写出来。写的时候可以先用暴力方法写,然后再转换成面向对象的写。例如我当时就抄了一款打地鼠游戏来练手了,里面有20多个关卡,有不同ai的地鼠和boss,还有道具商店和秘籍等等,都全部完完整整的写了一遍。简单点的话不妨写一个flappy bird也不错啊。
途中还需要补充学习一些音频和输入设备的处理方式。
3.最后咯,就开始进军3d了,当年有两本很出名的书的,不过名字我忘记了,叫什么windows游戏编程啥的,一本是2d一本是3d的,其中3d那本是从3d图像基础原理开始教起的,挺有意思的,现在很多3d开发教程都只是直接教你用api。
之后同样也是自己动手写一个游戏,不过这次可以自己去想一个简单的游戏去写了。途中可以考虑一下某些游戏的玩法是怎么写的,因为我当时写的是一个很挫的格斗游戏,但里面思考怎样去写两个技能碰撞的,写拳王式的搓技能,dnf式的技能中断,都是很有趣的事情啊。
那么接下来介绍一些相关知识:
1. 玩法程序员: 这类程序员更加接近游戏的本质: 好玩.。
用途: 需要对游戏玩法本身有深刻了解. 平时工作与策划(游戏设计师)紧密相关。
你需要看懂最基本的游戏需求。
游戏设计是一个不断打磨优化的过程, 所以玩法需求会经常变动, 导致程序也要不断地调试重构甚至重写. 另外, 不同游戏玩法在程序实现上的差异巨大, 所以针对不同需求进行建模的程序设计能力是需要长时间的积累和学习的, 所以建议尽量主修一种玩法.
2. 引擎程序员: 这类程序员更加喜欢技术, 而游戏引擎涉及的计算机技术非常广泛, 几乎能覆盖所有你能接触到计算机学科. 所以说, 这方面对于理论基础要求非常高, 需要不断地去学习. 图形, AI, 动画, 物理, 特效, 交互, 网络等, 每一部分能精通已是不易, 所以一个人写一个引擎是不现实的。卡马克都说了, 造火箭比写引擎容易多了,但是这些技术能够掌握一两种, 就可以成为游戏程序员的核心竞争力, 所以看个人兴趣选择性的深入学习是一个比较好的方式.
3. 后台程序员: 国内的游戏都是以网络多人游戏为主, 所以游戏服务器技术说是世界领先也不为过. 由于很多网络游戏的开发分工比较专业化, 通常会分化为前台程序员和后台程序员. 后台服务员通常都是命令行式的工作界面, 以linux, 数据库, 网络, 分布式, AI, 安全等做为技术基础, 技术的更新没有前端变化快, 可以不断地积累经验, 但是与游戏制作的关联相对少一些.
4. 工具程序员: 其实就是把游戏开发过程中的各种浪费时间的, 重复性的劳动工具化, 提高制作和开发的效率. 很多工具是游戏引擎的一部分, 但是引擎提供的功能一般是通用的, 针对特定游戏玩法会有特性的工具. 这类程序员需要对游戏的制作流水管线比较了解, 善于发现制作瓶颈, 并使用程序制作工具来优化制作流程.
5. 技术美术: 其实一般会把TA(Technical Artist)划入美术分类中, 但我也见过一些喜欢图形和美术的程序员转职成技术美术. 这个角色在3D游戏项目中非常重要, 因为很多玩法程序员对美术制作和3D引擎并不是很熟悉, TA相当于两者之间的桥梁, 能够在理性与感性之间做出平衡. 所以技术美术不但需要了解图形渲染和引擎技术, 更需要掌握制作流水线, 动画特效, 概念设计等, 基本上算是综合能力的一种体现 .
6. 主程序: 一般会把主程序视为所有游戏程序员的Leader, 都是经验丰富的程序员担任. 通常会设计程序的架构, 并兼一定量的项目管理。
希望可以帮助到你吧!