NinaLabo

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

【Unity】MagicaVoxel のモデルに Blender でアニメーションをつけて Unity で動かす(後編)

MagicaVoxel で 3Dモデルを作成し、Blender にインポートするところまで前編でやりました。 ninagreen.hatenablog.com 後編ではBlenderに取り込んだモデルに簡単なアニメーションをつけて、Unityで動かしたいと思います。ただ、その前に Blender 初めての方…

【Unity】Segmentation fault 11 でエラーになる件

エラー発生 Unityのアプリを TestFlight にアップしようと思い、Unity で iOS ビルド実行後、Xcode の Product の Archive を実行したところ、以下のエラーが発生しました。 clang: error: unable to execute command: Segmentation fault: 11 clang: error:…

Stardew Valley の開発者がゲームを完成させるまでの話

少し前の話になりますが、Stardew Valley を1人で開発した開発者へのインタビュー記事が面白かったので前半部分だけ勝手に翻訳してみました。Stardew Valley は、Steam で約12日間で約42万5千本(単純計算で約7億2千万円)売り上げており、今は100万本を突破…

【C#】三角関数で2点間の線の長さと角度を計算する

下記のようなスキルツリーのミニマム版みたいなものを実装しているのですが、ボタンとボタンを繋ぐ線の長さと角度は計算して配置しています。 特定の2点間を線でつなぐのを Unity でどう書けばいいのか、いつもやりかたを忘れてしまうのでまとめておきます。…

ローグライクゲーム制作を振り返って(2016年)

2016年もあと少しで終わりですね。少し気が早いかもしれませんが、2016年のゲーム制作を振り返ってみようと思います。 3. プレアルファ(Pre-α)前半(2016/1〜2016/4) キャラクターが3Dになりましたね。あと、当初はキャンディクラッシュみたいに縦横両対…

ローグライクゲーム制作を振り返って(2015年)

