hildsoftの裏庭

メインでは書かない種類の雑記です

【ネタバレあり】自作脱出ゲーム、「カラージェム」のレベルデザインで考えたこと

あけましておめでとうございます。

出来れば去年で書き上げたかったのですが、ゲームのリリース自体がギリギリだったため年明け1発目の更新です。

f:id:hildsoft:20180101125348j:plain

脱出ゲームの製作

去年(2017年)末、初めて脱出ゲームを製作してUnityroom様の方で公開しました。

脱出ゲーム カラージェム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

AndroidやiPhoneを意識した縦長の画面構成ですが、スマホ向けのリリースは今のところ予定にありません。

開発後記はこちら backyard.hildsoft.com

以下、ゲームのネタバレを含みますので、まずはゲームを楽しんでから見ていただけると幸いです。





今回のゲームの配置図と攻略情報

主要オブジェクトの配置

まずは今回作ったゲームのイベントやアイテムの配置図から。

部屋は二つです。

f:id:hildsoft:20180101131956j:plain

部屋1

f:id:hildsoft:20180101132009j:plain

部屋2

攻略までの流れ

  1. 宝箱の鍵を手に入れる

  2. 宝箱を開けて、ジェムを手に入れる

  3. ベッドの下の赤インクを回収

  4. 部屋2の巻物の後ろに隠されているジェムを回収

  5. 赤インクをセット

  6. ジェム加工装置で赤、黄、緑のジェムを作成

  7. メイン装置で、ヒント1のとおりにジェムを並べて下段の扉を開ける

  8. ジェムと青インクを回収

  9. 青インクをセット

  10. ジェム加工装置で青、緑、桃、黄のジェムを作成

  11. メイン装置で、ヒント2のとおりにジェムを並べて上段の扉を開ける

  12. 部屋の鍵を回収

  13. 部屋1の扉から脱出

若干の手順は前後して行動できますが、基本はこの流れです。


ゲームの楽しさを覚えてもらい、操作の壁を取り除く

脱出ゲームの面白さ

開発ブログでも書きましたが、脱出ゲームの面白さは

「クリアすることよりヒントから謎が解けた時が楽しい」

にあり、それが楽しいからプレイすると思うのです。

なので、クリックしていれば何となくクリアできたり、理不尽な設定を持ち込むことは避けようと思いました。

脱出ゲームの操作性

脱出ゲームはアクションゲームのような繰り返しやるものでもなく、思考するゲームだと思っているので、操作性はなるべくシンプルにして操作説明無しに遊べることを目指しました。

最初の情報

f:id:hildsoft:20180101134715j:plain

ゲーム開始時点での画面です。

この状態で何ができるでしょうか?

f:id:hildsoft:20180101135037j:plain

まずいきなり壁や何もないところだけをクリックする人はいないと思います。

なので、ゲームに関する情報を与えられていないユーザーは上図のどれかをクリックすることになると思います。


ここで「それぞれの操作がどのように反応するか」、を少しずつ覚えてもらうのです。

  • 上部ボタン:無反応
  • ドア、ドアノブ:ドアに接近
  • 置物1:上手くクリック出来たら接近(意味は後述)
  • 置物2:無反応
  • 下部ボタン:視点の回転

この画面で全ての操作をしなくても、何度か操作を行うことで、ユーザーは下記の操作を覚えることでしょう。

  • クリックすることで接近でき、得られる情報が変わるものがある
  • 上部のボタンは特に意味は無い
  • 下部のボタンは今いる部屋を見回すことができる
  • クリックしても反応しない物もある

その他の操作についても、何かアクションをしたときに何らかの反応を与えて少しずつ操作を覚えてもらうことになります。

f:id:hildsoft:20180101140731j:plain

例えばドアをクリックしたときに、ドアへ接近するわけですが、そのあと元の位置に戻る操作は下部のボタンをクリックすることになります。

「ドアをクリックした」事により「ドアに接近した」結果、「下部のボタンが変わった」ので、接近したドアを調べる人もいれば、何もせず下部のボタンをクリックする人も居るでしょう。

大事なのは、いずれ下部のボタンをクリックするようにユーザーを導くことなのです。

ゲーム慣れしている人とそうでない人へのアプローチ

上で挙げた情報というものは、ゲーム慣れしている人は何の意識もせず自然と行動するものです。

それまでのゲーム経験値があるから、こういう行動を取ったらこうなるだろうという予測ができるため、最初から意味のありそうな行動を取る可能性が高いです。(この先入観を逆手に取って問題を作るのも面白いですが、これを理不尽だと感じる人も居るのでバランスは難しくなりそうです)

