プロジェクトのフォルダ構成(ルート)

f:id:eiki_okuma:20180411121358p:plain

 三分で制作環境の紹介。ゲームプロジェクトのフォルダ構成はほんと人によってまちまちだが、自分は今のところこんな風に落ち着いている。これは Rabbit という名前のプロジェクトだ。

 ルートフォルダと同名である Rabbit フォルダは Unity のプロジェクトで、この直下にAssets だの Library だの Project Settings など色々入っている。これに関して特に語ることはないだろう。その次に重要なのが Work フォルダ。ゲーム本体には含まれない、いわゆるゲームリソースの原型が入っている。素材を切り出す前の画面構成の psd や、タイトルロゴなどの素材、資料、外注したリソースなど。

 あなたがイベントへの出展をもくろむなら、Press フォルダは今すぐにでも作ったほうがいいだろう。ゲームの詳細やスクリーンショット、タイトルロゴ、イラスト素材などを含んだプレスキットや、ポスター、チラシ、CDジャケット、ショップに提出するためのサムネイルやアイコンなど、完成系のアートワークが入っている。新しい需要が生まれるたびに中身は拡充されるが、既に作ってあったら簡単に渡すこともできる。そのつど Work フォルダを漁って提出するよりはずっと楽だ。

f:id:eiki_okuma:20180411122919p:plain

 Output フォルダの中身はその名の通り完成品=ビルドだ。これは魔法の女子高生の output フォルダの中身だが、プラットフォームによってフォルダ分けされ、その中で更にバージョン毎に分かれている*1。なぜか mp3 が入ってたり iOS フォルダが3つもあるのは何でかって? うるせえ

 最後、Sound フォルダはこれまたその名のとおり音ファイルが入っている。ぶっちゃけ、 Work フォルダの中に入れててもいいのだが、使用頻度が高いのでルートフォルダ直下に来てしまった。この中には効果音に使えそうな素材や、BGMやら、色々ごっちゃになっている。

 

 以上。こういうのを見せ合ったりすると結構面白いので、飲み会とか合宿で話題の種になったりするヨ。Assets フォルダの中身は次回。

 

 

*1:分かれてないこともある。めんどくさいし。

C# で Enum から Dictionary を作る方法。

例えば string → Enum の逆引きハッシュテーブルを使いたい時などに使える奴。

Linq 使わない ver
static public Dictionary< string, EnumType > CreateEnumDictionary<EnumType>()
{
	Dictionary< string, EnumType > table = new Dictionary<string,EnumType>();
	foreach( var value in System.Enum.GetValues(typeof(EnumType)) ) table.Add( value.ToString(), (EnumType)value );
	return table;
}
Linq 使う ver
static public Dictionary<string, EnumType> CreateEnumDictionary<EnumType>()
{
	return System.Enum.GetValues( typeof(EnumType) ).Cast<EnumType>().ToDictionary( t => t.ToString(), t => t );
}
使い方
Dictionary<string, CharacterID> charaid_table = CreateEnumDictionary<CharacterID>();

for( int i=0; i<100; i++ )
{
	string new_chara_name = LoadNextCharacterNameFromFile(); 					// csv 等からキャラ名を読み込む
	UnityEngine.Assertions.Assert.IsFalse( charaid_table.ContainsKey( new_chara_name )	 );	// Debug 版では ASSERTを挟んだほうが安心
	CharacterID new_chara = charaid_table[new_chara_name];						// 効率のよい逆引き
	AddChara( new_chara );
}

実際 csv からデータを引っ張るときは string-Enum テーブルが複数必要になったりするので、関数を汎用化して一行で書けるようにしておくと可読性が良くなる。

「ランクマッチ」に蔓延る4つの勘違いと最適解の考察

 f:id:eiki_okuma:20180303222127j:plain

 ランクマ。いまやどんな対戦ゲームにも実装されている、インターネットを介した対戦モードの一つである。その呼び名はゲームによってランクマッチ、ランキングバトル、レーティングバトル、ラダー、段位戦など多岐に渡るが、要は対戦の結果によって対戦相手とポイントを取り合い、モノによってはポイントに応じて段位階級が与えられるというゲームモードのことだ。総称が無い以上仕方ないので、この記事では一番メジャーな呼び名であるランクマッチを便宜上採用する。

 ランクマッチはどんな対戦ゲームにも当たり前のように実装される一方で、ゲーム開発者がこのシステムについて完全に理解しているとは言い難い。ランクマッチはヘビーユーザのために用意されたシステムで、その真価を理解するには同じゲームを数ヶ月間、何も知らない初心者から最上級者になるまで遊び続けなければならないからだ。日常的にゲームを遊ぶ開発者すら割合としては少ない昨今、一つのゲームをここまでやり込み、そのシステムを肌で理解している開発者はごく僅かに過ぎない。

 断言しよう。殆どのランクマッチはクソである。ランクマッチを実装している開発者がランクマッチのことを理解していないからだ。

 一方で、ようやくランクマッチにも主流と呼ばれる一つの解がいくつかのゲームで見られるようになってきた。この記事ではランクマッチを理解していない開発者がランクマッチを実装したときに起こりうる四つの勘違いと、生まれつつある最適解の一端を考察していく。

続きを読む

