如何用 Cocos 实现大热的 Roguelike+割草玩法?完整源码免费下载

优秀的跨平台能力是 Cocos 的核心特性之一,我们努力确保使用 Cocos 生产的内容,能够在 PC、Web、Android、iOS 等各个平台上运行,并拥有一致且高质量的画面表现和运行速度——其中自然也包括增长最快的平台之一,HTML5。

随着海内外 HTML5 游戏平台的发展,开发者有越来越多的渠道来分享他们的游戏。Y8.com 是一家游戏开发与发行公司,是网络游戏领域最知名的公司之一。依托于自身成熟的平台与庞大的用户群,Y8.com 正在为 H5 游戏创造新的机会与可能。

本次,来自 Y8.com 的开发者 Martin Kral 将和我们分享他创作的一个 Roguelike 生存割草 H5 游戏,聊一聊他的开发经验与技巧,并将游戏源码开放给大家免费下载。

94a54318580448c56c98a348d3e27a01.png

游戏截图

你好 Martin,很高兴和你交谈。你从事游戏开发多久了?

Martin:我已经从事游戏开发大约 12 年了,其中 9 年是专业的。前三年,我没有足够的收入来维持自己的游戏开发,所以我被雇用在不同的岗位,并在空闲时间学习开发技术。

和 Y8 的合作成效如何?

Martin:在 Flash 游戏时代,Y8 是我最喜欢的发行商之一,因为那里的人真的很平易近人,如果你有一个高质量的产品,它将帮助你取得成功。加入 Y8 后,和 Y8 的合作颇有成效。内容团队会给你的游戏提出改进建议,并且将很大一部分收益分享给开发者。以我的经验来说,受欢迎的游戏要达到百万次游戏体验数并不困难。所以如果你正在制作 H5 游戏,我强烈建议你试一下 Y8 的 revenue-sharing program

https://zh.y8.com/revshare?pk_campaign=SlashTheHordesGit

为什么选择用 Cocos Creator 开发游戏?

Martin:得益于 Cocos Creator 的网页实时预览功能,我们能很方便地调试游戏,加快项目的迭代速度。制作多人联机游戏时,Cocos Creator 能帮助我们节省大量时间,因为引擎拥有很强的跨平台能力,可以同时在多个设备上玩游戏。

你为什么喜欢制作 HTML5 游戏?

Martin:我认为 HTML5 游戏最棒的地方在于「自由」。无论你制作的是什么类型的游戏,都可以在网络上找到你的受众。你不必依赖于某一个集中式应用商店。而且,这类游戏通常体量较小,试错成本较低,因此你能够大胆去尝试一些疯狂的想法,希望游戏能病毒式传播开来!

请和大家介绍一下你的这款游戏吧!

Martin:Slash the Hordes 的想法并不标新,灵感主要来源于 Vampire Survivors。在游戏中,玩家将控制一个角色,击杀从四面八方袭来的敌人,极限求生。我们将游戏源码免费分享给大家,希望可以激励更多开发者尝试使用 Cocos Creator 制作游戏,为大家开发和发行游戏提供更多参考与资源。

游戏有哪些技术实现亮点?

Martin:在 Slash the Hordes 的研发中,我重点使用了几个工具:

  • 对象池(Object Pool),可更轻松地管理可重用对象。

  • 事件系统(Event System),将逻辑与其他系统(如动画、分析和声音)分离。

  • 模态系统(Modal System),拥有可重复使用的窗口系统。

以对象池为例。该游戏的对象池可以在这里找到:

https://github.com/MartinKral/Slash-The-Hordes/blob/master/assets/Scripts/Services/ObjectPool.ts

要让它工作,你只需要三行代码和一个带有组件的预制件。

要初始化,可以这样调用它:

const enemyPool: ObjectPool<Enemy> = new ObjectPool(enemyPrefab, this.node, 50, "Enemy");

第一个参数是敌人对象的预制件,它应该有一个与对象池类型匹配的组件(在本例中为敌人)。

第二个参数是父节点,所有的子节点将在这里被实例化。

第三个参数是第一个立即实例化的预制件的数量。如果你知道你将经常使用大约 50 个敌人,那么这个数字应该是 50;如果你需要 51 个敌人,对象池仍然可以扩大并为你提供一个新的敌人。这个值只是为了减少游戏过程中引擎的工作量。

第四个参数代表组件的字符串名称,在本例中即是「Enemy」。

初始化后,你可以通过以下方式简单地获得一个新敌人:

const borrowedEnemy: Enemy = this.enemyPool.borrow();

然后:

this.enemyPool.return(borrowedEnemy);

一般来说,对象池的好处在于它大大减少了实例化和后续内存分配、释放的数量。换句话说,它可以显著提高游戏的性能。

这个对象池还能够处理池的扩展,并立即为你提供附加的组件。它在游戏中被多次使用,一个明显的例子在这里:

https://github.com/MartinKral/Slash-The-Hordes/blob/master/assets/Scripts/Game/Items/ItemSpawner.ts

有一些模块我也会在下一个项目中使用——主要是「应用层」方面,可以有一个相机和其他公共服务;一个单独的场景生命周期对象(例如 Game.ts),用来设置游戏并控制场景的流动;此外还有 gameSettings,一个让游戏设计师可以完全控制游戏的单一的数据文件。

Slash the Hordes 还有很大的优化空间,如果大家有任何建议,请随时提交 issue(甚至是 PR)!


感谢 Martin 的分享!点击文末【阅读原文】即可下载游戏源码。

源码下载

https://github.com/MartinKral/Slash-The-Hordes

在线试玩

https://zh.y8.com/games/slash_the_hordes

Y8 官网

https://zh.y8.com/

Cocos Creator 深度支持各大主流平台,开发者可将内容一键发布至 Web/小游戏/原生等平台,实现一次研发、多端触达。伴随引擎技术的多次突破,Cocos 的应用领域已从游戏拓展到智能座舱、XR、虚拟角色、元宇宙等,成为横跨多领域的 3D 引擎,并面向更多行业提供了完整的解决方案。期待看到更多开发者用 Cocos 实现自己的创意想法,创作出更多元、有趣、高质量的作品!

往期精彩

b3170f4ca277bded4006c78a3a3b2ed9.png

9b942444201c75e21e088f523b84aaee.png

85be7830eb9dec5f915e011604544750.png849a8373bc0596f73ab50958fe2bc612.gif

猜你喜欢

转载自blog.csdn.net/weixin_44053279/article/details/129359405