2010年7月11日日曜日

面白いゲームについての考察 1



ゲーム開発は設計云々より、想像力と根性と感情移入が大事なのかなと感じました。これはいろいろ意見が分かれそうではありますが。

数ヶ月前にシステムに感情移入するなみたいなことをTwitterに書いたんですが、ゲーム開発は真逆ですね。「問題なく操作できる」ではなく「面白くて手放せない」というものを作らないといけない訳ですし。普通のシステム開発とは違う貴重な体験でした。

「ゲーム開発とは」みたいな書籍をずっと読みあさっていた時期があるのですが、ゲームの面白さは思いつく限りあげると「パズル」「スリル」「感情移入」「コレクション」「ソーシャル」に分類されるのかなと思えて仕方が無いのです。

『「おもしろい」のゲームデザイン』 http://j.mp/96fiJk 
と言う本があるのですが、一番印象に残っているのは「新しいパターンを学習するときに脳が活性化して面白いと感じる」というような内容です。これはまさにパズル的な面白さだと思います。

初めてグアムに行った時、空港についただけで楽しくなりますが、次の年に再びいっても、単なる移動作業みたいな感覚にとらわれます。こういう感覚にとらわれた事がある人は大勢というかほとんどの人がそう感じると思うのです。

いかに複雑なパターンをプレイヤーに提供し続けるかは、ゲーム開発の鉄則だと個人的に思います。さらにこの「新しいパターンで脳活性」の理屈で究極のAI、NPCとは何かということも妄想するのですが、結局それは人間だと思うのですよね。つまりオンライン対戦です。

対戦ゲームは相手がいろいろ学習して、予想できない動きをしてくる訳でして、人間以上に複雑な動きが出来る NPCはちょっと思いつきませんし。

次に「スリル」なのですが、安全欲求とか基本的な感情をいかにゲームで刺激しようか模索してまして、夜中に大学の心理学の教科書を引っ張りだして、内容を確認しながら調整していました。今思うとよくこんな事一人でやってたなと思うのですが。

極端に強い「中ボス」をランダム出現させる機能を実装した事があってこれはプレイヤーを理不尽に倒すためです。語弊があるかもしれませんが、安全な環境でヌクヌク過ごすよりも突然変異種に急に追いつめられるスリルが大事かなと思いました。

あと「感情移入」なのですがこれはミラーニューロンが関係していると思うのです。僕は茂木健一郎さんの『脳と仮想』という本に感銘をうけて一時期読みあさっていたのですが、ある書籍でミラーニューロンの記述がありました。

専門でないのでざっくりと書くのですが「他人がしている行動を自分の脳の中で同じ事をしたようにシュミレートする」ような機能が脳にはあるようです。逆にこの機能があるから「鏡に映った自分が他人ではなく自分と認識できる」ような記述があったように思えます。

諸説あると思うのですが、シナリオに感情移入する本質的な原理は「ミラーニューロンが働きすぎて錯覚を起こしている状態」と個人的には思えるのです。

いかに錯覚を起こさせるかは、まずゲームの世界に引きずり込むような導線が必要だと思うのですよね。これはゲームニクス http://j.mp/duUlDC という本がとても参考になりました。とにかく引きづり込むことをしないと次が始まらないですし。

次にキャラに感情移入させるにはどうするかなのですが、これは2chの萌え板を見た方が早そうです。ただ「ツンデレ」はアメリカの心理学の研究で有効だとデータがあるそうです。ゲイン・ロス効果というらしいです。

魅力的なキャラクタはつまり現実世界で他人に魅力を感じる心理だったりするので、広範囲に及ぶので割愛しますが、もう一つ別角度から考えると「どう記憶に定着させるか」も大事だと思えます。

キャラに感情移入が出来て長期記憶に定着させる事に成功したらたぶん開発者としては成功なのですよね。一番分かりやすい手法は強烈な事件を起こす事ですよね。いろいろな映画でもよくある方法ですし。これ以上書くとネタバレになるのでゲームが発売中は書けませんが。

