为什么要制作游戏引擎:开发人员5年
#javascript #网络开发人员 #前端 #webgl

他们说您玩得开心时的时间会飞。我肯定可以为此提供保证,尤其是因为我从五年前从建筑师转变为成为软件开发人员。

凭借艺术和设计的背景,我通过与HTML帆布弄乱并探索编码的视觉方面,发现了一个全新的享受世界。因此,我很自然地对制作游戏感到好奇。起初,这只是一个好奇心驱动的一些实验,但随着时间的流逝,它变得越来越多。它变成了我的个人游乐场,我将不断回来添加我全年学到的新酷东西。

旅程的高潮和低点,胜利的时刻和一些重大失望。但是总有一件事让我继续前进:游戏本身。

这是我的故事。

Image description

#0-即兴创作,适应和克服

这一切都像大多数故事一样开始 - 我目前的道路,即使成功,也缺少一些重要的东西:欢乐。它在身体和情感上都耗尽了我。我知道必须改变一些事情。

那时,我在编码方面有一些经验。我曾创建了自己的投资组合网站(建筑师的标准用品),在其他企业的简单网站上工作,并且一般涉足编码。但是我从来没有想到编码是一种职业选择。我怎么能?我已经投入了很多时间来建筑。

大约在那个时候,编码学校浮出水面,有希望获得惊人的机会。我和一些我居住的隔壁的编码学校的人交谈。他们有一整天的三个月课程,可以通过一种“相信我,兄弟”的保证来保证工作安置。我持怀疑态度,但一门课程,就像一项全职工作似乎是保持专注的好方法。因此,我设定了一个简单的计划:一年,全力以赴,没有ragrets。

这些课程涵盖了通常的嫌疑人-HTML,CSS,JavaScript,PHP,Laravel-基本上,整个Shebang都使您成为初级全栈开发人员,即使该标题毫无意义。但是从这一切中,一件事脱颖而出-JavaScript Tutor。

“我不仅要教你javascript。我会教你如何像程序员一样思考。”

那是他的第一句话。那时听起来很俗气,但是回头看,我可以看到我多么幸运。他不断的问题 - 这是如何工作的?你为什么需要这个?是每天的仪式。这种深入挖掘的方法确实引起了我的共鸣,并帮助我意识到,我需要集中精力。 “初级全栈开发人员”的意义甚至不如以前。 “初级JavaScript开发人员”听起来更合理。

受到启发做更多的事情,我想在家工作。我的意思是,只有这么多待办事项清单可以列出,对吗?那是我偶然发现HTML画布的时候。看到代码从视觉上栩栩如生,尤其是在我心中的形式上,真是太神奇了。写下像乒乓球那样简单的东西,我就迷上了。我尝试制作俄罗斯方块,这起作用了!

Image description

那么,在您尝试创建自己的Pong或Tetris版本后,下一步是什么?对我来说,这是一个明显的选择 - 制作马里奥克隆人!这是一个完全不同的挑战 - 创建瓷砖,使玩家对象与它们相互作用,跳跃以及其他所有看起来尽可能简单的东西。它还清了吗?是的,它确实!剧透 - 当然,这甚至帮助我找到了我的第一份工作。

Image description

随着编码学校课程的结束,狩猎的临近,我不希望我努力浪费。因此,我将这个简单的Mario项目转变为我的个人网站,展示了我的旅程。也许只是为了炫耀,也许我将来可以继续研究它。

Image description

第1年 - 小步骤,重大变化

最初的兴奋“我实际上是一个开发人员现在”安顿下来,我知道我必须保持球的滚动。接下来是什么?我已经完成了乒乓球,俄罗​​斯方块,马里奥克隆人...当然是沃尔芬斯坦3d。还可以是什么?

由于我已经有一个基于平台的瓷砖的系统,因此唯一剩下的就是改变其渲染方式 - 本质上是创建射线铸造引擎。有很多关于此的教程和视频,包括约翰·卡马克本人的一些教程和视频。我需要做的 - 将其转换为JavaScript。

令人惊讶的是,这并不像我想象的那么艰难。实际上,这很有动力。当然,这并不完美,但是我将其视为一个有趣的实验。我几乎不知道修补3D图形将成为提高我作为开发人员技能的主要驱动力。

这是我的ScriptenStein。它只有键盘(箭头按钮)控件,所以不要期望太多。

Image description

#2年 - 如果您没有NPM软件包,您真的是开发人员吗?

在我的开发人员鞋上感到舒适,并且在前端工作之外冒险,我意识到是时候优化游戏了 - 使更新和部署更加容易,然后进一步扩展。

今年的主要重点是将一些逻辑提取到一个单独的软件包中,因为我已经开始对使用其他逻辑有一些想法。剧透 - 移动应用程序。这就是LaikaJS出生的方式。

将游戏逻辑与设计元素隔离为改变游戏元素。它使我能够更有效地专注于每个方面。有了新功能(多层背景,音乐,因此NPC),我感到有动力重新访问和改造视觉方面。毕竟,为什么代码应该是唯一看起来不错的东西?

您可以看到最新版本的here

Image description

#3年 - 一切都很有趣,而且游戏是一个应用程序

到我的第四年,我已经从事了几个项目,并获得了足够的经验,可以深入研究本地人。凭借我的游戏的核心JavaScript基础,我决定将其变成一个应用程序。那有多难?哦,男孩,我多么错...

首先,这可能是主要的,没有本地画布!从技术上讲,您可以得到一些实现,但是性能远非可以接受的。所以,你可以做什么? Webgl进行营救。但是有一个陷阱 - 直到那一刻,我一直面临着最陡峭的学习曲线。我必须学习WebGL API,了解GPU并实施一般逻辑。重要的是要注意我想学习WebGL本身,因此使用库不是我想走的路线。

一段时间后,我设法获得了WebGL基础知识并实现了我在网上拥有的所有游戏逻辑!

很容易吗?不,值得吗?哦好!您可以从PlayStore获得它,并自己尝试。

Image description

#4年 - PSST…我听说您喜欢WebGL

在我的第五年中,我开始了更好地了解WebGL的旅程,因为这是将我的2D世界变成3D的自然步骤。

要这样做,我需要对WebGL和计算机图形学非常满意,而不仅仅是在黑暗中戳戳。最帮助我的事情,来自Andrew Adamson
的惊人教程

那不是全部。从今年开始,我也真正坚持我的另一件事是,我终于需要并能够阅读专门的数学和计算机图形书籍。这并不多,但对我来说像是一个很好的里程碑。

有时候感觉就像是我日常工作的绕道,但是长大了,玩电子游戏,在大学中使用3D软件,并且是对软件感兴趣的建筑师,这让我很着迷。了解计算机图形更好使我更加欣赏图形工程师。

但是,无论如何,即使这是一项正在进行的工作,我也很高兴自己可以自己复制这一进度。从Pong到Tetris,再到2D平台,再到一个简单的3D渲染,现在是一个完整的3D世界。

看看here

Image description

#n+1年

转换职业是一个艰难的电话,但我很高兴自己取得了飞跃。到目前为止,这是一次了不起的旅程,我内心的建筑师真的很高兴,因为软件开发与大多数人所期望的相比,软件开发与建筑的共同点要多。

我很高兴看到接下来的5年带我去哪里。也许我将不得不学习其他东西,当AI使所有开发人员都过时 - \ _(â_/p>)

Image description

tldr;我喜欢代码。