脱出ゲームに関して言えば、簡単だった、難しかったという判断より、理屈や仕組みをヒントから想像できてその通りに動作したということが楽しさにつながると思っているので、かける時間は人それぞれで構わないのです。

大事なことは、仕組みを理解したうえで解いてクリアすることなのです。

では、脱出ゲーム慣れしている人と、そうでない人、どちらも楽しめるようにするにはどうしたら良いでしょうか?

今回作ってみて思ったことは、ヒントを増やして初心者ユーザーでもクリアできるようにするということです。


上の方で

  • 置物1:上手くクリック出来たら接近(意味は後述)

と書きました。

f:id:hildsoft:20180101143132j:plain

脱出ゲーム慣れしている人は、何のヒントも無しにこういう所をクリックするんですね。

f:id:hildsoft:20180101143219j:plain

結果、鉢植えに接近して宝箱の鍵を見つけることができます。

でも、この操作をいきなり全てのユーザーに求めるのは酷というものです。

そこで、気づきのきっかけを作ります。


気づきにくい特殊な操作

脱出ゲームは、ぱっと見で分からないような場所に物を隠すことが多く、それを探すのも一つの楽しみです。

しかし、そういうゲームだと分からない人にも楽しんでプレイしてもらうために、隠し場所をクリックするという操作を覚えてもらわなくてはいけません。

そこで、今作ではこのような仕組みを導入しました。

f:id:hildsoft:20180101144417j:plain

部屋2から部屋1へ移動する際に、サブリミナル的に赤い物がチラっと見えます。

何度か移動していると気づくこともあると思います。

それを補助するために、視線が分散しないよう前面になるべく物を置かない工夫もしています。

少し分かりづらいヒントですが、2Dではなく3Dで脱出ゲームを作っているからこそ使えるテクニックです。

これに気づいたら、「ベッドの下を見る」という操作を探そうとしませんか?

f:id:hildsoft:20180101145355j:plain

ベッドの下の隙間をクリックするとこうなります。

これでアイテムが隠されているということをユーザーは理解してくれます。

このヒントに気づかなかった場合でも、このゲームはクリックするとズームする場所とそうでない場所があるという仕様で、複数の場所にそういう仕掛けがあるため、いずれ気づくことになるでしょう。


ゲーム特有の特殊な操作

実生活の経験から得られる知識や、他のゲームの経験から得られる知識など、ユーザーによっては様々なのでゲーム特有の装置については、なるべく多めにヒントをちりばめたいものです。

f:id:hildsoft:20180101151132j:plain

f:id:hildsoft:20180101151239j:plain

今回の場合はこの二つの装置ですね。

いくつか工夫をちりばめたので、具体的な工夫は後述します。

この装置を見てどのような情報を得るか、どのように操作してみようと思うか、やはり人それぞれです。

作る側として大切なのは、ユーザーが何らかのヒントを基に解答に近づけるようにガイドをすることだと思います。

使い方の説明書を書くのではなく、手探りで使っているうちに仕組みを連想し理解していく事で面白さに繋げていきます。


上記の点を踏まえて工夫したこと

ズーム操作

クリックするとズームするところが9か所あります。

隠してあるアイテムを取るためのズームだったり、装置を操作するためのズームだったり、用途は異なります。

隠してあるアイテムを取るためのズームは正確にクリックする必要があり、なるべく適当なクリックでは反応しないようにしています。

これは偶然でクリアしても面白くないからです。もちろん隠しているアイテムはズームしないと取れません。

また、探すためのズームという操作を覚えてもらうために、装置やドアなど意味ありげで大きな判定のものも用意しました。


見えるけど取れないアイテム

f:id:hildsoft:20180101155152j:plain

装置2の下の部分です。

取れそうな物をわざと遮って置くことで、これは取れる物(クリアに必要な物)かもしれないという認識ができるとともに、何か別途操作が必要だと認識してもらいます。

取れるものだと認識したら、似たようなものは取れると認識しますので、別の場所で見かけると自然とクリックするように誘導します。

今回は半透明なガラスで遮りました。ゲームによっては高所に置いたり、手の入らなそうな狭いところに置くなどの工夫も良いですね。


アイテム入手

f:id:hildsoft:20180101161401j:plain

恐らく最初にユーザーが手に入れるアイテムです。

ゲーム内で隠されずに配置されており、さらに回転しているので一番見つけやすい物だからです。

f:id:hildsoft:20180101161645j:plain

これをクリックすると画面上から消え、上のアイテム欄に収納されます。

その際、枠と背景色が変わります。

これは選択状態を意味しますが、他と違う(入手したアイテム欄や使えるアイテムだから色が変わっているという可能性もある)ことが意識できれば良いくらいの認識です。

