読者です 読者をやめる 読者になる 読者になる

maimai_jp's blog

twitterでは書ききれないことなどをこちらに。

FFXIで学ぶpseudo-instanced drawing in Unity

i-saintさんの例のいっぱいポリゴン描いちゃう手法の解説がありまして。


pseudo-instanced drawing in Unity - primitive: blog

これでもまだ用語が多くて脳内では宇宙ネコが束になって転がってたので、FFXIの合成で例えてみました。

 

* * *

 

現実では、大量の絹糸を作るには紡績機を用いるのが一般的です。
ヴァナ・ディールにも一応スピニング機能*1は備わっているのですが(http://wiki.ffo.jp/html/7706.html)、残念ながらこれはだいじなものがないと組み込むことができません。
ヴァナ・ディールの合成では雷クリスタルを選択し、選択アイテムに基いてクロウラーの繭×1に分解処理を行うことになっています。
一方、スピニングは3ついっぺんに合成処理を行います。なので、合成キューに入っているリクエスト全てが処理される前か後にしか描くことができず、別レシピを使って合成、みたいなよくある要求を満たせません。
さらに、選択作業によりチャットも使いにくくなるため、他の行動と並行した処理を行うのも難しくなります。
おまけに現状だいじなものを入手していないと使えません。
よって、普通の合成を行いつつ大量の絹糸を入手したい場合、他の手を考える必要があります。
Macro lastsynthはそういう要求のもとに作られました。

 

多数の絹糸を合成したい場合、一番ストレートな方法は合成したい絹糸の数だけ雷クリスタルを使用する、というものですが、まあ遅くて現実的ではありません。
クリスタルの使用でウィンドウを開くだけで時間の圧迫になります。
他に使えそうな手として、2014年6月に実装された/lastsynthというテキストコマンドがあります。
これは絹糸を合成した履歴を再度行う、というもので、つまり雷クリスタルを使ってウィンドウを出していた処理なしで実現できるコマンドになります。
アイテム選択ウィンドウなしでクリスタルを使う合成処理をやるにはたぶんこのテキストコマンドを使うしかないのですが、単純に合成したい絹糸の数だけ/lastsynthと打ち込む、というも遅くてやや厳しいです。
テキストを打ち込むにあたってキーボードの入力が行われるため、1本の絹糸作成がコントローラ操作でのウィンドウ選択よりずっと重くのしかかります。
数百くらいなら個別/lastsynthでもなんとかなるかもしれませんが、それ以上になるともう一歩踏み込んだ方法が必要になります。

より大量の合成を実現するため、Macro lastsynthでは一行マクロを用いています。
これはマクロ一行の中に複数の処理を格納し、/waitインターバルで再合成までの時間を調整することで1回のマクロで複数の合成をする、というものです。
マクロには1つにつき6行までしか格納できないため、6/必要なテキストコマンド数が1回のマクロで作成できる限界になります。
例えば絹糸の場合、lastsynthとwaitが1行に収まるため6本分が1つのマクロに収まる数になります。
6本、半ダースの雷クリスタルと1ダースのクロウラーの繭がぎっしり重なって格納されているイメージです。
袋に入った合成後の絹糸だけがそれぞれの行で異なります。

 

(以下、本来は描画ポリゴンに貼るテクスチャのマテリアルとその対応IDの設定方法、読み込むためのテクスチャ生成といった話になりますが省略。それぞれ銘入れとかオーグメントとかを例にすれば例えられないこともない……)

*1:だいじなものの1つ。雷クリスタルとクロウラーの繭×2でも絹糸を作れるが、スピニングを用いるとクロウラーの繭×6を一気に絹糸×3にすることができる。ただし別途スピンドルを消耗品として入れる必要あり。

propとEditor拡張

Unity

先週末からずーーーーーーーーーっと、とある挙動に悩まされてまして。
それが解決したので備忘録として残しておきます。

Editor拡張でパラメータを表示させる際、以下のようなget/setを設定したpropも普通に使える……と思いきや、実は若干問題が発生します。

private int _hoge;
[SerializeField]
public int hoge
{
    get { return _hoge; }
    set { _hoge = value;}
}

自分の場合に発生したのは、自作enumを使おうとした場合のこと。
なぜかrunした際や再起動した際に、「値が必ず0に設定されてしまう」という現象でした。

//MyClass
public enum MyEnum
{
    val1= 1,
    val2= 2,
    val3= 3
}

private MyEnum _hoge;
[SerializeField]
public MyEnum hoge
{
    get { return _hoge; }
    set { _hoge = value;}
}
//MyClass Editor
public override void OnInspectorGUI()
{
    MyClass mc = target as MyClass;
    MyClass.MyEnum m = (MyClass.MyEnum)EditorGUILayout.EnumPopup("MyEnum", mc.hoge);
    if(mc.hoge != m){
        mc.hoge= m;
    }
}

⇒runした際にhogeの値が0になる
⇒インスペクタ上の"MyEnum"が空欄になる(0に該当するMyEnum値がないので)

解決方法はいたって簡単、get/setの使用をやめること。
Editor拡張で使用する値はpublicなプロパティのみ使用する。

たぶんもっといい解決方法はあるんでしょうけど、まあEditor拡張というappendixな機能ですし簡単に解決すべきかと。

(考えてみれば、publicなプロパティを表示するのがInspectorなので、そもそもprivateな値は表示させるような仕様にはなってないという説) 

えいごのおべんきょう:Oculusのフォーラムでのよくある問題と解決法について。

@izmさんが紹介されていたoculusフォーラムの記事が、けっこう読みやすい平易な英文だったので対訳形式で和訳してみた。

 

https://forums.oculus.com/viewtopic.php?f=34&t=16768

 

If you recently received your DK2 and are having problems, please read below.

最近DK2を受け取って問題が発生してる方は、下記をお読みください。

Before playing any DK2 games, you will need to install the Oculus Run-Time. It is available on the download page:
https://developer.oculus.com/?action=dl
DK2のゲームを起動する前に、Oculusランタイムをインストールする必要があります。ランタイムはこちらのダウンロードページにあります。

After installing the Run-Time, please use the Config Util to setup a profile for your DK2. This will let you set your IPD, height, and other options. You can also try the demo scene (inside the Config Util) to make sure the device is working.
ランタイムをインストールした後、Config UtilでDK2のプロファイルを設定してください。こちらでIPD(Interpupillary distance:瞳孔間距離)や身長、その他オプションを設定します。また、(Config Util内の機能で)デモシーンを試すことでデバイスが動作しているかどうかの確認も行えます。
In most cases, choosing "Direct Mode" for the "Oculus Display Mode" will be the easiest setting. I believe it selects this by default, but you can always change this from the Oculus icon in task manager (in the lower-right corner on Windows, right-click and choose "Oculus Display Mode"). In "Direct Mode" Windows will not detect the DK2 as a monitor, but games will still be able to work. The light on the headset will stay solid orange, and the screen black, until you play a DK2 compatible game. Once the game loads the light on the DK2 will become solid blue.
多くの場合、「OculusDisplayMode」は「DirectMode」を選択した方が設定は簡単です。こちらの選択がデフォルトだと思われますが、タスクマネージャにあるOculusアイコンからいつでも変更ができます。(Windowsの場合は右下にあり、右クリックで「OculusDisplayMode」を選択してください)

「DirectMode」では、Windows側でDK2をモニターとして認識させずにゲームを動作させることができます。DK2対応のゲームが起動されるまで、(DK2の)ヘッドセットのライトはオレンジのままで画面が表示されません。ゲームがロードされると、DK2のライトは青になります。

If, for whatever reason, "Direct Mode" is not working for the game you are playing, then you can try "Extended Mode". In "Extended Mode" you will need to set the Windows display to extended desktop (and NOT mirror/clone/duplicate). 
もし何らかの理由で「DirectMode」が動作しない場合、「ExtendedMode」を試すこともできます。「ExtendedMode」ではWindowsのディスプレイを拡張デスクトップとして設定する必要があります。(ミラー/クローン/複製は不可)

You also *MUST* rotate the screen orientation for the DK2 screen. Otherwise your screen will be flipped on it's side.You can change this in the Windows display settings, or in the Nvidia/AMD control panel. In Windows you can right-click the desktop, choose "Screen resolution" and then change the "orientation" options from "landscape" to "portrait". With Nvidia, it's under "Display" -> "Rotate Display". 
また、DK2スクリーンに適応させるためにスクリーンを必ず回転させなければいけません。それを行わない場合、横方向へとスクリーンがフリップしてしまいます。こちらはWindowsのディスプレイセッティングで変更することができます。あるいは、Nvidia/AMDのコントロールパネルでの変更になります。

Windowsの場合はデスクトップで右クリックを行い、画面の解像度(英:Screen resolution)を選択して「画面の向き」を「横(landscape)」から「縦(protrait)」に変更してください。Nvidiaの場合は「ディスプレイ(Display)」から「ディスプレイの回転(Rotate Display)」になります。
This may also be a good chance to make sure the DK2 is set to 1920x1080 resolution at 75Hz refresh rate.
この際、DK2の解像度が1920×1080、リフレッシュレートが75Hzであることを確かめるいい機会かもしれません。

Keep in mind that the DK2 will *ONLY* work with games and apps that are specifically coded to support the Rift. Just trying to play any old game with the Rift WILL NOT work. You can find a list of DK2 compatible demos on Oculus Share
https://share.oculus.com/category/dk2
覚えておいていただきたいこととして、DK2はRift対応として明示的にコーディングされたゲームやアプリでのみ動作します。既存のゲームを試していただいても動作しないでしょう。DK2対応のデモはOculusShareで探すことができます。
If you run a non-Rift game, or regular 2D application (including the Windows desktop, web browsers, etc.) then the image will look oddly overlapping or cross-eyed. This is because the Rift uses a single display panel shared between both eyes. So each eye is only seeing one side of the same panel. So if you look at normal 2D content, you will only see half in each eye, which is obviously not comfortable. 
Rift非対応のゲームや一般の2Dアプリ(デスクトップ、ブラウザ等)を起動した場合、画像は変に重なったり斜視になったりするでしょう。こちらはRiftが単一のディスプレイパネルを視点間に共用しているためです。

それぞれの眼は同じパネルの片一方のみを見ており、もし(DK2対応でない)標準的な2Dコンテンツを見た場合、それぞれの眼で半分ずつみていることになるため、明らかに快適な動作にはなりません。

If you are experiencing choppy motion in games, also called judder, there may be different solution. The first thing to check is that your computer is fast enough to maintain at least 75fps while playing the game. If you have an older computer, the performance can be an issue. Having Aero (desktop composition) "off" can cause slow fps. Make sure Aero is "on". If you are running multiple monitors, this can also be a source of issues. Making the DK2 the primary display can help. Or you can try setting your monitor to 75Hz refresh (usually this will need to be at a lower resolution like 1280x1024). If you are playing Unity content, make sure it's running in DirectX 11 mode. You can do this by creating a shortcut and adding this to the end of the target command (after a space):

CODE: SELECT ALL
-force-d3d11

もしゲームの動作が途切れ途切れになってしまう場合(ジャダー(judder)とも呼ばれます)、別の解決方法がある場合があります。まず最初にゲームが75fpsを維持するのに十分なPCかどうか確認してください。古いPCの場合、パフォーマンスが原因となります。

Aero(デスクトップ描画システム:Desktop Window Manager - Wikipedia)をオフにしている場合にfpsが落ちる場合があります。Aeroがオンになっているか確認してください。

マルチモニターを走らせている場合、こちらも原因となる可能性があります。DK2をプライマリディスプレイ(priary display)にすることで解消されるかもしれません。あるいは、モニタの設定を75Hzリフレッシュに設定できる場合があります。(一般に1280×1024以下の解像度の場合に必要になるでしょう)

もしUnityのコンテンツを再生している場合、DirectX11モードになっているか確認してください。こちらはショートカットを作成して、コマンドに(スペースのあとに)以下を追加することで対応できます。

※コマンド上記

If your Rift is not being detected at all by the Config Util, then games will not work. In this case, you may want to double-check all the cables and ports. For example, switch the USB port for the Rift and camera, and also the video port on the GPU. Plugging into a powered USB hub can also help. USB 2.0 may have better support. You can also use new (3rd party) HDMI and USB cables. This cable may work as a replacement for the sync cable:
http://www.monoprice.com/Product?c_id=102&cp_id=10218&cs_id=1021807&p_id=4637&seq=1&format=2
もしRiftがConfigUtilで全く検出されない場合、ゲームでは動作しないでしょう。

この場合、ケーブルやポートを再点検したほうがいいかもしれません。例えば、Riftや(位置検出)カメラのUSBポートを差し替えたり、GPUのビデオポートを差し替えたり、など。

PoweredUSBハブに接続することも有効な場合があります。USB2.0の方がよい場合もあります。新しい((付属品ではなく)他社製の)HDMIケーブルやUSBケーブルを使うこともできます。以下のケーブルはシンクケーブル(sync cable)と差し替えて動作させることができる場合があります。

※URL上記

If you are having camera detection or positional tracking issues, then try plugging the sync cable directly from the camera to the headset. You can find the port on the top of the DK2 under the rubber cover. You can also try purchasing the replacement cable above.
もしカメラ認識や位置トラッキングで問題がある場合、シンクケーブルを直接カメラから(Rift DK2の)ヘッドセットに差し込んでみてください。ポートはDK2の上部にあるラバーカバーの下にあります。前述の差し替え用ケーブルを試す方法もあります。
In the event you're experiencing crashing in games, or they fail to open, it could be a few things. First, make sure your GPU (graphics card) can support DirectX 11. While older cards may work with some games, it can be a source of issues. Make sure you have the Visual C++ Redistributables installed. You will want both 2010 and 2012 versions in both x86 and x64 flavors. 
http://www.microsoft.com/en-us/download/details.aspx?id=5555
http://www.microsoft.com/en-us/download/details.aspx?id=14632
http://www.microsoft.com/en-us/download/details.aspx?id=30679
ゲーム中にクラッシュした場合やゲームが開かない場合、いくつかの方法があります。

まず、GPU(グラフィックボード)がDirectX11をサポートしているか確認してください。古いグラボの場合、いくつかのゲームで動作していても原因となる場合があります。

VisualC++再配布版がインストールされているか確認してください。x86x64それぞれについて、2010と2012のバージョンが必要となるかもしれません。
http://www.microsoft.com/ja-JP/download/details.aspx?id=5555
http://www.microsoft.com/ja-JP/download/details.aspx?id=14632
http://www.microsoft.com/ja-JP/download/details.aspx?id=30679

 

If you have a laptop, please understand that switchable graphics (i.e. Nvidia Optimus) are not well supported. In this case you will have an integrated Intel GPU working along side a more powerful Nvidia or AMD card. Unfortunately, this can be problematic and not recommended. In fact, laptop computers are not recommended at all due to lack of power and various compatibility issues. For the best experience, please use a desktop machine with a dedicated Nvidia or AMD GPU. It's hard to give an exact minimum supported spec, but please try to get a powerful, modern graphics card.
ラップトップ(ノートPC)の場合、グラフィック最適化(=Nvidia Optimus)には現状で完全には対応できていないことをご理解ください。この場合、IntelGPUが動作する横でより強力なNvidiaAMDグラボが設置されていたとしても、残念ながら問題がありお勧めしません。

実際、ラップトップはパワー不足や様々な互換性の問題から非推奨です。最良の体験のためには、専用のNvidiaAMDGPUを差したデスクトップPCを使用してください。最小のサポートスペックでは対応策の提供が難しいため、強力で最新のグラフィックボードの入手をご検討ください。

Hopefully this covers the main issues. If you have any common questions, please feel free to reply here. If you have a really strange or unique issue, then creating a new thread in the "Reporting Issues" section may be the better option. Thanks.

この記事が主な問題であることを願います。もし何か疑問などあれば、お気軽にこちらへリプライしてください。もし変な/独特な問題があった場合は、別スレッドとして「Reporting Issues(問題報告)」セクションとして立てていただければ。Thanks。

// cybereality

今更聞けないUnityの使い方 100

※べつに100既に用意してあるものではなく、100ぐらい枠をとっておこうというメモです。

※たまってきたら、そのうちキーワード検索とかいろいろ入れていきます

  1. PNGファイルのテクスチャが透明にならない
  2. スプライトの作り方
  3. スプライトのPolygon Collider 2Dがひどいのでなんとかしたい
  4. DrawCallを調べたい

 

1. PNGファイルのテクスチャが透明にならない

⇒ Project内に置かれた.pngファイルを選択して、Inspector内のTexture TypeをAdvancedに変更、Alpha Is Transparencyをチェックして下部のApplyを押す

 

2. スプライトの作り方

⇒ Project内に置かれた画像ファイルを選択して、Inspector内のTexture TypeをSpriteに変更、下部のApplyを押す

⇒ Project内のSpriteに変更したファイルをHierarchy内に投下

 

3. スプライトのPolygon Collider 2Dがひどいのでなんとかしたい

⇒ SceneビューでShiftを押しながらColliderの形状を変更できる

⇒ 頂点を減らす場合はCtrlを押しながら赤くなった頂点をクリック

⇒ 頂点を増やす場合はShiftを押しながら辺の真ん中辺りにカーソルを合わせ、出現した緑の点をドラッグして任意の場所に移動

Polygon Collider 2D - けいごのなんとか

 

4. DrawCallを調べたい

Game Viewの右上にあるStatsを押す

 

5. Unity用語の基礎知識

・シーン

⇒カメラやオブジェクトなどのセットが保存される単位

・トランスフォーム

⇒位置・回転・拡大率といった3Dオブジェクトの基本機能、親子関係なども管理する

・ゲームオブジェクト

⇒位置や回転など基本的な機能を持つTransformを持ったクラス、シーンに配置する基本単位となるもの

・インスペクタ

⇒主にインスペクタウィンドウを指し、シーン上にあるオブジェクトの詳細を見ることができる

・プリミティブ(オブジェクト)

⇒立方体や球など、簡単に出現させることが可能な基本図形

コンポーネント

⇒ゲームオブジェクトに付加される機能、詳細はスクリプトで記述されている

・マテリアル

⇒テクスチャとシェーダを設定することで最終的な表示方法を設定する、オブジェクトのインスペクタに設定することげ表示が反映される

・プレファブ

コンポーネントやインスペクタの設定を一定の値でセーブしておくような機能、モブなど同じものを大量に配置する場合に使うと捗る

 

6.Spriteなどで画面表示上のサイズを調整したものを基準(1.0倍)としたい

⇒CreateEmptyを行い、その子オブジェクトとして配置、操作をEmpty側で行う

UnityWebPlayerをはりつけてみる

某所から発注があったので作ってみた。

https://www.dropbox.com/s/fpz4ypwdojd3h0k/Kamibukuro.zip

THGS楽しみにしています^^

VisualStudio用 名状しがたいコンパイラアドインのようなもの

そういえば、と思いだして。

https://twitter.com/maimai_jp/status/228167843835936769

以前、TL上に流れてきたネタに反応して作りっぱなしにしていたものがあったので、ニャル子さん2期開始を祝して配布してみます。

https://www.dropbox.com/s/t8ox91iocfy8u28/Nyarlcompiler.zip

マイドキュメントフォルダにある(と思われる)VisualStudioのプロジェクト置き場フォルダに"Addins"というのがあるので、そちらに.dllと.addinを入れて起動してください。

ついでに、突貫で配布インストーラ版もつくってみました。

https://www.dropbox.com/s/3580faomn1v6coz/NyarlInstaller.zip

f:id:maimai_jp:20130407030101p:plain

f:id:maimai_jp:20130407030118p:plain

f:id:maimai_jp:20130407035933p:plain

挙動確認は以下でしてあります。

Windows 7 64bit

.NET framework 3.5 SP1

 

addin配布まわり参考資料:http://www.atmarkit.co.jp/fdotnet/special/vsaddinintro03/vsaddinintro03_01.html

 

ゲーム開発を4年ぐらいやってきた中で読んだもののうち、面白かった技術書

http://d.hatena.ne.jp/mizchi/20130403/1364918070

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

@mizchiの雑記帳

カタ氏(@hotchemi)が意識高い記事書いてたので、自分もまとめてみる。
文系学部生がSIerに入社してから読んだ本メモ - ギークに憧れて http://hotchemi.hateblo.jp/entry/2013/04/01/000844

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

……という記事を見かけて、面白そうなので自分ものっかってみました。

時々tweetでオススメしたり何だりはしてましたが、どっかしらにまとめたいとは思ってましたので。

基本的なスタンスはプランナー(ゲームデザイナー)&プログラマ向け。

どうしても被るものは被りますんで、その辺りはマストなんだなー、と思っていただければよろしいかと。

 

スクリプト基礎知識

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

鉄板。鉄板中の鉄板。プランナーは特に。

プログラマであればコーディングルールとか最初に叩きこまれるんだろうと思います。でも、プランナーはもちろんスクリプター(=特定のゲームエンジン上で企画をスクリプトに落とし込む作業を専門で行う人)ですら、コーディングに配慮がない人が大多数を占めるんですよね。

原価を回収するためにゲーム開発がMMO/ソーシャル系が前提となっていくことは、既に起きつつある流れでしょう。そんな中で、ローンチしたら完了のゲームとは異なり、MMO/ソーシャル系はコードを延々と保守し続けることになっていきます。

そうなると、コードの制作者と保守の担当者がイコールにならないことも確率的に多くなるわけです。また、自分で書いたコードを数年後の忘れた頃に自分で保守することもあり得るでしょう。そのことを頭に入れて、「いつ誰が読んでもいい」=「リーダブル」なコードを書いてほしい……。既存のクソコードを保守し拡張し、時にはリファクタかける者からの切なる願いです。

 

オブジェクト指向でなぜつくるのか 第2版  知っておきたいOOP、設計、関数型言語の基礎知識

オブジェクト指向でなぜつくるのか 第2版 知っておきたいOOP、設計、関数型言語の基礎知識

こちらは主にプログラマ向けです。とはいえ、プランナーもLuaとかUnityのC#とか、当然のように使うことになりつつありますので、読んでおいて損はないでしょう。

最近はオブジェクト指向ではない言語の方が少ないので、もしかして歴史の教科書みたいな読み方をした方が面白いでしょうか。「継承」「多態性ポリモーフィズム)」「カプセル化」……本来、どんな思想でJavaに代表されるOOPオブジェクト指向プログラミング)へ則した仕様が策定されてきたか、それを知るのにいい本だと思います。

 

 

