安永ノリカズのゲーム制作&Javaサンプル集

#13 設計は清く正しく面白く 〜前編〜

設計その1。PCキャラ作成機能の分析と設計を行っています。

2003年02月24日更新

アイデアを形に

前回のコラムでは、「仮想ユーザープレイ日記」という手法を用いて、 Webアプリケーション版『魔法使いの街』のイメージをつかむ作業を行いました。 どんなゲームになるのか、なんとなく雰囲気は伝わったかと思います。 今回は、そのイメージを具体化する作業として、第1弾リリースに必要な機能を全部洗い出して、 それぞれについて設計・分析を施していくことにします。
んで、この作業、またもや長くなりそうなんで、まずは前編というかたちで、コラムにまとめますね。

ゲーム制作において、設計は非常に重要な位置を占めます。 世の中には、浮かんだアイデアを、そのまま形にしていくのがゲーム開発だと思っている人がいるかもしれません。 でも実際は、考えたことを仕様として採用するまでには、多くの手間と時間がかかります。
アイデアを思いついたら、さまざまな角度から検証や分析を行い、 問題があればそのアイデアを再構築して、矛盾が起きないように、システム全体に適合させていきます。 他のアイデアとの整合性、世界観との合致、作業コスト……あらゆる要素を考慮しつつ、 作業を進めていかなければなりません。

僕の場合、ゲームのアイデアとは思いつくものではなく、根気強く煮詰めるものだと考えています。 アイデアを秩序立てて構築し、システムと呼べるまでに昇華させる。 つまりこれが設計という作業なわけですね。
その辺の事情を考慮に入れながら、今回の作業を進めていきましょう。

 ページトップへ戻る

「実装すべき機能」と「伝えたい思い」

まずは、前回のコラムをもとに、システム的に実装すべき機能をリストアップします。 これは、プログラムを組むことを念頭に、具体的に列挙します。

あと、前回のコラムでは言及してませんが、僕が管理者として行う、

も加えておきましょう。利用状況の把握や、障害対応に必要だと思われます。

次に、上記の機能を使って、どんなことが表現できそうなのか想像しながら、 プレイヤーに感じて欲しいもの、または伝えたい思いをリストアップします。 これは抽象的でかまいません。

どれも、ゲームの根幹にかかわる重要な要素ですね。 たとえ開発当初の段階でも、そのエッセンスは伝えたいところです。
さて、これらの「機能」と「思い」、設計という作業を通して、どのようにすり合わせていけばいいのでしょうか?

 ページトップへ戻る

「清く正しく」か?「正しく面白く」か?

上記にリストアップした「実装すべき機能」は、大きく二つに分類することが出来ます。 それは「清く正しく動かすべき機能」「正しく面白く動かすべき機能」です。 つまり、きちんと動けばOKな機能と、面白さを演出することが求められる機能があるということですね。 ゲームを設計する場合は、それぞれ使い分けが必要です。

たとえば、ユーザー登録ログイン認証は面白くする必要はありません。 的確に機能させることを第一に設計を行う必要があります。 無理にオリジナリティを発揮しようとして、操作する側の混乱を招いては元も子もありません。 むしろ、他のシステムで一般的に採用されているインターフェースや用語、操作体系を取り入れることのほうが重要です。
セキュリティの問題も考慮する必要がありますね。 不正なデータの入力をチェックせずに受け入れて、システム障害を招いたり、 クロスサイトスクリプティングを許してしまったりすることは、絶対に避けねばなりません。

PC作成会話移動の各機能は、 ただ単に動くだけでは仕方ありません。 面白さを演出し、伝えたい思いを表現しなければなりません。
どういうパラメータで魔法使いの成長を表現する? プレイヤーがPCに愛着を持つためには、どんな仕掛けが有効? NPCに生命感をもたらすために、必要な演出とは? 街の活気を表現するには、どのようなデータ構造が最適なのか?
今回一番気合を入れて設計しないといけないのは、ここになりそうですね。 上でリストアップした思いを表現するのは、これら「正しく面白く動かすべき機能」を どう実装するかにかかってます。 ここはひとつ、慎重に検証し、煮詰めていくことにしましょう。

 ページトップへ戻る

キャラメイクはさせない!

ではまず、プレイヤーキャラクター作成(PC作成)機能について、検証してみます。