もう少し分かりやすくするには、selectedなどの文字の説明を入れても良いかもしれませんが、文字を入れないスタンスで開発していたので今回はいれていません。(最終的に時間的な問題からクリア表示は文字にしちゃったんですけどね……。)

入手したタイミングでパッと表示を切り替えるのではなく、ボタンの大きさのアニメーションや、音を鳴らすなどの工夫もあると良いですが、今回は時間の都合でカットしました。


簡単な装置

f:id:hildsoft:20180101160539j:plain

宝箱は恐らく殆どの人が知っている装置です。

このゲームでは道具を選択するという概念があるので、鍵を選択していないと宝箱は開きません。

それを理解してもらうために、簡単な仕組みとして用意しました。

適切なアイテムを選択状態にして、適切な個所をクリックする。

この流れを実際の宝箱という装置から使い方を連想して操作してもらうことで、ゲーム内の「道具を選択」という概念を理解してもらいます。


似たアイテム

f:id:hildsoft:20180101163836j:plain

インクタンクの設置画面です。

緑だけは何かアイテムありますけど、赤と青は空だということが分かります。

f:id:hildsoft:20180101163937j:plain

となると、これ怪しいですよね?

でも取れません。

このように配置するだけで、

  • このアイテムは取れるはず
  • 何か操作をしないと取れない
  • 取れたら1枚目の青いところに使うんだろう(使うところの予想がつく)
  • 赤い物もどこかにあるだろう

と情報が増えて連想できる範囲が広がります。

日常の生活空間にあるようなものなら用途の想像もつきやすいですが、ゲーム内特有なものは製作者の方で使い方の誘導をすると理不尽だと感じることも減ると思います。


装置の連動

f:id:hildsoft:20180101170038j:plain

装置を連動させる場合は、何らかの関連性を持たせると連想しやすいです。

赤インクを手に入れてセットした状態です。

隣の装置の赤いランプが付いています。

f:id:hildsoft:20180101170828j:plain

最初は付いていなかったものです。

ユーザーが気づくタイミングがいつになるかは分かりませんが、連動しているんだという認識は場所や色、形などで何らかの関連性を持たせることでユーザーの発見を促します。


装置の使い方 その1

このゲーム独自の装置なので、使い方を説明or誘導する必要があります。

f:id:hildsoft:20180101172414j:plain

クリックしたくなるような形状や大きさを意識しました。

反応したorしなかった時の音やエフェクトも用意したかったのですが、時間の都合で出来る範囲での工夫です。

なるべくパネルの操作に気づいてほしかったので、最初に緑のインクは設定して使える状態にしておき、ジェムも設置しておきました。

今考えてみると、黒いジェムではなく緑のジェムを置き、取得するとパネルの色を消す方が良かったかもしれません。


装置の使い方 その2

f:id:hildsoft:20180101173613j:plain

謎解きのメイン要素となる装置です。

こちらの装置に解答の通りにジェムを並べることで下にある扉が開きます。

ここでは正解したかどうかが分からないので、ボタンを押したときに判定の音を用意しました。

設置したときに自動判定ではなくボタンを押して判定する方法を採用したのは、ランダムで正解されることを避けるためです。

ボタンを押す手間を加えることで総当たりでの解答にたどり着く試みを起こさせない方法です。

ここでもジェムを設置してもらうために、装置1にあるオブジェクトと同じものを用意しています。


謎解き部分

今回は謎解き部分は簡単にしました。

ヒントの色通りにジェムを並べるだけです。

f:id:hildsoft:20180101174424j:plain

  • 設置する台は5個
  • ジェムは色が変えられる
  • 青インクは手に入らない
  • ジェムは3個しかない

という条件から、ヒント1と関連付けて色を並べることになります。


f:id:hildsoft:20180101174432j:plain

下の扉が開いて青インクとジェムが1個手に入るので上記の条件が更新されます。

そこからヒント2と関連付けることになります。

鍵を手に入れたらドアノブに使用して脱出は完了です。


色に関係する物なのでさらに難易度を上げるとするなら

  • 光の三原色(RGB)だけではなく、色材の三原色(CMY)も混ぜる
  • プルキンエ現象を活用する

などを混ぜると難易度が上がって歯ごたえが増すかもしれません。

しかし、その場合でもユーザーが気づく何らかのきっかけ(プルキンエ現象なんて知らない人が多いのですから、ランプの色が違うところで同じものを見て見え方が違うことに気づくような仕組み)があると良いかと思います。

今回の色合成については、トグルボタンが3種類の8パターンしかないので知らない人でも試行による気づきに結び付けて欲しいと思いながら敢えてゲーム内での説明を省きました。


最後に

文字にしてみると結構長かったです。

長々とお付き合いいただきありがとうございました。

