提高对ZIG的贡献至200美元/月

2021-04-13 13:58:34

今天,我每月向Zig增加每月捐款到200美元。在Zig之前,我没有在任何开源项目中经济贡献。

在我可以解释为什么我对Zig编程语言及其社区非常兴奋,我需要解释我来自哪里。

Mania Drive是流行轨迹诺维系列的开源克隆。我和我的兄弟姐妹在我们早期的青少年很容易花费数百,如果不是数千个,曼尼亚的几个小时。

回想起来它具有相当糟糕的图形,物理,游戏力学等,但它是可定制的!有一个简单的基于瓷砖级编辑器。我们会花时间建立最令人困惑的,疯狂,不可能的地图,所以我们可以互相挑战。我们会整夜玩它。

对这场比赛的痴迷导致了更多的修改:搅拌机的发现意味着我们可以创建更多的自定义地图,而不是基于有限的地图的地图编辑器。虽然搅拌机UI非常粗糙,但是:

在我发现Mania Drive游戏引擎是开源的,这并不久。

Raydium,Camia Drive后面的C游戏发动机,今天仍然存在 - 开源软件的美女之一!当时,这是关于它只是吹过我的想法:

它支持通过PHP脚本!我用灯堆已经使用了很多PHP,所以我可以在PHP中脚跟发动机的想法是现在吹到现在的14岁的我。

2年后,我得到了iPod Touch,Raydium开发人员刚刚发布了一个演示视频,显示了在iPhone上运行的发动机。 16岁的我以为这对此来说这是一个最酷的事情,尽管我对我的iPod的ipod非常失望我没有mac:

我迷上了这个游戏引擎,我说服了我父亲的同事支付给我建立一个虚拟会议世界

我父亲当时正在运行他许多初创公司 - 它在它背后有一些势头,基本上是一个像eBay这样的平台,但用于销售服务而不是货物。他的几位工作朋友正在为它提供大量的自己的钱。

不幸的是,他们的大部分都是商业运营的大部分都是实际上获得了门的商业运营。然而,幸运的是,这意味着他们遇到了太阳的项目仙境 - 未来的令人愉快的可怕3D虚拟工作场所(否则太阳思想,在他们不得不卖给Oracle之前。)这是可怕的,几乎是一个很好的演示:

它需要像32 CPU和64G内存一样的东西只需8名玩家运行服务器 - 2010年没有小壮举!客户迟到,有虚拟的白板可以画出,但一切都很慢。即使它的VoIP特征也是诙谐的 - 虽然当时很新颖。它全部围绕着一种可怕的经历。

16岁的我说服了我的爸爸和他的同事,而是为了让我建立一个更好的版本:一个使用Raydium,C - 和PHP。

在我有一些项目仙境的业余副本之前,这并不久 - 在许多方面,讽刺地比太阳更好 - 在他人中肯定更糟。它甚至拥有WxWidgets和Python建造的客户端自动更新程序(它只是与SVN客户端共用以下载游戏的最新副本,Hah!)

真相实际上是一个16岁的剧本,来自雷迪姆的各种演示,没有在世界上释放内存或避免堆栈腐败的照顾。

这是在这个时候,我开始真正进入Python:这很简单,我可以真正包裹我的大脑,它很强大。我偶尔进入鸣度并写了OpenGL绑定 - 这次对内存管理更加欣赏。

Panda3D是游戏发动机迪士尼,用于在线创建Toontown Online和Carribean海盗:

它是用C ++编写的,具有Python的自动绑定生成。事实上,发动机的许多部分只是用Python编写,而不是从C ++中使用的。他们最近改变了他们的网站网站,所以我猜它仍然存在。

发现Panda3d为我打开了新的门。现在左右16-17岁,我能够真正获得我的第一次真正的游戏发展品味:我可以在这个 - 在Python中写游戏 - 他们不会以我无法理解的方式崩溃。

很快,我有实际的游戏在作品中。我开始了解为什么绘制命令很重要 - 以及如何理解MIP映射:

在这一点上,我有几个实际上工作的游戏 - 我为自己的工作而感到自豪,甚至已经挂钩了MySQL数据库的多人功能。

对于我的游戏,我只想要我的朋友能够使用聊天框与我聊天。问题是,Panda3D的Python Gui库,DirectGui,渲染文本太慢了。