このPC作成機能は、一般的にはキャラメイクと呼ばれてますね。 ゲームをスタートして、まず最初にプレイヤーが出会う機能として、ゲームの印象を左右する重要な位置を占めていると思います。 新しくゲームを始めるときに感じる、あの胸の高まり期待感を考えると、 その気持ちを裏切らないように、あわよくば、より高めつつ、 スムーズにゲーム世界に入っていってもらわなくてはなりません。 どういう項目を、どういうインタフェースで選ばせるのか? また、 ユーザーの選択が、どうパラメータに影響するのか? そこがカギになりますね。

この機能を考える上で、まず最初にしないといけないのが、 キャラクターに持たせるべきパラメータの項目設定ですよね。そこで、 伝えたい思いとしてリストアップした「子供から大人へと成長する姿」というのが重要になってきます。
この思いを表現するには、RPGによくある「体力」「素早さ」などではなく、 人の内面をあらわすパラメータが求められます。 「思いやり」「社会性」「心の充実度」「野心」「恋愛力」……
別に聖人君子になるだけが、成長だとは思わないので、 説教くさくならないように項目を選別する必要があるとは思いますが、 少なくとも、単純に魔力が強くなるとか、魔法をいっぱい覚えるとかで、 キャラクターの成長を表現することはしません。
さらに、「パラメータを上げる=成長」という図式も採用しません。 子供から大人になることで、失うものだってあると思います。 僕もきっと、気づかないうちに、色々なものを失ってきたことでしょう。 でも、何かを失っても、それ以上のものを得ることで成長した面もあります。 いや、本当は失うだけで、少しも成長しなかったことだって…… 簡単に答えは出せないまま、現実として大人になっている自分がいます。

生活の中で人と出会い、その出会いが心を変化させ、また新たな出会いを生み出す。 そんな人々がたくさん集まって、社会ができている。自分はそのなかで生きる一人なんだ。 このゲームでは、そんな「人」「心」「社会」の関係を構築しようと思ってます。

じゃあ、そんな内面のパラメータを、どういう具合にユーザーにキャラメイクしてもらえば、 愛着を感じてもらえるのでしょうか? 今度は「自キャラに愛着を持って欲しい」という思いを実現せねばなりません。
多くのゲームでは、種族や職業を選択し、ポイントをパラメータに振り分けるなどして、 ユーザーが自由にキャラを作りこめるようになってますよね。 このユーザーによる明確な作りこみも、キャラに愛着を持たせる一つの手法ではあります。 ただ、このゲームの「人間としての成長」というコンセプトを考えたとき、 最初からユーザーの意図した性格のキャラを作れるようにすると、 自分が思い描いた”物語の主人公”から、ゲームが進むにつれ、どんどん離れていくというマイナス面も考えられます。

ということで、あえて今回は、完全にニュートラルな状態でキャラクターをスタートさせようと思ってます。 つまり、キャラクターの性格は、誰が始めても、初期状態でははまったく同じです。 性格の変化は、実際にそのキャラクターでプレイして、どういう行動をとったかに依存します。 キャラクターの人格は、いわばプレイヤーの行動の軌跡であり、 あなた自身の内面を映しているかもしれないよ、ということで、 より深い愛着をもってもらう作戦です。

ここまでの方針をまとめると、

という方向性になりますね。

そうなると、PC作成時に、設定してもらうパラメータはそんなに多くなさそうです。 性別、名前、誕生日くらいでいいかな。 あとは、ゲームの世界観を垣間見せる仕掛けとして、 身に付けるアイテムひとつくらいを、選択できるようにしておきましょうかね。 季節ごとに選択できるアイテムを変更すれば、 ユーザー同士で、キャラクターを見せあいこしたときに、ちょっとした話のネタになるかもしれません。 これで、PC作成画面での入力項目が決定しました。一応リストアップしておきます。

インターフェースは、スムーズにゲームを開始できるよう、 シンプルに構築しようと思います。 アプレットの必要はありませんね。HTMLのFORMタグで表現できる範囲で充分でしょう。

 ページトップへ戻る

次は後編? それとも中編?

ふう……PC作成画面の項目を決めるだけでも、考えるべきことはたくさんありますね。 まだ、チャット型会話モード街移動モードの設計が残ってます。 会話にはNPCの生命感を表現する演出が必要だし、 移動モードでは、パッと見て街や人々の様子が分かる表示方法を検討する必要があるし…… ということで、そのへんは次回以降のコラムで検証していきましょう。
「そろそろ、何か動かせよ!」という意見も聞こえてきそうですが、 自分の気持ちにあいまいな部分がある限りは、とことん考えに考え抜いて、 早くプログラムが組みたくてしょうがないっ、ていう境地に達するまで、 あえてプログラミングはしない予定です。

 ページトップへ戻る