ゲームフロー概観

「レベルアップ」のゲームデザイン ―実戦で使えるゲーム作りのテクニック

「レベルアップ」のゲームデザイン ―実戦で使えるゲーム作りのテクニック

プランナー寄りのゲームデザイン本です。目的設定やUI策定からゲーム体験のフローまで、企画が制作当初から考慮すべき話題が数多く含まれています。

もっとも、ゲーム制作なんて答えのないものは千差万別ですから、若干著者の思想が入っている部分がどうしても出てしまっています。(QTEとか。)この本に書かれていることを全て守ればいいゲームになるかといえばそうではないでしょうし、逆にこの枠組みから外れたら面白くなくなるかといえばそれもまた違うでしょう。なので、その辺りは自分の好みを尊重しながら読んでいただければと思います。

 

オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)

オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)

こちらは若干レイヤーが下がって、プログラマとプランナーの中間ぐらいでしょうか。

MMOは本来、(マシンリソースなどの)コストと(制作上の)自由度との天秤で成り立ってます。ある行動を実装したい!と企画が言い出した時、それを実現するのがプログラマの本分です。しかし、それがそのままでは実現不可能な場合がままあります。

時には、その実現に必要なデータ通信量が膨大だったり、通信や描画の遅延がクオリティの許容範囲を超えたり、あるいはローンチから数年経過したMMOゆえにデータ構造を大改造しないと実現できないものは全検証が必要でコスト的に無理……なんてこともあるでしょう。