これだけの長さの記事を書いたのは初めてですw

脱出ゲームを作ってみて初めて分かることが多く、勉強になりました。

ゲーム一つを作るにしても色々考えているんだなーというのを感じてもらえれば嬉しいです。

また、この記事が脱出ゲームを作るきっかけやレベルデザインの参考になれば幸いです。

ツッコミなどもお待ちしています。

勝手に1人unity1week2017年末編

unity1weekとは

Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

月曜0時開始、日曜20時締切の1週間ゲームジャムです。

毎回お題が発表されるので、それに沿った(拡大解釈可)ゲームを作ります。

以下略

参加の記録

今回は公式開催ではなく、勝手に年末期限を決めて1人で作っただけです。

思い立ったのは12/26、この時点で1週間無いわけで、脱出ゲームくらいなら3日もあれば作れるだろうと軽く考えてしまったのです。

というのも、今作成中のアセットキャラクター、

f:id:hildsoft:20171231212004j:plain

この子なんですが仕事の合間に1年以上試行錯誤して作っているにもかかわらず、なかなか納得のいく出来にならずリリースが遅れまくっている状況です。

年内にリリースできるように頑張ってはみたのですが、26日の段階で年内完成は無理だと判断したため、気分転換にゲーム作ってみたわけです。

今回の目標

今回の目標は

  • 新しいアセットを使ってみる
  • マネタイズしやすいと言われている脱出ゲームを作ってみる

を設定しました。

秋のアセットセールと、並行して行われていたUnityPlusの半額セール、これによりアセットが急に増えたので勉強が大きな目的です。


今回作成したもの

f:id:hildsoft:20171231212556j:plain

https://unityroom.com/games/escape_color_gem

よくあるアイテムを集めて脱出する典型的な脱出ゲームです。ひねりも無い王道ものです。


事前準備など

脱出ゲームですから、まずは大まかな流れを考えました。

時間的な制限もあるので、アセットストアからいくつかアセットをピックアップして、不足分は自作で片づけてしまうことにしました。

ネタバレになるので、レベルデザインについては別で記事を書こうと思います。


脱出ゲームの面白さ

脱出ゲームって何が楽しいのだろう?と自問したところ、「クリアすることよりヒントから謎が解けた時が楽しい」という結論になりました。

時間的な制限もあったので複雑なものは作れませんでしたが、納得のいく仕組みにはなりました。


脱出ゲームの問題点

フラッシュ全盛期から作られて歴史のある脱出ゲームですが、よくあるものは3D(壁の方向など)を意識した2D素材を切り替えたものなので、移動は一瞬ですし、不都合な物は描写しないなど 3Dでのカメラワークとは別でパースも自由に作れるのですが、素材を沢山準備しないといけない欠点があるわけです。

そして3Dの場合は素材を使いまわせるメリットがある反面、カメラワークが一番の課題になると思います。

最初に悩んだのがFOVの値です。

壁面全てを1画面に収めたいのですが、FOVの値を上げると端が歪み、FOVの値を下げると回転で見回す時に問題が出る状態でした。

f:id:hildsoft:20171231220741j:plain

そして回転の都合上、カメラの前に物を置くことが難しい問題がありました。

f:id:hildsoft:20171231220842j:plain

自由に視点を移動できるゲームであれば問題ないのですが、脱出ゲームは謎を解くことがメインなので、操作が煩雑になることは避けたかったのです。

そのためカメラワークはかなり苦労した点でした。


アセット競合するってよ

今回導入したOdin、ソースコードを解析してインスペクタを使いやすくするため、Arbor2と競合してしまったのです。

公式でも事前にツイートがあったので覚悟はしていました。

色々と調べて回避することはできたのですが、一時はどちらかの使用を中止することまで考えたのでアセット多用の怖さを少し味わいました。


残念だったこと

今回は増えたアセットの勉強をメインとしていたわけですが、完成させることも大事な目標なので、使おうと思っていたアセット

  • DoozyUI
  • Mesh Baker

の調査ができなかったことは残念です。



アセット

今後の開発効率を高めるためにアセットの勉強をしたので、ゲームボリュームに対しては普段より多めにアセットを使用しています。


以下は今回使用したアセットです。

ガッツリ使ったものもあれば、部品取りの様に一部だけ使わせてもらったものもあります。

製作者の方にこの場を借りてお礼申し上げます。

総括

エディタ拡張をあまり使っていなかったのですが、使ってみて便利さを体感しました。

何でUnity標準で入ってないんだろう?と思おう物もありますが、重くなることも確かなので、便利だとしても必要に応じて使用を検討するのも大事だなぁと思いました。

また、副産物として脱出ゲームのキモとなる仕組みが分かったので、これを調整して完成プロジェクトや拡張素材として出品するのもアリだなと思えたのは収穫でした。


