游戏代码编程入门 游戏代码编程教学


游戏代码编程入门 游戏代码编程教学


游戏代码也写了几年,有时候在想如果现在给刚入行的自己一点建议也许能有一点帮助 。
所以这篇日志主要是分享一下自己对于游戏编程入门的一些想法 。
这篇文章由爱发电支持写作,如果你喜欢我做的事情,可以考虑在那里支持我 。
语言的选择在一开始更多是推荐从高级语言入门,比如 Java、C#、lua、python,javascript 。在这个时期可以配合一些游戏引擎来学习,如果你是因为喜欢游戏才学习编程的可能不喜欢老是 print 一些文字,可能更喜欢输出图片 。
可以直接从对应语言的游戏引擎开始做几个小 Demo 了解一下游戏构造,但是游戏引擎有个弊端就是 API 太多入门有点难……
游戏引擎的优点是做游戏会比较快,但是引擎整体还是略庞大,不适合学习代码之用 。
之后可以使用 pico-8、love2d、pygame、SDL 或者直接 javascript 操作 canvas 画布来制作尝试制作游戏挑战自己编程能力 。
而 C 语言(包含 C++)可以放在后续研究,研究 C 语言可以对语言底层点的东西理解 。像指针可以让你直接访问内存,这在其他语言中是很少见 。可能一般感受不出来它的力量,但当你面对资源紧张的系统(需要手动内存管理),比如 GBA 和 NDS 上面的编程时候就绕不开 C 语言甚至汇编语言了 。
一定要多动手我在没学习编程之前是个爱看书的小青年 。所以在我刚开始学习写代码时候常常就一直看书没有实践,有些东西看似懂了,实际还是要上手操作才能掌握透彻 。
在着手写代码时候最好是带着问题去学习,编程其实就是把复杂问题分解 。比如在制作一个小 Demo 时候可以考虑这几个问题:
  • 如何显示一个图片/精灵
  • 如何播放帧动画
  • 如何控制两个物体碰撞
  • 两个物体碰撞时候销毁其中一个同时生成一个物体播放帧动画特效然后播放完成之后销毁
  • 如何播放音乐音效
  • 背景层滚动效果怎么做
  • 如何处理存档(数据持久化)
而之后可以考虑的问题可能有:
  • 精灵的显示如何分清楚哪个先渲染哪个后渲染(渲染层次)
  • 每次播放特效都生成一个物体然后销毁是不是有点浪费内存,可不可以一次生成多个重复利用(引入了对象池)
  • 存档时候如果 A 写入存档还没结束时候 B 又写入存档会不会出问题(引入了文件系统使用单例)
不要执着于 Opengl游戏行业比较流行图形学,可能感觉起来高达上,但是对于初学者(非初学者其实也一样)来说更多还是应该专注于 GamePlay 。
我在刚开始写代码没多久就跑去拿本 opengl 红宝书在啃,写了一堆代码到头来也没学到什么 。
一开始不要考虑3D 方面东西,从简单的2d 开始比较不错 。这个时候我更多推荐看下代码本色和游戏人工智能来锻炼一下代码能力 。
甚至如果要学图形学 Shader 的,我更多建议是先直接用 Unity 上面先学习如何写一些 Shader(推荐Unity 着色器和屏幕特效开发秘笈),能写一些比较特效之后然后再回头去写那些渲染管线 Opengl 那些会比较有感触 。
不要禁锢在游戏引擎中现在游戏引擎非常方便,写软件的目的就是为了使其越来越容易使用 。
但一直使用游戏引擎对于初学编程的人来说会比较难以提高编程水平 。个人建议是可以从先从游戏引擎入门,然后尝试不使用引擎使用上面提到一些底层点的框架或者工具来制作游戏 。
造点小轮子有助于提高很多人都说不要重复造轮子,但有时候别人的轮子比较重量级不够轻 。自己写点适合自己的轻量级的轮子也对自己编程能力有一定提高,也可以更多享受编程的乐趣 。

推荐阅读