(TOP)

07/1/26 本体ver1.24 SSRをブラウザで表示した時に異常が起こる場合、最新の本体と差し替えてみて下さい。
06/7/31 本体ver1.22

概要  サンプルゲーム  遊び方  プレイに関する注意  結果出力と証明コード  小ネタ  オリジナルデータ作成方法  権利など  更新履歴 
概要

Stomp Stomp Revolution(通称SSR)は、曲に合わせて流れてくる物体(ノート)を、対応するキーを押して消していくというゲームで、いわゆるDDRクローンである。

また、flashはシステムを兼ねており、いくつかのファイルを自分で用意することによって、オリジナルのデータが作成可能である。
この際にflashの作成環境などは必要ない。

サンプルゲーム
タイトル難易度参考得点(本体ver1.13)
さくらさくら(D4U ver)
1/2/4MANIAC 11000 (コロいぬ氏)
PARAFLA SONG(EUROMIX)
4/7MANIAC 9221 (D4U)
num oqqq SSR
2/3/5MANIAC 10676 (S.K氏) データ作成/コロいぬ氏
Final Party short edit
2/3/6MANIAC 10709 (S.K氏) データ作成/コロいぬ氏
D-chord.
2/4/4MANIAC 10588 (コロいぬ氏) データ作成/コロいぬ氏
ピアノ協奏曲第1番”ミジンコ”
4/8MANIAC 9443 (D4U)

遊び方
ゲーム中のHELP項に説明があるので、そちらを参照のこと。

プレイに関する注意
・キーが反応しない場合、まずflashの中をクリックすること。
 これはキーを使用するflash全てについて言えることである。

結果出力と証明コード
クリアーすると、結果のテキストがクリップボードにコピーされる。
例えば以下のような内容である。
*StompStompRevolution RESULT*
TITLE:助けて!スペランカー先生(残機1MIX)
MUSIC by:Mr.S
DATA by:D4U
LEVEL:NORMAL(★5)
JUDGE:68per/0gre/1gud/4bad/1mis
MAX COMBO:29
OPTION:CHANGE-SPEED 
SCORE:8729 (RANK A)
譜面コード:27507
証明コード:
#27507#8729#65650#

譜面コードとは、その譜面の内容を表した数である。少しでも譜面が変更されれば、譜面コードも変わる。
3つの譜面それぞれに別々の譜面コードがある。

証明コードとは、4つの「#」と数字で構成された最後の1行のことであり、この譜面コードでこの得点が出たという事を証明する。
証明コードチェッカー(タイトル画面で[C])により、正当性をチェックできる。

小ネタ
・最高得点は10000である(修正前)
・ロングノートは、GREAT以上の判定で取得開始。最後まで取れば必ずPERFECTになる。
・[←↓→]の同時押しは可能。
・画面に存在するノートは20個と決まっているので、あまりに詰まっている譜面の場合、画面の中ほどから次々ノートが湧いてくるという現象が見える。暴力譜面もほどほどに。
・体力は満タンで100。perfect=+2 great=+1 bad=-5 miss=-10。EASYの時は減りが半分。

オリジナルデータ作成方法
SSR本体(右クリック保存)
「さくらさくら」構成ファイル.lzh (400k)

オリジナルデータを作成するには、上のSSR本体(ssr.swf)の他に、以下のファイルを用意する。
それぞれ、ファイル名は変更できない。

bgm.mp3
演奏用音声ファイル。
mp3形式であり、固定ビットレートであり、サンプリングレートが11kHz/22kHz/44kHzのいずれかである必要がある。
また、曲の最後の0.1秒間は演奏されない。
back.jpg または back.swf
背景ファイル。無くてもよい
いずれを使う場合でも、タイトル表示によって上30ドットほどが隠れる。

jpgファイルを使用する場合
プログレッシブでないjpeg画像であり、300x300ドットであるものを用意する。

