GameDesign 板


LINE

如标题 先上作品,其实就是仿制的唯舞独尊 https://www.youtube.com/watch?v=nHJy2J6qlOg
没有使用Unity之类的主流游戏引擎,在画面特效上花了不少心思 也因为完全不会PS,所有的图片素材都是用PowerPoint画的 因为工作的关系已经很久没更新了,最近心血来潮想把这个小作品做到一个自己满意的段落 程式码虽然有上传Gitlab,但那时候的coding style实在乱七八糟,迟迟没有机会好好 整理,一些比较很久没动的function甚至还有我自己现在看到会吐血的命名风格... 总之,当时留下的其中一个TODO,就是我这次想问的变速谱面问题 ============================= 先说明一下,打击点(下称Note)的资料结构大概是这样: 每个小节之间用Linked list串起来,小节里面再用一个Linked list将Note串起来 | 小节 | -> | 小节 | -> | 小节 | | O -> O -> O | | O -> O -> O | | O -> O -> O | 上面每个O代表一个Note,用 -> 来代表资料之间用Linked list串联 每个Note都是一个Struct,主要内容是该Note应该出现的时间(下面用NT代称), 以及该Note现在在萤幕上的位置(NPOS) Note在萤幕的位置则是用音乐播放时间(下面用CT代称)来计算 然後因为设计上会有Note流速的变化,因此还有一个速度参数(SPEED) 所以Note位置的计算公式会是NPOS = (NT-CT) * X * SPEED 其中X为一个常数,用来控制Note的基础流速(或称为1倍速) ======================== 以上的方法很好处理,而且可以在一些趣味性质的谱面设计一些超高速的Note来搞初见杀 但是如果要做到整个谱面瞬间停止的效果我就没想法了 所谓的瞬间停止可以参考:https://youtu.be/nNDqedR2qq4?t=73
有思考过把整条谱面当作一个传送带,经过特殊检查点时改变传送带的移动方向或流速 但当时实作的时候遇到改变流速/方向之後位置跑掉的问题,後来就没有继续研究下去了 所以想来这边问看看有没有写过节奏游戏的前辈,可以在这部分提供一些经验吗? 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.248.95 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1627324601.A.BE7.html
1F:→ dklassic: 简单想想到的是让被标示成瞬间静止的 note 只会在整数 07/27 04:09
2F:→ dklassic: 拍点更新位置,应该可以了? 07/27 04:09
感谢回覆,但我发现我一开始的叙述会让焦点集中在谱面瞬间停止这件事 的确,如果只是要做到瞬间停止的话,可以用你的方法达成 但是要让整体流速改变就会遇到问题了 https://www.youtube.com/watch?v=98Xljq8MxyU
比如上面这个谱面就做到了: 1. 不同流速的Note同时流动 -> 在我目前的架构上已经验证过可行,Note的内容有标记该Note的流速 2. 单一Note逆流 -> 理论上我目前的架构应该做得到,但印象中直接把Note直接标记成负流速会有问题, 程式码要改一下才能实现,不过这个问题不大 3. 改变整体流速、瞬间停止 -> 其实让整体流速=0就是瞬间停止了,所以这两个应该可以算同一件事? 主要的问题在改变整体流速,以我观察到的主流节奏游戏,大多是这样做的: | A小节 | -> | B小节 | -> ... | O -> O -> O | | O -> O -> O | | 1 倍速 | | 2 倍速 | 假设上图这些Note的时间间隔一致 但是因为两个小节设定的流速不同,所以在画面上的间距不同 也因此当歌曲进入B小节的时候,整条谱面要用2倍流速移动 才能让Note在正确的时间移动到在判定线上 问题就在於整体流速改变後,要如何确保Note出现在判定线的时间不会跑掉 ※ 编辑: joe820730 (60.248.108.208 台湾), 07/27/2021 12:10:23
3F:推 meowyih: 我的想法是,你一开始设计的data structure本来就不是给 07/27 16:56
4F:→ meowyih: 那些use case使用的,硬要修改,不如打掉重来。所谓打掉 07/27 16:57
5F:→ meowyih: 重来的意思是让每个node都独立有自己的进场时间,到击打 07/27 16:57
6F:→ meowyih: 点的时间,还有移动路径 (向是套个sin就变忽快忽慢),现 07/27 16:58
其实现在的架构已经是改过的了,比较早期的版本确实是你说的各自独立 虽然一样是用linked list串起来, 但每个Note的位置是个别计算的,彼此之间完全没有关联 不过你这个说法倒是突破我一直以来的盲点了 其实在旧的架构下,既然已经是各自独立计算路径 那就不需要使用统一的公式来计算移动路径 如果每个Note有各自独立的移动路径公式,确实就可以做到各种花式谱面
7F:→ meowyih: 在的硬体你每个frame扫个几百一千个node不会有任何效能问 07/27 16:58
8F:→ meowyih: 题,就算真的担心,loading 时自己 sort 一下 node 的进 07/27 16:59
效能部分我倒是不太担心,我有限制扫瞄范围 我的做法是从最後一个离开判定区的Note开始,只扫描大约5秒范围内的Note 这样不会影响画面,也可以减少不必要的计算(已经离开判定区就不用再扫描了)
9F:→ meowyih: 场时间也没甚麽关系,这样你每个 node 跟其他的 node 就 07/27 16:59
10F:→ meowyih: 完全无关了,可以任意的客制化 07/27 17:00
11F:→ meowyih: 当然这样独立会让曲目设计变困难,所以就会开发另一个工 07/27 17:01
12F:→ meowyih: 具软体帮忙编曲目,设定node数值,输出成json之类的... 07/27 17:02
这就是我当初没有做得太复杂的原因,也是我在这个游戏的另一个未完成的TODO... 当时没有能力去做一个编辑器来让谱面设计视觉化 折衷的办法就是用普通的文字编辑器去设计谱面 但这样理所当然地限制了可以设计的难度,也限制了谱面变化的弹性 最後也很感谢两位的建议 目前已经有新的想法可以去实作 ※ 编辑: joe820730 (125.227.248.95 台湾), 07/27/2021 23:05:58







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP