マリカのようなゲーム

上にゲームの動画入れる

開発の目的

ゲームプログラマーになるぞ!

目標

ポートフォリオ作成
→これがないと何ができる人なのかわからない
足りていないPGスキルの習得
→これまでは動けばOKの精神でやっていた。それではPGになれない。
開発の流れを理解し、指示された各段階の作業をやれるようにならなければならない。
(その次のステップは主体的に動くことになるかと。例えば全体見通した際の課題や将来発生しうる課題を指摘できるとか、遊びに対しての意見だしとか)
また、別のベクトルとしてこれまでになかった知見を吹き込んでくれるようなところはアピールポイントになるだろう。

習得したいスキル
①各段階の作業ができるか系
企画
・開発の流れを整理する
→なんとなくで作っていくことが多いので一回資料化したい。
・JiraとBacklogでタスク作ってみる
→AIに聞いたらよくつかわれているらしい。そしてJiraからBackLogへの移行は簡単らしいので。

開発環境構築
・MacとWindowsどちらでも開発できるように開発環境を構築する
→一人で疑似的なチーム開発をする。基本Winで開発して、Macはコード書くみたいになるかと思う。git以外に何が必要か整理する。
・アセットのバージョン管理
→githubだと重くてできない

設計
・SOLIDやゲームデザインを考慮した設計(クラス図の作成)
→チーム開発や開発の効率化をできるようになるため、自他ともに改善や保守しやすいゲームを作りたい。

実装
・シェーダー作れるようになる
→宣伝するには見栄えが大事
・敵AI(CPU)の実装
→対人戦に近い遊びを作れるようになりたい。
・ストアからアセットDLして開発する
→使えたら大幅な時短になる。

処理能力の改善
・メモリ管理
→アクションゲームでFPSを守るため。
・見えない部分の描画の粒度を落とす
→アクションゲームでFPSを守るため。

開発補助機能の作成
・アプデのためにキャラやステージのバリエーションを量産できる仕組みづくり
→バリエーションはプレイ時間に直結する。宣伝のとき題材が多くあると困らない。

②知見の広さ系
・AIを活用した効率化
→スタートが遅かったのだからチートするしかない。むしろインディーだからこそいろいろ研究できて利益出せる。
・Unreal Engineでの開発
→フォトリアルのほうが肌感注目してもらいやすい。アクションゲームを作っていきたいのでC++習得必須かなと。
・Steamでのリリース
→ゆくゆくはSwitchでゲームを出したいのでSteamで実績を作る。
・Jenkinsで自動テストしてみる
・宣伝の自動化
→宣伝時間かかるし、効果的な手法を整理したいので。

作品の情報
  • タイトル(仮):ラジコンキッズレーサー
  • ストアリンク:
  • github:
  • ジャンル:レースゲーム
  • プラットフォーム:steam
  • ターゲット:サクッと満足感のある対戦ゲームを遊びたい社会人(というか自分がマリカ遊びたいときの動機)
  • 期間:6か月(プロトタイプ作成してストア公開までの期間)
作品の概要(マリカの分解)

コンセプト
アイテムと自由度の高いコース取りで順位の逆転が頻繁に起き、敵を追い抜く嬉しさが何度も味わえるレースゲーム

ゲームシステムと面白さ※各ポイントで動画入れる
・アイテム(加速や敵をクラッシュさせるもの)がランダムで排出される。順位が低いほど強いアイテムが出る。
→順位が低くても逆転が容易なのでモチベーションを高めて遊べる。下手な人も含めてみんな楽しい。
・道幅が広く裏ルートもあるコースで自由度の高いコース取りができる。裏ルートはコースアウトのリスク大。
→広いことによりプレイヤーの選択の幅、つまりは技術向上の余地が生まれる。技術で追い抜く面白さ。
・ドリフトでの調整と加速
→コース取りの要。加速時にアクションゲームに必要な爽快感がでる。視点や順位が変化し盛り上がりが発生する。

ゲームサイクル
個人的には以下3パターンで遊んでいる。
育成要素やレアアイテムみたいなのがないのでサイクルっぽくないかも。
コースが豊富で映像として面白くてすべてのコースをやりたくなる。
特に現実世界のコースなどで旅行に行った場所などがあるとうれしくなる。
レート戦では世界ランク1位以外は上のランクが目標となるので次もやりたくなる。

画面遷移図

なんかGoogleマップみたいにmiroを埋め込めないだろうか…。

6か月で作る範囲

一人で遊ぶグランプリだけ

マリカをそのまま持ってこれない要素の方針

世界観
F1のラジコンで子供がいろんな場所で遊んでいる感じにしたい。

キャラクター
チェンソーマンみたいに顔だけ別の存在(顔のバリエーション変えるだけで済むし、体見えないし)


フォーミュラーカー。タイヤと本体の組み合わせを変えられるようにしたい

ステージ
子供の生活圏。公園の砂場とか芝生、学校、家、道路。できれば遊具とかもまぜてステージにしたいけどむずかしそうなのでやめる。

アイテム
文房具とか…?

開発プロセス

工程ごとになにしたか詳細をサイト作ってみる
・企画
・開発環境準備
・設計
・実装
・テスト
・リリース
・保守・運用

開発ルール

時短
・独自性を出そうとしない。(パラメータや皮で差別化できると思う、多分)
・アセットは全部ストアからとる。
・ゴールから逆算して最短で取り組めるように毎日タスクを作ってから作業に取り組む

PGスキル習得
・チケットごとにAI活用を考える

