「System」の編集履歴(バックアップ)一覧に戻る

System - (2013/04/26 (金) 21:17:58) の編集履歴(バックアップ)


How to Play


基本キー操作

移動…カーソルキー(←、↓、↑、→)
決定…Enterキー
戻る…Backspaceキー、Escapeキー
キーコンフィグを実装する予定

16keysの曲選択時
1 2 3 4
q w e r
a s d f
z x c v

ゲームプレイ

16keysの場合
1 2 3 4
q w e r
a s d f
z x c v
9keysの場合(テンキーも対応)
w e r
s d f
x c v
またはテンキー
7 8 9
4 5 6
1 2 3

リザルト

AAA
100~99%以上
AA
99~95%以上
A
95~90%以上
B
90~80%以上
C
80~70%以上
D
70~60%以上
E
60%未満

ELEファイルの書式

:と;の間に文字が入ります。
#TITLE
曲名を指定。

#SUBTITLE
曲名のサブタイトルを指定。

#ARTIST
アーティスト名を指定。

#ALBUMART
アルバムアートを指定。

#MUSIC
曲ファイルを指定。

#OFFSET
曲に対する譜面の開始位置。(単位はミリ秒で記述)

(例)
-170 → -0.17秒遅れてスタート(0.17秒早くスタート)

#BPMS
曲のBPMを指定。
(例)
182,364,182
,(カンマ)で区切る。

#BPMPOSITIONS
BPMを変更する場所の拍数を指定。
(例)
0,42,44
,(カンマ)で区切る。

譜面の書式
#NOTE
/*------------9keys--------------*/
keys:9
BASIC:2;
5,0,2
6,0,5
7,0,8
7,16,4
......
使用キー数、難易度の指定を記述。
□,□,□は順に小節数、1拍を32等分した何個目か、Noteの場所の指定を表す。

ノートの時間計算(押されるべき時間を求める)

何かの参考になればと思い書きます。

BPM変化無しの場合

(押されるべき時間)=60000(ミリ秒)/BPM×{(小節数)×4+(1拍を32等分した何個目か)/8}+オフセット

BPM変化有りの場合

各BPM変化ポジション(拍数)をAnとする。
An=(小節数)×4+(1拍を32等分した何個目か)/8
各BPM変化ポジションの差の数列をBnとすると、
Bn=An+1-An
各BPM変化ポジション間の時間をTnとして、
Tn=Bn×60000/BPM[n] なので
(押されるべき時間)=(k=0Σn)Tn+60000/BPM[n]×{(小節数)×4+(1拍を32等分した何個目か)/8}+オフセット

ノートの描画計算

jubeatの場合は時間で固定位置にアニメーション描画させる。
StepMania(DDR)やⅡDXの場合は座標計算が必要です。

jubeatの場合

(現在時間)-(押されるべき時間)< (一枚あたりの表示時間)×{(不等式を満たす最小の自然数)-((ジャストが何枚目か)+1)}
上式から何枚目を描画させるかを判定させる。
不等式を満たす最小の自然数が解になる。

スクロールノート(DDR、ⅡDX、太鼓、etc)の場合

BPM変化無しの場合

(1拍分のノート間隔(pixel))=(等速時の1拍分のノート間隔)×(倍速オプション)
1秒間あたりのフレーム数(FPS)を60とすると
(1秒間あたりの拍数)=BPM/60
(1拍あたりのフレーム数)=FPS/(1秒間あたりの拍数)なので
(1フレームあたりに動かす座標)=(1拍分のノート間隔)/(1拍あたりのフレーム数)

スクロールノート(DDR、ⅡDX、太鼓、etc)の場合

BPM変化有りの場合

n=BPM変化した回数とし、
ノートの座標を求める。
(ノートのポジション)=32×(小節数)+(1拍を32等分した何個目か)
各BPM変化ポジションの差の数列をBnとすると、
Bn=An+1-An
各BPM変化ポジション間の時間をTnとして、
Tn=Bn×60000.0/BPM[n]
各BPM変化する時間をCnとして、
Cn=(k=0Σn)Tn+オフセット

ここからゲームプレイ中における計算
BPM変化させる時間になったらBPM変化の差から譜面のずれる座標を計算。
BPMの差によるズレ[y]=(k=0Σn){等速時の1拍分の座標[y]×(Cn-Cn+1)[ms]×(BPM[n]-BPM[k])/60000[ms]}
BPM変化によってずれる座標[y]=
(倍速オプション)×
{オフセット[ms]×等速時の1拍分のノート間隔[y]×(BPM[n]/60000)[beat/ms]+BPMの差によってズレる座標[y]}[y]
+判定ラインの座標[y]

1秒間あたりの拍数[beat/s]=BPM[n]/60
1拍あたりのフレーム数[Hz/beat] =(PCの垂直同期信号に合うフレーム数。60FPSにする)[Hz]/1秒間あたりの拍数[beat/s]
1フレームあたりに動かす座標[y/Hz]=1拍分の間隔[y/beat]/1拍あたりのフレーム数[Hz/beat]
1拍分の座標[y]=等速時の1拍分の座標[y]×倍速オプション
したがって、
ノートの座標[y]=(ノートのポジション/8 [beat]×1拍分の座標[y/beat])[y]+BPM変化によってずれる座標[y]
-1フレームあたりに動かす座標[y/Hz]×再生時間[ms]×60[Hz]/1000[ms]

キー音無し7鍵(Mercury Vapor Lamp contains.)
[Download]