リズムゲームStepManiaのバージョン5系が既に公開されていることを受けて、ここでは同ソフトウェアをGNU/Linuxで使用する上でのメモを主に扱う。
プログラム内の操作は標準のテーマを使用していることを前提としているため、外部のテーマをインストールして適用している場合は操作や表示が異なる場合がある。
- バージョン5系への流れ
- バージョン5系でのLinux上の大きな変更点
- インストール
- ゲームプレイに関するメモ
- 5.0.x系のソースをバージョン6以上のGCCでビルドした場合に起動しない問題 (2018/4/27追記)
バージョン5系への流れ
バージョン3.9の公開後はバージョン4系が開発されていたが、複雑で扱いにくいものになってしまっており、これは後に取り消された。
代わりに(バージョン3.9に近い状態の)2006年中頃のソースから開発をやり直したものをもとにSSCと呼ばれる開発チームが開発を引き継いだもの[1]が後に公式の次期バージョン(バージョン5)として位置付けられてここ数年間アルファ版からベータ版という段階で活発に開発されており、ついにこれが正式版として公開されるところまできた。
正式版となってからも既に数回更新が行われている。
バージョン5系でのLinux上の大きな変更点
サウンドデーモン対応
バージョン3.9ではサウンド出力がALSAやOSSへの直接出力のみとなっており、サウンドデーモンを利用することはできなかったが、バージョン5系ではサウンドデーモンのPulseAudioとJACKに対応しており、これらを通じて音声を出力することができる。これにより、標準のサウンドカード以外(HDMI出力や追加サウンドカード)への出力や音量調節がしやすくなったり、スクリーンキャストの音声付きキャプチャが行いやすくなったりしている。
PulseAudioとJACKの両方を有効にしてビルドした場合、両方のサウンドデーモンが動作しているときにはJACKが優先される(先に試行される)。JACKの出力先が現在音が鳴っている出力先以外(ダミー出力含む)で動作していると音が鳴らないことがあり、これをPulseAudio経由でその出力先へ出力されるようにしたい場合は、JACKが動いていないときにStepManiaを起動して(PulseAudioに出力されるようにして)おく[2]。
サウンド出力先を選択したり切り替えたりする機能はバージョン5.0.8時点では存在しない。
SDLは不要に
ゲームや仮想化ソフトウェアなどでよく使われている “SDL” ライブラリはバージョン5系では使われておらず、動作には不要となる。キーなどの入力はOSごとに用意されたプログラムで処理されており、(以下は3.9系と同様だが)描画はOpenGL関係のライブラリで、サウンドはサウンド関係のライブラリでそれぞれ扱われている。
一般ユーザの設定/データのディレクトリの変更
一般ユーザ用の設定ファイルや追加データの配置ディレクトリの場所がバージョン5系専用の[ホームディレクトリ]/.stepmania-5.0/
以下となっている。Windowsでは%APPDATA%\StepMania 5.0\
(通常はC:\Users\[ユーザ名]\AppData\Roaming\StepMania 5.0\
)以下。
一度起動するとこのディレクトリと追加データ用のサブディレクトリ群が作られ、別途入手した追加データのファイルをこの中に配置することでこれを用いることができる。種類によってはオプション内で設定が必要[3]。
追加データのディレクトリ
ディレクトリ | 入れるデータの種類 |
---|---|
Announcers | アナウンサー |
BGAnimations | 背景のアニメーション |
BackgroundEffects | 背景のエフェクト |
BackgroundTransitions | 背景のトランジション |
CDTitles | 作成者などを示す小さな画像(曲選択時に回転する) |
Characters | プレイ時に踊るキャラクター |
Courses | コース(.crs)ファイル |
NoteSkins | 譜面中の矢印などの外観スキン |
Packages | 追加データを1ファイルにまとめたパッケージ(.smzip)ファイル |
RandomMovies | 背景として使用される動画 |
Songs | 曲グループのディレクトリ |
Themes | プログラム全体の外観テーマ |
特に曲データの追加については
- 拡張子 “.smzip” のファイルは
Packages
へ - .smzipファイルではない書庫を展開したもの(曲ごとのディレクトリを中に含む “曲グループディレクトリ”)は
Songs
へ[4]
と理解していれば問題はない。
なお、上記のディレクトリ群と同様のディレクトリ群はStepMania自体のインストールディレクトリにも存在し、こちらは全てのユーザから利用可能となっている。
インストール
公式配布のバイナリ
バージョン5.0.8のGNU/Linux版はリリースページにあるが、これはx86_64用となっており、32bit版OSでは後述の自作パッケージを利用するかソースからビルドする。
このバイナリはファイルstepmania
を実行すると起動する。データ部分も同梱されているため、追加のファイルは必要ない。
Ubuntu向け自作パッケージ
以前バージョン3.9のパッケージをPPAリポジトリで公開していたが、バージョン5系をppa:kakurasan/stepmania5
のPPAリポジトリで公開している。
PPAリポジトリを追加してパッケージ情報の再読込を行った上でstepmania
パッケージを選択してインストールすると、デスクトップ環境などのメニュー項目として “StepMania” が “ゲーム” の一覧から選択できるようになる他、直接stepmania
コマンドを実行しても開始できる。
手動ビルド
ビルドに必要なパッケージ
以下のパッケージ(ライブラリについては開発ファイル)が使用されるが、一部はStepManiaのソースにも同梱されている。
- CMake
- yasm(FFmpegのビルド時に使用される)
- libGL, libGLESv2[5], libGLU, libGLEW
- libXtst, libXrandr
- libjpeg, libpng
- zlib, libbz2
- libvorbis, libmad
- libpcre
- PulseAudio(libpulse), JACK(libjack), ALSA(libasound)のいずれか
- libva(FFmpegで自動検出され、FFmpeg内で使用される)
- GTK+ 2(必須ではない・起動時の読み込みダイアログでのみ使用)
CMake関係の修正とビルドの作業例
バージョン5.0.8からはビルドシステムとしてCMakeのみがサポートされる、とのことだが、残念ながらまだ一部に問題がある。
下は
- 同梱のFFmpegをビルドの段階で正しく用いるようにする
- タイトル画面で表示されるバージョン番号の表記を実際のバージョンを示すものになるよう修正
- システムのlibpcreを用いる場合のコンパイルエラー対策
といった目的のパッチ。OpenGL ES 2.0を用いる場合は更に修正が必要だが、それを適用して設定ファイル[ホームディレクトリ]/.stepmania-5.0/Save/Preferences.ini
の “VideoRenderers” の値を “gles2” に切り替えてもうまく動かなかったのでここでは扱わない。
(2015/6/26)パッチをバージョン5.0.9向けに更新し、32bit環境でのビルドエラー対策も追加している。
下の画像はバージョン表記の変わったタイトル画面。
stepmania-5.0.9-linux-cmake.patch
ライセンス:パブリックドメイン--- stepmania-5.0.9.orig/CMake/SMDefs.cmake
+++ stepmania-5.0.9/CMake/SMDefs.cmake
@@ -3,20 +3,21 @@
set(SM_VERSION_MINOR 0)
set(SM_VERSION_PATCH 9)
set(SM_VERSION_TRADITIONAL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}.${SM_VERSION_PATCH}")
+set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}.${SM_VERSION_PATCH}")
-execute_process(COMMAND git rev-parse --short HEAD
- WORKING_DIRECTORY "${SM_ROOT_DIR}"
- OUTPUT_VARIABLE SM_VERSION_GIT_HASH
- RESULT_VARIABLE ret
- OUTPUT_STRIP_TRAILING_WHITESPACE
-)
+#execute_process(COMMAND git rev-parse --short HEAD
+# WORKING_DIRECTORY "${SM_ROOT_DIR}"
+# OUTPUT_VARIABLE SM_VERSION_GIT_HASH
+# RESULT_VARIABLE ret
+# OUTPUT_STRIP_TRAILING_WHITESPACE
+#)
-if(NOT (ret STREQUAL "0"))
- set(SM_VERSION_GIT_HASH "UNKNOWN")
- set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-${SM_VERSION_GIT_HASH}")
-else()
- set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-git-${SM_VERSION_GIT_HASH}")
-endif()
+#if(NOT (ret STREQUAL "0"))
+# set(SM_VERSION_GIT_HASH "UNKNOWN")
+# set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-${SM_VERSION_GIT_HASH}")
+#else()
+# set(SM_VERSION_FULL "${SM_VERSION_MAJOR}.${SM_VERSION_MINOR}-git-${SM_VERSION_GIT_HASH}")
+#endif()
if (CMAKE_MAJOR_VERSION STREQUAL "3")
# Use the CMake 3 approach whenever possible.
--- stepmania-5.0.9.orig/StepmaniaCore.cmake
+++ stepmania-5.0.9/StepmaniaCore.cmake
@@ -259,8 +259,7 @@
endif()
else()
set(SM_FFMPEG_VERSION "2.1.3")
- set(SM_FFMPEG_SRC_LIST "${SM_EXTERN_DIR}" "/ffmpeg-linux-" "${SM_FFMPEG_VERSION}")
- sm_join("${SM_FFMPEG_SRC_LIST}" "" SM_FFMPEG_SRC_DIR)
+ set(SM_FFMPEG_SRC_DIR "${SM_ROOT_DIR}/bundle/ffmpeg")
set(SM_FFMPEG_ROOT "${CMAKE_BINARY_DIR}/ffmpeg-prefix/src/ffmpeg-build")
list(APPEND FFMPEG_CONFIGURE
"${SM_FFMPEG_SRC_DIR}/configure"
--- stepmania-5.0.9.orig/src/CMakeLists.txt
+++ stepmania-5.0.9/src/CMakeLists.txt
@@ -376,6 +376,9 @@
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
message("Host processor is 64bit")
sm_add_compile_definition("${SM_EXE_NAME}" CPU_X86_64)
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i[3-6]86")
+ message("Host processor is 32bit")
+ sm_add_compile_definition("${SM_EXE_NAME}" CPU_X86)
endif()
endif()
if (${HAS_FFMPEG})
@@ -389,6 +392,10 @@
sm_add_compile_definition("${SM_EXE_NAME}" HAVE_GTK)
endif()
+ if (PCRE_FOUND)
+ sm_add_compile_definition("${SM_EXE_NAME}" USE_SYSTEM_PCRE)
+ endif()
+
sm_add_compile_definition("${SM_EXE_NAME}" UNIX)
if("${CMAKE_SYSTEM}" MATCHES "Linux")
sm_add_compile_definition("${SM_EXE_NAME}" LINUX)
バージョン5.0.8でJACKを利用したい場合、上と同様の修正だけでは検出がうまく動作しない[6]ため、バージョン5.0.8の公開直後に追加された修正を追加で適用するか、もしくはcmake
コマンドの実行時に-DJACK_INCLUDE_DIRS=/usr/include -DJACK_LIBRARIES=-ljack
オプションを追加する。
(2015/6/26)JACKについてはバージョン5.0.9からは正常に検出されるようになっている。
また、(cmake
コマンドの実行時に)FFmpegでlibvaライブラリ(の開発パッケージ)が自動検出された場合にはStepManiaのリンク時にlibvaへのリンクに失敗してエラーになることがあるため-DWITH_LIBVA=ON
オプションを追加するとよい。
(2015/6/26)バージョン5.0.9からはこのオプションはなくなり、libvaが検出された場合に本体のリンク段階で使用されるようになった。
(ビルドの準備からビルドまで) [stepmania-5.x.y.z]$ cmake (オプション...) . [stepmania-5.x.y.z]$ make -j[CPU数]
なお、既定ではSSE2を利用するためのコンパイラオプションが有効になっており、同命令群の利用できない古いCPUで動かしたい場合はsrc/CMakeLists.txt
内のSM_COMPILE_FLAGSの初期値を空文字列から半角スペース1つなどにしてから-DWITH_SSE2=OFF
オプションを追加する必要がある。[7]
手動でのインストールの操作を行うと、バージョン5.0.8時点では/usr/local/stepmania-5.0/
以下にインストールされ、この中のstepmania
が実行ファイルとなるが、変数DESTDIRの指定により一般ユーザが(書き込み権限のある)別の場所にインストールすることもできる。
(ソースのディレクトリ内でそのまま実行する場合) [stepmania-5.x.y.z]$ ./stepmania (管理者権限でインストールする場合) [stepmania-5.x.y.z]$ sudo make install (一般ユーザ権限でホームディレクトリの下のusr/local/stepmania-5.0/以下に配置する場合) [stepmania-5.x.y.z]$ make install DESTDIR=~
ゲームプレイに関するメモ
譜面の練習について
高難易度の曲に挑戦している際など、(ミスが多くなって)上部のゲージが減少して全てなくなると通常はそこで終了して結果画面に切り替わるが、練習をしたい場合や最後まで一通り終わるまで続けたいという場合がある。
ゲージ0でも即終了しないようにする設定
タイトル画面の “Options” でオプションを開き、 “Advanced Options - DEFAULT FAIL TYPE” を “EndOfSong” にすると、ゲージがなくなっても最後までプレイができるようになる。
ただし曲をクリアした記録が残ると困る場合はおすすめできない(途中で中止する必要がある)。
練習中のみ低難易度にする
前述のオプションで “Advanced Options - LIFE DIFFICULTY” の値を小さくするとゲージがなくなりにくくなるため、これを “1” などにして練習するという方法もある。練習が終わったら元の値に戻すなどする。この既定値は “4” で、腕に自信があれば高い値にして高難易度化することもできる。
また、入力タイミングの判定幅に関係した難易度指定 “Advanced Options - JUDGE DIFFICULTY” も存在するので、必要に応じてこちらも調節する(既定値は “4” で値が低いほど易しくなる)。
現在の設定はタイトル画面の左上部分でも確認できる(前者が “ライフレベル” で後者が “判定レベル”)。[8]
この方法も曲をクリアした記録が残ると困る場合はおすすめできない。
譜面エディタのテストプレイ機能で練習する
譜面エディタのテストプレイ機能を用いて練習する方法もある。
タイトル画面の “Edit/Share” を選択し、 “PRACTICE SONGS/STEPS” で(グループフォルダと)曲や譜面難易度を選択し、 “選択譜面の練習” を選択すると譜面データが開かれ、ここでEnterを押してメニューからテストプレイを行うことができる。
特定の範囲のみを何度も練習したい場合は “現在位置を選択範囲の開始位置に設定” と “現在位置を選択範囲の終了位置に設定” をそれぞれ開始位置と終了位置で実行して “選択範囲をテストプレイ” を選択する。
矢印の速度の調整
曲選択時にEnterを連続して2度押すか押しっぱなしにするとオプション設定画面に入り、その中の “SPEED” を変更することで、画面上を矢印が流れる速度を調整することができ、詰まりすぎていたり流れが速すぎていたりして見づらい譜面を見やすくすることができる。[9]
- 一番左が現在の設定値(上に実際の速度の範囲が変更前と変更後それぞれについて表示される)
- “+[数字]” や “-[数字]” は現在の設定値からその値の分だけ変化させるのに使う
- “Xmod”, “Cmod”, “Mmod” は指定の種類を決定するための項目
- “Xmod” は元の速度の何倍かを指定(途中で速度が変わる曲も同様に変化する)
- “Cmod” は指定速度で常に固定(速度変更を用いた “仕掛け” も無効になる)
- “Mmod” は速度の上限を指定すると曲の一番速い部分がその速度になる(設定によっては詰まりすぎになるので指定値を下げるか “Cmod” で固定する)
- 表示/指定する速度の単位は倍率を除くとBPM[10]単位
この設定はタイトル画面に戻るとリセットされるが、それまでは保持される。
(2015/6/26)矢印の密度の高い曲では(変化後の)最大速度が400BPM前後のような速い速度となる指定を行うことでやりやすくなる場合もあるが、曲によってどの程度の速度がやりやすいかは異なる。
5.0.x系のソースをバージョン6以上のGCCでビルドした場合に起動しない問題 (2018/4/27追記)
バージョン5.0.x系のStepManiaをバージョン6以上のGCCでソースからビルドすると生成されたバイナリが正しく起動しないが、これは主な開発者の一人によると、新しいバージョンのコンパイラが行う最適化処理に関係しており、オブジェクトの生成順を変更する修正により5.1系では修正済みとなっているとのことだが、5.0.x系の最終リリースではバージョン6以上のGCCを用いる場合にこのパッチを別途当てなければ動作せず、2018年春時点では5.1系はまだベータ版となっている。