从建筑师到软件开发者:我的游戏开发之旅

棋牌游戏开发 8个月前 105浏览 0评论

出品 | CSDN(ID:CSDNnews)

人们常说好日子不会持续太久。自从五年前我从架构师转行做软件开发人员以来,我就学到了这一教训。

凭借艺术和设计背景,我通过操作 HTML Canvas 和深入研究编码的视觉效果发现了一个全新的乐趣世界。因此,我对游戏开发产生了兴趣。这只是出于好奇心的一次小实验,但随着时间的推移,它逐渐演变成一种更深层次的追求。这里已经成为我的个人实验室,我将继续在这里融入全年学到的新技术。

这是一段充满坎坷、成功和失望的旅程,但有一件事一直支撑着我继续前行:我对这项运动的热爱。

如果您对此感兴趣,请让我告诉您。

第一年——即兴发挥、适应挑战和克服困难

事情的起因:尽管我的事业很成功,但我却感觉缺乏真正的成就感和幸福感。这让我很疲惫,我知道我必须做出改变。

那时,我已经掌握了一些编程基础知识。我建立了自己的作品集网站(这是建筑师的标准做法),为其他企业开发了一些基本网站,并且对编程略知一二。然而,我从未考虑过将编程作为职业选择,毕竟我已经在建筑领域投入了大量时间。

当时,编程培训机构如雨后春笋般涌现,声称提供大量就业机会。我和附近一家培训机构的人交谈,他们声称提供为期三个月的培训课程,并承诺提供工作。我当时持怀疑态度,但全日制学习似乎是保持专注的好方法,所以我制定了一个简单的计划:全身心投入其中一年,不留遗憾。

课程涵盖了常见的编程语言,例如 HTML、CSS、JavaScript、PHP、Laravel 等,目标是培养初级全栈开发人员(虽然这个称号听起来有点夸张)。然而,其中一位 JavaScript 讲师引起了我的注意。我的注意。

“我不仅会教你 JavaScript,还会教你如何像程序员一样思考。”

这是他的开场白。虽然当时听起来有些俗气,但现在回想起来,我觉得自己很幸运。他不断提出的问题,例如“这是如何工作的?”和“你为什么需要这个?”成为了日常讨论。这种深入的方法引起了我的共鸣,帮助我明确了自己的方向。与“初级全栈开发人员”的称号相比,“初级 JavaScript 开发人员”似乎更合适。

受到启发后,我开始在家里寻找项目。毕竟,你能尝试的项目是有限的,对吧?就在那时,我偶然发现了 HTML Canvas。看到代码以视觉形式呈现,尤其是以游戏形式呈现,真是一种享受。这太神奇了。我对制作像 Pong 这样的小游戏感到兴奋,我被迷住了。我甚至尝试制作俄罗斯方块,并成功了!

那么,在尝试创建 Pong 或俄罗斯方块之后,下一步是什么?对我来说,自然的选择是制作马里奥克隆版!这是一个全新的挑战 - 创建图块、实现玩家与图块的交互等等。看似简单的功能,如交互性和跳跃。值得吗?答案是肯定的!它甚至帮助我在多次被拒绝后找到了第一份工作。

随着培训班的结束,找工作的压力也随之而来,我不想让自己所有的努力付诸东流,于是,我把那个简单的 Mario 项目变成了我的个人网站,用来展示我的编程经验,或许是为了展示自己的能力,或许是为了以后能继续从事这个工作。

第二年——循序渐进,引领变革

在最初的“我现在是一名真正的开发者”之后,我意识到我必须继续成长。那么,下一步是什么?我做过 Pong、Tetris,开发 Mario 克隆版的下一步自然是 Wolfenstein 3D。

由于我已经为我的平台游戏构建了一个基于图块的系统,所以唯一剩下的就是改变它的渲染方式——本质上就是创建一个射线投射引擎。关于这个主题有很多教程和视频,包括约翰·卡马克的一些演讲。我所要做的就是把它变成 JavaScript。