swfファイルを使用する場合
サイズ300x300、40fps のswfファイルを用意する。
どんなswfファイルでも利用出来るが、理想は、
音が発生せず、ある程度の長さでループするものである。
背景swfを単独で再生して正しく再生されても、背景として読み込むとおかしくなる場合がある。
(原因は恐らくターゲット指定のミス。背景swfはスプライト(ムービークリップ)の中に読みこんでいるので、この背景swfの中には_rootが存在しない(_rootを指定するとおかしくなる)。ターゲットの相対指定(_parent)をうまく使い、_rootという記述をしないこと)
また、SSRのほうの音と同期を取ろうとしても無理なので、どうしてもやる場合は、背景swfの(フレーム数ではなく)再生時間を厳密に計測し、それに従って画面を切り替える等で対処すること。
(なお、 _root.bgm.position_root.bgm.duration で、背景swfの中から演奏中の曲の進度が取得出来る)
data.txt 雛形(右クリック保存)
譜面データファイル。
テキストファイルであり、以下の形式で作成する。
は、改行である。
head=ssr1
&title=データのタイトル
&music_by=作曲者名(省略可)
&data_by=データ作成者名(省略可)
&back=背景コード(1,2)(背景を使用しない場合不要)
&back_alpha=背景の不透明度(0~100)(背景を使用しない場合不要)
&level1=第1譜面の難易度(1~10)(第1譜面が無い場合不要)
&level2=第2譜面の難易度(1~10)(第2譜面が無い場合不要)
&level3=第3譜面の難易度(1~10)(第3譜面が無い場合不要)
&format=譜面フォーマット(1,2)
&start_time=演奏開始時間(秒)(譜面フォーマット2の場合不要)
&unit_time=単位時間(秒)(譜面フォーマット2の場合不要)
&scroll_time=譜面速度(秒)
&seq1=
(第1譜面データ)
&seq2=
(第2譜面データ)
&seq3=
(第3譜面データ)

ヘッダ
head=ssr1
1行目にはこのファイルヘッダを、必ずこの通りに記述する。

title項
music_by項
data_by項
title項は、通例として使用曲の曲名をそのまま使う場合が多い。
data_by項のデータ作成者とは、貴方の事である。

back項
back_alpha項
back=1 とすると、back.jpgを背景とする。
back=2 とすると、back.swfを背景とする。
back_alphaは、背景の不透明度である。100の時に普通に表示されるが、それによってノートが見えなくなっても困るので、不透明度を減らす事によって色を薄くする。

背景を使用しない場合はこれらの項は記述しない。

level1項
level2項
level3項
1つのデータファイルには3つの譜面を記述することが出来る。
それぞれ、level1項=第1譜面(LIGHT)、level2項=第2譜面(NORMAL)、level3項=第3譜面(MANIAC)、という名前がついている。
それぞれの譜面について、存在しないならばその項は記述しない。
存在するのならば、難易度を1~10の範囲で記述する。数が多いほど難しいという意味である。

format項
譜面データは2種類のどちらかの形式(フォーマット)で書く事が出来る。

format=1 の時、フォーマット1で記述する。これは、1拍ずつのデータを順番に書き連ねていく形式であり、譜面を考えながらでも効率よく作成が出来る。途中でテンポが変わる曲には正しく対応できない。
format=2 の時、フォーマット2で記述する。これは、ノート1つごとに絶対時間を細かく記述する形式であり、何らかの方法(ツール等)で時間の計算が出来ることが前提となっている。計算さえ正しければテンポ変化にも対応出来る他、フォーマット1では使えない「譜面速度変化」「時間停止」のイベントが使用できる。

フォーマット1での記述

まず、1拍の長さを決定する。
1拍とは譜面の最小単位であり、たとえば4分音符だけで構成出来るデータであれば、1拍の長さは4分音符になる。ひとつでも8分音符が混ざっていれば、最小は8分音符になるので、1拍の長さは8分音符である。

1拍の実時間が、単位時間(unit_time項)となる。
これを計測する。この計測が正しく出来ないとまともなデータにはならない。

計測のために、曲から始点と終点を選ぶ。
曲の速度(テンポ)が変わらず、拍子がはっきりしており、かつ、なるべく長い部分を選ぶ。
(4拍ぶんを計測して4で割るよりも、200拍ぶんを計測して200で割ったほうが遥かに信頼出来る結果になるため)
MP3DirectCutなど、音声ファイルの「5.127秒地点」のように細かい計測が出来るソフトを使い、始点と終点の間(区間)の時間を計測する。
その区間が1拍の長さの何倍かを数え、区間の実時間から割ることで、単位時間が求められる。小数を丸めないこと。

