NinaLabo

個人ゲーム開発者の技術メモ

【進捗】先人達はやっぱりすごい

気が付けば1ヶ月ほど更新していなかったですね。ブログは更新していませんでしたが、ゲーム開発はちょっとずつ進めていました。

ところで、ちょうど先日、不思議のダンジョンの開発者へのインタビュー記事が掲載されていましたね。

news.denfaminicogamer.jp

個人的には、この部分が気づきになりました。

半透明機能は他にも色々と役立ってます。このゲームは大量のアイテムを何回も見る必要があるのですが、アイテム欄を見る際にダンジョンの様子が同時に見えていると、アイテム選択がとても楽になります。もし黒塗りにしてダンジョンが完全に隠れていたら、自分の置かれている状況を正確に記憶したまま、アイテムを探しに行かなければいけない。これは、かなりのストレスですよ。

言われてみると至極まっとうなのですが、ゲームプレイしてるだけだと、当たり前になりすぎて意識してなかったんですよね。

今回のゲームのUIのプロトを作るときも、深く考えずに何となくアイテムボタン押したら、アイテム一覧ウィンドウが画面中央に出てくればいいかな、ぐらいで実装を進めてました。こういう深く考えずに作ったUIとか仮実装って、結局面倒になって直さずにそのままリリースしちゃったりするので、「これは気づいたときに直さなければ!」と思い、UIを作り直しました。

アイテム一覧はウィンドウを出すのではなく下に並べるようにして、アイテムの詳細を出すときも、キャラクターが見えるようにしてみました。これがベストかどうかはわかりませんが、少なくとも前よりは良くなったのではないかと思います。

左がアイテム一覧、右がアイテム詳細です。

BEFORE

f:id:ninagreen:20160327191014p:plain f:id:ninagreen:20160327191034p:plain

AFTER

f:id:ninagreen:20160327191157p:plain f:id:ninagreen:20160327191219p:plain

 

前回からの開発進捗

・アイテム一覧のUIまわりの改修

・プレイヤーとモンスターのキャラクター画像を3D化

・話すコマンドを実装(ひとまずUIだけ)

・盗むコマンドを実装

・矢、水晶(トルネコでいうところの杖)、指輪のアイテムを1つずつ実装

開発途中のゲーム(Safariじゃないと見れません)

アップして気づきましたが、アイテム詳細とか、もろもろ解像度がおかしいですね... 

 

 

 

 

 

【進捗】終わらなかったけど終わったことにしよう

気づけば1ヶ月以上更新していなかったですね。ブログは更新していませんでしたが、2月末までにチュートリアルダンジョンを完成させることを目標に、ゲーム開発はちょっとずつ進めていました。

が、しかし、終わりませんでしたね...

7割程度完了といったところでしょうか。ただ、完璧を求めすぎると挫折するのは経験済み。そういうときは、もう終わったということにしちゃいましょう(笑)残ったタスクはブラッシュアップ項目として、次のフェーズに回せばいいのです。

個人開発は、誰にも迷惑をかけない分、誰も励ましてくれませんから、自分で自分を褒めないと続きませんよね。

「いやー、なんか良い感じで出来てきた!さすが、よくがんばったね、やればできるじゃん!これ絶対おもしろくなるよ!!」(必死で自分を励ましてる声です^^)

開発途中のゲーム

前回からの開発進捗

・2x1モンスターの追加(これ、後から追加するのが想像以上に大変でした.. 先に設計しとかないといけないやつでした)

・モンスターを倒したときのアイテムドロップ

・アイテム追加(火炎草、爆発の巻物)

・プレイヤー向き変更UIの改善(悩んで何回か作り直したあげく、最終的にはタッチしてドラッグで、向きを変更できるようにしました)

・プレイヤーのダッシュUIの改善(これも悩んで何回か作り直したあげく、前回のキャラタップでダッシュがいまいちだったので、廊下に入ったときだけダッシュボタンを表示するようにしました)

・プレイヤー詳細を表示するUIの改善(これも悩んで何回か作り直したあげく、結局まだ出来てませんw)

 ・回復系弱点(やくそうなどの回復アイテムでダメージを受けるモンスターの追加)

・別のダンジョンへ遷移、別のフロアへ遷移できるデバッグ機能の追加(これで開発がだいぶ楽になりました)

・モンスターの有無をフロアごとに設定できるようにした(チュートリアルモンスターハウスが発生して死ぬ無理ゲーになっちゃったので)

・最終フロアの階段をのぼるとダンジョンをクリアするようにした。また、HPが0になったら、敗北ダイアログを表示するようにした。

