当然,你不需要从小就是游戏玩家才能长大并成为开发人员,成为游戏玩家也不会自动为你铺平技术职业的道路。
但是两者之间肯定有很多重叠之处。
在听了 Command Line Heroes 的第一集,并阅读了 Ross Turk 关于 MUD 如何引导他走上编码职业道路的故事之后,我思考了一下游戏如何影响了我自己的技术之旅,以及它如何引导我走上开源职业道路。
对我来说,第一款重要的游戏是 魔兽争霸 II。 当然,我之前和之后都玩过游戏。 但不久之后,我的家人用一台速度飞快(相比之下)的 486 PC 取代了我们忠实的 Apple IIc,它具有惊人的功能,例如彩色、声卡,甚至还有一个 2400 波特的调制解调器 (这大约需要三个月才能下载相当于今天 Netflix 一小时的视频)。
魔兽争霸 II 是我真正爱上的第一款游戏。 这是一款实时战略游戏,在游戏中,你控制兽人或人类军队相互战斗,试图控制艾泽拉斯,这与多年后诞生的 MMORPG 魔兽世界的背景故事相同。
毫无疑问,魔兽争霸 II 本身没有任何开源之处。 在那个每款游戏都是专有盒装游戏的时代,它是一款专有盒装游戏。 它的引擎、图形、声音、格式以及与之相关的一切都尽可能地封闭,并且它只能在专有的 Microsoft(以及后来的 Apple)平台上运行。 (在那些日子里,Linux 因其面向休闲用户的图形功能而闻名。)
但是,如果没有这款专有游戏,我可能永远不会迈出第一步来探索我的电脑和更广阔世界的底层技术。
在 1998 年的夏天,在游戏首次发布几年后,我加入了一个游戏公会,并首次尝试社区管理,随着我晋升并管理全球各地的魔兽争霸 II 玩家小队,最终晋升为由数十名忠实玩家组成的小型组织的领导者。
我自学了 HTML,以便设计公会的主页。 我这样做时使用了所有可怕的东西,例如动画 GIF 和 <blink> 标签以及自动播放的 MIDI 背景音乐和 JavaScript 弹出窗口,这些弹出窗口除了欢迎你访问页面外,没有任何实际用途。 通过大量的反复试验,以及大量借用和修改其他人的代码片段,我设法拼凑出了一些东西。 事实上,很容易论证,如果不能看到和借鉴他人的代码,我就无法构建它。
最终,这导致我想添加留言簿和访问计数器,甚至最终添加在线论坛。 在此过程中的某个时候,这要求我弄清楚一些关于 Perl 和 shell 脚本的知识,以及 Apache Web 服务器中的 cgi-bin 目录是做什么用的,以及托管我的网站的这台 Linux 机器上的这些“文件权限”到底是什么。 (而且,Linux 和 Apache 到底是什么?)虽然我不记得我第一次明确看到其中一个脚本在开源许可下是什么时候,但我确实知道,如果不是因为有源代码访问权限和一个社区在背后支持,我永远不会弄清楚这些东西是如何工作的,如何配置它们,以及如何修改它们以满足我的需求。
而且我对游戏本身也不满意。 当然,它附带了一个关卡编辑器,但我想得到更多。 最终,我发现自己加入了一个社区,该社区的人们使用十六进制编辑器来解码、记录和共享游戏的文件格式,这使像我这样的人可以编辑游戏的几乎每个方面,从设计到它的工作方式。 记录格式让我意识到访问软件内部结构、了解其工作原理并能够分享你的更改是多么重要。
后来,我甚至发现自己在测试和记录名为 FreeCraft(后来更名为 Stratagus)的游戏引擎的开源重写方面提供了一些帮助。
所有这些经历都导致了我青少年时期的愿望,即成为一名游戏开发人员,自学一切关于编写游戏的知识,首先是 QBasic,然后是 Pascal 和 C。 虽然我最终在大学里追求了其他爱好,并且游戏开发人员的职业道路从未实现,但我在这个过程中学到的技能一直伴随着我。 我对分享和社区的欣赏也是如此,这是开源运动的两个基本基础。
同样重要的是,它激发了人们对事物运作方式的好奇心,以及拆开它们、摆弄它们并希望改进它们的愿望。 很难想象在一个你无法在机箱下捣鼓的世界里如何真正了解技术。
一方面,感谢一款专有游戏成为我开源生涯的垫脚石感觉很奇怪,但另一方面,我们几乎所有人都有一个在我们开源觉醒之前发生的专有软件故事,为什么它不会是一款游戏呢?
所以现在我很好奇。 游戏在你的开源之旅中扮演了什么角色? 为什么不在下面的评论中分享呢?
3 条评论