2018/01/02 追記

今回のゲームについてUIまでは手が回りませんでした。

しかしレベルデザインは真面目に考えたので、もしよければこちらも読んでみてください。

backyard.hildsoft.com

unity1week第六回お題「Space」に参加したので開発まとめ

unity1weekとは

Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

月曜0時開始、日曜20時締切の1週間ゲームジャムです。

毎回お題が発表されるので、それに沿った(拡大解釈可)ゲームを作ります。

時間配分などは各自に任されているので、有給取るなどして1週間ガチでやるも良し、毎日少しずつ作って週末ブーストするも良し、ネタに走って短時間で片づけてもokなお祭りです。

日曜提出なので、自分の技術力やリソースとも相談しながらあまり複雑にならないようなゲームを作るというバランスも求められます。

時間オーバーしても提出できるみたいですが、この辺はルールなので極力守りたいところ。

今回は1日以上遅れてしまいました。

どうしても風呂敷を広げがちで収めきれない、今後の課題です。

参加の記録

今回の目標

今回で3回目の参加になります。まだまだ期間内で満足のいく仕様に収めて完成させることができてないですね。反省です。

今回の目標は

  • UnityでWebGLを使ったら弾幕系シューティングゲームって作れるかを調べること
  • ネットランキング、SNS対応

を設定しました。

前回までと違い、少し時間をかけてでも今後のスマートフォンアプリなどで使えるよう、そろそろマネタイズを意識した動きになりました。


今回作成したもの

f:id:hildsoft:20171121060905p:plain

https://unityroom.com/games/survivalspace

迫りくる弾幕を制限時間まで避けるだけのゲームです。

敵を倒したり、ボムを使って弾をかき消すなどはありません。

1発被弾で即死というものではなく、シールド値を削りきられたらゲームオーバーです。


事前準備など

今回はシューティングゲームかローグライクゲームを作ろうとゲームジャムの前から考えていました。

実際に作業を開始したのはお題が発表されてからですが、どちらかのジャンルに結び付けられれば開発、そうでなければ簡単なもので済ませる予定でした。


ジャンル決定と方針

Spaceというお題から、シューティング系や宇宙系はかなり被るだろうなぁと感じました。

ゲームジャムですしネタ被りは問題ないのですが、個人的に避けたいのです。

グラフィック素材での差別化が難しいので、アイディアか技術面で何か独自色を出せないかなと思っていたところ、昔LibGDXを使って弾幕シューティングを作ろうとしてGCの壁に跳ね返されたのを思い出し、Unityで再挑戦することにしました。

当時はスマートフォンもCPU性能が低く、メモリも少なかったので結局諦めたのでした。


まずは調査

WebGLでは今までも痛い目を見ているので、特に処理負荷の面で心配だったので最初にどのくらいの弾数を出せるか実験してみました。

f:id:hildsoft:20171121064318p:plain

f:id:hildsoft:20171121064554p:plain

Unityでのオーソドックスな手法で弾を出してみたところ、案の定GC発生して等間隔で打ち出していた弾がズレました。

弾幕ゲームは弾幕の形状が曲線で綺麗に表示されるのが好ましいので、完全には無理だとしても違和感がない状態までに抑えないといけないことと、操作時にカクつきを感じないくらいまで処理を高速化or弾数を制限しなければいけません。


GC対策

GC回避の特効薬はオブジェクトプールを利用することですが、メモリを解放しないのでメモリ管理の知識は要求されます。
今の時代ある程度メモリには余裕があるので、結構雑にメモリを確保しても大丈夫だと考えて大きめにプールを確保することにしました。

f:id:hildsoft:20171121065106p:plain

オブジェクトプールを使って、表示だけしたところです。

当たり判定は実装していませんでしたが、GCが発生していたときの4倍くらいの量(2500程度)の画像を表示しても問題なく動くようになりました。

この状態で一度WebGLに書き出して試したところ、Unityエディタ上ほどの性能は出ませんが十分動くことが確認できました。

一般的な弾幕ゲームでは1500くらい弾数を出せれば十分なので、このまま進めることにしました。


ゲームエンジンを使う意義

直接DirectXやOpenGLを触ったことのある方ならわかると思いますが、オブジェクトがどこに行ったか分からなくなるんですよね。

カメラとは別でゲーム内の空間を自由に見ることができるだけでも、ゲームエンジンを使うメリットは十分あると感じています。

性能だけを追求したいのであればC++でネイティブのコンパイラを使えばいいのでしょうが、やはり複数プラットフォーム展開、開発効率を考えたらUnityなどのエンジンを工夫して使う方が効率的だと感じました。


アセット