令人惊讶的是,这个过程并不像我想象的那么复杂。事实上,它非常鼓舞人心。当然,它并不完美,但我认为这是一个有趣的实验。当时我并没有意识到,像这样涉足 3D 图形领域将极大地推动我提高作为开发人员的技能。

以下是我的 ScriptenStein 项目的样子。请注意,它仅支持键盘(箭头按钮)控制,所以不要期待太多。

第三年——如果您还没有创建 NPM 包,您真的是开发人员吗?

随着我逐渐适应开发人员的角色并涉足前端工作以外的领域,我意识到我应该继续优化我的游戏,使其更容易更新和部署,并进一步扩展其功能。

今年的主要重点是将部分逻辑提取到一个单独的包中,因为我已经开始考虑在其他地方使用它了。剧透警告:一个移动应用程序,因此 LaikaJS 诞生了。

将游戏逻辑与设计元素分离成为游戏的转折点。这让我能够更有效地专注于每个方面的开发。随着新功能的添加(例如多个背景、音乐、NPC 等),我感到很有动力。重新审视并改进视觉效果。毕竟,为什么只有代码看起来是完美的呢?

您可以在此处查看最新版本。

第 4 年 - 从乐趣到应用实践

我曾参与过多个项目游戏开发,有足够的经验来深入研究 React Native。由于我的游戏有核心 JavaScript 基础,所以我决定将其转变为应用程序。这项任务有多难?事实证明,我大大低估了它的复杂性。

首先最重要的是,没有原生的 Canvas 可用!虽然技术上可以找到一些实现,但性能远非理想。那么解决办法是什么呢?WebGL 成了我的救星。然而,这里有一个问题——WebGL 的学习曲线是我迄今为止遇到的最陡峭的之一。我必须学习 WebGL API、了解 GPU 并实现通用逻辑。值得一提的是,我想直接学习 WebGL 本身,所以我没有选择使用库。

经过一段时间的努力,我掌握了WebGL的基础知识,并成功实现了我想要的所有游戏逻辑!

这容易吗?其实并不。但这值得吗?当然值得!您可以从 PlayStore 下载并亲自体验。

第 5 年——沉浸在 WebGL 的世界中

今年我开始学习WebGL,将我的2D世界转化为3D世界是一件很自然的事情。

为了实现这一目标,我需要真正深入研究 WebGL 和计算机图形学,而不是仅仅死记硬背。Andrew Adamson 的精彩教程对我帮助最大。

今年让我印象深刻的另一件事是我终于开始阅读专门的数学和计算机图形学书籍。虽然数量不多,但对我来说这是一个重要的里程碑。

有时感觉这就像我日常工作中的副业,但我从小就喜欢电子游戏游戏开发,在大学时喜欢 3D 软件,而且作为一名对软件感兴趣的建筑师,我对此非常感兴趣。对计算机图形学的更好理解让我更加欣赏图形工程师的工作。

但无论如何,尽管这个项目仍在进行中,但我对所取得的进展感到非常兴奋。从 Pong 到俄罗斯方块,再到 2D 平台游戏,再到简单的 3D 渲染,现在是一个完整的 3D 世界。

第 n+1 年

转行成为一名开发人员是一个艰难的决定,但我很高兴我迈出了这一步。到目前为止,这是一段奇妙的旅程,作为一名前建筑师,我感到非常满足。软件开发和架构两者之间有很多相似之处,可能比很多人意识到的还要多。

我满怀激动地期待着未来五年。也许当人工智能让所有开发人员都过时时,我将不得不学习新技能。

简而言之,我热爱编程。

你曾经从一个领域转到另一个领域吗?你的经历是怎样的?欢迎在评论区分享你的想法。

参考链接

Laimonas K:

ScriptenStein:

LaikaJS:

这里(第三段):

应用商店:

安德鲁·亚当森(Andrew Adamson):@osakaandrew

这里(第五段):

分享:

支付宝

微信