当前位置: 首页 > 科技观察

游戏开发的图形和音乐工具

时间:2023-03-21 15:21:37 科技观察

要在三天内构建一个可玩的游戏,您需要一些快速且稳定的好工具。10月初,我们的俱乐部MarshallGeeksandGadgets参加了第一届OpenJam,这是一场庆祝最佳开源工具的游戏。GameJam是一项活动,参与者以团队合作的方式创造有趣的电脑游戏。Jam一般都很短,只有三天,而且很累。Opensource.com在8月下旬推出了OpenJam活动,共有45款游戏参赛。我们的俱乐部希望在我们的项目中创建和使用开源软件,因此OpenJam是我们想参与其中的自然活动。我们提交的游戏是一款名为MarkMyWords的实验性游戏。我们使用了各种免费和开源(FOSS)工具来开发它;在本文中,我们将讨论我们使用的一些工具以及我们注意到潜在障碍的地方。音频工具MilkyTrackerMilkyTracker是一个软件包,可用于在老式视频游戏中安排音乐。它是一个音乐追踪器音乐追踪器,一个功能强大的MOD和XM文件创建器,具有基于特征网格的模式编辑器。在我们的游戏中,我们用它来创作大部分音乐片段。这个程序最好的一点是它比我们的大多数其他工具占用更少的硬盘空间和内存。尽管如此,MilkyTracker还是很强大的。它的用户界面需要一段时间才能习惯,但对于想要试用MilkyTracker的音乐家来说,这里有一些提示:转到“Config>Misc”。并将编辑模式的控制样式设置为“MilkyTracker”,这将为您提供几乎所有现代键盘快捷键。使用Ctrl+Z撤消Ctrl+Y重做空格键切换模式编辑Backspace删除上一个音符使用Insert插入一行默认情况下,音符将持续到它在该通道上被替换。您可以通过使用反引号(`)键插入KeyOff音符来明确结束音符。在开始创作歌曲之前,您需要创建或查找样本。我们建议您在Freesound或ccMixter等网站上根据CreativeCommons许可证查找样本,并随时准备好MilkyTracker文档页面。它包含无数指向教程和手册的链接。项目维基上的MilkyTracker指南是一个不错的起点。LMMS我们的两位音乐家使用LMMS,这是一种多功能的现代音乐创作工具。它带有一个很棒的样本和效果库,以及各种灵活的插件来生成独特的声音。LMMS的学习曲线出奇地低,部分原因在于其易于使用的节拍/贝斯线编辑器。对于想要尝试LMMS的音乐家,我们有一个建议:使用插件。对于chiptune风格的音乐,我们推荐sfxr、BitInvader和FreeBoy。对于其他样式,ZynAddSubFX是一个不错的选择。它带有多种合成乐器,可以根据您的需要进行更改。图形工具TiledTiled是开源游戏开发中流行的瓦片地图编辑器。我们用它来为我们的游戏场景构建连续的、复古风格的背景。Tiled可以将地图导出为XML、JSON或纯图像。它稳定且跨平台。Tiled的一项功能允许您在地图上定义和放置随机游戏对象,例如硬币和能量提升,但我们在jam期间没有使用它。您需要做的就是将对象的图像作为图块集加载,然后使用“插入图块”来放置它们。一般来说,对于需要地图编辑器的项目,Tiled是我们推荐的软件中不可或缺的一部分。PiskelPiskel是一个像素艺术编辑器,其源代码在Apache2.0许可下发布。在这次jam中,我们将Piskel用于我们的大部分图形资产,我们当然也会在未来的项目中使用它。Piskel在这次Jam中为我们提供了巨大帮助的两个功能是Onion皮肤和spritesheet导出。洋葱皮洋葱皮功能将使Piskel在您编辑的动画的前一帧和下一帧重现,如下所示:特点。要启用它,只需单击屏幕右上角预览窗口下方的洋葱形图标。精灵序列导出Piskel将动画导出为精灵序列的能力也非常有用。精灵序列图是包含动画所有帧的光栅图像。例如,这是我们从Piskel导出的精灵序列图:精灵序列图包含两帧。一帧在图像的上半部分,另一帧在图像的下半部分。精灵序列图通过从单个文件加载整个动画极大地简化了游戏代码。这是上面精灵序列图的动画版本:Unpiskel.py在我们的Jam中有很多次,我们想将Piskel文件批量转换为PNG文件。由于Piskel文件格式是基于JSON的,我们基于GPLv3协议编写了??一个名为unpiskel.py的小Python脚本来进行转换。它的调用方式如下:pythonunpiskel.pyinput.piskel该脚本将从Piskel文件(此处为input.piskel)中提取PNG数据帧和层,并单独存储它们。这些文件使用NAME_XX_YY.png模式命名,其中NAME是Piskel文件的简称,XX是帧编号,YY是层编号。因为脚本可以从shell调用,所以它可以用于整个文件列表。对于*.piskel中的f;执行pythonunpiskel.py"$f";donePython、Pygame和cx_FreezePython和Pygame我们使用Python语言来制作我们的游戏。它是一种脚本语言,常用于文本处理和桌面应用程序开发。它也可以用于游戏开发,如AngryDrunkenDwarves和Ren'Py等项目所展示的那样。这两个项目都使用一个名为Pygame的Python库来显示图形和产生声音,因此我们决定在OpenJam中也使用这个库。Pygame被证明既稳定又功能丰富,它非常适合我们创建的街机风格游戏。在低分辨率下,该库足够快,但在高分辨率下,它开始因仅CPU渲染而变慢。这是因为Pygame不使用硬件加速渲染。但是,开发人员可以充分利用OpenGL基础架构。如果您正在寻找一个好的2D游戏编程库,Pygame是一个值得密切关注的库。它的网站上有很好的入门教程。一定要检查一下!有趣的是,cx_Freeze正准备发布我们的游戏。我们知道Windows用户不喜欢安装Python包,要求他们安装它可能太过分了。除此之外,他们可能还必须安装Pygame,这在Windows上可不是一件容易的事。很明显:我们必须将游戏置于更方便的格式中。许多其他OpenJam参与者使用专有游戏引擎Unity,这使得他们的游戏可以在网络浏览器中玩。这使它们玩起来非常方便。便利是我们游戏中根本不存在的东西。但是,多亏了充满活力的Python生态系统,我们有了更多选择。现有工具可帮助Python程序员将他们的游戏发布到Windows发行版中。我们考虑的两个工具是cx_Freeze和Pygame2exe(使用py2exe)。我们最终决定使用cx_Freeze,因为它是跨平台的。在cx_Freeze中,您可以通过在shell中运行命令来打包用于分发的单脚本游戏,如下所示:你系统上的解释器被捆绑到dist目录中。完成后,您需要做的就是手动将游戏的数据文件复制到dist目录中。您将看到dist目录包含一个可执行文件,您可以运行它来启动游戏。有更复杂的方法使用cx_Freeze允许您自动复制数据文件,但我们发现只需调用cxfreeze就足以满足我们的需求。多亏了这个工具,我们让游戏变得更容易玩了。庆祝开源OpenJam是庆祝软件开发开源模型的重要活动。这是一个分析开源工具现状和我们未来工作需求的机会。GameJam或许是游戏开发人员探索其工具极限并了解未来游戏开发必须改进的最佳时机。开源工具使人们能够在不损害自由的情况下探索他们的创造力,而无需预先投资。虽然我们可能不会成为专业的游戏开发人员,但我们仍然能够通过我们的简短实验性游戏MarkMyWords获得一些经验。这是一款以语言学为主题的游戏,描绘了虚构书写系统在其历史上的演变。还有许多其他提交给OpenJam的优秀作品,它们都值得一试。说真的,去看看吧!在结束这篇文章之前,我们要感谢所有参与俱乐部的成员,感谢他们让这次经历真正有价值。我们还要感谢MichaelClayton、JaredSprague和Opensource.com主持OpenJam。这太酷了。现在,我们有一些问题要问我们的读者。您是FOSS游戏开发者吗?您选择的工具是什么?请务必在下面发表评论!