0.準備
1.譜面ファイルの作成
2.各ファイルの設置
3.ゲームの初期化
4.状態調査用ツールssrochk
5.ルームモード
6.小型チャットSSROCHAT
本ゲームにはCGIが必要なので、CGI(perl)が使用出来るサーバーでなければならない。
「ゲームCGI」に分類されると考えられるので、それが許可されているかも合わせて確認する事。
必要なファイル
・SSRO通信ファイルセット
・SSRO本体(右クリック保存)
・再生用html(右クリック保存する。拡張子をhtmlに変更すること) ←判るならば自作でもよい
・譜面ファイルdata.txt
・音声ファイルbgm.mp3
「ディレクトリ」は「フォルダ」と同義である。
譜面ファイルと音声ファイルの仕様は、CarmBeatと基本的に同じである。
譜面の作成およびテストプレイはそちらで行うこと。
相違点は以下である。
(ver1.15より背景が使えるようになった。背景の仕様はCarmBeatと全く同じである)
・level項(難易度)は無視される。 ・譜面データは、seq1項 だけが使われる。 ・全ての拡張機能は無視される。 ・使えるノートの種類に制限がある(後述)
譜面速度(&scroll_time)は、例えば4分音符の実時間と同じにしておけば、4分音符の長さのノートが連続した時に、綺麗に並ぶ。
よく判らなければ、フォーマット1の時は単位時間(&unit_time)の1倍か2倍か4倍を譜面速度に。フォーマット3か4の時は、小節時間(#nnn)の1/4を譜面速度にしてから、その値を「2倍にするor半分にする」にしていくことで調整する。
新たに記述しなければならない点は以下である。
data.txtの適当な行に書く。
&maxmem=(定員) このゲームに参加出来る最大人数を書く。 2以上で上限はないが、10以下程度を推奨。
&rectime=(募集期間(秒)) 参加者を受け付ける時間を秒で書く。 1以上でなければならない。 1〜3分くらいを推奨。
&cgipath=(CGIディレクトリへの相対パス) ssro.swf から見て、各CGIファイルのあるディレクトリを、相対パスで記述する。 「.」ではじまり、「/」で終わること。 例: &cgipath=../cgi-bin/ssro/
&timerrev=(時計修正値(秒)) PCの時計を完全に合わせた場合でも、 サーバーの時計との誤差がある場合にゲームを開始できない。 PCの時計が合っている状態が望ましいので、 PCの時計にこの値(秒)が足される事で、 サーバーの時計との誤差を埋めることが出来る。 誤差がどれだけかは、PCの時計を合わせた上で、 SSROの時計合わせエラーのメッセージを参照すること。 例: 実時間 = PCの時計 = 10秒、サーバーの時計 = 19秒 である場合、 &timerrev=9 不要であればこの項は書かない。
&sohead=(保存データヘッダ) 名前と戦績はサーバー毎に管理されているが、 戦績が意図せずに別のサイトのゲームと共有する可能性がある。 保存データヘッダを設定しておく事でそれを防ぐ。 これが同じであるデータ間で、戦績が共有される。 あなた(データ作成者)の名前のようなものを書いておき、 あなたが作るデータでは全て同じにしておくのが望ましい。 逆に、データごとに違う値にしておけば、 戦績は曲ごとに別々に管理される事になる。 例: &sohead=D4U 不要であればこの項は書かない。
&joinlim=(参加条件) ゲームに参加するには「n勝以上/n勝以下」という条件をつける。 n勝以上にしたい場合、nを書く。 n勝以下にしたい場合、nを-1倍した数を書く。 例: &joinlim=5 (5勝以上でなければ参加できない) &joinlim=-3 (3勝以下でなければ参加できない) 不要であればこの項は書かない。
&verlim=(バージョン値) 本体のバージョンをチェックする。 バージョン番号の100倍の数を書くと、本体のバージョンがそれよりも若ければ 警告が出てゲームを開始できなくなる。 ブラウザが新しい本体を読み込んでいない場合の対策。 例: &verlim=109 (本体バージョン1.09以上が必要) 不要であればこの項は書かない。
使用出来るノートのデータは以下である。
1〜9
これら以外のノートは使えない。
!
または
同じデータを二つ並べるロングノート。
ロングノートは、押し続けなければならない長いノートである。
本来のノートのデータの直後に「!」と書く事で、ロングノートを開始する。
同種のノートが次に来た時がロングノートの終わりになる。
(「2!」で[↓]ロングノートの開始。次に「2」が来るまで続く)
同じデータを2つ並べても同様の意味になる。
(「22」で[↓]ロングノートの開始。次に「2」が来るまで続く)
ロングノートの終了直後に同じノートを置くと、誤動作でミスし易くなる。
例: 普通のロングノート 2!,,,2, 22,,,2, ロングノートの途中で別のノートが混ざる 2!,,4,,2, 22,,4,,2, 複数のロングノートが同時に開始する 2!4!,,,,24, 2244,,,,24,@
(フォーマット1/3/4)譜面停止命令。
@のある拍の間、画面上のノートが停止する。
@のある拍にノートもある場合、そのノートを取った瞬間から止まることになる。
@を連続した拍に書いてもよい。その場合はまとめて停止する。
@のある拍の次の拍にはノートを置かないこと。
停止するからと言ってデータとしての拍が増えたり減ったりはしない。まず停止しない譜面を作ってから、@を入れるようにすると判り易い。
例: 2,,,4@,@,@,@,,,,,8 [←]と同時に4拍ぶん停止する。S/停止時間(秒)
(フォーマット2)譜面停止イベント
注意、Sは半角大文字である。
指定した時間から画面上のノートを停止する。
スラッシュが1つ増えるので、実際には
このように記述する。
28.827104/S/0.5,
停止している間にノートが発生しないようにすること。
C/新しい譜面速度(秒)
(フォーマット2)譜面速度変更イベント
注意、Cは半角大文字である。
指定した時間に譜面速度を変更する。
スラッシュが1つ増えるので、実際には
このように記述する。
28.827104/C/0.273074,
999 演奏を中止し、ゲームを終了する。
998 演奏を続けたまま、ゲームを終了する。
$CHK 中間集計開始。
集計が行われ、ジャマーが配られる。
ここから10秒間は、$CHK や $JS を置かないこと。$JS 妨害開始。
ジャマーを持っている者に対して妨害を開始する。
ジャマーを1つ消費する。
この後、必ず $JE で終了させること。
$JE 妨害終了。
妨害を終了する。
$NORND ランダム無効
通常、妨害の発生時には、併せてランダム(譜面を自動的に変更)が発生する。
$NORNDを譜面のどこかに書いておくと、ランダムが発生しない。
$CHK の後の5~10秒ほどにノートが無ければ、集計結果を見やすくなる。
特にコンセプト等がなければ、10秒おきに $CHK、$JS、$JE、$CHK、$JS、$JE …と配置するとよい。
全てのファイルが準備出来たら、まず2つのcgiファイルを開いて、perlのパスを確認し、必要ならば変更する。
以下のように各ファイルをアップロードする。
swfファイルのあるディレクトリ
cgiファイルのあるディレクトリ
ssro.swf data.txt bgm.mp3 再生用.html 背景用ファイル(任意)swfとmp3とjpgはバイナリ転送 ssroct.cgi (パーミッション755) timer.cgi (755) jcode.pl (644) match.dat (666) game.dat (666)全てアスキー転送
この全てのファイルを1組としてゲームで使用する。
複数のゲームを置く場合は、cgiディレクトリも別々に用意しなければならない。
cgiファイルを使い回す事は出来ない。
まず、2つのcgiファイルをブラウザで開いてみること。
「result=〜」または「tim=〜」と表示されたら、設置はOKである。
再生用htmlのページを開く事でゲームが始まる。
最初の時間チェックの所で止まる場合は、cgiディレクトリのパス(&cgipath)が間違っている。
以下を行う事で、ゲーム全体を初期化できる。
lockというディレクトリがあったら消す。 lock2というディレクトリがあったら消す。 match.datを初期状態に戻す。 game.datを初期状態に戻す。
複数のゲームを設置した時のために、各ゲームの状態を定期的に表示していくFLASHが、SSROCHKである。
ssrochk.swf(右クリック保存)
(ver4)
これを使うには、他に、ssrochk.txtという名前のテキストファイルが必要である。
これは以下のような内容にする。
相対パスとは、このssrochk.swf から見て、ゲームのCGIディレクトリがある場所を、相対パスで記述する。
&chkurl= (1つ目のゲームへの相対パス)?(1つ目のゲームの名前)[改行] (2つ目のゲームへの相対パス)?(2つ目のゲームの名前)[改行] :
「.」ではじまり、「/」で終わること。
半角「?」で区切って、ゲームの名前(多くの場合曲名)を書き、改行する。
これを必要なだけ記述する。
例:
&chkurl= ../cgi-bin/ssro/game1/?音速のメリーゴーランド ../cgi-bin/ssro/game2/?jackpot style ../cgi-bin/ssro/game3/?最後の一撃
ssrochk.swfとssrochk.txtを同じ場所に置き、swfを表示する事で動作する。
swfの表示タグは以下のような単純なものでよい。FLASHの大きさは300x150である。
<embed src="ssrochk.swf" width=300 height=150>
12/8 ver4 10分経過で残像(ゲームに誰もいないのに名前が残る)が消えるように
12/2 ver3 ルームモード時の表示がおかしくなる事の修正
SSROは基本的に1つのゲームに1つの曲と1つの譜面だけを使うが、このサイトのゲームのように、複数の曲を用意して、参加者が選択する形式でのゲームが可能である。
ルームモードと呼ぶ。
通常形式でのゲームの設置に成功してから試すこと。
ルームモード時の各ファイルの位置は、以下のようになる。
通常形式と同様に、swfファイルのあるディレトクリと、cgiファイルのあるディレクトリ全てを1つのゲームで使用する。
swfファイルのある
ディレクトリ
cgiファイルのある
ディレクトリ
曲データのある
ディレクトリ
ssro.swf data.txt(ルームモード制御用) 再生用.html ssroct.cgi (パーミッション755) timer.cgi (755) jcode.pl (644) match.dat (666) game.dat (666) data.txt(譜面用) bgm.mp3 背景用ファイル(任意)
それとは別に、1つの曲ごとに、別々の譜面用ディレクトリにdata.txtとbgm.mp3を入れる。
曲データのあるディレクトリは複数のゲームで使い回せるので、1つの曲につき1つだけ置けばよい。
譜面用のdata.txtには以下の変更があるので注意する。
・(carmbeatと同じように)seq1、seq2、seq3の3つの譜面を作成できる。それぞれ、LIGHT、NORMAL、MANIACという名前がついている。
・SSROの設定のための &maxmem &rectime &cgipath &timerrev &sohead &joinlim &verlim の各項は、一切書かない。書くと誤動作する可能性があるので注意。
制御用の特別なdata.txtの内容は以下である。
↓は、改行である。ほとんどが通常のdata.txtに書くものと同じである。
head=carm1↓ &roommode=1↓ &title=(名称(使われない))↓ &maxmem=(定員)↓ &rectime=(募集時間(秒))↓ &cgipath=(cgiディレクトリの相対パス)↓ &timerrev=(時計修正値)(省略可)↓ &sohead=(保存データヘッダ)(省略可)↓ &joinlim=(参加制限)(省略可)↓ &verlim=(バージョン値)(省略可)↓ &games=↓ (曲データ)↓
&roommode=1
は、この通りに書く。
&games項には、選べる曲とゲームのリストを書く。
書式は以下である。
このように、1行に1曲のデータの内容を半角「?」で区切って書き、改行して必要なだけ並べる。
&games= (1曲目の相対パス)?(使用する譜面番号)?(曲名)[改行] (2曲目の相対パス)?(使用する譜面番号)?(曲名)[改行] :
相対パスとは、ssro.swfから見て、data.txtとbgm.mp3のあるディレクトリの場所を、相対パスで記述する。
「.」ではじまり、「/」で終わること。
譜面番号は、1~3を書く。
1ならばseq1を使う。
例:
&games= ../music1/?1?豆腐の一撃[LIGHT] ../music1/?3?豆腐の一撃[MANIAC] ../music2/?2?でじ☆どら[NORMAL]
以上で準備は完了である。
通常通り、再生用htmlを表示する。
SSROCHATは、参加者同士でコンタクトを取りたい場合のための小型チャットである。
CGI製チャットよりはサーバーに対する負荷が極めて小さいのが特徴。
SSROCHATファイルセット(ver7)
これらのファイルを配置する場所は以下のようにする。
まず、ssrochat.cgiをテキストエディタなどで開き、perlのパスを確認する。
swfファイルのある
ディレクトリ
cgiファイルのある
ディレクトリ
ssrochat.swf
ssrochat.txt
ssrochat.cgi(パーミッション755)
ssrochat.dat(666)
jcode.pl(644)
ssrochat.txtを開き、以下のように編集する。
&cgipath=(CGIディレクトリへのパス) &sohead=(SSROの保存データヘッダ) &utime=(有効時間(分))
CGIディレクトリのパスには、ssrochat.swfから見て、CGIディレクトリのある場所を、相対パスで記述する。
「.」ではじまり、「/」で終わること。
保存データヘッダは、SSROで使っているものと同じである。
そのヘッダで保存されたデータが無いと、チャットに参加できない。
有効時間は、現在からさかのぼって、何分の間のログを有効にするかである。
有効時間が10分であれば、現在から10分前までのログが表示され、10分間発言がなければ古いログが削除される。
10~30くらいを推奨。
動作確認として、ssrochat.cgiをブラウザで表示する。「result=〜」と表示されればOK。
ssrochat.swfをブラウザで表示する。「タイムアウト」になる場合は、ファイルの配置か&cgipathが間違っている。
ssrochk.swfを表示する事で動作する。
swfの表示タグは以下のような単純なものでよい。FLASHの大きさは400x300である。
表示の大きさを変える場合は、横4:縦3の対比を守ったほうがよい。
<embed src="ssrochat.swf" width=400 height=300>
別の場所にあるswfを表示する場合は、例えば以下のようになるが、ブラウザの仕様により、あたかも、このhtmlがある場所にswfがあるかのように動作する。
<embed src="chat/ssrochat.swf" width=400 height=300>
この場合は、ssrochat.txtをこのhtmlがある場所に置かなければならない。
チャットの操作方法は、右上の「?」を押すと表示される。
08/1/7 ver7 退出する時にメッセージが出るようにした
07/12/25 ver6 重いのがやっと直った
同日 ver4 ver3で極端に重くなったのを修正
同日 ver3 発言が何分前か表示するようにした
07/12/24 ver2 公開版