Hatena::ブログ(Diary)

アーユルベーダはインドのエステみたいなもん このページをアンテナに追加 RSSフィード Twitter

2013-06-23

ゲーム開発に内在する癌

ゲーム開発以外のプログラム開発では、商用ライブラリオープンソースライブラリを利用することが多い一方で、ゲーム開発チームの多くはツールを内製し、一般的な機能をスクラッチする。近年のゲーム業界に、Unityの出現というパラダイムシフトがあったことは言うまでもないが、そのパラダイムシフトモバイルゲーム開発など、ごく一部であると認識している。そして、ライブラリが存在するとしても、社内にとどまっているのが現状である。

しかし、コスト意識を持って開発に取り組んでいる方なら想像がつくと思われるが、ツールの内製や機能のスクラッチがもたらす工数の増加は馬鹿にならず、これがゲーム業界の慢性的な超過業務や、経済的な不振、業界としての発展の停滞につながっている可能性は否定できないのでは、と筆者は考える。

それでは、今後この体質の変化は見込めるのか?筆者の考えではNOで、その理由はおおきくわけて2つある。

ゲームプログラムは、ハードウェアの性能(CPU、メモリ、VRAM)をフルに使い切るようなアプローチをとる。格闘ゲームではフレーム落ちは許されず、60フレームを死守という言い方がされる。そうした中でコードサイズさえも制限され、例えば(C++での開発という前提で)STLテンプレートの機能がプロジェクトの方針という形でカットされる。

こういった背景がある中で、例えば、一般的な2Dスプライトツールがあったとしても、プロジェクトで必要の無い機能が乗っていて、それによって出力データが大きくなってしまうとなれば、自然と選択肢は、これまで脈々とチーム内で受け継がれてきた内製ツールをメンテナンスする流れに進む。また、汎用ライブラリがあったとしても、頑張ればスクラッチできる範囲であれば、自分でスクラッチした方が、インポートに必要な読み込み時間が省かれるし、最低限の機能にとどめればコードサイズも抑えられる。

といっても、そこまで神経質にならずに、管理が簡便化と設計をスマートにすることを優先して、組み込みライブラリを使用する例は一般的である。スクリプト言語を用いたシーケンス管理やsqliteによるパラメータ管理などである。といっても、プロジェクトによってもシーケンス管理の方法がまちまちであることは、いうまでもなく、方法が統一され、ライブラリ化されたものがあらゆるゲーム開発で採用される、という形が理想のはずである。

ここまでが1つめの理由である。2つめの理由は、ゲームタイトルがエンターテイメント作品であり、“個性”というものがもてはやされるためである。

あらゆるプロジェクトで同じグラフィックライブラリが採用されて、同じような画が出ることを開発陣は危惧している。それによって、ユーザーがこれまで感じていた、ゲームタイトルごとの差異にもとづく新鮮みを感じられなくなるためだ。結果的に彼らは、多くのプロジェクトで作成されるグラフィックシステムやモーションシステムをスクラッチする。

また、こういったコアの部分をライブラリを採用してしまうと、システムをスクラッチするという経験が蓄積されず、技術者が育たないことを開発チームは危惧する。一度技術を失えば取り返しが付かないと考えている。

さらに、ゲームタイトルはエンターテイメント作品であるとともに、高い品質が求められる。ライブラリの都合で読み込み時間が発生することは許されず、そのライブラリスクラッチしたものであれば、自分たちでなんとかできるという安心感が保証されるのだ。

ゲーム開発には、ライブラリの利用がもてはやされない背景があり、これによって工数の増幅や技術発展の停滞を生んでしまっている。今後、高いハードウェア性能をもったプラットフォームが出現したとしても、より高い品質のタイトルが求められることになり、この体質の改善にはつながらない。これまで述べた理由には尤もなものもあるかとは思うが、現状のままで良いはずはなく、何か早急な対策が必要であることは言うまでも無い。現場の開発者が積極的な運動をおこさない限り、永続的に続くものであり、この体質が続く限りゲーム開発に未来はない。

2013-02-27

TeraTermMenuからの自動ログインに失敗

レンタルサーバへのSSH接続のために、TeraTermMenuの設定を行ったが

上手く接続できず。

結果的には、「ttsshをつかう」のチェックをオンにすることで解決。

ChromeからFirefoxに乗り換えました

乗り換えた理由は2つあって、1つ目は自動アップデートへのストレス

ブラウザ本体なり、プラグインなりのアップデートくらい、自分で管理したいなぁと。

2つ目は、Vimperatorが使いたかったから。

最近vim操作にずっぷりなので、ブラウザ操作もそれに合わせたいと思いました。

Chromeにもvimライクな操作を可能にする拡張がありますが、完成度の差は言わずもがな。

2012-12-06

Android NDKを触ってみた覚え書き

ビルド

の2段階が必要。


シェーダ

フラグメントシェーダとは、ピクセルシェーダのこと。


フラグメントシェーダに値を渡す

まず、glGetUniformLocationでLocationと呼ばれるハンドルを取得。

さらに、glUniform1fなどのglUniform系関数に、

Locationと受け渡したい値を指定する。

シェーダ側には、

uniform float param;

といった形で宣言。

2012-11-27

本棚を整理する意義

うちの本棚は、慢性的にあふれていて、日に日に酷くなって言っています。

並んでいる本は技術書が9割方で、捨てる量<<買う量という構図が原因です。


なぜ捨てられないかと言えば、

  • 読みたいところだけ読んで、残りをいつか読もうと思って残している。
  • 単純に買うだけ買って読んでいない。
  • 内容が今後必要になると思って、残しておきたい。

などです。


たとえ、本棚を拡張したところで、空間としての物理的限界は来るわけで、

これによって、インプットが途絶えるというのは、知識欲の危機であると気づきました。

というわけで、必要な箇所だけメモをとったり、必要であればページをキャプチャして、

本自体は処分するという作業を、積極的に進めています。

2012-11-24

Windows8対応PCを見にヨドバシカメラに行ってきました

Windows8アプリを作ってみたいと思いましたが、

それ以前にWindows8タッチパネル対応PCも持っていないので、

かかる費用の確認を含め、ヨドバシカメラに行ってきました。


まず、自分の希望としては、

借りている部屋のスペースも考えて、小さめのラップトップPCで、

さらに、タッチパネル対応のもの、

贅沢を言えばUltrabookで、加速度検知などのセンサーがついたものでした。


本題の、実際に見てきた所感ですが、

Windows8といえば、タッチパネルによる操作をメインに据えたインタフェイスで知られていますが、

タッチパネル対応しているラップトップPCは、

店頭に並んでいるWindows8インストールされているものの半分程度でした。

ちなみに、デスクトップPCも見ましたが、

Windows7の頃からタッチ操作に対応しているタイプが、対応している程度でした。


また、タッチパネル対応のWindows8ラップトップPCの価格帯ですが、

安いものでも10万強といったところでした。


総括:

一般家庭にタッチパネルPCが普及するにはまだまだ時間がかかりそうですね。。。

また、Windows8アプリを作ったところで、

実際にタッチ操作や、その他センサーの機能を利用できるユーザーはごく少ないようです。