unityroomのゲームジャムに参加した #3

Unity 1週間ゲームジャム
お題「積む」
https://unityroom.com/unity1weeks

前回も参加していたが、爆死したので記事は書いていない(忘れたい)。
今回は無理せず自分のできる範囲で企画したのと、実装が楽だったので余裕をもって作業できた。

今回作成したゲーム「ゲーム積む積む

github … https://github.com/teriyakichan/unity-tsumige

企画

今回のお題を見て、最初はやはり物理エンジンを活用したゲームを考えていたが、何にしようか悩みつつSteamでゲームを買っていたら物凄い大量の積みゲーを持っていることに気づいたので、これを題材にしてゲームを積むゲーム(?)を作ることにした。

(上記はぼくの積みゲー on Steam)

最近はダウンロード販売も増え物理的に積むことも減ってきたので、数字だけ増やせばいいや、ということでクリッカーにした。
時間がギリギリだったので少々汚いが、実装は特に悩むことは無かった。一般的なクリッカーにある施設と強化はまとめて1アイテムに両方の効果をもたせるようにした。

素材

できれば素材は作りたくないが、今回はそうもいかないのでイラストを描いた。
ペンタブが無かったのでKindleリーダーと化していたiPad Proとあぽーぺんを引っ張り出してProcreateというアプリで作成。
購入後殆ど使用していなかったが、これが物凄く使いやすかった。レイヤも使用できるので、テンプレートとなる画像を1つ作成しておき、複製して量産した。
DropBoxに送る機能もあるので、描き終わってすぐUnityにインポートできた。
今回は使用していないが、iPad用のドット絵エディタも買ってあるので機会があれば使ってみたい。

レベルデザイン

今回最も時間がかかったのがレベルデザインだ。数字だけなので仮データはすぐできたが、良い感じのバランスにするのにかなり苦労した。某クリッカーの攻略Wiki等をあさりなんとなく感覚を掴みつつ作成した。
必要コストの高いアイテムをデバッグするために最初からプレイしていては日が暮れてしまうので、デバッグ用に1キーで100,000点程加算する機能などを作った。

また、データはCSVにしてアイテムの追加、数値変更を容易にできるようにした。
作成したデータはこれ。1クリックあたりの得点、レベル毎に上昇する得点、初期コスト、レベル毎に上昇するコストなどを定義している。

その他

本当は降ってくるゲームを積む演出を作りたかった。現状MAX100オブジェクトが降ってくるが、積むとなるとオブジェクトが画面上に残り総数は増えそうなので、オブジェクト数を減らしつつ良い感じに積んで見えるようにする方法を考えたが思いつかず、今の演出に落ち着いた。

全体的にやりたいことは大体できたので満足している。
次も余裕をもって作業できるよう企画~設計をしっかりしたい。

unityroomのゲームジャムに参加した

Unity 1週間ゲームジャム
お題「跳ねる」
https://unityroom.com/unity1weeks

@stella_tohrupomが引っ越しで居なかったので一人で参加。
水曜くらいにTwitterで知って土曜日の12時から作業開始、日曜19時半にupで作業時間は15時間程度。
平日はOverwatchをプレイしていたが土日は起きてる間ほぼフルで使った。締め切りがあると集中できて良いね。

ゲームジャムは初めてだったので色々と反省点がある。次に活かしたい。

今回作成したゲーム「Drop and Bounce

github … https://github.com/teriyakichan/unity-dropandbounce

企画

ゲーム内容は30分程度で考えた。というよりは、過去にストックしていた案で「跳ねる」というお題にマッチするものをピックアップするだけだったので時間はかからなかった。
要件としては、
 1. ステージ自動生成
 2. 遊んでもらうための仕組み
 3. 簡単操作

1については、締め切りまでの時間がないので、ステージクリア型等の膨大なコンテンツを用意するのが現実的でない為。ステージクリア型にするとおそらくステージエディタの作成からになってしまうので、FlappyBirdの様にロジックを組んでしまえば後はなんとでもなるものを目指した。

2はランキングを用意した。ステージクリア型ではないので、リプレイ性を高めるにはプレイヤー同士で競わせるかゲーム内容(アイテムやギミックのパターン)を盛るしかなく、工数的に前者が軽いのでランキングを優先した。

3についてはunityroomの性質上、ブラウザでプレイするのであまり複雑な操作にはしたくなかった。1~3キーで考えていたが操作はシンプルであればあるほど良い。

ステージの自動生成

アイテム及び床ブロックは予め10個ずつInstantiateして使いまわすようにした。
いずれもランダム配置、前に配置したアイテムとの距離を一定以上保つようにした。床ブロックは反射したときの挙動を変えるため、角度もランダムで配置。
このあたりのバランス調整にあまり時間を割けなかったので、難易度がいまいちな感じになってしまった。上手ければぽんぽん進めるようにしたかったが、無限に進んでしまうことのないように気をつかったところ、誰がプレイしてもにたようなスコアになってしまった。
結果、公開から3時間経過しても、テストプレイで自分が出したスコアが1位という悲しい結果になってしまった。遊んでくれた人ありがとう。