そんな時、「何ならできるか」を知っていることは、プログラマにとってもプランナーにとっても助けになるはずです。ある程度の妥協をし、それ以外の部分で補うことで、没になりかけた企画が実現できるかもしれませんから。

また、こちらの前半部分で書かれているネットワークおよびゲーム技術の歴史は、是非コンピュータ工学系の学生に読んでいただきたい内容です。基本情報技術者試験のために文字列を丸暗記するよりも、よっぽど健全で有用ですので。

 

ゲームを動かす技術と発想

ゲームを動かす技術と発想

プログラマ向け。自分は名目上企画ではあるんですが、趣味で読んでみました。が、読んだ後だとブラックボックスなハードウェア部分についてぼんやりとながら「ゲームがどう動くか」をイメージできるのでオススメです。

ハードウェアの構成によって出せるスペックがどう異なるかといった話題があったり、msec(1/1000秒)以下の戦いが時系列で可視化してあったりと、生々しいデータがわかりやすく解説してある本です。

未だにリソース戦争が起こるようなモバイル開発の現場では特に活きる知識かもしれません。

 

 

ゲーム技術概観

Unity入門 ?高機能ゲームエンジンによるマルチプラットフォーム開発?

Unity入門 ?高機能ゲームエンジンによるマルチプラットフォーム開発?

