大家好!

你们中有些人(大概5到10位:D)可能见过我发帖介绍我正在做的游戏——《太空流氓》。在开发过程中,我这个像素画得挺烂的人开始做一个程序化飞船生成器,初衷只是生成非常基础的飞船,方便我手动"清理"并制作动画。

然后嘛,我不断给更多东西加生成器——船体、引擎、机翼、武器……最后甚至加上了动画和精灵表!

到某个节点,当这个(已成型的)库和GUI应用变得比游戏本身还庞大时,把它独立成单独项目显然比永远嵌在游戏代码库里更合理。

于是,在完成所有原本没打算做的新工作后,我现在把SpectralShipGen和SpectralShipGen Studio作为开源项目发布了!

SpectralShipGen是C++17生成库本身,而SpectralShipGen Studio是独立的GUI应用,可以直观地调试生成器,导出飞船图片和动画精灵表,无需集成库就能用。

从技术角度讲,飞船由种子确定性生成,其外观(以及使用的组件/配色方案和强度)可通过结构配置文件、阵营配置文件、配色方案和大量其他生成设置控制。现有飞船的大部分方面(如引擎、细节、配件、武器等)可以单独重新生成,而不必全部重来,保持飞船整体构造大致不变,只改你想改的部分。

支持保存和加载这些构造的配方,也支持将飞船加入收藏/书签,稍后浏览。

所有飞船都带有空闲动画和(目前实验性的)左/右/上/下移动及开火动画。

我尽量让不同的视觉风格保持广泛多样,而不是做成简单的预制飞船。因此,同样的结构风格或阵营基于不同种子和配置可以产生截然不同的结果。

库本身是独立的,而Studio应用依赖SFML(当然还有库本身)进行图形渲染、按钮交互和所有GUI相关操作。

有趣的是,这次发布中出乎意料多的工作都落到了无聊但重要的类别——回归/性能/鲁棒性测试、建立CI、写(人人都爱的)文档、考虑许可机制等,这样这两者才能作为独立库和独立应用正常运作。

我附上几个生成的动画示例,觉得挺有意思,可以展示输出效果,尽管它们只涵盖了可生成内容的一小部分。

如果有人喜欢看到的成果,并想使用生成的输出——你生成的任何东西都归你所有,可随意使用,包括商业用途。无需署名,源代码许可不适用于生成的图片或精灵表。

最后,我还想提几个重要话题。

我绝不认为这能取代真正的像素艺术家——至少像素画得不错的人手工制作飞船可能好得多。这类工具我认为在以下情况更有用:艺术预算非常紧张时;需要/希望在运行时生成大量飞船时(因为无需将生成的精灵表保存到磁盘即可使用);参加游戏开发比赛急需素材时;或者只是想生成几百艘飞船看看会出现什么奇怪东西时(毕竟这也挺好玩——我可能没少花时间干这事)。

还有一点我想完全透明地说明,因为我知道肯定会有人问——这个项目的开发/代码编写使用了AI辅助。但仅此而已。SpectralShipGen中没有任何生成式AI图像创作,没有使用参考图像,也没有任何预制精灵表或图片被库切割重组。

飞船是由C++代码通过程序化几何、像素遮罩、组件(船体、引擎、细节、武器等)放置规则、基于种子的随机决策等生成的。

使用确定性种子方式的好处是,相同的种子和配置总是生成相同的飞船。

开发过程中使用AI辅助也是我个人更愿意将项目开源而非完全专有的原因之一。这并非对AI辅助软件应如何许可或他人应如何处理自己作品发表声明(那完全是另一个话题)——只是对我个人和这个特定项目而言,这是正确的选择。

如前所述,生成的输出有意不做限制——如果你用SpectralShipGen(或Studio)生成了飞船图片或精灵表,你可以随意使用。用于商业游戏、重新分发、在上面作画、作为占位图——无需署名。

链接:

库:https://github.com/SpectralHorse/SpectralShipGen

Studio:https://github.com/SpectralHorse/SpectralShipGen-Studio

Studio下载(来自GitHub):https://github.com/SpectralHorse/SpectralShipGen-Studio/releases/tag/v1.0.0

我很想听听你的想法——关于生成器本身,以及不同飞船是否在保持主题和系统相似性的同时仍感觉有足够多样性。

当然,如果你用它生成了什么离谱的东西——我很乐意看到!:)