ランキング

これが意外と時間がかかった。普段開発に使用している自宅サーバをぶっ壊したまま放置していたので、このブログを設置しているさくらのレンタルサーバ上で作業。
.vimrcを移すところから始まり、SSL等のサーバ設定、ドメイン設定で無駄に時間がかかってしまった。
最近MySQLを触っていなかったのでテーブル設計はあまりイケていない。負荷を気にしたがアクセス数を考えると問題はなかった。ただし現状の設計ではプレイ毎にINSERTするので、ある程度インストール数が見込めるiOS/Android向けには使えそうもない。現状でも2000レコード程あるので、1プレイが短い本作には向かなかった。
ランキングは汎用的に使えそうなので、今後似たようなシステムを採用することがあったら今回作成したものを改善して流用したい。

警戒していたクロスドメイン問題は普段経験していたのでとくに躓かなかったが、C#とPHPを並行で書いていたので色々と混乱した。サーバはプロダクションで動いていたのでエラーが表示されず、シンタックスエラーで悩まされたりした(変数の$わすれたりとか)。このあたりは環境をしっかり整えて対応したい。

またMiniJSONによるJSONのデシリアライズをUniRxで非同期処理にしたかったが、WebGLではうまく動かなかった。同期で動作を見たところ大した時間がかからないのと、デシリアライズするタイミングはちょうど画面の描画が止まっていて特に違和感はなかったので同期にした。おそらく現在のレコード数なら16ms以内に終わっている。
このあたりは今のうちに調査しておきたい・・・。

他の作品ではランキングを実装しているものはあまりなかった。その代わり(?)Twitterでシェアする機能が多かった。ハッシュタグもあるのでかなり反響はありそう。まったく考えていなかったがこの手のイベントなら必須機能かもしれない。

操作とルール

シンプルに徹しすぎたかもしれない。現在の仕様だとかなり運ゲーになるので、もうすこし何らかの機能(例えば消費アイテムで一定時間スローになるとか)を追加してもよかったかもしれないが、検討中に締め切り時間になってしまった。
またボールが上昇したときにカメラを引くなどして、もう少しドロップのタイミングをプレイヤーが考える余地をもたせたかったがこれも時間が足りなかった。

その他

未完成では出したくなかったので、そのままiOSビルドしたらリリースできるようなものを目指した。見栄えは拘ったつもりだがUI系はデフォルトを使用しているのでもう少し詰めたかった。このSkyboxシェーダのお陰でかなり見栄えがよくなったと思う。今後も活用したい。
効果音については完全にタスクが漏れていたのでまにあわなかった・・・。作業開始前にタスクを全て洗い出す必要がある。締め切り当日の15時くらいにタスクを洗い出して絶望していた。

まとめ

他の人の投稿を見ると一発ネタも多いがどれも瞬発力があってすごく面白かった。アイディア勝負になるところが大きいが、自分には到底思いつかないものばかりだったのでもっと人の作品を見て吸収したい。
特にBounce Shooterという作品がヤバかった。こういうゲームが作れるようになりたいな。
Unityで開発している人なら誰でもしってる某ブログの人も参加していてとても良い刺激になった。やはりあの人はすごい。

次は一週間フルに使って頑張りたい。

進捗#3

進捗ダメです。

・モチベーションがあがらない
 → 作るものを変更したので今は準備が大変
・時間が無い
 → Overwatchが楽しい

Unite行けばモチベーションは上がりそうだがその前のGWを有効活用したい。

WordPressのサーバを壊したので、さくらのレンタルサーバに移した。
WP専用にしたかったのでVPSにはしなかったが、sshログインができたので移転が楽にできた。
コントロールパネルは死ぬほど使いづらいが機能的には値段の割にとても良い。

自宅サーバは実験やらなんやらでよく壊すので、ホームページを安定したサーバに移転するのは必要だった。本当は壊す前に移転したかった。

進捗#2


・とりあえず左右移動はできるようにした(rotateも)
・板を走らせてもモチベーションが上がらないので仮モデルを買った
・買ってから一度も使っていなかったAllSkyを入れてみた

現状RigidbodyにAddforceしているが、キビキビ動いてほしいのでTransで動かす予定。

BGM

記事が1つだと寂しいので連投。

 

tohrupomが担当してるBGMについてちょっとだけ書きませう。

注文は「眠くなるような曲」って言われてたのでこうなりました(笑)。

曲自体は本当にシンプルで、2トラックしかつかってません。

 

◎DAW

・FL Studio 12

 

◎音源

・FL keys (Rhodes)

・magical8bit (triangle)

 

◎FL keysエフェクト 上から

・Fruity delay2

・Fruity parametric EQ2

・Fruity Flanger

・Fruity Phaser

・Fruity Reeverb2

・Fruity Limitter

 

◎magical8bitエフェクト 上から

・Fruity Reeverb2

・Fruity Phaser

 

フェイザーをリバーブの後にかけるという・・・(笑)

FL keysはエフェクト次第でほんといい音なるのでお気に入り。

次回作はもっと複雑な感じの曲を作りたいなあ。

ギターも使いたいないあ。