・敗北したときに死因(敵にやられて死んだのか、飢えで死んだのかなど)を表示するようにした。

チュートリアルの最終フロアでボス感を出すために、ランダム配置ではなくあらかじめ決められた配置も設定できるようにした。

・プレイヤーキャラクターを3Dにした(まだ途中なので、キャラの下に昔の画像が出てますが、気にしない気にしない)

 

 

MagicaVoxel の 3Dドット絵を Unity に取り込むまで

今開発中のローグライクゲームを、最終的には Crossy Road のような3Dドットにしようという野望がありまして。

クロッシーロード

クロッシーロード

  • HIPSTER WHALE
  • ゲーム
  • 無料

 作り方をいろいろ調べてみたんですが、エンジニアでも簡単に扱えそうな MagicaVoxel というツールを使ってみました。その結果...

慣れない作業に四苦八苦...!!

数時間かけて作った自分の3Dドットを見て、本当に絶望しました... もはや、ツールの問題ではなく、絵心の問題ですね。何回も作り直して、ようやくそこそこ見れるものになった(?)ので、作業の手順をまとめておこうと思います。作業環境は、Mac (OS X Yosemite) です。

1. MagicaVoxel のインストール 

MagicaVoxel のページ(https://voxel.codeplex.com)から、ツールをダウンロード。

f:id:ninagreen:20160123173117p:plain

あとは、ダウンロードしたフォルダ(MagicaVoxel)内の MagicaVoxel_mac.app をクリックするだけで起動できます。(ダウンロードしたフォルダは アプリケーションフォルダなど、任意の場所に移動しておいてください)

ちなみに私の場合、以下のような「開発元が未確認のため開けません。」といったセキュリティ警告が出たので、以下のサイトを参考にさせていただき、右クリックの「開く」から実行することで、起動できました。

Macで「開発元が未確認の為開けません」と言われて開けないアプリを開く方法

nori510.com

2. サンプルモデルを改変して、3Dドットモデルをつくる

起動すると、以下のような画面が立ち上がります。本当はいろんな操作ができると思うのですが、いっぺんにいろんなことを覚えられないので、最低限の操作だけ調べることにします。

f:id:ninagreen:20160123175415p:plain

サンプルモデルを開く

いきなりゼロからモデルを作るのは大変なので、サンプルモデルを改変してオリジナルのモデルを作成することにします。右側のModelを選択するとサンプルモデルが表示されます。今回は、chr_old を選択し、おじいちゃんをベースにモデルを作成することにしました。

f:id:ninagreen:20160123180340p:plain

保存(別ファイルとして保存)

このまま保存(Command+S)してしまうと、サンプルモデルを上書きしてしまうので、別ファイルで保存することにします。メニューの「File」- 「Save As」から、保存するフォルダとファイル名を入力して保存できます。または右上の「Save」の隣にある「As」ボタンからも実行できます。保存を実行すると、拡張子が「.vox」のファイルが作成されます。

開く

MagicaVoxel で編集していたモデルを閉じてしまった場合などに、再度ファイルを開き直すには、メニューの「File」-「Open」で、開きたい voxファイルを指定します。または右下の「Open」ボタンからも遷移できます。(保存したvoxファイルのダブルクリックでは開けませんでした...)

視点移動

マウスホイールでモデル表示の拡大/縮小ができます。また、右クリックを押しながら、ドラッグで視点を移動できるので、モデルをいろんな角度から見ることができます。

モデル変更

ひとまず、以下の7つの操作を利用して、試行錯誤しながらモデルを変更してみました...

f:id:ninagreen:20160123183541p:plain

①サイズ変更:デフォルトのサイズが大きかったので、16 x 16 x 16に変更

②ドット編集:ドット単位で編集するので、「V」を選択

③ドット追加:「Attach」で、モデルの選択した位置にドットを追加できる

④ドット削除:「Erase」で、モデルの選択した位置のドットを削除できる

⑤色変更:  「Paint」で、モデルの選択した位置のドットの色を変更できる

⑥モデル移動:「Move」を選択して、モデルをドラッグするとモデル全体を移動できる

⑦スポイト: 「<」を選択後、モデルの任意のドットを選択すると、選択したドットの色を吸い取り、左のカラーパレット上に反映する。

 

詳しい操作方法は以下の記事が参考になりそうです。 

megumisoft.hatenablog.com

3Dドットのモデルを簡単に作れる高機能エディタ「MagicaVoxel」

getgamenews.net

3. 作成したモデルをエクスポート

最終的には、こんな感じになりました。。

これをUnityに取り込める形式にエクスポートします。右下の「Export」を選択します。

f:id:ninagreen:20160123185458p:plain

Exportからobjを選択して、ファイル名を入力して保存。

f:id:ninagreen:20160123190158p:plain

保存すると、「.mtl」「.obj」「.png」の3ファイルが作成されます。

4. エクスポートしたファイルをUnityに取り込む

f:id:ninagreen:20160123192718p:plain

エクスポートしたファイルのうち、「.obj」ファイルと「.png」ファイルを、UnityのProjectにドラッグ&ドロップします。Unity に取り込まれると Materials フォルダが自動的に作成されます。

f:id:ninagreen:20160123193241p:plain

このうち、hinata.obj を Hierarchy にドラッグ&ドロップして配置します。

このままだとテキスチャが設定されてなくて色がないので、Project のdefaultMat を選択して、テキスチャを設定します。Shader は Mobile -> Bumped Diffuse を選択。さらに、Base(RGB)の右側のTexture欄に、さきほどProjectに取り込んだ hinaga.png をドラッグ&ドロップします。

f:id:ninagreen:20160123193519p:plain

暗いようであれば、Direction Lightを追加して完成です!カメラの設定にもよりますが、私の場合はオブジェクトが少し大きかったので、Scale を0.1に設定しました。

f:id:ninagreen:20160123193744p:plain

Magica Voxel のオブジェクトを Unity に取り込む方法はこの記事が詳しいです。

karaagedigital.hatenablog.jp

あとがき

はじめての MagicaVoxel で苦戦しましたが、それでも1日あればモデルを作成してUnityに取り込むところまで出来るなんて便利ですね。余談ですが、最初 MagicalVoxel(マジカルボクセル)だと思いましたが、よく見たら MagicaVoxel(マジカボクセル)なんですね。いずれにしても、無料でここまでできるのは素晴らしいと思います。次は、モデルにアニメーションをつけてみようと思います。

 

 

【進捗】ハワイでコーディング

アロハ〜!!休暇でハワイに来ています!

f:id:ninagreen:20160118165156p:plain

東京では雪が降ったらしいですが、ハワイの天気は最高に晴れてて、海に入ると気持ちいいです!日中は観光したり、ビーチでくつろだりして、夜は粛々と好きなゲーム開発を進めてます。ずっとこんな日々が続けばいいのに〜・・・

前回からの開発進捗

大きな変更として、キャラの操作を十字キーから画面タップに変えました。タップしたところまでキャラが歩きます。キャラ自体をタップで、進行方向に向かってダッシュします。個人的には十字キーよりタップのほうがストレスなく移動できるかな、という印象。ただ、キャラタップでダッシュはちょっといまいちかなあ。

あと今まで横画面だったのを縦画面で出力しました。最終的には縦横両対応にするつもりです!

それ以外だと、ダンジョン前の導入部分を実装したり、パンや、やくそう、巻物などのアイテムを数種類実装したり、ワナを導入したり、ダンジョンの自動生成ロジックのパターンを増やしたりしています。ダンジョンの自動生成は、2分割方式だと、チュートリアルで使うような簡単なマップが作りにくかったので、格子状に区切る方式も導入しました。ダンジョンによって切り替える予定です。

ninagreen.hatenablog.com

 

 

Unity 5.3 で Application.LoadLevel が Obsolete になりました

シーンを遷移するときに呼び出す Application.LoadLevel が、Unity 5.3 から非推奨になったんですね。MonoDevelop で Application.LoadLevel を呼び出している箇所に警告が出ていました。

`UnityEngine.Application.LoadLevel(int)' is obsolete: `Use SceneManager.LoadScene'

`UnityEngine.Application.LoadLevel(string)' is obsolete: `Use SceneManager.LoadScene'

SceneManager に置き換えるだけなので簡単でしたが、SceneManager すら知らなかったので、ちょっとびっくりしました。対応をまとめておきます。

シーン名でのシーン遷移

シーン遷移で、よく使うのはこれですね。遷移したいシーン名をパラメータで指定する方法です。

Unity 5.2

Application.LoadLevel ("BattleScene");

Unity 5.3

SceneManager.LoadScene ("BattleScene");

 ※ SceneManager を使用するには、名前空間 (UnityEngine.SceneManagement)が定義されている必要があります!!

using UnityEngine.SceneManagement; 

シーン番号でのシーン遷移

シーン名での遷移があれば、シーン番号(インデックス)での遷移はあまり使わない気もしますけどね。Application.LoadLevel でも SceneManager.LoadScene でも int型を引数にもつ オーバーロードメソッドが用意されています。

Unity 5.2

Application.LoadLevel (0);

Unity 5.3

SceneManager.LoadScene (0);

現在のシーン名を取得

現在表示されているシーン名の取得です。

Unity 5.2

string sceneName = Application.loadedLevelName;

Unity 5.3

string sceneName = SceneManager.GetActiveScene ().name;

 

参考資料

たしかに、ググっても情報があんまり見当たらなかったです。とても参考になりました。

qiita.com 

SceneManager の公式APIドキュメント。

docs.unity3d.com

Application.LoadLevel のAPIドキュメントも念のため。

docs.unity3d.com

 

 

なぜ、副業のゲーム開発はエターナるのか

エターナる (えたーなる、エターナル)とは、作者が諸般の事情により、ゲーム制作を途中で放棄すること。わたしも、エターナったゲームがいくつもあります!

完成させて売らないと、お金が底をついてしまう個人ゲーム開発者は、エターナったりはしないでしょう。本業が別にあって、副業または趣味でゲーム制作している、わたしのような個人開発者が危ないです。

ゲームはたいてい完成しません。

とくに、知り合いと対等の立場で始めたプロジェクトは完成したことがありません(汗

 少し視点がエンジニア寄りですが、個人ゲーム開発がうまくいかない 7つの原因 をあげてみました

個人で大規模な開発は難しいのに、風呂敷広げすぎ問題

  • 企画するのがエンジニアでない場合、開発工数がイメージできないので夢見がち
  • ゲーム開発の経験が浅いエンジニアもハマる可能性あり

そもそもモチベーションの維持が難しい問題

  • 最初はゲーム開発に対して楽しそうなイメージを抱いているが、実際やってみたら想像以上に地味で辛い
  • あくまで趣味なので、辛いとみんなやめてしまう
  • お金稼ぎ目的であっても、途中で報酬が労力に見合わないと思いはじめて、やめてしまう

プロマネがいなくて、なあなあ になりがち問題

  • 他の人が何をどこまで進めているかがわからない、そのうち音沙汰がなくなる
  • 誰にも急かされないので、緊張感がなくなっていき、みんなのゲーム開発に対する優先度がどんどん下がる
  • 締め切りもなくダラダラやってしまい、最終的には自然消滅または音信不通

開発に飽きてしまう問題

  • エンジニアに起こりがち
  • 同じ場面を何度も起動してデバッグするので、自分の作ってるゲームが面白いのかどうかが、わからなくなってくる
  • 面白くなさそうなゲームに膨大な時間を費やすのは、わりに合わない気がしてやめてしまう

プロト作ってみたら意外に面白くない問題

  • 頭の中で思い描いてたときはすごく面白そうに思えたのに、いざプロト作ってみたら意外に面白くない
  • 理想と現実のギャップに心が折れてやめてしまう
  • プロト後のプロジェクトの方向性が迷走してしまい、疲弊してやめてしまう 

だんだん進捗が感じられなくなる問題

  • それなりにゲームが動いたところから、リリースまでの間が想像以上に長くて大変
  • 裏の処理を一生懸命つくっても、見た目が変わってないと努力を理解してもらえない
  • 自分でも自分が進捗していないように思えてきて、嫌になってやめてしまう

仕事が忙しくなった問題

  • ほとんどの場合、モチベーションが低下したところに、仕事がいつもより多くふってきたので、自分を正当化する言い訳として使用
  • 時間は工面すれば少しずつならなんとかなるはず
  • 仕事が忙しいという理由だけで、エターナることはほぼないと個人的には思っている

あとがき

それでも、自分が好きなゲームを全部自分で決めて作れるのは楽しいです。作業が膨大で吐きそうになったり、がんばって実装したものが全部無駄になって発狂しそうになったり、時給換算すると10円以下で泣きたくなったり、クソゲーができあがって絶望したりしますけどね。

仲間と一緒にゲーム制作するのも楽しいです。ときには音沙汰がなくなったりもしますが、自分一人では思いつかなかったであろう新しい視点をくれたり、素晴らしいデザインを仕上げてくれたり、雑談して気分転換になったり、がんばってるメンバーを見て逆にやる気をもらったりします。

もう少しがんばってみようかなあ。

参考記事

dic.nicovideo.jp

www.slideshare.net

 

 

2015年 面白かったスマホゲームまとめ

書いている最中に年を越してしまいましたが・・・・

2015年に発売されたスマホ (iPhone) のゲームの中で、個人的に面白かったもの、ハマったものをまとめてみました。まだやっていないものがあれば、お正月休みの暇つぶしにでも!!

スバラシティ シンプル街作りパズル

開発: Ryuji Kuwaki (無料)

2015年版の Apple ベストゲーム にも選ばれていましたね!最初は運ゲーかと思って1回離脱したのですが、他の人のプレイを見て、どうもそうじゃないらしいとわかってからが、とても面白くなりました。起動も速いし、サクサク動くので、スキマ時間にやるのにちょうどいいです。ルールもシンプルなので誰でも楽しめるパズルゲームだと思います!

 

Don't Starve: Pocket Edition

開発: Klei Entertainment (¥360)

奇妙な無人島で、科学と魔法の力で生き残るサバイバルゲームです。周りにあるものを拾い、道具を作って、生き延びようとするのですが、夜になると死に、食べ物が見つからなくて飢え死に、気が狂って幻覚が見えて死に、変な生き物に攻撃されて死に、冬になって死に・・とにかく死んで覚えていくゲームです。ろくなチュートリアルもなく放り出されますし、ちょっと鬱ゲーっぽいところもあるので、人を選ぶゲームだと思いますが、やり出したら時間を忘れて夢中になります。

Don't Starve: Pocket Edition

Don't Starve: Pocket Edition

  • Klei Entertainment
  • ゲーム
  • ¥360

 

Tap Titans

開発: Game Hive Corp. (無料)

タップして敵をどんどん倒していくというシンプルなゲームなのですが、何故かすごく中毒性があります。少しやればタップしなくても、仲間が攻撃してくれるようになり、どんどん強くなっていくインフレ感がとても爽快です。絵もかわいくて、演出もとてもよく出来ているので、クリッカー系ゲームの中ではこれが一番好きです。

Tap Titans

Tap Titans

  • Game Hive Corp.
  • ゲーム
  • 無料

 

ここまでが、2015年発売のゲームなのですが、昔リリースされたゲームで面白かった、おすすめゲームもついでに紹介しようかと思います。

Cave Quest HD (Full)

開発: By Big Fish Games, Inc (¥360)

周りにも全然知ってる人がいないマイナー(?)なゲームなのですが、RPG要素の入ったパズルゲームです。ある日、行方がわからなくなった両親と弟を探しに冒険に出かけます。様々なパズルをクリアしながら家族を探す旅をするのですが、この途中のパズルがとても斬新で衝撃を受けました。3マッチパズルも工夫次第でこんなにバリエーションが出せるのかと。パズル自体はそんなに難しくないのですが、360円分は十分に楽しめると思います。

洞窟クエスト HD (Full)

洞窟クエスト HD (Full)

  • Big Fish Games, Inc
  • ゲーム
  • ¥360

 

ゴースト トリック 

開発: CAPCOM (無料)

数年前にリリースされたゲームなのですが、シナリオ推しのゲームでは未だにこれが1番です。主人公は、謎の死を遂げた幽霊なのですが、何故自分が死んだのか、簡単なパズルをクリアしながら、真相を追っていきます。主人公は数分だけ過去に戻ることができ、物に取り憑いて少しだけ動かすことで未来を変えていきます。ストーリーとパズルゲームがうまく融合されていて、本当に素晴らしい出来だと思います。

 

Smash Hit

開発: Mediocre AB (無料)

個人的にアクションゲームはあまり得意じゃないのですが、このゲームは本当に爽快でハマりました。ボールをぶつけてガラスをパリンパリンと割っていくのがすごく快感です!ボールはちょっとだけ重力に影響されるので、個人的には簡単すぎず、難しすぎずちょうど良かったです。

Smash Hit

Smash Hit

  • Mediocre AB
  • ゲーム
  • 無料

 

Slay

開発: Sean O'Connor (ライト版は無料)

シンプルな戦術シミュレーションゲームなのですが、バランスがよく完成度が高いゲームだと思います。いわゆる陣取りゲームで、兵士を雇って領地を広げて、島を制覇するとクリアなのですが、AIが良くできていて絶妙のタイミングで降参してくるのでテンポよく進めます。有料版は、500弱のステージがあるのですが、全部クリアしてしまいました!起動も速く、動作もサクサクなので、空き時間にちょうど良いです。難点なのが、チュートリアルもなく、UIもわかりにくいので、レビューサイトなどで補足しないと、面白いところに行く前に離脱しちゃうかもしれません。