Cytus是雷亚游戏公司(Rayark)于2012年1月发布的一款音乐游戏。

绝对称得上是一款品质上乘的游戏。

对于我们游戏开发者而言,最想了解的,就是它核心内容的制作方式了。

那么,今天我们就来解析一下它所使用的谱面文件吧。

首先,我们来一个文件全貌一览(取自Cytus,Deemo章节Hua-sui-yue,简单难度):

VERSION 2
BPM 148.001968
PAGE_SHIFT 0.300000
PAGE_SIZE 1.621600
NOTE    0   6.526000    0.900000    1.200000
NOTE    1   8.148000    0.350000    0.000000
NOTE    2   8.959000    0.650000    0.000000
NOTE    3   9.567000    0.150000    1.200000
NOTE    4   9.567000    0.850000    1.200000
NOTE    5   13.013000   0.250000    0.000000
NOTE    6   13.824000   0.600000    0.000000
NOTE    7   14.635000   0.100000    0.816667
NOTE    8   14.635000   0.850000    0.800000
NOTE    9   16.256001   0.350000    0.000000
NOTE    10  17.066999   0.700000    0.000000
NOTE    11  17.878000   0.150000    0.816667
NOTE    12  17.878000   0.900000    0.800000
NOTE    13  19.499001   0.250000    0.000000
NOTE    14  20.309999   0.650000    0.000000
NOTE    15  21.121000   0.350000    0.000000
........................................................
NOTE    226 141.526001  0.500000    0.000000
NOTE    227 142.642868  0.250000    0.000000
NOTE    228 142.692932  0.200000    0.000000
NOTE    229 142.742996  0.150000    0.000000
LINK 217 218 219
LINK 143 144 145 146 147 148 149 150 151 152 153 154 155
LINK 221 222 223 224
LINK 227 228 229
LINK 126 127 

从上面数据可以看出,是用明文写成的。

所以,我们就省却了读取二进制这么一个环节。

接下来,咱们分析一下,上面的数据都是什么意思。

VERSION 2
BPM 148.001968
PAGE_SHIFT 0.300000
PAGE_SIZE 1.621600

VERSION 2

-- 这是文件固定的格式版本说明,一般都是 VERSON 2

BPM 148.001968

-- BPM是每分钟节拍数,后面的数字会随着音乐的不同而不同。

PAGE_SHIFT

-- 该字段用于确定第一个NOTE的位置。

-- 该位置是以扫描线从下方折返回来,到第一个NOTE的击打时间之间的间隔来计算的,单位为“秒”。

PAGE_SIZE

-- 扫描线两次这番之间的时间间隔,单位为“秒”。

-- 注意,BPM总是等于 (240 / PAGE_SIZE)。

接下来是关于打击点部分。

这一部分包含了除锁链之外的全部打击方式,包括(单个NOTE、长按NOTE)

为了简单明了,我根据空格来分隔为5列的表格。

NOTE 0 6.526000 0.900000 1.200000
NOTE 1 8.168000 0.350000 0.000000
NOTE 2 8.959000 0.650000 0.000000
NOTE 3 9.567000 0.150000 1.200000
NOTE 4 9.567000 0.850000 1.200000

第一列是NOTE,也就是打击点。固定。

第二列是序号,默认从0开始,正序排列。

第三列是时间点,从音乐文件开始播放算起,单位为“秒”。

第四列是NOTE的横向坐标,范围是(0 - 1)。

第五列是长按的时间,单位为“秒”。若此列全为0则无需长按。

最后是LINK部分,这一部分是用于表示锁链NOTE的。

LINK 217 218 219
LINK 143 144 145 146 147 148 149 150 151 152 153 154 155 

一行表示一个锁链,列数不固定。

两个NOTE之间用空格分割。

总体而言,这个格式非常简单,而且这款游戏的核心内容都不在格式中体现。

更多的逻辑比如:锁链箭头的方向指向等等,这些都是游戏本体中计算得出的。

以上就是本文的所有内容,如果您有任何疑问,请在下方评论区中评论。

感谢您的支持!