前回からArbor2を使用しているのですが、今回のメイン処理は高速化が求められるので、残念ながらモック作成用に序盤と最終的に画面遷移などの外枠での使用にとどまりました。

便利なアセットなので、最適化が必須となる環境では使用が制限されるのが残念です。
利便性を取るか性能を取るか、バランスを考慮する必要があります。


以下は今回使用したアセットです。

少しずつの利用でしたが、自分で作成するよりは良い物ができました。

製作者の方にこの場を借りてお礼申し上げます。

総括

やりたいことを絞れなかったため色々と未消化な部分があります。

前回できなかったSNS対応は、1日遅れたこともあり一応達成することができました。

UnityではIL2CPPの恩恵が得られるので、それほど専門的な知識がなくても実装次第では弾幕ゲームを作れる事が分かったことは収穫でした。

今回のノウハウはスマホゲームを作る上での経験値になったと思います。

もう少しソースコードを整理してスマホゲームのプロトタイプができたら、デザイナーさんを誘ってマネタイズできるようなゲームとして出してみたいですね。

最近読んだ印象が強かった漫画(2017/09)

辺獄のシュヴェスタ

辺獄のシュヴェスタ(1) (ビッグコミックス)

辺獄のシュヴェスタ(1) (ビッグコミックス)

中世の物語です。

魔女狩りがメインテーマで、親を殺された主人公の復讐劇が描かれています。

まだ完結はしていませんが、既刊5巻というボリュームでも読み応えのある作品です。

権力に抗う一人の少女エラ、突きつけられる非常な選択、それをどのようにして切り抜けるのか。

読んでいて展開が気になる物語ですが、少々残酷な表現を含んでいますのでこの点だけはご注意を。


少女終末旅行

少女終末旅行 1巻 (バンチコミックス)

少女終末旅行 1巻 (バンチコミックス)

今週からアニメも放映される作品です。

現代の文明が滅んだあとの、荒廃した世界を旅する二人の少女の話です。

食料や燃料を残された施設などから補給しながら終末を迎えた世界でどこへ向かうのか?

まだ物語の核心に触れる展開には至っていませんが、舞台の世界観やキャラは好みです。


ホーリーブラウニー

Holy Brownie (1) (ヤングキングコミックス)

Holy Brownie (1) (ヤングキングコミックス)

エクセルサーガが好きならハマる、ブラックユーモアを詰め込んだおとぎ話です。

主役は妖精なのですが、登場するキャラは毎回異なっていて1話完結のショートストーリーが多いです。

パロディ的なネタが多めなので、ある程度の知識が無いと読んでてもピンと来ないかもしれません。

ですが、分かると面白い、皮肉にまみれた作品であることは確かです。

エロや残酷な表現もあるので、その辺に抵抗のある方は読まない方が良いです。

最近読んだ印象が強かった漫画(2017/08)

転生したらスライムだった件

転生したらスライムだった件(1) (シリウスコミックス)

転生したらスライムだった件(1) (シリウスコミックス)

ラノベが元ですが、またしても異世界転生ものです。

流行りの物はどうしても目につきますし、出版社としても定番の物を出して安全圏を狙いたいし、読者としても一つ面白い物を見つけると似たようなジャンルを読みたくなるものなのでしょう。

内容的には、現世で死ぬ>転生したらスライムだった>一般的にスライムは弱いと思われがちだが、あるきっかけで強くなる。というベタな展開です。

理不尽な設定で強引に物語を進めるのではなく、順序だてて展開していきます。(運の面では都合は良いですが、小説なんてそんなもんでしょう)

そういう面で、テンポよく物語が進んで行くのでどんどん続きが読みたくなります。

1回目はさらっと読み流して、2回目に気づくこともあったので割としっかり作られている印象を受けました。


ぱらいぞ

ぱらいぞ1 (ワニマガジンコミックススペシャル)

ぱらいぞ1 (ワニマガジンコミックススペシャル)

さすが道満先生というシュールな内容の4コマ漫画です。

ネタは色々な方面から飛んでくるので、いくつか意味不明な物もありますが、マンガやゲーム好きなら理解はできるでしょう。

恐らく漫画を殆ど読まないような層の人は理解に苦しむ作品かと思います。万人向けではありませんが、こういう作品は個人的には好きです。


ADAMAS

ADAMAS(1) (イブニングコミックス)

ADAMAS(1) (イブニングコミックス)

ダイヤモンドに宿る力を得て、裏世界の荒事を解決する主人公、流崎麗華。

宝石の力を使う能力者をジュエルマスターとよび、もちろんこの力を悪用する組織も出てきます。

行方不明になった父と、その原因と思われる闇の組織を追って仕事をこなす主人公の物語です。

