Web 程序员开始学习游戏开发的第一步

注意:以下内容只是本人的分析总结,不直接构成指导意见,如果你也是 Web 开发者,也对游戏开发有一点想要尝试的意思,那么可能会对你有点用

以前从来没有计划写游戏的我,过去一个月都在学习 Unity 引擎游戏开发。按照官方教程走了一遍,在这里简单分享一下我在学习过程当中的部分总结

  • 游戏通常是计算密集型应用,Web 通常是数据密集型应用
  • 通常所有的引擎 OR 框架都要围绕一个应用的核心生命周期展开,对于游戏来说是图形渲染,也就是每一帧的渲染,对应到 Web 应用的 Request/Response 生命周期
  • 游戏引擎开发游戏开发是两件不同的事(造车与开车的区别),只有在性能,场景不符合要求的时候它们产生直接关联(游戏开发非常容易遇到性能问题),需要你对引擎进行改造,但是也可以对玩法进行调整进行绕过。很多用 Unity 引擎开发游戏的大型公司都会单独购买一份 Unity 的源码支持,然后对其进行定制化改造,不过对普通的开发者来说,就算你不会开发游戏引擎也并不意味着你就没有办法开发出好的游戏作品,因为游戏创作的本质是艺术创作,引擎只是其中一个部分而已,美术,音乐,gameplay 也都非常重要,尤其是 gameplay 直接定成败。这一点我认为是一开始就需要理解的
  • 如果对游戏引擎感兴趣,涉及的相关知识可以在《游戏引擎架构(第2版)》当中查阅,这是一本非常好的用于理解游戏引擎构造的书

那么如何开始第一步呢?

这个要看你的习惯,比如我喜欢看书,我通常会先去找一本业界口碑还行的书来照着做。这里我选择了 《Unity in Action》第三版,如果你喜欢视频的话,在这里我建议不要看任何国内的视频,这些视频夹带私货比较严重,讲不了几句就让你买课。我们本来就会写 Web 程序,有编程基础,所以看这种信息密度低的视频会非常浪费时间。我的意思是应该直接从官方的 Learn Unity 开始,官方的教程做的非常贴心,甚至还考虑到新版本不兼容会给出版本兼容方案,生怕你学不会。看完后再补充一点油管的内容应该没有太大问题

其他的引擎我还没有试过,目前来说我使用 Unity 进行游戏开发,遇到的一些知识点:

  1. 编程语言 C#,这个不是问题,因为我本来就熟悉一大堆编程语言,所以转移到 C# 是一件非常快的事情,如果你熟悉 Java 的话也不是问题,除非你只会动态语言那么可能需要拿出时间来学习,但是没关系,C# 没想象中那么困难,而且是一门优雅的编程语言,值得一试
  2. Shader,我应该写不到这玩意儿,需要写的时候再研究
  3. Unity 引擎本体 知识熟悉程度,这个没办法快速解决,需要你通过一个一个的小项目来累计经验值,主要是要学习 Unity 当中的一些领域知识,比如GameObject,Scene,Prefab,等等
  4. 游戏领域,刚体碰撞检测 ,物理模拟,Raycast,贴图,3D 模型,瓦片地图,精灵,动画,等等等等,这一部分属于所有游戏领域内的知识,不管你用什么游戏引擎,或者你自己写一个游戏引擎都绕不开的内容,作为游戏世界当中原始存在的东西
  5. 软件工程学,这个就没什么好说了,和 Web 开发是通用的,比如设计模式,业务转代码的抽象水平,重构能力等等等等
  6. 数学,目前在我已经快看完的这本书里,涉及的也就是简单的线性代数中的 dot product 和 cross product 判断角色方向的内容,以及一个四元数镜头控制,因为像一些特别高深的数学知识比如物理模拟,都有 Unity 以组件方式提供,我不会涉及到很深入
  7. 像素画,好吧这个我还没开始,为了给自己一点鼓励我买了一份正版 Aseprite,画了几个小图标练练手,不出意外我肯定会以像素小游戏作为我游戏开发的主要方向
  8. 游戏 AI,这个需要花一点时间来学习,游戏 AI 存在的时间非常久了,最早可以从吃豆人开始,和近些年来的深度学习有本质上的不同

可以看出来游戏开发真的不是一个简单的事情,这个领域是一个为爱发电最多的地方,毕竟大家都喜欢打游戏嘛,自然也就成为了最为内卷的地方,想要靠这个谋生也是最困难的

en...暂时写这么多,想到什么回来接着写

posted @ 2024-05-10 00:40  我听不见  阅读(21)  评论(0编辑  收藏  举报