【#techbuzz】第22回unity勉強会...
DESCRIPTION
2014/6/27にTechBuzzSpaceにて行われた、第22回Unity勉強会での発表資料です。 ■勉強会詳細 http://atnd.org/events/50192TRANSCRIPT
Unityを使って1日で アプリを完成させる為には
株式会社 アイコック:木部 暁
自己紹介• ファミコン世代ど真ん中(発売当初 小1)
• 中学生の時、マイコンBASICを写経し言語を学ぶ
• 趣味でプログラムやりながら色んなアルバイト転々(二十代は関東在籍。 故郷の長崎に戻ったらイントネーションはリセットされました…
• 1年程、ゲーム会社でプログラマを経験
icocApps
• ICOCのゲームブランド icocApps
• 昨年10月よりゲーム開発事業部を設立
• 長崎の片田舎から世界にアプリを発信中
• 現在までにアプリを10作品リリース
KING OF VEHICLES
WholeNewWorld
WholeNewWorld
KING OF VEHICLES
WholeNewWorld
WholeNewWorld
5日間連続リリース
5日間連続リリース• @ui_nyanさんの「素人が7日間クソゲーを作り続けてわかったこと」に触発
• ただ作ったら、2番煎じなのでアプリとしてリリースまでやってみよう
• 話題になってDL数が伸びるかも!?
• という事で、ブログで毎日記事に…
アプリ内容
• 動画を御覧くださいhttps://www.youtube.com/watch?v=jvPiLwTHcAw
総ダウンロード数
総ダウンロード数
KING OF VEHICLES
WholeNewWorld
WholeNewWorld
28 33 59 1310 279
大失敗 orz
• リツイートやお気に入りもわずかで、反響はほぼなし…
• 総収益は1000円ちょっと…
得られたものあった• アプリ開発効率が少し上がった
• 前日とは違うものをというプレッシャーから、多彩なジャンルに挑戦できた
• メキシコ人が車ゲー好きだという事実を知った
• ここに登壇できた?(これのお陰かは不明…
アプリ制作の工程
の前に、前提 ①• 製作は全工程一人
• 製作開始から24時間以内にリリース※Google Playへの反映は登録から大体2時間位ストアの情報登録とかもあるので、実質3~4時間位はリリース作業に取られると考えておく
の前に、前提 ②• 共用ライブラリ的なものは事前に用意※今回は、今までにリリースした三作で作成していたライブラリを元に作成
• 画像、音楽素材はフリー素材やAssetStoreを活用※流石に絵や音の製作も含めて一人日は厳しい
• 言語はC#
製作企画 (設計) リリース
アプリ制作の工程
企画+設計• 企画書がないと、勢いが止まった時に何をすればよいのか迷ってしまうので企画書は一応作る
• あまり深くつくっても完成させれないので、A4で1~2枚程度
• 時間ないし、企画書に設計も書いてしまえ
• バランスなども遊んでみて変えたくなると思うので、パラメータの種類だけ確定して、あとはなんとなく決めておく
KING OF VEHICLES
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
WholeNewWorld
製作
• とりあえず、余計なことを考えず企画のとおりに作ってみる
• 調整は完成後補正していく
• 個人的には画面遷移やUIは後半にやるのはしんどいので、先に作っておいたほうが楽だった
リリース
• あと一息!提出すれば、とりあえず2時間は寝れるぞ!!
• っと思ったけど、ブログの更新などもあり、結局睡眠時間には使えず…
製作効率を上げるために
効率を上げれそうな項目 - コーディング -
• 迷う時間を減らす
• 繰り返し利用するパターンはライブラリ化
• ライブラリ部分や、よく使うものをpackage化
• 宣言はvar
効率を上げれそうな項目 - 環境 -
• マルチディスプレイで効率1.2倍!?
• フリー素材、AssetStoreの利用 (※今回は言及しません
各項目の例を挙げます
• あくまで例です。個人的な習慣でやりやすいという面もあるので、順序や範囲、規則等は自分なりの枠で変更したほうが更に効率が上がると思います。
迷う時間を減らす①
• 関数名、プロパティ名はどうしようかな?→命名規則を確定しておく・関数名は大文字から始める・privateプロパティは_(アンダーバー)から始める ・状態を確認する関数はIsState、スキルを持ってるかはHaveSkill等、基本的に動詞を頭に
迷う時間を減らす②• あの関数どこに書いたっけ? →関数を記述しておく位置を決めておく publicプロパティの後に、privateプロパティその後メソッド、最後にStart、Update等のメソッド等 →C#であれば、各まとまりを#regionでくくる →クラステンプレートに#regionをつけたものをダミークラスとして、プロジェクトに追加しておくと便利 →テンプレートサンプル紹介
繰り返し使うパターンは ライブラリ化①
• Buttonクラス- ボタンはオブジェクトにButtonクラスとCollisionを付加するだけでボタンとして挙動- 詳細処理はこのクラスを継承して、OnMouseOverの挙動をOverride- 押下時のアクションは、位置を右下にずらすという処理で、汎用的に実現- 効果音もアタッチできるように
繰り返し使うパターンは ライブラリ化②
• Transform関連の拡張- 位置、サイズ等はVector3を別に作って再代入しないと行けないので、TransformをExtentionsで拡張して、簡単な関数で手続きできるように
(例)X位置だけ変更
public static void SetPosX (this Transform me, float val) { var newPos = me.transform.position; newPos.x = val; me.transform.position = newPos; }
transform.SetPosX(_firstTransform.position.x);
• 定義
• 利用
ライブラリ部分や、よく使うものをpackage化
• Assets > Export Packageで簡単にpackage化が可能
• 必要部分のコピペでも良いが、package化しておくと、ダブルクリックだけで、フォルダ構成を保ったまま追加できるので楽
宣言はvar• var pos = new Vector3(0,1,0);
• var no = 1;
• var waitSec = 1.5f;
• C#の場合、変数宣言は、型名を書かなくても var としておけば、代入文から推測して型を保管してくれるので、とりあえずvarと書いとく※ローカルスコープ内でしか利用できないので、 クラスのプロパティとしては利用不可
マルチディスプレイで効率1.2倍?• MonoDevelopとUnityをそれぞれのディスプレイに表示しておけば、アプリの切り替えが不要
• コード書くときも、MonoDevelopと別のディスプレイにWebのサンプルコード等を表示させておけば、コピペが超楽
• MonoDevelop側のディスプレイは縦表示できるものがオススメ!!(PDFもA4サイズが実寸で見れたりする)
• 計測はしてないが体感的に1.2倍くらいの効率は上がってる気がする
ASUS VG248QE
まとめ
効率アップは 細かいことの積み重ね
• 効率を上げる方法は色々あるけど、それぞれを積み重ねる事で、全体としてのスピードアップを測る
• C#の書き方を覚えるだけでかなり短縮できたり、スマートに書いたりできるので、C#のtips本は 多読をオススメ
• 個人的に一番為になったのはEffective C# 4.0
連続リリース…• 5日目はリリース自体は24時間以内に間に合わなかったが、全てのアプリは24時間以内に完成はできた
• かなり苦し紛れの作品も生まれるが、アイデアの種も随所に生まれるので、次につなげていける (レースは普段やらないが、車のゲームが出来た
• しかし、この後インフルエンザにかかって、一週間欠勤…
という事で、
• 結局無理したつけは回ってくるので 体を大切にしましょう…
続きはWebで• Unityゲーム開発日記@長崎でちょこちょこ技術情報をアップしています
• 「Unity日記」でググれると思います
• 今後も長崎のゲーム産業発展の為にがんばりますので、よろしくお願いします→ハウステンボスに「ゲームの王国」誕生!!
ご静聴 ありがとうございました
• Unityゲーム開発日記@長崎http://icoc-dev.hatenablog.com/→本日のスライドはこちらに掲載予定です
• twitter@nagasaki_ent