序盤は単発のストーリーが多めですが、徐々に伏線が張られ終盤に向かっていきます。

少し長めの漫画ですが、流れのある作品で読みごたえがありました。


結婚指輪物語

結婚指輪物語 1巻 (デジタル版ビッグガンガンコミックス)

結婚指輪物語 1巻 (デジタル版ビッグガンガンコミックス)

こちらは異世界転生ではなく、異世界が別世界として存在していたファンタジー系のストーリーです。

主人公サトウが幼馴染のヒメを追いかけると、そこは異世界だった。流れで告白し結婚することになる二人。

ヒメもサトウも相思相愛だが、結婚しても恥ずかしさから中々進展しない関係。

その上、指輪を集め悪を倒すという大目的の途中、王家に伝わる指輪を授ける=結婚という図式から複数の国の王女と重婚をしていく主人公サトウ。

初々しい二人+他国の王女というハーレム状態な異世界冒険ものです。

やはり見どころはヒメの心情変化ですね。

unity1week第五回お題「フロー」に参加したので開発まとめ

unity1weekとは

Unity 1週間ゲームジャム | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

月曜0時開始、日曜20時締切の1週間ゲームジャムです。

毎回お題が発表されるので、それに沿った(拡大解釈可)ゲームを作ります。

時間配分などは各自に任されているので、有給取るなどして1週間ガチでやるも良し、毎日少しずつ作って週末ブーストするも良し、ネタに走って短時間で片づけてもokなお祭りです。

日曜提出なので、自分の技術力やリソースとも相談しながらあまり複雑にならないようなゲームを作るというバランスも求められます。

時間オーバーしても提出できるみたいですが、この辺はルールなので極力守りたいところ。

今回は1時間オーバーして、さらに3時間弱オーバーで修正も加えました。

参加の記録

今回の目標

まだ2回目ですが、参加する際に事前に目標を設定しています。

今回の目標は

  • arbor2を使うこと
  • FSMでどこまで出来るか試してみること
  • スマートフォン対応できる操作、アスペクト比にすること
  • ネットランキング、SNS対応

を設定しました。

あくまで目標なので、挑戦したうえで失敗しても得られるものがあればokというゆるーい姿勢です。


今回作成したもの

f:id:hildsoft:20170828005404p:plain

https://unityroom.com/games/slidefloor

矢印の床に乗ると自動で運ばれていき、ゴールまで到達できればクリアというパズルゲームです。


最初に考えていたもの

最初に考えていたものは、紙風船のようなゆっくり落ちてくるボールに送風機を設置して風の流れでゴールまで運ぶというゲームでした。

  • ドラッグ&ドロップで送風機の強さを決定しながら設置
  • 送風機は一定時間で消える
  • 強い力の送風機ほどエネルギーを消費する
  • エネルギーは有限
  • 複数ステージごとのタイムアタック制

という大ざっぱに仕様を考えた段階で、いざモックを作ってみようとすると問題が露呈しました。

ドラッグ&ドロップの操作は、小さなスマートフォンでは画面外に出てしまう。

PC上なら画面外に出てもマウスを引っ張れば問題ないのですが、スマートフォンではそうはいきません。

これでは画面端で送風機を設置する場合に、強さか角度の設定に制限がかかります。

そして画面が小さなスマートフォンではゲームエリアを小さくすると、今度は操作性や視認性の問題が出てきます。

ここで一旦参加を諦めましたが、辞書でflowの意味を再度調べたところ今回作成したゲームのアイディアが降ってきました。


arbor2の威力

今回、開発にはarbor2を使用しました。

FSMの便利なところと苦手なところを把握するためにも、なるべくコーディングをせずに作ってみることにしました。

実際、書いたコードはクラス3個、合計でも80行程度。

その反面、FSMはごちゃごちゃしました。

f:id:hildsoft:20170828012524p:plain

コーディングを減らした状態でも上手く切り分けするともう少し見やすくなるかもしれません。

コーディングを減らしたせいで、一つのFSMに集中して書かざるを得なかった部分があるので、結構密な結合になってしまっています。

再利用性が犠牲になっているので、これではFSMの利点が活かせず良くありません。

次回以降は、バランスの良いできるだけ疎結合なものを目指してみようかと思います。


arbor2の欠点

arbor2は基本的なパーツで構成されており、細かい部分は自分でカスタマイズする設計になっています。

ソース自体は全部付いてきますので、魔改造するなりして使いやすいように今後進めていこうと思います。

今回実装して、これは標準で欲しかったなぁと思うのが、(本当はあるけど探せなかった可能性もありますが)

transformからgameobjectを取得するcalculatorです。

    public override void OnCalculate()
    {
        Transform transform = _Transform.value;
        if (transform != null)
        {
            _GameObject.SetValue(transform.gameObject);
        }
    }

