はじめに

この記事はコンセプト企画案です!

直前のプロジェクトの経験から学んだことの一つは、何かを長期間かけて開発することは、一方で自分が何か大きな文脈に関与されるということです。間違えると開発する過程が疲れて苦痛な経験として残る可能性もあるため、テーマを熟考して慎重に決める必要があります。

今回のコンセプトデザインはそういった文脈で少しの実験です。まず1〜2ヶ月ほどデザイン草案作成、ドキュメント作成、クラス設計などで開発過程を短縮するためのアイデアを具体化してみて、さまざまな機会費用を検討しながら実際にゲームを開発してみたり、途中の考えを整理して記事に残そうと思います。

ジャンルがタワーディフェンスである理由

gameplay-sceneゲームプレイと操作例

テーマがタワーディフェンスであるのは、このジャンルを面白く楽しんできたおかげで違和感がないというのが第一の理由で、同様の原理で個人的な愛着を持って開発を持続的に進められそうだというのが第二の理由です。すでにリリースされているタワーディフェンスゲームが多く、参考にできる事例が豊富だからです。

ただし、その分競争が激しく、最近ではやや古く静的な印象を与える点、従来のタワーディフェンス構造ではゲームの終了条件を印象的に提示しにくい点などのデメリットがあります。同様にゲームを創造的に導くのも難しそうです。

こうした問題をどう補完できるかが、このアイデアを具体化する過程での最も重要な関心事です。特定ラウンドまでを報酬の最大値が決まる1プレイと見なし、プレイヤーに今のゲームを終えて新ゲームに移行できる選択肢を提示することなどが補完策になるでしょう。

ミニマリズムデザイン文法

このコンセプトゲームのデザイン文法には、最小主義と実用主義という二つの原則があります。デザインコードの統一と開発コスト削減のためミニマリズムを優先しましたが、だからといって実用主義を無視しようとしたわけではありません。しかしこの二者の間で、機能を削減すると大抵実用的でなくなり、逆に様々な情報を一緒に表示すると見た目が乱雑に衝突するケースが非常に頻繁に発生するという問題があり、ほとんどは代替案を調整するための努力がありました。

info-panel-design-process 最も悩みが多かったタワー情報パネルのデザイン。それぞれに少しずつ問題がある

砲塔のスペックを示すウィンドウで数値を詳細に表示するとレシートのように情報密度が過度に高くなり、逆に簡略に提示すると直感性が大きく低下します。この問題は、表示すべき砲塔データ自体が多く複雑であることが根本的な原因ですが、他の数多くのUIをデザインする際にも同様の問題がありました。整然とした情報表示のためにゲームシステムを削ることはできないので、代わりに以下の独自の原則に従って最善策を立てました。

  1. 視覚的情報の密度と時間的情報の密度の両方が一定に維持できること。どちらの観点でも情報は多すぎても少なすぎてもいけません。
  2. プレイヤーの選択が直感的に体感できること。小さな行動にも複数層のアニメーションや効果などでUIは動的に反応すべきです。
  3. 興味喚起とともに退屈さは防止できること。すべてを動的に構成することはできませんが、退屈を誘発する静的な状況を最大限避けるため、マップやゲームシステムが許容範囲内で流動的に機能する必要があります。

notification-systemゲーム中に呼び出される4種類のアラーム

design-examplesメインメニューと設定画面。アイコンはFontawesomeから

ほとんどのUI機能と画面上の配置を上記のような実用主義の原則に従って決定しました。ゲームの雰囲気自体が白黒系のモノトーンである点、UIデザインのほとんどが静的に配置されている点がデメリットで、アニメーションのような視覚的効果による改善が必要な部分です。

開発に必要な技術的事項

notion-darknotion-lightある程度まとまったら公開してしまおうかも検討中のNotionページ

このプロジェクトを通じて達成できる技術的目標は大げさではありません。命名規則やSOLID原則など円滑なプロジェクト管理のための戦略、シングルトンやイベント駆動型プログラミングのようなデザインパターン、Androidアプリのコア品質基準など馴染みのない概念ではないものを磨き上げて実装し、余裕があれば次のうちの一つを新たに使ってみられるでしょう。

ドキュメント作成中に偶然Awesome Listsを知りましたが、その中でUnity関連の項目、また特に詳しく参考にできるオープンソースプロジェクトとしてNodulusを発見しました。実際にプロジェクトがどう管理されているかの感覚が不足して苦労していたところ、スクリプト構造やアセット管理などで大いに参考にできそうです。