次に「コレクション」「ソーシャル」は、これから実装しようと考えているので、まだ調査不足で深い知識も無くかけません。分野的には社会心理学が関係しているかとおもって大学で受講したのですが、多岐にわたるので要点をまとめづらいですね。

あれこれ考えていた事を吐き出してスッキリしました。移植作業に戻ります。ほんとに独り言です。

2010年7月8日木曜日

小技 無料版と有料版アプリのプロジェクトを効率的に管理

有料版のAndroidアプリを作った場合、有料アプリとあわせてお試し版も用意すると思います。ただ、Androidマーケットは同じjavaのパッケージでアプリをアップできません。また、EclipseでAndroidアプリを作るときはプロジェクト毎に一つのActivityを用意すると思います。しかも、そのActivityのパッケージ位置にRクラスが自動生成されます。この制約があると、アプリでRクラスを参照しているとimport文がプロジェクト毎にべた書きになってしまいます。ちなみにRクラスはfinalクラスとして生成されるので、継承で他のクラスに引き継ぐ事も出来ません。

細かい話なのでまったく伝わらないような気もするのですが。。

こういった事情をあまり考慮せずに進めると、有料版のソースコード等をまるまる無料版のプロジェクトにコピーして、しばらく二重管理が続くような事になります。

この問題に関して2,3日試行錯誤をしたところ、下記の方法で解決しました。

1. Rクラスをコピーして別のパッケージに移動させる(自動生成されたRクラスは直接使わない)

2. 有料版のソースフォルダをsrcとsrc_gameの二つに分け、srcの方にActivityだけ置く。

3. 無料版は有料版のsrc_gameを参照させる([Project]-> [Properties] -> [Java Build Path] -> [Source]で追加できる)

簡単にいうと、Activity以外は極力プロジェクト間で共有させれば良いという事です。
たぶん、この小技は細かすぎて伝わらなさそうですが、もし有料版アプリを作るときがあればこういう話があったなぁと一つの解決法として捉えてくれればと思います。

小技 Eclipse pluginの入れ過ぎで落ちる現象はインストールし直すべき

Eclipseでプラグインを入れすぎるとメモリが足りなくなり落ちるようになります。いくつかのサイトでeclipse.iniに下記の行を追加すると直ると書いてあったりしますが、マシンスペックの問題かもしれませんが私の環境では完全に直す事は出来ませんでした。


-XX:MaxPermSize=512m


スペックの低いノートPCや32bit版のEclipseだと限界があるでしょうね。

2、3日試行錯誤した結果、必要最低限のプラグインに留めるしか完全に直す事は出来ませんでした。
また、大抵この現象が起きたときはプラグインを削除しようにも入れ過ぎのためどれを削除して良いか分からないことになっていると思います。
使う機会のない大量のプラグインに悩まされるのは時間がもったいないのでEclipseをインストールし直すことをお勧めします。これが一番早いです。

小技 xcode 自動入力される会社名を変更

xcodeで新規にファイルを追加するときにヘッダーに会社名が入ります。(下記のような感じです)

* Copyright 2010 CosmicDragonGameEngine. All rights reserved.


これを変えるには、xcode上部のメニューから
「プロジェクト」->「プロジェクト設定を編集」->「一般」->「組織名」
で、ここの組織名を変えるだけで会社名を変更する事が出来ます。

小技 Eclipse SVN コンフリクト

EclipseのSVNプラグインを使っているとよくおこるのがコンフリクトです。
一度コンフリクトを起こすとどうにもなりません。とくにファイル削除処理をするとよくわからない事になります。そういうときは

Teram -> 「リポジトリから復元」

でデータをsvnと同期させ直してから修正しなおすのが楽だという事に気づきました。(他に方法があるかもしれません。)