既存のUnity本の中で随一のわかりやすさ。ちなみにこちらの著者は現在Unityの中の人になっています。

動くものを最小限の操作で実装し、フォームに一覧されたパラメータをいじることで様々な現象を発生させる。Unityで実現できるゲーム開発体験に即した流れで展開されます。

この本で知ることは、Unityで出来ることではあります。ですが、このUnityで出来ることは「現在のゲーム開発で知っておくべきこと」でもあります。

既存の開発現場では、ある技術が実装されるかどうかはプログラマ依存なのが現状です。一方でUnityは、既知のゲーム開発で必要だと思われる技術の大半が既に実装されており、最新のUnity4では既存に見られない技術の実装も導入されています。(ちなみにこちらの本が出版された頃はUnity3.3~3.4)この辺りはゲームエンジンの強みでしょうか。

何が実現できるかは、開発者自身の持つイメージに依存します。プランナーもプログラマも知らなければ、その技術は組み込まれません。逆にそのイメージさえあれば、弘法筆を選らばずとはよく言ったもので、たとえコモドール64だろうがExcelだろうが実現させてしまうのがプログラマです。

そのイメージを広げ、プログラマを死地に向かわせる素晴らしいゲーム体験を提供するためにも、Unityを触れておくことをオススメします。そのHello world!となる一歩はこちらの本で間違いないと思います。