ポートフォリオ作成
・スキル習得の件の記事作っていく
・AI活用事例の記事作っていく

言語やツール等

UE
C++

クラス図とSOLID・デザインパターン

クラス図のっけて適用させたデザインパターンと意図を書く

項目原則名意味
S単一責任の原則(SRP)クラスは1つの責任だけを持つべき。責任が増えると変更理由も増えてしまう。
O開放/閉鎖の原則(OCP)拡張には開いていて、修正には閉じている(変更せずに機能追加できる)
Lリスコフの置換原則(LSP)サブクラスは親クラスと置き換えても正しく動作すべき
Iインターフェース分離の原則(ISP)不要なメソッドに依存しないように、インターフェースは分割すべき
D依存性逆転の原則(DIP)実装ではなく抽象に依存すべき(高レベルモジュールは低レベルモジュールに依存しない)
パターン名主な用途使用例(Unityなど)
State パターン状態に応じた振る舞いの切り替えプレイヤーの「立ち」「ジャンプ」「攻撃」など
Strategy パターンアルゴリズムや処理の切り替え敵AIの動き(逃げる/追う/伏せる)
Observer パターンイベントの通知と購読HPが減った時UIを更新/イベントシステム
Command パターンコマンドをオブジェクト化して操作アクション履歴(アンドゥ/リドゥ)や入力管理
Singleton パターングローバルなインスタンスを1つだけ保持ゲームマネージャー/サウンド管理/データ保存
Factory パターンオブジェクト生成の統一・管理敵やアイテムの生成処理
Object Pool パターンオブジェクトの再利用でパフォーマンス改善弾、エフェクト、敵の再利用
Component パターン機能のモジュール化UnityのGameObject + Componentの思想そのもの
Event Queue(イベントキュー)非同期イベントの順次処理UI演出やアニメーションの連続再生
Prototype パターン複製可能なテンプレートとして扱うプレハブ(Prefab)の複製に近い概念
実際のコード
AI活用事例

・Webサイト作成の効率化
・コース生成
・3Dモデル生成

課題や難しかった点/対応/成果

求められるプログラマースキル×ほかの人にはない自分ならではのスキルが企業に刺さると思う。
プログラマースキルだけではパッとしないし、プログラマー関係ないやつだと求めてないってなりそう。
1.
アピール:AIのプロ(種類、活用方法を知っている。発想力がある。AIがどこまでできてどこができないか知っている)アピール
理由:AI需要がある。企業はAIに抵抗感があるので研究できてないのではないか。AI自体が成熟してないのでライバルとの差が広すぎない。最新情報をキャッチアップして活用できれば勝機がありそう。
概要:音楽、3Dモデルのバリエーションを簡単に作れるAIを活用したツール作成の話
課題:アプデでプレイ時間をのばしたいがバリエーション作るの時間かかる。
対策:時間を計測。AIの活用。AIの知見(実際に使う。活用事例見つける)集め。作業の分解。作業ごとにAI活用の検討。活用するときの手順をマニュアル化。
成果:開発時間が??hから??hへ。ツール??個作った。
ステージ一個つくって作業を分解する。作業ごとにAI活用の検討をする。実装する。
2.
アピール:プランナー×プログラマー力アピール
理由:ゲーム開発では他職種とのコミュニケーションが必須。これまでのえとばしり!では独自性のある遊びを考え、お年玉開封サムライではアクションに必要な爽快感とスマホに必要な手軽さをもとに遊びを考えた。実際に遊びとは?をよく考えて実装してきたのでプログラマーとしては武器になりそう。将来は自分で企画したゲームを作りたいのでこれで勝負してみたい。
概要:敵AIの実装に苦労した話。
課題:CPUが決まった動きしかしないので予想外が起きなくて面白くない。
対策:対人の動きを分析し、対人らしさとはなんなのかその面白さとはなんなのかを研究。それを仕様に落とし込む。AIに自分の動きを学習させてストラテジーを生成させてみる。研究に基づく修正を入れる。コマンドを記憶させて、stateごとにストラテジー作ってあげればよさそう。ついでにハイライトとかもできそうだしコマンド記憶機能作ってもいいかも。
成果:ストラテジーのパターン数が??個から??まで増やせた。面白さの要素をリスト化。
3.
アピール:宣伝×プログラマー力アピール
理由:SNSでの宣伝活動をこれまで注力してきたので食いつきやすい内容や投稿すべきタイミングのノウハウがある。宣伝まで考えて作れるプログラマーはいないのではないか?

開発を通しての成長

ここに記事をのっけて行く

①各段階の作業ができるか系
企画
開発の流れを整理する
・JiraとBacklogでタスク作ってみる

開発環境構築
・MacとWindowsどちらでも開発できるように開発環境を構築する
・アセットのバージョン管理

設計
・SOLIDやゲームデザインを考慮した設計(クラス図の作成)

実装
・シェーダー作れるようになる
・敵AI(CPU)の実装
・ストアからアセットDLして開発する

処理能力の改善
・メモリ管理
・見えない部分の描画の粒度を落とす

開発補助機能の作成
・アプデのためにキャラやステージのバリエーションを量産できる仕組みづくり

②知見の広さ系
・AIを活用した効率化
・Unreal Engineでの開発
・Steamでのリリース
・Jenkinsで自動テストしてみる
・宣伝の自動化

有能資料

【2023年版】ゲーム制作の現場でよく使うツールをまるっと紹介 ~エディターからバージョン管理ツールまで~【 #ゲームメーカーズスクランブル 】
→ゲーム開発の現場で使われているツールをまとめてくれている

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です