我编写游戏代码已经好几年了,但有时我想知道,作为这个行业的新手,给自己一些建议是否会有帮助。
因此,这篇博客主要是想分享一下我对于进入游戏编程的一些想法。
本文是在爱当的支持下撰写的。如果你喜欢我的工作,请考虑在爱当上支持我。
选择语言时,我们建议从Java、C#、Lua、Python 或JavaScript 等高级语言开始。在此期间,您可以学习使用几种游戏引擎。如果你喜欢游戏并且正在学习编程,你可能不喜欢一直打印文本而更喜欢输出图像。
也可以直接启动对应语言的游戏引擎,制作几个小demo来了解游戏的结构,但游戏引擎的缺点是API太多,上手比较困难。
游戏引擎的优点是创建游戏速度快,但整个引擎还是有点大,不适合学习编码。
然后,您可以使用pico-8、love2d、pygame、SDL 或直接使用JavaScript 与画布交互并创建测试您的编程技能的游戏。
C语言(包括C++)可以放在后续的学习中,将帮助你理解C语言的基础知识。同样,指针允许直接访问内存,这在其他语言中很少见。虽然你可能总体上没有意识到它的威力,但当你面对GBA和NDS等资源受限的系统(需要手动内存管理)时,你无法回避C甚至汇编语言。
在学习编程之前,我是一个热爱读书的年轻人。因此,当你第一次开始学习如何编写代码时,可能看起来像是你读了一本书并且无需练习就理解了它,但实际上你仍然必须开始使用它才能完全掌握它。
当您开始编写代码时,最好在学习时牢记问题。编程实际上是为了解决复杂的问题。例如,在创建一个小型演示时,您可能会考虑以下问题:
如何显示图像/精灵
如何播放帧动画
如何控制两个物体之间的碰撞
当两个对象发生碰撞时,其中一个对象被销毁,创建一个对象来播放帧动画的特效,然后在播放完成后销毁。
如何播放音乐音效
如何为背景层创建滚动效果
如何处理档案(数据持久化)
您稍后可以考虑的一些问题包括:
如何区分哪个精灵先绘制,哪个精灵后绘制(绘制层次)
每次播放特效都生成一个对象然后销毁,是不是很浪费内存? 可以一次生成多个对象并重复使用吗(已经引入了对象池)?
如果我归档,如果A在B再次写入归档之前写入归档,会出现问题吗(文件系统使用单例)?
不要沉迷于OpenGL 游戏行业流行的图形。它可能看起来很高级,但对于初学者(以及非初学者)来说,您需要更多地关注游戏玩法。
在我开始写代码后不久,我拿起OpenGL红皮书,读了它,但什么也没学到。
最好从简单的2D 开始,而不是从一开始就考虑3D。这个时候,我们建议您看一下《代码与游戏人工智能》的精髓,以提高您的编码能力。
即使您想学习图形中的着色器,我的建议是首先学习如何使用Unity 创建一些着色器(我推荐Unity Shaders 和Screen Effects Development Tips)。创建一些比较特效后再回来。那些使用Pipeline Opengl 的人将会印象更深刻。
不要被游戏引擎束缚。当今的游戏引擎非常有用。创建软件的目的是让软件变得越来越容易使用。
原型模式:这个最早出现在Cocos2d-x中,是一个用于实现克隆当前对象的接口。这在现实游戏中很常见。例如,在GBA的《木叶战记》中,火影忍者可以使用影子分身来生成新角色,但他们的攻击力和生命值都会减半。 Unity(大概)在将预制件从项目窗口拖到场景中时使用了类似的想法。
对代码整洁度的关注是经验性的,我们不能说它做得很好。保持代码可读的目的是让您或其他人稍后回来阅读时能够理解它。需要将职能保持在单一职责之下。如果你发现你的代码被写了很多次,你应该考虑是否应该将其包含在一个函数中。您需要了解的是,总会有错误。如果您在编写代码时稍微小心一些,那么以后的维护和重用会相对容易。
有关更多信息,请查看代码百科全书、如何清理代码以及此视频。
最后,我希望您能享受游戏编程的乐趣,因为创建游戏很有趣,编写游戏代码也很有趣。
2023/12/23
编码游戏玩家
推荐书籍游戏设计、原型设计和开发
游戏程序员的数据结构
游戏编程模型
代码百科全书
代码整洁度
游戏人工智能编程案例亮点
代码的本质:通过编程模拟自然系统
游戏编码完成
游戏编程算法和技术
面向游戏程序员和艺术家的着色器
开发Unity 着色器和屏幕效果的技巧
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/627667.html