我尝试了我能做的一切,甚至到了我在论坛上询问的那一点,如果有可能使用多线程绘制文本数字:

有没有办法为熊猫运行所有TextNode.genere()调用在一个单独的线程中?我试图使用direct.stdpy.threading.thread,只会导致死锁,我猜这是我自己缺乏知识。

我没有得到回复。我无法解决这个问题。 “我不能将聊天盒添加到我的游戏”成为我无法解决的问题。

我在一个地点在Python中重写了大多数Panda3d的UI组件(介意您,他们的人写在Python中 - 你不能用C ++使用它们。我不知道为什么我这样做了。)

但我仍然需要一种方法来提出文本。我需要一种制作TextNode.generate()的方法。我现在知道它是从FreeType生成几何和创建一个绘制的一个绘制的绘制呼叫 - 这是超级慢,而且没有帮助我对它的API的天真使用!

严厉的现实是我没有人教我。我花了几个月试图学习C ++,但它是一个野兽(和“迪士尼游戏发动机C ++”,当然,在书籍中找不到C ++的味道。)这不是我可以处理16岁的东西孩子没有任何真正的低级语言知识。

在Python中编写的一部分申请,其中一部分用C ++写了两种非常不同的语言,直到我意识到我_那个潜入这个大型的C ++代码基础,并且没有知识._

谷歌宣布去,我很早就听说过。此时,他们仍然将其作为低级系统语言,是C的替代方案,更好的C.但更宽容,因为它有一个垃圾收集者。

当时来自一个主要的Python背景,这对我来说令人难以置信:我可以在这个中写一个游戏引擎并了解我的代码结束结束,并确保没有单件我不明白。

我在未来4年的生命中度过,几乎100%全职工作在Azul3d,一个游戏引擎,只有在周末在线社区学院度过的最短时间。

我在这段时间里学到了很多东西,关于软件工程,游戏发动机,音频,输入,数学,图像和音频编解码器,搅拌机插件,文件格式,物理和与其他人合作(像NES仿真器这样的一些很酷的东西出了那个)

我学到了巨大的数量,但除了一个有趣的网站和一些相当差的屏幕截图之外,我没有任何东西表现出来(对我所说的每个人的沮丧)

有人在黑客新闻上发布了它,这既令人兴奋,也令人兴奋,但当时对我来说也非常令人沮丧。 我把反馈视为我所做的是错误的陈述,而不是关于如何改进的反馈: 网站看起来很酷,但它为我掀起了一大堆红旗。 如果您真正需要一个表演图形引擎,则无论如何都将是C ++,C或RUTR。 所以,您使用文本编辑器编写您的级别? 这不是程序员,这是为了讨厌自己的人。 垃圾收集器常见问题不一定放心,因为似乎说“通过同一个篮球其他GC游戏平台推动你”。 强制性的防锈游戏评论来到这里。 在Rust中,您有没有GC的代码,但编译器确保一切都被释放。 我不应该有项目的“隐藏”截图。 我担心人们会判断发动机能够基于坏程序主的艺术品:相反,他们判断它没有。

我应该谈到有趣的部分更多:你知道是否有一个D * Lite Pathfinding算法在其中一个火星群中使用,是超级简单的,并处理动态地形?比*和其他变体更好。

我对与搅拌机进行深度集成的游戏发动机的愿景以及开发者首先,在实践中看起来像。

我坦率地说,不应该关心这么多。我以为我做了什么真棒,我让别人的观点对我自己的工作视为负面影响。

这是在这个时候,我基本上决定了:我会为生活做些什么?

幸运的是,在去社区(我以前从未谈过的人)向我伸出并问“嘿,你在做什么?” - 我告诉他们我在学校,并遗漏了我是一名与父母住在一起的大学生,刮胡子,很可能很快就会举行杂货店兼职工作。

我没有来自背景,这会引导我相信我能够在去的生活中,相反,我的父母经常警告我,我不能,我需要进入思科网络基础设施。

我被告知在钝的条件下,我可以通过做我喜欢的事情来刮擦 - 或者杀死我讨厌的事情。我的父母是航空航天公司的机械工程师(我会让你猜猜他们采取了哪条道路。)

比尔的短暂〜20分钟与我谈话,就像我无法想象的方式一样改变了我的生活。我经常想到今天我不会伸向我的地方,我从来不知道如何伸出返回,并以一种对他有意义的方式表示感谢你,就像他为我所做的那样有意义。