始点時間 + (単位時間 × 拍数) ≒ 終点時間

となる事を確認すること。誤差は最低でも0.1秒以下に。

例:
使用曲の中で「始点2.612秒」から「終点32.104秒」を「54拍」(4分音符×54)ぶんの長さとして計測する。
(32.104[秒] - 2.612[秒]) ÷ 54[拍] = 0.5461481[秒]
という計算により、この曲の単位時間は0.5461481秒となる。

次に、演奏開始時間(start_time項)を決める。
譜面データは、演奏開始時間以降にしか設定できない。
譜面データの一番最初にノートを置いた場合、それは演奏開始時間と同じ時間に現れることになる。
問題がなければ、先に使った始点をそのまま使うと良い。
演奏開始時間から単位時間をどれだけ足しても、実際の拍とずれていない事が絶対条件である。

次に、譜面速度(scroll_time項)を決める。
これは、ノートが1拍ぶん移動するのに要する時間であり、大きいほどノートは遅いという事になる。
通常、先に求めた単位時間をそのまま使う。これにより、連続したノートがちょうど並ぶような速度になる。
この速度を基本として、速度を2倍にしたい場合は譜面速度を2で割る。速度を半分にしたい場合は2倍にする。

譜面データ(seq1~seq3項)は、以下のように記述する。
1拍目のデータ,2拍目のデータ,3拍目のデータ, …
このように、その拍に存在するノートの情報を、1拍ごとに半角のカンマで区切って書き連ねていく。
ノートのない拍は、何も書かない。
改行は全て無視されるので、見やすくするためにいくらでも改行してよい。

データの内容は以下である。
データ内容
1[S]ノート
3[E]ノート
2[↓]
4[←]
6[→]
8[↑]
1拍に複数のノートがある場合は、その全てを記述する(「24」「861」など)
3つ以上の同時押しは殆どのパターンがキーが反応しないので、正しく押せるのか確認しておくこと。
データを2つ並べると、ロングノート開始の意味になる。同種のデータが次に単独で現れるまでの間を結ぶ、ロングノートとなる。
(「22」は[↓]ロングノートの開始。次に「2」が来るまでの間続く)
(「22448」(↓と←のロングノート開始+↑単独)というような記述も可能)
ロングノートの次に単独ではなく、同種のロングノートが来ないようにする事。
(「22」の次にまた「22」は駄目)

以上を踏まえて、例えばこのように記述する。
&seq1=
4,,4,,6,,,,
4,,4,,6,,,,
2,,2,,28,,28,,
4,,6,,4466,,,46, (「44」から「4」までの間のロングノート)
見やすくするために、8拍ごとに改行している。

フォーマット2での記述

フォーマット2の場合、単位時間という概念は無いが、譜面速度(scroll_time項)を求める必要がある。
フォーマット1と同じように計測し、決定すること。譜面速度はイベントにより変更が可能である。

譜面データ(seq1~seq3項)は、以下のように記述する。
1つ目のノートの到達時間(秒)/1つ目のノートの内容,
2つ目のノートの到達時間(秒)/2つ目のノートの内容,
3つ目のノートの到達時間(秒)/3つ目のノートの内容,
 :
このように、ノート1つのデータごとに半角カンマで区切り、さらにその中で、半角スラッシュで区切って記述する。
改行は全て無視されるので、見やすくするためにいくらでも改行してよい。

ノートの内容は以下である。(フォーマット1とほぼ同じ)
データ内容
1[S]ノート
3[E]ノート
2[↓]
4[←]
6[→]
8[↑]
c/新しい譜面速度(秒)譜面速度変更イベント
s/停止時間(秒)時間停止イベント
フォーマット1と違い、1つのノートのデータに、複数のノート情報を記述する事は出来ない。
同じタイミングで複数のノートが到達する場合は、同じ時間を指定して行を分ける。
21.727180/24,
ノート2と4をまとめて書く事は出来ない。
この場合は…
21.727180/2,
21.727180/4,
このように、同じ時間で2行に分ける。
ロングノートについてはフォーマット1と同じである。