2016年もあと少しで終わりですね。少し気が早いかもしれませんが、ここまでのゲーム制作を振り返ってみようと思います。 2016年を振り返る前に、2015年を振り返ってなかったので(汗)、まずはプロジェクトの初期の頃をまとめました。 1. 潜伏フェーズ(〜20…

Unity 5.5 にアップデートしたら TexturePacker の画像が崩れてしまう件

Unity を 5.3.6f1 から 5.5.0f3 にアップデートしたら、見た目がおかしくなってしまいました(左:BEFORE、右:AFTER)。 川(水たまり?)の画像のエッジ部分がずれてしまってます。表示が崩れてしまった部分はTexturePackerで画像をまとめていた箇所でした…

【Unity】Unity で ゲームデータをセーブするのに FlatBuffers を使ってみる(導入編)

永続化したいデータ(ゲームを終了しても残しておきたデータ)をどうやって保存するのが最適なのかはいつも悩みます。今開発中のゲームはサーバを使用しないつもりなので、データはローカル(端末)に保存するつもりですが、パッと思いつくだけでも色んな実…

【Unity】MagicaVoxel のモデルに Blender でアニメーションをつけて Unity で動かす(前編)

以前の記事では、MagicaVoxel で3Dドットモデルを作成して、Unity に取り込んで動かすまでをやりました。 ninagreen.hatenablog.com 実際には、3Dドットのボクセルモデルに攻撃モーションなどのアニメーションをつけたいので、MagicaVoxel でエクスポートし…

【Unity】マルチタッチの開発に役立つ Unity Remote

ピンチイン、ピンチアウトで拡大縮小する処理を Unity で実装する際に、いちいちビルドして実機に転送して確認だと開発効率が悪いので Unity Remote を使ってみたのですが、結構使えたので導入手順を記載しておきます。 Unity Remote を使えば、Unity Editor…

【Unity】3Dモデルにシェーダーでアウトラインをつける(失敗編)

キャラクターと背景の色が同系色だと見にくいので、白猫プロジェクトみたいに3Dキャラクターの周りを線で囲みたいと思い、やりかたを調べてみました。 トゥーンシェーダー 最初に行き着いたのが、トゥーンシェーダー。 Unity 付属のシェーダーにアウトライン…

Unity のアプリを TestFlight で配信する(iOS編)

ゲームがある程度動くようになったので、自分以外の人(特に非エンジニア)にも遊んでもらうために、TestFlight で 開発途中のゲームを特定のメンバーにだけ配信することにしました。iOS の場合、配信までの手続きが多くて大変だったのでまとめておきます。…

【Unity】uGUIのオブジェクトをタッチしているか判定する

実装方法 EventSystem.current.IsPointerOverGameObject () で判定できます。ただし、これだと実機ではうまくいきません。 EventSystem.current.IsPointerOverGameObject (fingerId) 実機の場合は、fingerIdも指定しないといけません。fingerId は Input#Get…

【進捗】WebPlayerのビルドが突然動かなくなる

開発が一区切りしたときにビルドをWebPlayerで公開していたのですが、何の修正が原因なのかわかりませんが、突然動かなくなっちゃいました。 開発途中のゲーム【WebPlayer版】(Safariじゃないと見れません) 起動はするんですが、フロアをタップしてもキャ…

集中力を高めるには

「気が付けば1ヶ月ほど更新していなかったですね」 このセリフ、ブログの書き出しの決まり文句になりつつあります・・・ ブログは更新してなかったのですが、開発は粛々と進めてました。と言いたいところですが、最近プライベートがトラブル続きで、正直この…

Github でプライベートリポジトリへのコミットにも草を生やす

Github で 自分のプロフィールページを見ると、こんなグラフがありますよね? GitHubのリポジトリに対して、commitやissuesの作成などを行うと、緑が増えていきます。これを contribution graph というらしいです。 エンジニアの中には、これを「草」と呼び…

Mac で Windows のフリーゲームを遊べるようにする

Windows で動く実行ファイル(拡張子が.exe のファイル)は、基本的にMac上では動作しません。ですが、PC用のフリーゲームは、Windowsでしか動かないEXEファイルで配布されていることも多いのです。 ローグライクゲーム開発の参考にするため、Elona というフ…

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

気が付けば1ヶ月ほど更新していなかったですね。ブログは更新していませんでしたが、ゲーム開発はちょっとずつ進めていました。 ところで、ちょうど先日、不思議のダンジョンの開発者へのインタビュー記事が掲載されていましたね。 news.denfaminicogamer.jp…

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

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

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

今開発中のローグライクゲームを、最終的には Crossy Road のような3Dドットにしようという野望がありまして。 クロッシーロード HIPSTER WHALE ゲーム 無料 作り方をいろいろ調べてみたんですが、エンジニアでも簡単に扱えそうな MagicaVoxel というツール…

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

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

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

シーンを遷移するときに呼び出す Application.LoadLevel が、Unity 5.3 から非推奨になったんですね。MonoDevelop で Application.LoadLevel を呼び出している箇所に警告が出ていました。 `UnityEngine.Application.LoadLevel(int)' is obsolete: `Use Scene…

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

エターナる (えたーなる、エターナル)とは、作者が諸般の事情により、ゲーム制作を途中で放棄すること。わたしも、エターナったゲームがいくつもあります! 完成させて売らないと、お金が底をついてしまう個人ゲーム開発者は、エターナったりはしないでし…

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

書いている最中に年を越してしまいましたが・・・・ 2015年に発売されたスマホ (iPhone) のゲームの中で、個人的に面白かったもの、ハマったものをまとめてみました。まだやっていないものがあれば、お正月休みの暇つぶしにでも!! スバラシティ シンプル街…

ローグライクゲームのUIパターンまとめ

ローグライクゲームを開発していて、一番悩むところは実はUIだったりします。大きくは以下の2点がUIデザインを難しくさせているのではないかと思います。 ・ユーザーに操作させたいことが多い 以前の記事「ローグをスマホで遊ぶための最適なUIが浮かばない」…

Unity 5.3 に アップデートした感想まとめ

Unity 5.2.1 を 5.3 にアップデートして、いま開発中のゲームを動かしてみました。 アップデート方法 以下のリンクからインストーラーをダウンロードして実行すればインストールできます。 https://unity3d.com/jp/get-unity/update 変更点の詳細は、以下の…

【進捗】個人開発の開発期間はどれぐらいが適正なのか?

ローグライクゲームの開発も3ヶ月が過ぎようとしていますが、まだ完成までにはほど遠いですね・・だらだら開発しているのがいけないのですが、世の中の個人開発のみなさまは、1ゲームにどれぐらいの時間を費やしているのか、ふと気になったので調べてみまし…

六角形(HEX)マップの座標系まとめ

戦略/戦術シミュレーションによくある、六角形(HEX)マップの座標の持ち方ですが、かなり悩みました。結論としては、下記の3つの方法がありそうです。 《1》交互にずらす まず一番初めに思いついた方法がこれです。見た目はわかりやすいですが、2点のHEX間…

【Unity】DOTween のインストール

Unityで使えそうなTween系のツールとして、iTween、HOTween、LeanTween などありますが、コードが簡潔に書けるので、個人的には DOTween が好みです。アニメーションのほとんどは Unityアニメーション(Mechanim)で作っていますが、例えばA地点からB地点へ…

【C#】リストや配列のソート方法まとめ

リスト(List)や 配列(Array)の 並び替えの方法をまとめました。 《CASE1》リスト内のオブジェクトの変数で並び替え 社員オブジェクト(Employee)を格納した 社員リスト(employeeList)があるとして、その社員リストを 社員番号(Employee.ID)で並び替…

【進捗】ゲームが好きとゲーム作りが好きは別物である(2015/11/09)

子供の頃からゲームが好きで、学校から帰ってきたらずっとゲームをして過ごし、社会人になってからも会社から帰ってきたらゲームをしてストレスを発散していました。 そんなゲーム好きなわたしは、自分で好きなゲームが作れるようになったらもっと楽しいだろ…

ローグライクゲームの定義まとめ

最近、ローグを謳っているゲームが増えてきた気がします。ただ、一概にローグと名乗っているゲームでも中身は本当に様々で、不思議のダンジョンシリーズに忠実なものもあれば、死んだら最初からの(または重めのペナルティがある)ゲームをローグと言ったり…

【C#】数値を符号(プラス/マイナス)を付けた文字列に変換する

たとえば・・ 数値がプラスの場合は、 「こんぼう +1」 数値がマイナスの場合は、 「こんぼう -1」 数値がゼロの場合は、 「こんぼう」 と表示するとします。 もちろん、if分で場合分けして、文字列を組み立てればできるのですが、 string.Format ("{0} {1}"…

【進捗】モチベーションの低下は突然やってくる(2015/10/25)

開発する前はあんなにあったモチーベションが、急速になくなっていく... わたしの場合は開発1ヶ月〜開発2ヶ月ごろに、第一陣がくるようです。 1. 単純に飽きてくる 特に実装作業をしていると、ゲームを起動しては動作確認して、停止してコーデイングして、を…

【Unity】GameObjectをSetParentするとエラーになる件

エラー内容 Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption. この時点では何のことなのか、さっぱりわからず... エラー箇所 gameObj.transform.SetParent (baseTransform); 子のゲームオブジェクト(…

【Unity】Unity 5.2.1 の uGUI で Source Image がない Image の表示がおかしくなる件

Unity を 5.2.0f3 から 5.2.1f1(2015/10/13時点の最新版)にアップデートしたところ、uGUIの一部のImageコンポーネントの表示がおかしくなってしまいました。 単純に、画面全体を覆う白い背景を表示したくて、上図のように Source Image を設定せずに、Colo…

【進捗】ローグをスマホで遊ぶための最適なUIが浮かばない(2015/10/13)

今週はダッシュ(高速移動)を追加しました。ちょっとわかりにくいですが、ひとまずダッシュするには十字キーの真ん中のボタンを押して、ダッシュ用の十字キーにしてから上下左右のどれかを押してください。 ローグ、というか不思議のダンジョン系のゲームは…

【Unity】 Animator has not been initialized と警告されてしまう件

UnityのMechanim(メカニム)を使ったアニメーションの実装をしている時にたまにゲーム画面がフリーズすることがあって、何だろうと思ってコンソールログを見ると "Animator has not been initialized" とwarningが出ていることがありました。 「Animator が…

【進捗】ローグの面白さはいつ実感できるのか(2015/10/04)

モンスターの攻撃を実装して、だんだんゲームっぽくなってきました。ただ、面白いと感じられるまでには、まだまだ遠いですねー。 私が考えるローグの1番の面白さは、リスクマネジメントの楽しさであり、困難な状況を知恵を駆使して切り抜ける楽しさだと思っ…

【進捗】ローグのメッセージウィンドウの実装は意外に難しかった(2015/09/28)

シルバーウィークの間にゲーム制作を一気に進めよう!と考えていたのですが、ちょっとぐらいならいいだろうと遊びの予定を入れていたところに、休日出勤で会社に行くことになり、あんまり進められませんでしたね... シルバーウィーク明けの今日からまた心機…

ローグライクゲームのモンスター移動AIアルゴリズムまとめ

ローグライクゲーム(不思議のダンジョンシリーズ)のモンスターの移動AIアルゴリズムをまとめました。 SFCシレンWiki http://twist.jpn.org/sfcsiren/index.php?モンスターの移動と目的地http://twist.jpn.org/sfcsiren/index.php?モンスターの行動アルゴリ…

【進捗】ローグのモンスター移動AIは難しそうで簡単だった(2015/09/13)

今週は、モンスターの移動AIを中心に実装しました。 プレイヤーが移動すると、モンスターも移動するようになっています (デバッグのためにミニマップにはひとまず全部表示しています) モンスターの移動AIは下記の記事でも紹介したSFCシレンWikiを参考にし…

Unity で作ったゲームを はてなブログ で公開する手順

Unityで作成したアプリをはてなブログで公開するまでの手順を書いておきます。実際にアプリを公開したページはこちら。 ローグライクゲームの進捗状況(20150905) - NinaLabo 公開までの手順 Step1. Unityのビルド Step2. Google Driveへのアップロード Ste…

ローグライクゲームのダンジョン自動生成アルゴリズムまとめ

ローグライクゲームのダンジョンマップを自動生成するにあたり、参考にさせていただいたページをまとめておきます。 《マップを2分割していく方法》 大きいマップをどんどん2分割していくことで、不思議のダンジョンのようなマップを自動生成できます。開発…

【進捗】ローグライクゲーム開発の記念すべき一歩(2015/09/05)

いま、トルネコの大冒険や風来のシレンなどの不思議のダンジョンシリーズのようなローグライクゲームをUnityで作っているのですが、メモがてら開発過程をブログにアップしていこうと思います。 では、早速、これまでの進捗。 (ちなみに、最新の Google Chro…

"Invalid AABB aabb" という謎のエラーが出る件

先日、Unityで実装していたら、Consoleウィンドウに突然 Invalid AABB aabb という謎のエラーが出はじめました Inspector上で、GameObjectをアクティブにしたり非アクティブにしたりすると出続ける状態。最初は訳がわからず、誰かがふざけてデバッグログに仕…

C#で Vector3 を Vector2 に変換するには

こういうVector3があるとして、 Vector3 three = new Vector3 (1, 2, 3); zを無視してVector2に変換する場合、もちろんこう書けばできるけど、 Vector2 two = new Vector2 (three.x, three.y); 暗黙的にキャストしてくれるので、これで大丈夫です。 Vector2 …

C#で Enum(列挙型)と 数値や文字列 との変換

こんな Enum(列挙型)があるとして、 public enum ItemType{ Weapon = 1, Shield = 2,} Enum (列挙型)→ 文字列 ItemType.Weapon.ToString(); Enum (列挙型)→ 数値 int itemTypeNo = (int)ItemType.Weapon; 文字列 → Enum (列挙型) ItemType type = En…

C#で 任意の個数の引数をもつメソッドをつくるには

キーワード params をメソッドの引数の配列型の前につけるだけ。例えばこんな感じ。 public void ShowMessage (string message, params object[] messageParams) 呼び出し側は引数を何個でも渡せます。 ShowMessage ("message", param1, param2, param3); 文…

EXC_BAD_ACCESS: UnityでビルドしたソースコードをXCode経由で実行するとエラーになる件

再現環境 Unity 5.1.2 iOS 8.3 / iPhone 5 XCode 6.4 エラー内容 Unityで製作したアプリを端末上で動作確認したいと思い、以下の手順を実行したところ、EXC_BAD_ACCESS エラーが発生してしまいました。 1. Unity上でiOS向けにビルド(IL2CPP) 2. ビルドした…