ついでに。本とは関係ないですが、著者本人によるUnity解説動画もありますのでご紹介を。↓

iPhoneゲームを20分間で作る【メダルプッシャー編】

http://www.nicovideo.jp/watch/sm12948504

 

 

デザイン思想

誰のためのデザイン?―認知科学者のデザイン原論 (新曜社認知科学選書)

誰のためのデザイン?―認知科学者のデザイン原論 (新曜社認知科学選書)

現在、3Dのゲームが当然のようになってきていますが、2D時代の特性と比較して失われたことの一つに「全ての情報が画面上に表示できなくなった」というものがあります。

つい最近も流行ったブラウザゲームの脱出ゲームをイメージしてもらえるとわかりやすいでしょうか。アイテム、移動操作、配置物……全ての情報は画面上にあります。しかし、3Dのゲームはカメラ移動により視界が「自由に」変化しますし、情報をスプライトで表示すれば画面上の視界が狭まります。

こんな時、「アフォーダンス」を意識することは1つの武器になると思います。高確率で視界に入るものにアフォーダンスを意識し「水を向ける」ことで、自然とゴールへ迷うことなく向かったり、また必須となるようなアイテムをそこそこの時間で探し出せたりと、ゲーム体験を快適にしてくれるはずです。(静的なものだけではなく、強制的に視覚に入るようカットシーンを入れたり、カメラ自働調整を機能として導入したりするのも含めてデザインでしょうか。)

こちらの本は、認知心理学者である著者が様々なもののデザインや、そのデザインの評価について考察したものになっています。

レベルデザイナーの方はもちろん、マップや小物などがどことなく使いにくいなー……なんて思ったバトル・イベント担当の方が、どこが問題なのか評価・分析するツールとして、こちらの本で得られる知識が有用だと思います。