雑念日記

主に技術的なことをつらとらと(書ければいいな)。

Rubyで某リズムゲームっぽいやつ作った (追記あり)

DXRubyを使って某リズムゲーっぽいやつ作りました。
君だけのアイドルと君だけの楽曲と君だけのUIと君だけのSEで君だけのステージを作ろう!

f:id:hoshi_sano:20161002152136g:plain

(2016-10-04 追記)

リアル知人より「音ゲー特許の厳しさ舐めんなカス」とのお叱りを受けました。
そちら方面に無知蒙昧であり、かつ配慮に欠けていたのは事実です。
方々に迷惑を掛け、「パロディでした」で済まない状態になるのは本意ではないので、ひとまずゲームとして遊べるバージョンの公開を停止し、本来の目的であったリズムゲーム創作譜面ビューアとして、余分なゲーム性を持った機能を削減しました。
前バージョンを取得された方はお手数ですが手元より削除をお願いします。
以下、追記分は太字、過去分は打ち消し線にて表示します。

はじめに

これまではローグライクゲームを作ってて当ブログでも紹介してたりしていましたが、諸事情により頓挫しておりまして。
一方でなんとなく作っていたリズムゲームっぽいのく動く譜面ビューアがある程度かたちになったので公開しました。以下からどうぞ。

github.com

Rubyがインストールされている場合はgit cloneしてREADMEの手順に従ってもらえればプレイ実行できると思います。Rubyがインストールされていない場合でも以下のリンク先でパッケージ版がダウンロードできます。

release · hoshi-sano/reino_otoge Wiki · GitHub

Windows限定ですが良かったら触ってみてください。
いろいろお粗末なのはご勘弁を。

遊び方操作方法

こちらを参照ください。

追記に伴い、リンク先も修正しました。

できること

  • 楽曲プレイビューア(ただしキーボード操作のみ)
  • メインユニットのキャラとメッセージの表示
  • プレイ楽曲の追加、譜面作成、テストプレー
  • キャラクターのカスタマイズ
  • UIの画像カスタマイズ

カスタマイズってなんじゃい、つー感じですが、いろいろ弄ると元データを壊さずに以下みたいにできるという感じです。

f:id:hoshi_sano:20161002154631p:plain

例が良くなくてあまり変わったように見えないですかね…。

YAMLファイルや画像を特定の場所に特定の名前で配置するだけなので、コードが書けない人でも簡単にカスタマイズできる、はず。
「元データを壊さずに」というのは、カスタマイズ用のディレクトリにファイルを配置するとそちらを優先して読み込むのでいちいちバックアップ取ったり置換したりしなくていいよ、という意味。
カスタマイズに関する詳細はWikiを参照ください。

できないこと

基本「できること」に書いたこと以外はできません。例えば...

  • タッチによる楽曲プレイ
  • ユニット編成
  • 5人を超えるキャラクターの追加
  • キャラクターの育成
  • プレイヤーのスコア記録(コンボ数、ハイスコアなど)
  • ガシャ

体裁だけそれっぽく保つためにメニューやボタンはいろいろ表示されるのですが、実際には使用できない箇所が多いです。今はできないけどいつか機能として追加したい、というものはチラホラ。

開発の経緯

f:id:hoshi_sano:20161002152751p:plain

敬愛する某アーティストが某リズムゲームとコラボ!的なパロディ動画を作ろうと思った

ゲームのパロディ動画なら直接動画を作成/編集するよりプログラム組んでキャプチャする方が早いかも、と思った

実装

ある程度触れるものができたし公開しようかな

公開にあたり某リズムゲームそっくりなUI画像を極力削減
ただし手元では使いたいので容易にカスタマイズ画像を使えるようにした

公開にあたり某アーティストによく似たキャラクターはリポジトリから削除
ただし手元では使いたいので容易にカスタマイズキャラを使えるようにした

公開にあたり某アーティストの楽曲を使ったデータをリポジトリから削除
ただし手元では使いたいので容易にカスタマイズ楽曲を遊べるようにした

一旦公開するもその後公開中止、経緯は上述

ゲーム性を排除し、創作譜面ビューアとして再公開

現在に至る

技術的な話

そもスタートが動画制作のためにそれっぽく動く何かを作る、で愚直にコード書き連ねただけなので、特筆することはありません。

あ、譜面データだけは頑張りすぎないように頑張った気がします。
このゲームアプリの譜面データは以下のようなプレーンテキストです。

-----
o---o
-----
-o-o-
-----
o---o
-----
# ↑ここからサビ
-----
----0
----|
--o-|
----|
o---0
-----
# ↑ここからAメロ

視覚的に譜面がわかりやすい、エディタで簡単に編集しやすいなどがコンセプトです。
まぁこれだけシンプルだと演出も限られてしまうので、今後もっと発展させようと思ったらいろいろ検討の余地はあると思います。
(例えば左端に出現して右端から2番目に流れるノートを指定しようとするならどうしたらいい?など)

作りながら思ったこと

ポジティブなこと

  • 過去あらゆる人が言ってることだけどSpriteクラスはやっぱり便利
  • rpk便利 Ruby製ゲームをパッケージングするあたらしい方法
    • あおいたく(@aoitaku)さん ありがとう
    • 誰か、プロジェクトフォルダをアップロードしたら自動でrpkパッキングして公開してくれるサーバを立てるんだ。誰か。
  • フリー音楽・効果音素材万歳
    • アイドルのゲームだけに、歌もののフリー素材が大変助かった
    • 音楽だけは門外漢すぎて自作には手を出せなかった
      • この記事とかを見て自分で作ろうかと思ったけど、それをやり始めると一生リリースできない気がしたのでやめた

ネガティブなこと、課題

  • 効果音の選定
    • 世に素晴らしきフリー効果音公開サイトあれど、なかなかコレというのは見つからない
  • フリック入力によるプレイが再現できてない
    • 現在ではキー入力でのプレイしかできてないから当たり前なんだけど
  • そもそもタッチでのプレイは...
    • マルチタッチできないとまともに遊べないしなぁ
  • 音楽と譜面の同期ができない
    • 現在は音楽の再生と譜面を「せーの」で開始してるだけで、処理落ちした場合に後から補正できない
    • すなわち60fpsをキープできる環境じゃないと音ズレしてまともに遊べない
  • 譜面の作成・編集が全然イケてない
    • 現在のEDITモードは最初から最後まで通しで音に合わせて入力するしかできない
      • 譜面データはプレーンテキストなので後からエディタでの編集は一応できるけど
    • 本当ならGUIで局所的なレビューと編集、それからテスト再生ができると嬉しい
      • Ayame/Rubyだと再生位置を指定できないから厳しいかなあ
  • 譜面データを作るのって難しい&めんどくさい
    • ちょっと音楽とずれるだけでプレイがストレスになる
      • この点については公開してるデータでも残存する問題、わりと放置気味
      • PERFECT/GREAT評価を緩くすることでお茶を濁した
  • ログとか自動テストとかがない
    • 当初は公開するつもりなかったので...これから何か追加するかも

おわりに

完全に他人の褌です、本当にありがとうございました。