また、calculatorがVer2から追加されたためか一部固定値のみ入力を受け付けるbehaviourがあるので、ここは本当に必要なのか、回避方法があるか、もう少し勉強してからフィードバックしてみようかと思っています。

モックを作るうえでコードをあまり書かずにノード接続だけでざっくりと作りたいのですが、if文や定数値に相当するノード(calculator)が無いのでこの辺は公式のコンセプトとは異なるので自前で拡張する必要がありそうです。


FSMの限界

UE4のような開発環境によるノードコーディングとは違うので、リフレクションを多用するために速度面の問題が出る可能性があります。

特にモバイル向けなどの非力な環境では注意が必要です。

ですので、モックはFSMでさくっと作って、それをスクリプトに落とし込む。最終的に速度面の問題が出るようなら手動カスタマイズするか、機械的にリフレクションを解消したスクリプトを生成するようなマクロを組むなどが必要になるでしょう。

この辺りは開発コストや求められる品質と天秤にかけることになりそうです。


総括

今回の開発、最終的な作業時間はトータルでは20時間くらいになりました。
arbor2の習得とグラフィック素材の作成などに大半の時間を取られてしまったので、予想より少し長めに時間がかかってしまった印象です。

また、今回目標に挙げていたネットランキングとSNS対応はできませんでした。
ゲームの内容を変更したのでしょうがない部分はあります。

個人開発だと開発速度が早いと大きな武器になります。
小さなプロジェクトをサクサク回すためにも、FSMは十分な武器になると感じました。

最近読んだ印象が強かった漫画(2017/07)

賭ケグルイ

賭ケグルイ(1) (ガンガンコミックスJOKER)

賭ケグルイ(1) (ガンガンコミックスJOKER)

2017年7月からアニメ放送している作品です。

学園が舞台になっており、学園内で序列を決めるのはギャンブルという空想設定の元で繰り広げられる賭博のお話。

純粋なギャンブルの話かと思えば、ギャンブルにありがちなイカサマやルールのトリックがメインの構成になっています。
イカサマが分かっているうえでの心理戦などもあり、2,3回読み返すと新たな描写に気づく面白い作品です。


汚物は消毒です

汚物は消毒です(1) (サンデーうぇぶりコミックス)

汚物は消毒です(1) (サンデーうぇぶりコミックス)

ヒャッハーな世紀末のお話・・・ではなく、親の再婚により潔癖症の姉とズボラな弟が一緒に暮らすことになり、掃除する話です。

何が言いたいのかというと、姉+弟+掃除を含めたギャグ漫画。

この作者の前作「姉ログ」

姉ログ 靄子姉さんの止まらないモノローグ(1) (少年サンデーコミックス)

姉ログ 靄子姉さんの止まらないモノローグ(1) (少年サンデーコミックス)

の類似作品と言いましょうか。

登場人物が変わって、掃除ネタを主軸に据えられている作品です。

これを読めば掃除ネタが少しずつ蓄積されると思いますが、基本は姉萌え作品かと。


ビリオネアガール

ビリオネアガール(1) (アフタヌーンコミックス)

ビリオネアガール(1) (アフタヌーンコミックス)

平凡な大学生の主人公、高遠恵が教授から請け負った姪っ子の家庭教師アルバイトを破格の金額で受けるところから物語は始まります。

実はこの姪っ子、藤岡紫は天才的なデイトレーダーで、とある事情から大学には行かなかったために統計学を学びたいとアルバイトを雇ったわけですが、極度の人見知り、大金を持っているが故の人間不信が重なって少しズレてる子でした。

お金の魔力、恋愛、友人関係が交錯するストーリーです。

打ち切りになったのか、3巻完結で少し内容が浅いイメージはありますが、軽く読む分には面白い作品でした。


RATMAN

RATMAN(1) (角川コミックス・エース)

RATMAN(1) (角川コミックス・エース)

ヒーローという特殊能力を持った存在が実在する世界、子供の頃にヒーローに助けられてからずっとヒーローになることを目指していた少年、葛城修斗。

身長も伸びず、ヒーローには向かない体格な修斗は悪の組織ジャッカルに捉えられ改造人間?RATMANになってしまう。

そしてダークヒーローとして悪事を働き、ヒーローと戦うのであった。

というヒーローものの逆視点から始まるストーリーですが、実際はヒーローの方にも問題があり、お互いの信じる正義のために戦う展開になっていきます。

序盤は短編的なストーリーですが、途中から核心に迫る長めのストーリーに移行していきます。

個人的には好きな作品ですが、後半のシリアスパートはちょっと強引な設定だなぁと感じました。