《千手英雄》开发手记 千手怎么玩
suiw9 2024-11-04 15:29 22 浏览 0 评论
大家好!我是 Retro Daddy (群名字一般用 Harrison),这次给大家带来我们的新游戏《千手英雄》的制作手记:
孙悟空大战机器金刚
2019 年 1 月发布了《孙悟空大战机器金刚》后,我就开始准备制作下一个游戏。
当时想要做的是一个生存游戏:一家人在末日的故事。
由于公众号限制,gif 做了抽帧
美术跟不上,先搁置~
星界战场
后来改为先做《星界战场》,一个回合制战棋游戏。到现在为止进入了开发泥潭。
由于公众号限制,gif 仅截取了前 300 帧
其实所有的主要问题都解决了,已经可玩了,甚至还能联网,但就是到最后感觉开发流程到了后期变得很迟钝,这个锅主主要甩给 Unity,关于 Unity 的坏话我估计能写另外一篇,非常后悔选择这个引擎,现在正转回 Godot 进行制作。
千手英雄的初期概念
游戏的制作和准备过程很的很漫长,长期项目应该是什么?该做怎样的游戏,这些我都一直在思考。
我将各种想法记录下来,同时也会扩展以往记录的想法。
2019 年的夏天的时候,我正思考一个讲述一个架空时空里小学生冒险的 RPG,里面会有一个集邮系统。想着邮票有各种不同的大小尺寸,玩家可以自行编排摆放位置,不知怎的,画成了下图的样子:
大概就是一个类似画廊或者杂志拼图的的样子,当时我想里面画各种不同的游戏类型。
我想这也许能变成一个手机游戏吧,点击类型的,一个画面同时有很多个小游戏,你需要不停的点击各个格子完成格子里的小游戏。
当然跟很多其它想法和概念一样,先留在了硬盘的某个目录和笔记里。
后来我开始跟一个朋友合作做他们公司的项目,所以我白天做他们的项目,其它时间继续自己的项目。
修炼
《孙悟空大战机器金刚》用的是 Construct 3,当时做完已经觉得有一大堆弊病了,最首要的一条:订阅制软件一旦过期,可能原来的项目就无法打开和修改。
后来的《星界战场》和合作的项目用的都是 Unity。《星界战场》用 Unity 主要是合作的程序员只会 Unity,同时也想着以后移植到主机的时候能简单些(想多了)。
但是 Unity 真的不适合我,很慢很慢,所以这一段时间我都是跟 Unity 在搏斗,过程比较痛苦,也算是一种修炼。
启动
2019 年底了,想调换一下心情,恢复到一种比较轻松的开发状态,于是就把这个项目拿出来在晚上的业余时间玩一下。
不过游戏的目标平台变了,打算放在大屏幕上,不再首先考虑移动平台了,操作变为手柄,概念图大概是这个样子:
改为手柄操作之后,需要考虑如何操作多个游戏的问题,我决定使用一个切换键,每次只能操作一个游戏。
然后要扩展更多不同尺寸和类型的游戏,我先出草图,美术由老伴代劳。
有了部分美术资源后,我从自己比较喜欢的牛仔游戏开始,这个游戏的操作机制源于 FC 的《荒野大镖客》,这是 2019 年 11 月初的时候做的效果:
由于公众号限制,gif 仅截取了前 300 帧
接下来是一个固定位置的 360 度射击游戏:
由于公众号限制,gif 仅截取了前 300 帧
控制飞船 360 度旋转,发射加号和减号两种子弹,子弹发射器有过热判断,敌人是飞过来的数字,加号和减号分别会让数字增加或者减小,减小为零或者增加到 10 可将其消灭,越小的数字靠近得越快。
子弹时间
为了降低难度,增加可玩性,我加入了一个重要的机制,就是非当前操作的游戏要进入慢速运行状态。
概念有点点像一部电影:
《盗梦空间》
其实在游戏里面实现子弹时间已经不是什么稀奇的事情,最早的《马克斯佩恩》,到比较近的《Super Hot》:
不过在千手英雄里,每个游戏都要要求有自己的时间线,除此之外,每个游戏都需要在不同的时刻可以进行不同速率的无级变速。
要做到这点,必须解决两个技术问题:
多个游戏在不同的窗口中运行,不互相干扰;
游戏能够随时进行变速
变速的具体实施需要照顾很多方面,听起来好像很简单,但是当这些东西按照原先速率播放到一半的时候这才是变速的重点:
Timeline 动画时间轴的变速
Timer 的变速
Tween 缓动动画的变速
物理系统的变速(这点无法实现,所以不能使用物理系统模拟运动)
Sprite 和其它动画需要能够变速
逻辑的变速
游戏本体中的所有物体和组件都要遵守变速规则,粒子动画除外。
以下是 2019 年 11 月时的测试效果:
这个游戏的主要美术形式是像素,如果只使用帧动画的话那么在慢速模式下人物动作的变化就会有明显的卡顿感,所以我们尽量在动画中加入元件的运动,这样一来慢速模式下能够产生一些帧与帧之间的细微变化(也并不是所有物体都能做到,有些还是帧动画)。
解决了这个技术点,剩下的事情就好办了。
组队
因为研究 Godot 的关系,我加入了一个独立游戏 QQ 群, 认识了 Alexar。
他原来是个 Love2D 的高手,后来开始研究 Godot,他经常在群里里面发自己做的各种类型和机制的游戏 Demo,我觉得很有意思,觉得也许千手英雄这个项目会适合他,于是我邀请他加入,他也爽快答应了。后来我知道他的孩子还跟我的孩子差不多大。
所以这个游戏主要的设计由我来完成,美术由我的老婆 PQ 润色把关,程序交由 Alexar 负责。
游戏类型
我们想了很多游戏类型,大多数以动作为主。当然,游戏就是各种 clone 了:
(1) Gun Hat 模仿荒野大镖客,画面纵向卷轴,射击游戏,两个按钮实现 3 个方向的射击,有最终 boss;
(2) Cyber Puck 模仿吃豆人,但是机制改了很多。红蓝药丸用的是黑客帝国的概念,迷宫实现了黑客帝国的文字流动画。吃豆人最先叫做 Puck Man 而不是 Pacman,这个估计很少人知道;
(3) Jump Man 是一个跨栏游戏,吃了香蕉可以加速,踩到香蕉皮就会滑倒;
(4) Candy Box 就是一个平淡无奇的俄罗斯方块,目标是消灭所有的灰色方块,但是放到挑战里面动静结合就很有意思了;
(5) Star Num 前面已经介绍过,发射
(6) Well Diver 这个是 Alexar 提出要做一个 “是 xx 就下 100 层” 的游戏。机关类型都是马里奥里面的。既然有一些尖刺,我就将主人公设计成一个气球人,被尖刺戳到就爆掉了。因为触及屏幕上下方都会挂掉,所以下方设置了火焰,上方设置的是移动的锯盘;
以上 6 个游戏就是 EA 正式版所包含的游戏。
其它还在计划/制作中的还有:
* 一个 RPG 战斗;
* 一个宠物培养游戏;
* 一个格斗游戏;
* 一个模仿 Flappy Bird 的 Flappy Clock,这个游戏的设定很早期就有,没想到后来的游戏设计得都更精美,这个得风格和复杂度已经不在同一个级别,所以后期打算改成 GB 的 4 色风格
* 一个塔防
* 一个赛车
* 一个煎鸡蛋的游戏
最终版本的游戏有 10 个或以上,不排除砍掉已经做了但是不适合的游戏。
我给小游戏顶下的制作原则是:
完成时间控制在 1 分钟左右;
游戏需要不断前进,不能有等待和要求连续输入;
抽象游戏类型的特征,简化流程;
现在游戏里达到一定的分数或者条件会得到星星,星星可以用于产生特殊效果也可以用于复活失败的游戏(就像游戏币一样)。挑战模式的分数指标主要就是完成后的用时和星星数。Alexar 有提出过更多的游戏间的互动方式,我觉得比较复杂所以暂时没有实施。现有的游戏机制已经有足够的卖点了,如果这个游戏类型能够被人接纳,我们才能考虑进一步的进行扩充。
进化
作为主打的挑战模式,开始主要想营造一种画廊感和杂志拼贴感,所以前期的设计是这样的:
后来发现不少游戏内容都是紧张刺激和火爆的,所以我感觉要更换一下配色风格,所以改成了这样:
画廊模式
开发前期我们主要聚焦于单个游戏,我们要保证单个游戏的游玩体验是完整的,所以设置了画廊模式,可以单独游玩这些游戏,同时这些游戏会放大到两倍的大小。
UI 用的是 Cover Flow 的形式:
界面 UI 方面我们采用上下左右的 XMB 式的导航方式,尽量取消次级菜单。
由于公众号限制,gif 仅截取了前 300 帧
每个游戏的操作方式都有不同,我们设置为四个方向键加两个动作键。玩家者需要训练自己熟悉这些操作,另外我们在屏幕下方会放置当前操作游戏的简单操作指南。
关卡编辑器
关卡编辑器一开始就是两个作用:一个是我们自己用于挑战模式的关卡编辑,还有一个就是给玩家自己用了。
由于公众号限制,gif 仅截取了前 300 帧
有了关卡编辑器,让这个游戏的可玩性大增。我们还制作了分享码系统,生成纯文本字串(类似以前 FC 炸弹人和类似的关卡密码),可以将关卡分享给别的玩家进行挑战。
性能问题
《千手英雄》中的小游戏都是非常简单的,可是当我们进入到挑战模式开发,可以同屏放置多个游戏时,性能问题就出现了。
特别是放置多个 star num 数字陨石游戏时,帧数一度掉入低谷。
所以我们关掉 VSync,排查了瓶颈所在:物理系统。
为此我们还重构了一些底层的系统。
另外我们发现 Cyber Puck 中药丸动画占用了大量 CPU 时间,最终的解决方法是通过 Shader 来实现药丸的浮动动画。
资源方面,每个游戏其实只用到一张 Atlas 贴图,但是场景生成其实是需要一定时间的,所以一度进入挑战模式会使用较长的时间。现在我们加入载入过程让整个游戏的流转更流畅了。
最终的结果是在一些满载的关卡里,帧数能够在 270fps 左右,这样一来,配置较低的机器也可以达到 60fps。
上架
一开始我们就决定了先上 EA 看看反响,上面的问题解决完毕之后,游戏就开始走上架流程了,毕竟已经开发了快半年,是驴是马也该拉出来遛遛。
2020 年的上半年的确发生了很多很多的事情,但是大体都没影响这个游戏的开发,更多的只是我自己的其它工作较忙而已。
现在我们放出了免费的 Demo,可以体验画廊里的所有小游戏和部分挑战模式关卡,只是关掉了编辑器的功能。
接下啦,我会逐步的完善游戏的音效,而整体功能可以说是完整的了,进入 EA 后我们继续完成和增加其它小游戏。
关于“千手英雄”这个名字
一开始我想到的名字是“千手难防”,来自于歌曲《难念的经》中的:“凭这两眼与百臂或千手不能防”,后来改成更像游戏的名字《千手英雄》
英文名用的是 The Hero with a Thousands Arms 来源是一本书:
后记
有时候我在想:估计很少人能够把这个游戏玩下去吧,因为……真的很难。但是我觉得这就是这个游戏该呈现的样子。
不过因为是个合作的作品,我当然希望是能够卖出比《孙悟空大战机器金刚》更多的份数,给队友一点信心。
此篇制作手记很有可能是我们对这个游戏所能投入的最大宣传,所以希望看到的人能够转发点赞,让更多的人知道这个游戏就好了。
如果还能行举手的方便,可以加个愿望单:如果你在手机上阅读本文,请到电脑上打开这个游戏的商店链接加入愿望单,非常感谢!
商店网址:https://store.steampowered.com/app/1289480/
好了诸位,等我们的好消息,再会!
相关推荐
- 俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)
-
发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...
- 如何强制所有流量使用 HTTPS一网上用户
-
如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...
- https和http的区别(https和http有何区别)
-
“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...
- 快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
-
什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...
- 简述HTTPS工作原理(简述https原理,以及与http的区别)
-
https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...
- 21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)
-
HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...
- 一次安全可靠的通信——HTTPS原理
-
为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...
- 为什么有的网站没有使用https(为什么有的网站点不开)
-
有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...
- HTTPS是什么?加密原理和证书。SSL/TLS握手过程
-
秘钥的产生过程非对称加密...
- 图解HTTPS「转」(图解http 完整版 彩色版 pdf)
-
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...
- HTTP 和 HTTPS 有何不同?一文带你全面了解
-
随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...
- HTTP与HTTPS的区别,详细介绍(http与https有什么区别)
-
HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...
- 一文让你轻松掌握 HTTPS(https详解)
-
一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...
- 如何在Spring Boot应用程序上启用HTTPS?
-
HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...
- 一文彻底搞明白Http以及Https(http0)
-
早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
tinymce 号称富文本编辑器世界第一,大家同意么?
-
- 最近发表
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)