我已经了解了这么多的初创公司,是一个良好的工程师,管理,业务运营,云基础设施,团队合作,沟通等,在过去的六年里,我在Soucegraph度过的最后六年。我有这么多的故事,所以很多伟人我有机会因为它而工作。

我们从尴尬的小型启动中没有明确的产品,一个小团队,一个不确定的未来,进入一个庞大的大都市,拥有大量的快乐用户,客户,50mi系列C的资金,并增长了一百多人以上的一百人世界。我在这方面发挥了关键作用,并继续这一天。

让游戏作为孩子的热情变成了使开发者工具更好地制作开发人员的热情。我仍然有很多事情要做。

如果有一件事,我经常返回,始终如一,常常尽管在初创公司中工作 - 这是游戏开发。你很快就会听到更多的信息。

自去年3月以来,我开始基本上工作了两份工作:我每天都在签署SourceGraph的工作之后,我花了大约8个小时的工作,致力于游戏开发。

我比以往任何时候都更加坚定,成功或失败 - 我会尝试。

在Raydium的C API中攻击游戏教会了我的努力,但也展示了我回顾说,如果我有点更多的指导,如果C略微更容易,如果我只知道如何调试C程序的技巧:我将在与之合作方面取得了非常成功的。

通过Panda3D,在其Python API中编写一些体面的游戏,稍后发现我需要潜入这个复杂的C ++核心的这个神奇盒让我相信:

C ++的初级友好不如C.这是一个主要原因,这是由于C ++方言不同:您不会通过进入和阅读关于语言或携带课程的书籍而无法解决Panda3D C ++或Unreal C ++。他们通过语言创建自己的方言。今天有不同的C ++版本,即使您发现的教科书和类也将使用不同的方言。

关于游戏发动机如何工作以及为什么,在线没有良好的教程或解释。我经常发现非常经验丰富的软件工程师,甚至经常工作的人,甚至是经常工作的人,根本就没有体面掌握游戏发动机如何工作。 “你的意思是多边形数量不是很重要吗?!”是最基本的问题之一,现代游戏发动机抽象了这么多的比特,你的普通开发人员只是说:

“游戏发动机只是神奇的超复杂的东西,我永远无法开始理解!只有乔纳森打击等专业AAA工作室和上帝程序员甚至应该试图这样做!“

我不订阅这种信念 - 并相信大多数游戏开发商被抢劫了对他们应得的游戏发动机的适当最终理解。

亲爱的读者,尤其是读者,不了解游戏开发的酒吧已经降低了多远。

在统一中汇集游戏是如此之后,如此之后,今天令人难以令人难以置信,游戏引擎是真正的新的Adobe Flash等效物。

你今天可以拿起那个发动机,你自己戴上了一个愚蠢的小游戏。

有这么多人在一起攻击统一游戏,信息质量有很差。

Unity鼓励攻击事物,以获得快速的演示运行 - 而且显示。游戏开发人员隐藏了他们使用统一的事实,因为它与unity ==低质量的玩家具有如此否定的内涵。

当有一个主要问题时,很少有人理解它被发现。

教人们如何编写良好的软件很难 - 这是我们的客户群(我想象团结/虚幻的说法) - 更轻松地给他们一些类似脚本语言的东西。即使我们的用户不明白所有这些作品,也很好。

教学很难,但如果做得正确是宝贵的。有一个原因是Nehe Productions的OpenGL教程今天仍然受到尊敬:它们是渐进的,并以建筑块的形式教授您以前学到的内容。

有一个原因有许多AAA工作室只需抛出一切,并在下次标题时从头开始。

游戏引擎的脚本语言源于多个欲望 - 最常见的是一些变体:

很多人都有一个可怕的学校经历,他们被教学或C ++,绝对没有了解正在发生的事情 - 并且被告知“这是编程!”