Coincheck 事件の概況と今後の展望

 f:id:eiki_okuma:20180127141657j:plain

 2018年1月26日、この記事を書いている時点で昨日だが、国内最大手クラスの取引所 Coincheck で史上最大規模のハッキング被害が発生した。

 現在もまだ調査中・検討中の事項が多く、今後の顛末がどうなるかは定かではないが、Twitter を見ていても情報が錯綜していたずらに仮想通貨界隈の不安が膨らむばかりなので、現時点での情報をここに纏めておく。また、今回の件に対する各所の対応は技術的にとても興味深いものがあり、一技術者としても情報を整理することに価値を感じている。

 なお、仮想通貨の基礎的な知識は過去記事を参照されたし。

続きを読む

やさしいビットコイン入門 - 暗号通貨の仕組みと展望

 f:id:eiki_okuma:20171204183553j:plain

 ットコインが盛り上がっている。

 さすがに、そろそろ一度も名前を聞いたことが無いという人は居ないだろう。ニュースになったり、億万長者が出たり、詐欺が起きたり、池上彰に解説されたり。国内大手である取引所の bitFlyer の CM も、ゴールデンタイムでよく見るようになってきた。

 しかし、多くの人たちにとって、ビットコインに対する認識は同じだろう。得体の知れないもの一体ビットコインとはなんだ? と。

 ビットコイン決済のようなものは最近増えてきたが、まだまだ多くの暗号通貨は使い道を持たないのが普通であり、その価値は直感的ではない。通貨といえば、古くは米や穀物、金貨に銀貨、宝石など、そのものの価値が担保されていることが一般的であり、国家というとてつもなく大きな規模の保証人がいて初めて硬貨や紙幣のようなものが存在しうるくらいのものだ*1。にもかかわらず、未だ取引においてはアフリカにおけるクレジットカード並の利便性しかないビットコインが、登り龍のように価格を上げ、やがて既存の通貨を超えるとまで言われている。これは一体どういうことだろうか。

 ビットコインの価値の源泉。それは、とあるシンプルかつ革命的なシステムによって成り立っている。或いは、ビットコインだけでなく、今後のデジタル社会そのものの在り方を変えてしまう力すら持っているかもしれない。今回はそのちょっとだけ技術的な話を織り交ぜながら、ビットコイン・暗号通貨が一体どういうものなのか、どうやって作られているものなのか、そしてその展望はどうなるのか、今感じていることを述べていく。

ちなみに、最近にわかに流行っている「仮想通貨は儲かる!」系の記事ではない。あしからず。

*1:そして、多くの国でそれは幾度も崩壊している。

続きを読む

アクションゲームの作り方

f:id:eiki_okuma:20171105161250p:plain

(C) Nintendo

 古今東西衰えない人気! ゲームエンジンによって更にお手軽実装!

  • 調理時間 3ヶ月~2年
  • お手軽度 ★★★★☆
  • 物理挙動 ★★★☆☆
  • ネットワーク 不要

材料

キャラクター
オブジェクト
自機含め20~
必要なだけ
地形(背景) ステージ数分
エフェクト 10~必要なだけ
UI メニュー画面・ゲーム画面
効果音/ジングル 30~必要なだけ
BGM ステージ数分+メニュー+EDなど

作り方概要

  1. 平坦なステージで自機のキャラクター挙動を作ります。
  2. 平坦でないステージでキャラクター挙動を更に作りこみます。
  3. キャラクターから出る弾や、攻撃に応じてエフェクトを入れます。
  4. 自機のキャラクター挙動からのキャラクター挙動を分離して作ります。
     - この際、挙動部分は共通させ、操作部分のみ変えるのがコツです。
  5. 地形のテストを始めます。ステージ1を作り、必要な敵(1~5種類)と、ボスまで作りましょう。
  6. 別に作っておいた「UI・効果音」を混ぜます。
  7. シーケンスBGMを入れ、実際のゲームと同等にします。雰囲気を確かめましょう。
  8. メニュー画面を作ります。ゲームオーバーまでの流れを作り、本番と同様のシーケンスを作り上げます。キャラクター成長要素を入れるならこの段階です。
  9. あとは量産です。ステージを増やしながら、新しい敵を作りまくりましょう。
  10. 一通りできあがったら、デバッグをしましょう。
  11. 完成です。

 f:id:eiki_okuma:20171105162354j:plain

 

続きを読む

ゲームプランナーの仕事とは。 - そして、どこから来て、どこへ行くのか?

 f:id:eiki_okuma:20171006171921j:plain

 ゲーム会社の開発職には大きく分けて四つの職種がある。プログラマーデザイナーサウンド、そしてプランナー*1。しかし、プランナーというのはかなり大雑把なもので、実際の作業としては前から三つの職種が担う作業以外の全てをカバーすることとなる。

 ゲームプランナーが具体的に何をする職業なのか。外から見ているととても分かりにくい割に、企業の募集には平気でプランナー枠があったりするので、これからゲーム業界を目指してみる人、転職しようと思っている人、あるいはゲーム業界に勤めているけど隣の席のプランナーが正直何をやってるかわからない人のために説明したいと思う。

 なお、ぼくはコンシューマ業界の人間だったので、ソーシャルゲーム業界の会社とは多少勝手が違うかもしれないが、適宜補足してほしい。

 

*1:実際は他にもディレクターとかプロデューサーとかコーディネーターとかいるのだが。

続きを読む