音乐游戏格式解析之【Cytus】相关推荐

  1. 音乐游戏音频解析 ABC(上)

    一.引子 现阶段的工作涉及到了部分音频解析的内容,广义来说便是数字信号处理(DSP),可惜本人并非专科出生,很多相关内容都是空白,从头看起也感觉颇为有些困楚,虽说时间也花了不少,不过成果还是颇不尽如人 ...

  2. android 音乐游戏,手速党的胜利 -- 音乐游戏专题 #iOS #Android

    音乐游戏是小美最爱的一种游戏类型,可以边玩游戏边听动听的旋律,当手指碰触屏幕,音符正好卡在节点上,这种感觉真是妙不可言!本期音乐游戏专题,小美给大家带来几款动词打次的游戏,绝对让你在玩的时候不知不觉跟 ...

  3. android 随音乐旋律,Deemo - 叩击心灵的旋律 - Android 应用 - 音乐游戏 - 【最美应用】...

    Cytus 是热闹绚丽的,Deemo 则完全是另一种风格,从骨子里透着一股深沉优雅.暗色系的画风配着钢琴的旋律,还有类似解谜游戏的设定,整体氛围神秘又略带伤感,称之为暗黑风格也不为过. 游戏玩法非常简 ...

  4. Android 水果机游戏实例解析

     [Cocos2d-x相关教程来源于红孩儿的游戏编程之路 CSDN博客地址:http://blog.csdn.net/honghaier]          Android 水果机游戏实例解析 近段时 ...

  5. 转:YUV RGB 常见视频格式解析

    转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...

  6. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )

    文章目录 安卓直播推流专栏博客总结 一. AAC 音频格式解析 二. FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3. AAC 音频数据标 ...

  7. java 解析日期格式_日期/时间格式/解析,Java 8样式

    java 解析日期格式 自Java 几乎 开始以来,Java开发人员就通过java.util.Date类(自JDK 1.0起)和java.util.Calendar类(自JDK 1.1起 )来处理日期 ...

  8. 日期/时间格式/解析,Java 8样式

    自Java 几乎 开始以来,Java开发人员就通过java.util.Date类(自JDK 1.0起)和java.util.Calendar类(自JDK 1.1起 )来处理日期和时间. 在这段时间内, ...

  9. 3D模型格式解析(OBJ)

    文章目录 OBJ格式解析 一.OBJ格式 二.vtkOBJReader源码解析 1.主要部分 总结 OBJ格式解析 通过解读vtk源码中对OBJ文件的读取代码,讲解如何获取obj模型的顶点(verte ...

最新文章

  1. Java项目:网上电子书城项目(java+SSM+JSP+maven+Mysql)
  2. c++ 外部组件发生异常_谁再悄咪咪的吃掉异常,我上去就是一 JIO
  3. 计算机科学与技术专家报告内容,计算机科学与技术专业设计报告大学内容.docx...
  4. 在SQL Server 2008中调用.net,dll
  5. php修改数据库字段为空,为何修改信息后数据库表中内容为空
  6. SRA 练习:解释 CRUD 矩阵方法,并从上面 “用于化学品跟踪管理系统的 CRUDL 矩阵示例”图中找出被遗漏的需求,并解释是如何找的?
  7. [蓝桥杯]2019年第十届省赛真题C/C++ B组 填空+大题
  8. MySQL06:变量、存储过程和函数、流程控制结构
  9. 去除QQ打/之后会出现的表情
  10. ADO.NET 对象模型
  11. 洛谷 1583——魔法照片(排序Ex)
  12. 孙鑫VC学习笔记:第十一讲 (四) 图形重绘方法三 利用兼容DC
  13. 浏览器的工作原理:新式网络浏览器幕后揭秘(转)
  14. 二维码软件如何扫描二维码打开网页
  15. 红外图像动态范围压缩和对比度增强
  16. cd linux如何连接wifi,cdlinux万能无线系统使用教程
  17. 情感分类介绍及发展方向
  18. Netural Machine Translation By Joinly Learning To Align And Translate
  19. JD token解密之旅
  20. 内涵TV段子,价值500元的dz内涵笑话商业源码

热门文章

  1. 三菱d700变频器模拟量控制_浅谈三菱FR—D700变频器基本参数的设定
  2. SSM+网上订餐系统 毕业设计-附源码221558
  3. ELK——企业级日志管理系统
  4. web应用程序开发过程(百度搬运)
  5. Axure8.0.0.3303破解及汉化
  6. 什么是纠删码(与纠错码的区别)|纠删码与副本对比|LDPC码
  7. 四种方法求解最大子段和问题
  8. Pygame 教程(5):监测游戏时间
  9. Linux操作系统(一)——Unix、Linux、Ubuntu之间的关系
  10. js 给元素添加自定义属性