我相信一般来说,用不同的语言写下你的游戏而不是引擎(Unity的C#/ C ++核心模型,Panda3D的Python / C ++核心模型,是 - 也许是Unreal的蓝图/ C ++核心模型 - 我承认的是更好的他们三个)

无论您是有良好的代码或坏代码,良好的蓝图还是坏的蓝图 - 事实就是以完全不同的语言为您的申请的一个部分创造了对学习的重大障碍。我相信这是一件坏事,长期成本超过了益处。

最初,我花了很多时间考虑到那种语言的生锈。这是记忆安全保证对我来说非常引人注目。

我甚至相信我们在SourceGraph中以某种形式采用生锈,我们的语法荧光笔是一个基本写入和忘记的小型生锈HTTP服务器。我们根本没有维持它,超过5年的情况下挺身而出。

但保持它一直是残酷的。我们主要在那里开发人员,尽管许多人都有强烈的愿望来学习Rust,但它们已经无法成功进入Codebase并开始。

Rust的学习曲线是陡峭的。比C ++更陡峭,肯定比C陡峭(尽管有很多,但大规模的缺陷)

我在6个月的上班时花了6个月,试图在编写铁锈代码方面变得精通,我从未真正变得富有成效:定期绊倒在下游依赖性的复杂问题(通常由每个人使用,而是由任何人维护 - 也许没有人维护 - 琅苗应该被重新涂抹在锈廊 - 墓地。)

我喜欢生锈的想法。我喜欢它承诺的东西。我一直在休息6个月,因为我真的希望能够在它中富有成效。

它不起作用。 “我只是不够聪明地使用这种语言”我经常想过。我害怕这将是许多人听到语言的承诺的外带,只是发现另一个“我在学校拿了一个C ++课,这是可怕的”的经验,导致更多的开发人员得出结论“我不好足够低级编程,我应该学习JavaScript“。

我立即跳进社区与作者聊天,尽管它围绕着它 - 并试图了解更多信息,他如何考虑语言等。

我问是否有计划支持原始的多线字符串文字,就像Go一样。我被坚定的人击中了去没有原始字符串文字。“ - 这是我遇到的不友好的社区,围绕着它的争议,以及项目的秘密性质(“我有这个,但我不打算分享”)这让我对其承诺失去了信心。

如果去不是它,Rust不是它,V语言不是它 - 我可以建立吗? 我可以创造“更好的C”我正在寻找? 它会是什么样子? 4个月后,我有一个非常好的画面。 我有一个早期的阶段编译器,用于使用LLVM的语言,并在“更好的C”中了解我想要的内容。 前方有很长的道路,但我有一张照片。 直到.. *猫溢出2800美元的笔记本电脑,用〜4个月的未提交的eBnf Parser发电机煎炸了SSD *是的..没有,那是什么,我想重写所有这些代码。 是的。 这可以。 - 斯蒂芬Gutekanst(@slimsag)5月27,2020 显然,我是个白痴,应该只是git推我的代码 - 或备份我的笔记本电脑 - 但仍然是一个挫折。 我继续寻找这个神话的“更好的c” - 以及在我的球体中一直在出现的一个名字是Zig。 在第3次与我的兄弟分享之前,我没有注意到它,直到我和我的兄弟分享:

“我真的很兴奋。 在我觉得之前,我试图建立的语言是“ 我可以立即在Zig富有成效。 从工作到Zig每天都很容易过渡到Zig。 我不断看到一个主题的“这是一个分散的社区,没有”官方“的东西我们会推到你,我们希望每个人都贡献并真正成为这个的一部分” 如果以上都不说服你,请让我告诉你以下内容:@ziglang是我强烈的第一语言我应该尝试和贡献,我曾经捐赠过的唯一开源项目。 没有别人这么引人注目 - 斯蒂芬Gutekanst(@Slimsag)2020年10月23日 我继续每天在Zig工作,没有计划停止 - 标记我的话,这是一个令人惊叹的语言。 随着时间的推移,我观看并从Zig开发人员阅读了更多内容。 看到了很漂亮:

不仅如此,我开始注意到ZIG基金会实际直接通过捐款支付开源开发人员: ZSF是一个小组织,并有效利用货币资源。 该计划是为了保持这种方式,但我们确实希望将我们未付的志愿者转化为付费维护者,以帮助合并拉动请求,并使播放器进展到1.0。 ZSF是非利润的整个观点是使人们受益。 我们正试图让开源维护人员付出时间。 这是一件如此美丽的事情来看,我希望其他开源社区从这里汲取Zig的课程。 这里的执行是如此重要,到目前为止,ZIG社区的执行在这里令人难以置信。 对我来说,ZIG勾选了一个编程语言的所有方框,可以从根本上颠覆视频游戏的建立方式。 我想看到它成功 - 并使其成功 ......