君が本当にゲームを作るまで

個人開発を始めてからリリースするまでの実際のゲームの作り方


2022-07-10   〜   2022-07-18
Written by Tatsuya Koyama

これは 35 歳のゲームプログラマの僕が、
25 歳の頃の自分に教えたいことを書く本(予定)です。


現在の執筆ステータス
  • この本(Web 書籍)は まだ書き始めたばかり の状態です
  • 公開状態にして日々、少しずつ更新していく予定です。気長に見守っていただけたら幸いです
  • 更新情報の通知や内容についての意見交換は TwitterDiscord にて!

これは何なのか

  • ゲーム開発者である筆者が、実際に開発してリリースしたゲーム 「ドアを開ける短いゲーム」 を題材にして、具体的に何を考え、何を使ってどう実装したのかをまとめていきます
  • 一般的な技術記事や技術書が踏み込まない 「完成したゲームについて、実際問題、具体的にどう作ったのか」 を文書化することを目指しています
  • 開発環境や使用したソフト、ゲームデザインやシナリオの考え方、フレームワークレイヤーやシェーダのコードなどに言及します
  • メインの対象読者は 「入門レベルを終えて、本格的に自分のゲームを作っていきたい」 段階にいるゲーム開発者の方です
  • 中級以上のゲーム開発者の人にとっては「へえ、君はそうやったのか」という視点で楽しめる、ひとつの開発事例の話になると思います

これは何ではないのか

  • 汎用的なゲーム開発の入門書ではありません (そうした本は世の中に素晴らしいものがたくさんあるので、そちらに任せます)
  • ハンズオン形式で作法を示したり、データやコードの全てを網羅することはできません (人生が有限なので)
  • ゲームを形作る絵・音・ゲームデザイン・プログラムについて言及しますが、 筆者の専門はプログラミングのみであるため、それ以外の分野に関しては専門性を欠く内容になることをご容赦ください (自分も学びたいので、その道の方のツッコミは歓迎です)

Table of Contents (予定)

鋭意執筆中!

01. イントロダクション

02. ゲーム開発の準備

  • 開発に挑む前のレベル上げ
    • 過去に読んだ本や過去に触れたもので、ゲーム開発の役に立ったもの
    • 普段、ゲーム開発のインプットを増やすのに役立っていること
  • ビジョンを定める
    • 何のために作るのか(練習? 宣伝? お金? 自己満足?)
    • マーケット / プラットフォームとターゲットユーザを決める
    • ゲームのジャンルやコンセプトを決める
    • ゲームのスペックと対象端末を決める
  • 「ドアを開ける短いゲーム」を作るのに使った開発環境とソフトウェア
  • 基礎研究とプロトタイプ
    • グラフィックスの研究と実機でのパフォーマンスチェック
    • プロトタイプの実装とテスト

03. ゲームデザインとゲームシナリオ

  • ゲームデザインとシナリオのインスピレーション
    • どういう考え方でゲームデザインをしたか
    • どういう考え方でシナリオを組んだか
    • ゲームの UI と操作性を決める

04. ゲームのビジュアルデザインとゲームサウンド

  • メインキャラの 3D モデリング
    • NPC モデルの量産やモーションをどうするか
  • UI 素材とメニュー画面を作る
  • 「ドアを開ける短いゲーム」の音楽の作り方
    • ゲームで鳴らす効果音の選定と調整

05. ゲームグラフィックス

  • 「ドアを開ける短いゲーム」のグラフィックス表現
    • Unity URP 向けオリジナルシェーダ「AltoShader」
  • カメラに近いオブジェクトをディザ抜きで透過する
  • 揺れる草と回るコインをシェーダで処理する
  • 水中が歪む水シェーダを実装する
  • Unity URP でビルボードを実装する
  • UI を表示する際の背景ぼかし

06. データ作成のワークフロー

  • Unity で新しいプロジェクトを作ったときにやる、ちょっとした整備
    • Unity に取り込むテクスチャのフォーマット自動設定
    • 定数クラスの自動生成
  • マスタデータを何で作りどう読み込むか
  • マップ上のコインやイベントデータをどう作成するか

07. ゲームプログラミング

  • あると助かる自作の Unity 向けライブラリ「Alto」
  • Unity でのシーン制御とリソース管理の自前フレームワーク
  • Unity でのユーザデータの永続化
  • Unity でのマスタデータの読み込み
  • あると助かる Unity ライブラリ : サウンド制御
  • あると助かる Unity ライブラリ : ステートマシン (FSM)
  • あると助かる Unity ライブラリ : シグナルイベント
  • あると助かる Unity ライブラリ : オブジェクトプール
  • あると助かる Unity ライブラリ : トゥイーン
  • あると助かる Unity ライブラリ : プロパティのラッパー
  • あると助かる Unity ライブラリ : Unity クラスの独自拡張
  • あると助かる Unity ライブラリ : 雑多なユーティリティ
  • Unity での課金処理の実装
  • Unity で Firebase を組み込んでちょっとしたユーザ分析ができるようにする
  • キャラクターの足音の実装
  • ゲーム内イベントを再生する仕組みの実装

08. ゲーム UI

  • スマホ向けに複数のアスペクト比やセーフエリアを考慮した UI を組む
  • テキストのローカライズをする場合
  • 「ドアを開ける短いゲーム」のカメラの実装
  • 「ドアを開ける短いゲーム」のバーチャルパッドの実装

09. データの量産フェーズ

  • 個人ゲーム開発のモチベーション維持 〜ゲームを完成させるために〜
  • 「ドアを開ける短いゲーム」のレベルデザイン行程
    • 「ドアを開ける短いゲーム」のパラメータ設計
  • 開発を楽にするためにやった Unity エディタ拡張
    • デバッグコマンドの実装

10. 実機検証とテストプレイ

  • 実機検証とテストプレイ
    • 手元の端末でテストする
    • 身近な人にテストプレイを頼む

11. リリースと宣伝 / KPI の確認

  • 開発中から動画を撮って Twitter や YouTube にアップする
  • iOS / Android でリリースするために必要なデータと作業 (2022 年版)
  • リリース後の分析とエゴサーチ
  • ゲームをリリースした後に気づいた改善点と学び

12. おわりに

  • 君はゲームが作れる



※ この本は完成するの?

目次書いてたら「多くね?」ってなった

何かを完成させるのは難しい
  • 10 代の頃からゲーム開発やサイト制作を続けてきて、「完成させる」ことがいかに大変かは、僕にはよくわかっています
  • この本も (仕事でもなく趣味で書いているだけということもあり) 完成する確率は低いものになるでしょう… (なのであまり期待しないで眺めていてください)
  • それがわかっているので、できるだけモチベーションを維持するために、公開状態で随時更新していくというスタイルを選びました

  • 執筆速度はモチベーションに依存するため、 Twitter などで応援していただけたら完成する確率が上がります!
  • Discord でのコメントや内容に関する意見交換も歓迎
  • 一番嬉しいのは 「ドアを開ける短いゲーム」 を実際にプレイしていただくことです…w
    なにとぞ、よろしくお願いします (^_^)