cイベントにより、指定した時間に譜面速度を変更する。
スラッシュが1つ増えるので、実際には
28.827104/c/0.273074,
このように記述する。
譜面速度が変化した瞬間、全てのノートの座標の再計算が行われるので、極端な話、全てのノートがワープする。
プレイしづらくなるので、ノートの無い部分で使うべきである。

sイベントにより、指定した時間に、時間を停止する。
スラッシュが1つ増えるので、実際には
28.827104/s/3,
このように記述する。
この例では、曲の28.〜秒地点に達したら、3秒間の間、曲が停止し、画面(ノートの動き)が停止する。
3秒後、曲は停止された箇所からふたたび再生され、ノートも動き出す。
曲の演奏箇所がワープするわけではない事に注意。
(この例では、28秒地点まで再生し、3秒停止し、また28秒地点から再開する)

以下は例である。
いちいち手計算しながら時間を求めるという手間はありえないので、何らかのツールなどで計算する事が前提となっている。
&seq1=
2.612000/2,
2.885074/4,
3.158148/2,
3.431222/44,
3.704296/6,
4.250444/6,
4.796592/8,
4.796592/2,
5.069666/6,
5.342740/8,
5.615814/c/0.273074,
5.888888/4,
 :

全てのファイルが用意出来たら、flash再生用のhtmlファイルを作成する。
よくわからなければ以下をコピーして使うこと。
以上を含めて、以下のファイル…
ssr.swf
bgm.mp3
data.txt
再生用.html
(背景を使うのであれば)back.jpg または back.swf
をサーバーの同じディレクトリ(フォルダ)に置く事で作業が完了する。
data.txtはテキストファイルなのでアスキー転送する事。
再生用htmlを実行してテストすること。
ローカルでプレイする際も同じディレクトリであれば動作する。

また、以上のファイルをまとめたアーカイブを、持ち帰り用として用意しておくのは良い心がけである。
(ファイル名がバレてるからキャッシュから集められるけど)

権利など
Stomp Stomp RevolutionはD4Uが作成し、著作権を有する。
「ssr.swf」は、許可なく使用や流用など自由に行える。

作成されたStomp Stomp Revolution用オリジナルデータは、データの作成者が著作権を有する。
許可なく自由に公開、配布、販売等可能である。その際「ssr.swf」を含めてよい。
使用楽曲については各人の責任において扱うこと。

Stomp Stomp RevolutionはCoa氏製作のflash作成ツール「ParaFla!」で作成された。

本体更新履歴
07/1/26
Ver 1.24
リビルド。
7/31
Ver 1.22
背景swfから、以下の変数が利用出来るようになった。
_root.st_life //体力(0~100)
_root.st_pe //PERFECT数
_root.st_gr //GREAT数
_root.st_go //GOOD数
_root.st_ba //BAD数
_root.st_mi //MISS数
_root.st_combo //現在のコンボ数
_root.st_maxcombo //最高コンボ数
_root.st_nofnote //総ノート数
7/3
Ver 1.21
サウンドと背景の事前ロードがうまくいかない時があったのを修正/「曲の最後の1秒を演奏しない」→「曲の最後の0.1秒を演奏しない」
06/7/2
Ver 1.2
FlashPlayer9でプレイ出来ない事の修正/サウンドと背景を実行前にロード待ち/他多々微修正

Ver 1.13
判定基準時間を0.05秒→0.07秒に(perfect許容時間が+0.04秒)
10/28
Ver 1.12
見逃したノートが消える条件を変更(SPEEDが速いとやたらと早く消えてMISSになる事の修正)

Ver 1.11
背景がoffに出来なかった事をfix
10/27
Ver 1.1
判定方法の根本的変更

Ver 1.03
背景が表示されていなかったのをfix/判定方法の若干の変更

Ver 1.02
「曲の99%を演奏したら終了」→「曲の最後の1秒間は演奏しない」/GREATがPERFECTとして数えられていたのをfix/判定方法の若干の変更/試験的に50fps→40fpsに
10/26
Ver 1.01
曲の99%を演奏したら終了するように変更(曲の終端を正しく取得出来ない場合があるため)
10/25
Ver 1.0
初版

Written by D4U@EZ●DJに似せたかった気もする




アクセス解析&SEM/SEO講座 for オンラインショップ開業/運営