即使在今天,人们仍然继续为旧游戏机创建新游戏。 我们称它们为
自制酒 。 有时,这是一种实现童年梦想的方式,即为孩子玩的游戏机创建游戏。 但是除此之外,对于任何设计师或游戏开发人员而言,这也是一项有趣的任务:复古铁杆存在许多局限性,挑战了作者的创造力。 在90年代,对于专业开发人员来说,这些限制是很熟悉的。 今天,当我们拥有更先进的工具时,为此类机器创建游戏的价格就变得更加负担得起。
去年,我写了一篇有关
为Game Boy创建游戏的文章。 今天,我将分享我为SEGA Mega Drive / Genesis家用游戏机创建三款游戏的经验。 可能要归功于现代强大的工具,这是开发自制游戏最简单的机器。 例如,我什至只用了60分钟就创建了一个
(非常简单的)游戏,它实际上在控制台上运行!
游戏
去年,为了庆祝Genesis / Mega Drive发行30周年,我创作了一款名为
Nintendon't的30年游戏 。 顾名思义,这是对最好的游戏机游戏以及SEGA当时使用的激进营销的致敬(例如,标语
“ Genesis做了Nintendon没做”)。在此游戏中,我们控制SEGA的传播者,他们必须说服玩家忘记他们的NES和SNES,因为《创世纪》拥有更好的游戏! 游戏在主机30岁生日时免费在线发布。 您可以在这里播放:
https :
//drludos.itch.io/30-years-of-nintendont从那时起,我还为控制台创建了两个(小型)街机游戏:
“打破鸡蛋”“ MeteoRain”所有这3种游戏均通过Cote Gamers发行的墨盒出售:
http://cotegamers.com/shop/en/genesis-mega-drive/43-test.html它装在一个漂亮的塑料盒中,就像真正的老式游戏一样,还配有明信片。
我可以使用Unity,虚幻引擎或Godot吗?
抱歉,但是这些引擎无法将游戏导出到SEGA Mega Drive / Genesis(也许是现在?)。 但请放心,还有另一种工具与这些流行的现代引擎一样有用,同时专门为Mega Drive / Genesis设计:
SGDK 。 这是一个框架,使您可以用C语言为该计算机编写代码。它比学习90年代所需的汇编语言要简单得多,而且速度也快得多。 但这还不是全部。 SGDK还具有简化图形和声音创建的工具。 您可以在自己喜欢的2D图形编辑器中创建图形
(从Photoshop到GIMP或Asesprite) ,如果您遵守硬件限制,则会自动将其转换
(请参见下文)。 声音也是如此:您可以在.wav文件中创建声音效果,并为音乐使用不同的跟踪器。 最后一件事:SGDK具有功能强大的“精灵引擎”,可简化在屏幕上显示运动图像的大多数技术任务。 但是现实中它有多“简单”? 在本文中,我将讨论自己的工作经验。
爆炸处理出现在场景中
就像任何旧系统的程序员都会告诉您的那样,如果您用C而不是汇编语言编写程序,则会降低游戏的性能。 这是真的。 但是不同的复古游戏机的成本差异很大。 它们取决于使用的CPU以及为此类老式处理器创建代码的现代编译器的效率。 幸运的是,Mega Drive / Genesis使用了Motorola 68000处理器,该处理器非常适合使用C语言的功能,与其他CPU(例如65816 SNES控制台)相比,尤其如此。 尽管SNES CPU本身具有强大的功能,但很难强制以足够的速度执行用C编写的程序。 也就是说,当涉及到C自制程序开发时,“ Blast Processing”不是营销神话,而是现实!
C代码可以运行多快?
这是个人经验的一个例子-我的MeteoRain游戏的动画GIF,其中45个陨石的精灵以60fps的频率无延迟地移动:
这是“破蛋”爆炸的另一个示例,由40个以60fps的频率运动的粒子组成:
如果以旧游戏为例,那么Contra Hard Corps是Mega Drive / Genesis CPU强大功能的一个很好的例子。 尽管该游戏是使用汇编程序而不是C语言开发的
(毕竟,它是在90年代) ,但开发人员可以使用巨大的计算能力在屏幕上移动许多精灵,并通过大量的移动部件和大规模爆炸来创建吸引人的老板。
为了进行比较,SNES上的Contra III受CPU能力的限制,Konami并没有移动精灵堆,而是使用了独特的图形效果,例如只有SNES视频芯片才具有透明效果。
尽管两个游戏都同样有趣,但是它们完美地凸显了SNES和Mega Drive / Genesis之间的技术差异。 有关Konami如何在相应控制台下创建每款游戏的更多信息,请参见
176号复古玩家的文章
“ Contra III和Hard Corps的制作” 。
图形限制
由于计算能力不是问题,因此针对自制软件开发人员的Genesis / Mega Drive控制台的主要瓶颈已成为其图形限制。 更具体地说,她显示的颜色数量有限。 尽管通常控制台可以生成512种独特的颜色,但同时屏幕上最多可以显示64种颜色。
哎呀 为了进行比较:SNES可以同时显示32768种独特颜色的调色板中的256种颜色。 也就是说,图形艺术家需要强大的才能使SEGA游戏与竞争对手的游戏机一样出色。 在很多情况下,他们都取得了成功。 尽管有颜色限制,许多旧的Mega Drive / Genesis游戏还是很漂亮,例如
Comix Zone,Tor的故事,Rage II的街道,Ranger-X,Gunstar Heroes,Sonic 1-2-3等。混音区(1995)但在其他情况下,与SNES版本相比,Mega Drive / Genesis游戏看起来却很乏味。 最著名的例子之一是Street Fighter II,其中控制台的颜色限制非常明显:
有限调色板的最佳使用
(Genesis的4种16种颜色的调色板与SNES的16种16种颜色的调色板)的使用对那些通常很少有时间完成项目的开发人员来说是一个巨大的挑战。 如今,才华横溢的SEGA社区成员能够修改某些游戏以优化颜色的使用。 例如,
加布里埃尔·皮龙 (
Gabrielle Piron)的《恶魔城血统》,《金斧》,《突围》或前述的《街头霸王II》等游戏的确令人惊奇:
(以上是原始图片的调色板,下面是经过修改的Gabriel)考虑到这一点,您可以使用自己喜欢的图形编辑器来创建图像,但是在选择颜色时要非常小心! 如果您无法匹配设备中闪烁的512色调色板,那么这不是问题:SGDK会自动将图像转换为Mega Drive / Genesis调色板。 但是,当涉及到在屏幕上使用和显示的颜色总数时,则必须自己动手!
使物体移动
要在屏幕上显示内容,您需要将图形数据从ROM复制到视频RAM。 GPU无法直接访问ROM中的数据,但能够从RAM中读取数据。 因此,为了更改精灵的背景或动画,您需要定期将新数据从ROM复制到RAM。 并且视频RAM(VRAM)的总数受到限制:只有64 KB。 与游戏ROM的大小(从512 KB到8 MB)相比,这是非常小的。
瓶颈1:VRAM传输
如果您创建一个带有少量图形元素的非常小的游戏,则可以在游戏开始时将它们一劳永逸地加载到内存中。 但是大多数游戏都需要定期刷新VRAM中的图形以演示各种动画。 通常它会引起很多问题!
每帧(即每秒60次)可从ROM传输到VRAM的图形数据量受到限制。 更具体地说,这是每帧7524字节,即大约7 KB。 当您需要显示巨大的动画精灵和动画背景时(例如在《街头霸王II》中),则此限制会不断产生干扰。 这只是第一个问题。
瓶颈2:精灵限制
对于8/16位控制台,另一个困难是设备可以显示的子画面总数。 通常有两个限制:一个限制是屏幕上的精灵总数,另一个限制是一个水平行中的精灵总数。 对于NES和Master System等8位控制台,这些限制非常严格:每条水平线不得超过8个精灵,总数不得超过64个精灵。 这是否意味着我们可以在屏幕上显示Sonic或Mario的64倍? 不,我的意思是“硬件精灵”,比通常称为“精灵”的小。 这是Super Mario Bros for NES的一个示例,其中需要几个8x8像素的硬件精灵来显示单个Mario精灵。
(来源: https : //nesdoug.com/2018/09/05/06-sprites/ )对于16位控制台,精灵限制有所减少。 Mega Drive / Genesis最多可以显示80个硬件精灵。 但是,单独的硬件子画面的大小最大为32x32(以前只有8x8像素)。 以下是在Mega Drive / Genesis上切割“硬件精灵”的一些示例。 您是否注意到Sonic仅从两个硬件精灵中抽出,而NES上的Mario需要8个精灵?
(来源: https : //www.patreon.com/posts/new-resource-and-26847248 )瓶颈3:精灵优先级
好像还不够复杂,Mega Drive / Genesis具有一个更特定的功能:精灵链。 当应用两个精灵时,控制台应找出哪个精灵需要显示在另一个精灵之上。 在主系统和大多数Nintendo控制台
(NES,Game Boy,SNES)中,将精灵设置在一个大表中,并使用其在表中的顺序来设置显示优先级。 不用说,这是一个很难使用的工具,因为您需要不断重新定义此大表以更改Sprite的优先级。
在Mega Drive / Genesis,SEGA使用了更灵活,更简单的系统。 与在其他控制台中一样,所有子画面在大表中都有一个索引号,但是它不用于设置子画面的优先级。 取而代之的是,每个子画面都存储一个指向要显示的下一个子画面的链接。 最终,控制台创建了一个以Sprite 0开头的Sprite链。每个Sprite仅知道其后的内容。 这使得更改子画面优先级变得更加容易,而无需在大的“子画面链接表”中排列所有子画面。 但坦率地说,尽管这样的系统更易于使用,但在创建具有经常更改的精灵优先级的游戏(例如在殴打游戏中)时仍然令人讨厌。
简单方法:SGDK Sprite引擎
考虑到所有这些瓶颈,显示移动的精灵和滚动背景是一个很大的挑战。 90年代的所有开发人员都与之抗争,许多自制软件开发商继续这样做。 例如,马特·菲利普斯(Matt Phillips)在2018年发布了宏伟的《
坦格伍德》游戏,但使用90年代的工具创作了它。 他用汇编语言编写了游戏程序,并使用了大约30年前设计的官方硬件开发套件。 就他而言,这是一个刻意的选择,他想充分体验开发复古游戏的技术。
(来源: https : //www.gamasutra.com/view/news/325040/New_game_classic_hardware_Developing_Tanglewood_on_a_Sega_devkit.php )但是对于不像Matt那样有经验和耐心的人们,现代工具可以减少由于技术硬件限制而导致的问题数量。 我们已经提到C通常比汇编程序简单。 还值得补充的是,与使用旧的硬件仿真器和一组DOS工具相结合的开发相比,将像
Blast'em这样的高精度Mega驱动器/创世纪仿真器与Everdrive Flash Cart结合使用来在真实设备上进行测试使游戏的开发几乎没有痛苦。 但是,我们时代的主要礼物是SGDK。
将游戏记录在SD卡上,将其插入Mega Everdrive,然后在真实的硬件上测试游戏!除其他外,SGDK还具有功能强大的“ Sprite Engine”,极大地简化了开发人员的生活。 这是一组用于处理子画面显示的功能,类似于在现代框架中的显示方式。 首先,您无需担心动画每一帧所需的硬件精灵数量:SGDK将自动执行此操作。 此外,在使用子画面优先级时,您无需手动设置子画面链,因为SGDK可以使用简单的值“子画面优先级”来进行设置,就像在任何现代框架中一样,可以为每个子画面设置该值。 最后一件事:SGDK还自动处理VRAM中的所有传输! 是的,您已经正确理解了,由于有了Sprite Engine,您不再需要照顾VRAM! 您只需告诉SGDK显示
“ X精灵Y的动画” ,它将为您完成所有技术上的困难。 如果您曾经不得不手动处理这些事情,那么看起来很神奇-一切都简单明了!
单独使用SGDK框架的Sprite Engine,Mega Drive / Genesis便是最简单的游戏开发复古控制台,尤其是如果您有使用现代平台上的游戏框架的经验。 SGDK是免费和开源的,但是如果您想帮助其作者Stefan Dallongevil进一步发展复古魔术,可以在Patreon上进行:
https ://www.patreon.com/SGDK/
音效
复古硬件上的声音本身也是一个真实的测试,并且每个控制台在这方面都是独特的。 Mega Drive / Genesis具有用于此任务的单独的Z80处理器,该处理器直接连接到音频设备。 也就是说,要为控制台创建声音和音乐,您首先需要编写一个“音频驱动程序”:Z80处理器的程序。 在90年代,每个游戏工作室都开发了自己的音频驱动程序,并针对每个游戏进行了调整。 在游戏机寿命即将尽头之际,出现了标准化驱动程序,例如,美国Sega of America的GEMS,
西方开发人员在
大约100款游戏中使用
了这种驱动程序
。为8/16位调音台创造良好的声音不仅与音乐有关,还与编程技能有关! 某些音乐或声音效果良好的游戏已被错误的音频驱动程序破坏。 最著名的例子是《街头霸王II》。 此游戏中的音频驱动程序存在使所有语音样本失真的错误。 多年后,Stefan Dallongewil
( SGDK的
作者和公认的向导)对该音频驱动程序进行了反向工程并修复了其错误。 这样一来,您现在可以玩清脆的尖叫声“ Hadoken!”来玩Street Fighter II。 这是一段视频,您可以听到其中的区别:
但是,让我们回到自制开发和备受喜爱的SGDK。 他有能力选择可以满足其游戏要求的音频驱动程序。 例如,有一个PCM驱动程序,可让您一次以非常高的质量播放一种音效
(例如,语音样本) 。 但是,还有一个XGM驱动程序,可以同时播放音乐曲目和4种音效。 最重要的是,您可以在游戏中在音频驱动程序之间切换。 例如,在Nintendon的30年中,启动画面上的声音样本和游戏结束时都不会由PCM驱动程序播放高质量的声音。 但是在游戏中,我需要同时播放几种音效,因此我使用了XGM驱动程序。
至于资源本身,可以使用现代工具来创建它们。 就像我上面说的,对于声音效果,您只需获取.wav文件,这些文件就会自动转换为所需的格式。 对于音乐,标准工具是
Deflemask -
Defermask-一种跟踪器,可以为各种8/16位调音台的音响设备创建音乐。 我在创作音乐方面没有太多经验,因为我的游戏中使用的乐曲是由天才的芯片音乐艺术家Minerscale(Break An Egg)和Warlord(MeteoRain)创作的。 他们俩都使用Deflemask,并将其创建内容导出为VGM格式,SGDK可以将其转换为与自己的音频驱动程序一起使用。
在60分钟内为Mega Drive / Genesis创建游戏? 已接电话!
游戏卡纸是运用游戏设计和游戏开发技能的绝佳方法:您可以在有限的时间内(通常为48或72小时)从头开始创建一款出色的游戏?
在时间上,最困难的卡纸是
0h Game Jam 。 顾名思义,它每年在冬季过渡期间举行。 您从时钟的晚上02:00开始创建游戏。 工作60分钟后,您可以在时钟从03:00返回02:00的那一刻在线释放游戏。 去年我决定参加这场果酱。 刚刚完成《 Nintendon't三十年》的我,已经获得了为Mega Drive / Genesis制作游戏的经验,并受到SGDK简单性的启发。 但是SGDK是否足够简单,以便我可以在60分钟内创建一个16位自制软件?
这是答案 :
60分钟的工作老实说,结果绝对不令人印象深刻。 游戏的平衡性很差,并且随机数生成器中存在一个巨大的错误,这就是为什么游戏在第五个蛋之后变得无法通行的原因。 此外,没有背景图像,声音等。
但是,这仍然是Mega Drive / Genesis的一款新游戏,在60分钟内从零开始创建,并在真实的游戏机上启动。我不知道如何为您服务,但是对我来说这已经是一种成就!而且,由于基本游戏玩法的想法具有一定的潜力,所以我继续从事游戏工作了多个小时。结果,我得到了一个非常有趣的街机游戏,您可以在这里玩。它也可以在Nintendon't的30年墨盒中使用,以及第三款游戏,此发行版在物理媒体上独有-MeteoRain。数小时的额外工作!从自制到独立
尽管自制软件通常是业余爱好者(像我这样)的利基市场,但是今天的某些游戏机对于独立工作室来说是非常商业化的平台。一个很好的例子是两个最近发布的游戏。一方面,与90年代一样,Tanglewood在组装程序中得到了全面开发,这使最终结果更加令人印象深刻。另一方面,与SGDK合作开发的Xeno Crisis也同样出色,充分利用了现代工具的舒适性和简便性。坦格伍德(2018)Xeno Crisis(2019)所以,如果您喜欢复古游戏,为什么不今天创建您的第一个Mega Drive / Genesis游戏?最后,要获取SGDK,只需点击以下链接:https : //github.com/Stephane-D/SGDK总结
我希望您喜欢这篇关于使用现代技术为SEGA Mega Drive / Genesis创建三款游戏的文章。如果您想在自己的游戏机上玩我的游戏或者只是为了支持我的工作,可以在Cote Gamers发行商发行的游戏中购买精美的盒子内的墨盒:http : //cotegamers.com/shop/en/genesis-mega-drive/ 43-test.html如果您只对数字发行版(即ROM)感兴趣,那么可以在这里找到我所有的复古游戏:http : //drludos.itch.io/如果您喜欢我的作品,并且可以自己做允许它然后在Patreon上为我提供财务支持。我的游戏通常是作为免费软件在线发行的,其中一些游戏也通过物理墨盒出售。通过在Patreon上为我提供支持,您还可以访问我的游戏的Beta版本以及我创建的各种原型(包括废弃的项目)。