我有点惊讶没人关心。我想可能是外面的项目太多了吧。两年前我曾把这段代码喂给Claude,但它既无法更新,也无法将其翻译成另一种编程语言。
我至今没见过类似的东西。它本质上是一个2.5D引擎,涵盖了从1D、2D到OpenGL 4.0(正好在Vulkan之前)的所有技术。
其中一部分我"移植"到了GameMaker Studio。
如果存在一个超级智能AI,我想我会请它将其翻译成SDL/C++,或者让它在GameMaker、Godot或Unity中实现。我确实看到了一些为Unity创建库的可能性。
结果发现,这个引擎的大部分功能都针对Windows 7及更早版本的特性。我的原始版本基于Proce55ing(约2003年时的Processing旧版本)。
整个项目始于某一天的OpenGL三角形演示程序。
OpenGL部分被重写了无数次。我几乎把所有内容都建立在一个我称为"世界着色器"的基础上,它整合了许多技术,但大多数技术只在当时是高效的。我编写这个引擎时抱着百科全书式的想法,涵盖了从游戏早期到大约2018年的所有技术。微软因为对OpenGL和GLSL的轻视,给我的工作制造了很大困难。此外,他们的编译器漏洞百出……缺失多余的逗号,也不会提醒你所有问题……我现在想知道在Linux/SDL上工作是否会更好,但重新梳理一遍所有内容并不是我的优先事项。
我曾希望将其开源后能带来一些成果,但只有一小部分进入了商业和开源项目。那些部分很棒,但很多内容在现在看来已经过于"口语化"了,因为它们变成了基于我个人需求的惯用写法。
举例:首先我写了一个简单的2D精灵处理器。然后我写了一个带"活动区域"的2D精灵处理器,这样离屏幕太远的东西就不会占用计算资源(用于制作像马里奥兄弟那样的游戏)。接着我写了一个庞大的2D分页世界文件系统,以支持巨大的世界,并将其内建进去。然后我让它变得可封装,等等。框架之中还有框架。粒子系统和粒子框架也是如此。
我编写了无数个用户界面。先是"快速粗糙版",然后是"AAA品质版",接着是一个超级快速且自动格式化的版本,使用装箱算法,这样你甚至不需要再制作表单了。
这确实帮我找到过几份工作。我把它授权给一家初创公司以换取股权,但这家公司在玩具反斗城美国门店关闭后倒闭了。这让我被聘用参与Poser和Moho Anime Studio的开发,但那份工作只持续了两年。之后我又找到了一份工作,但那时已经与这个引擎关系不大了。
一直以来我在Atari VCS兼职,最近还在XBOX上发布了一款8位风格的独立游戏。我手头有几个项目在进行,包括一个为Rubiks WowCube设计的游戏创意,目前处于早期缓慢开发阶段……如果没什么别的事,我希望今年冬天能专注于此。
现在我又漂泊不定了,真正成了"失落宇航员",在科技行业失业已久,正在寻找一家有趣、友善的游戏公司,希望打造下一个《矮人要塞》之类的作品,并且待遇不错、没什么麻烦事。如果想聊聊,可以联系我。
来自GitHub:
失落宇航员游戏创建框架:一个庞大的1800多个类、1400多个文件的盛宴,包含OpenGL、WinAPI、OpenAL和许多其他功能,在Visual Studio中编写了十多年!
这就是失落宇航员游戏创建框架……附带商业版游戏Apolune(删减了可商用版本中的美术资源)作为实现示例,以Visual Studio(2017)解决方案的形式组织。
项目历史(简要时间线)
让我们简单回顾一下这个项目的历史,直到2020年10月30日之前,它一直都是完全保密的闭源代码。
2005年
我在Processing中做一些工作,制作了一些小游戏和视听辅助工具。
2008年
当我最初开发这个引擎时,它是用纯C语言编写的,使用了名为Agar GUI的工具包。我曾在一个名为Avenzoar数字病理学工具(链接已移除)的博士后研究项目中使用过Agar GUI,在那份工作结束后,我想开发一款名为《星际帝国》的游戏,作为一个"快速六个月的 project"来扩展我之前使用Processing IDE(Java)所做的工作。
2009年
我对Agar的极其古怪的世界感到沮丧,也想起了当初为什么停止使用C语言开发游戏,于是我发现了"增强型C"和Ecere SDK。这个工具包的诱惑在于,我可以用更现代化的语言(而且相当精巧)在Linux和Windows上无差别地开发,只需切换一个开关就能支持OpenGL或DirectX。我很快将引擎迁移到了"eC"(增强型C)(链接已移除)——但在学习OpenGL和eC大约一年后,我意识到必须深入掌握C++,因为与我认为"资金充足且组织良好"的商业平台(如微软Visual Studio)相比,Ecere的支持非常有限。
2010年
在将所有工作从eC转写成C++,并通过在Visual Studio中"从一个三角形演示程序"开发OpenGL引擎来满足大部分需求后,我决定开发一款名为《空中帝国》(链接已移除)的游戏。大约在这个时候,我为OpenAL生态系统发布了libALgore(这是对美国前副总统名字的玩笑),它在C++中实现了对libALURE的面向对象封装。
当时我使用的是Visual Studio的第一个"免费"版本,名为MS Visual C++ 2010 Express Edition。不幸的是,微软的这个"免费版"存在一个固有缺陷:微软团队无意中将C#的规则与C++的规则混在了一起。因此,即使经过多年的努力,我仍然不断遇到未定义行为。在我联系微软后,三位副总裁向我道歉,并为我刚起步的游戏开发公司提供了"终身专业级支持"。他们还引导我进行了一系列复杂的补丁来修复问题,但最终我还是转向了更新的Visual Studio版本。
2013年
自从开始在Visual Studio中工作,三年过去了。我的"六个月游戏项目"远未完成。此时,《空中帝国》(EITS)及其所在平台Desura的未来都充满不确定性。EITS包含了我一些最好的球体和星体视觉作品,以及我在3D编辑器中所做的一些更复杂的工作,但我遇到了一个可能玩过《无人深空》的玩家都熟悉的瓶颈。我意识到,程序生成的宇宙要么对一个孤独的游戏开发者来说范围太广,要么需要20年才能完成。当时我学到了关于艺术和程序生成世界的深刻一课。我决定"暂停"EITS,转而完成一款名为《帝国边缘》的"传统太空游戏"前传。我在图形和3D方面学到了很多。经过无数次试验和挑战,我拥有了一个代码如钻石般完美的引擎。
2014年
《帝国边缘》正在开发中。我决定——也许我创建自己的引擎是错误的。也许我过头了?博主们曾建议不要这样做。也许我太固执了?我需要支持。于是,我花了整整500美元购买了GameMaker,心想我可以跳过所有引擎开发的地狱,在1年内制作出一款接近我期望的游戏。它将是一款仅限于太空的RPG(缩小范围,收紧目标),并且所有关卡都是为单人体验预先设计的。
嗯,GameMaker 1.2也存在可怕的漏洞!我花了无数个月与GameMaker的开发商YoyoGames沟通。我曾希望他们能雇佣我,因为我能制作引擎,而且我的想法比他们所能相信的还要深远!我最终确实影响了GM:S 2,但这些混蛋连一个免费升级都不给我,还停产了GM:S 1.2(我买的那一版),在我看来,这违背了他们关于终身更新的承诺。他们说这技术上是只针对GMS 1.2版本!!!!什么鬼!!!参见:链接已移除
在GameMaker工作一年后,我再也坚持不下去了。我放弃了它,决定将所有内容重新写回这个游戏框架。我想完成这个游戏!
2015年
今年我将引擎授权给了PieceMaker Technologies Inc.,用于为玩具反斗城零售空间打造游戏化的创意3D打印亭。整个源代码分支(仍为私有)建立了一套获奖的零售环境3D系统,该系统在2016年玩具展上获得了最佳奖项。
我放弃了GameMaker,但继续增强这个框架,并开始用C++创建一个新的《帝国边缘》版本。
2017年
我在参与Poser 3D:角色艺术与动画工作室的工作期间,中断了两年。我实现了更多4.x风格的OpenGL VBO功能,淘汰了大多数旧式功能。
2020年
我决定在Github上发布这个项目。祝2020年10月30日魔鬼之夜快乐。
评论 (0)