Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

今日から使える! UnityでのゲームジャムTips

今日から使える! UnityでのゲームジャムTips

今日から使える!UnityでのゲームジャムTips で発表した資料です。

イベント詳細 : https://hirouni.connpass.com/event/254973/

NAKAOKU Takahiro

October 12, 2022
Tweet

More Decks by NAKAOKU Takahiro

Other Decks in Technology

Transcript

  1. 2 ナカオク タカヒロ Follow me! Github/FB @kamera25 Twitter @csc_kamera25 仕事

    : 色々やってる    ネットワーク屋さん https://hiroshima-unity.jimdofree.com
  2. 3

  3. 4 おことわり ・本資料に Webから引用をしている、画像や資料などがあります。  引用元 URLで示している で、正しい情報について そちらをご確認ください。 ・引用以外 情報

    クリエイティブコモンズ -表示 4.0 国際 (CC BY 4.0)でご利用いただけます。 ・こ 情報 2022年10月8日時点 情報となります。
  4. 6

  5. 7

  6. 8

  7. 話すこと • ゲームジャムでよく使う、Unity 設計について • 新機能 ご紹介 U2019〜 ↓ ような表記をスライド右上に表示します

    Unity2019以降で使える機能 ジャム設計 ゲームジャムでよく使う設計について ※Unity バージョン関係なく使える機能 12
  8. 新規プロジェクトを作る時 • (重要!)プロジェクト 選択 「絶対的なも で 無い」 ◦ 「3D」で作ったプロジェクトを途中で 2D向けに変更することも可能。

    ◦ 「3D(Bultin-RP)」で作ったプロジェクトを、 URPを用いるプロジェクトにする事も可能。 • ただし、最初に「ど ようなゲームを作るか?」によって、選択をすることが重要。 ◦ プロジェクト制作 途中で変える シンドイよ。 ◦ どちらを採用すれ 良いか分からない時 、経験者に聞いてみよう。 https://docs.unity3d.com/ja/2021.3/Manual/2DAnd3DModeSettings.html 17
  9. 18

  10. 19

  11. U2018〜 URPとBultin-RP • Unityで v2018から、レンダーパイプラインを拡張できる仕組みを開発 ◦ これによりURP(旧名 : LWRP)とHDRPが作られる。 •

    それまで 既存 レンダーパイプラインをBultin-RPと呼ぶようになった。 結局、何が変わる か? 21
  12. URPとBultin-RP URP Bultin-RP レンダリング 度 軽い 重たい 使える機能 多い 新機能が使える

    多い 過去 資産がそ まま使える オススメ度 新しく作るなら オススメ! 過去 資産を使うなら オススメ! U2018〜 【参考】 22 おおむ 、こ 理解で OK…
  13. URPとBultin-RP • URP出始め 頃 実装されていない機能が多くあった。 ◦ リアルタイムGIが使えない ◦ 複数 カメラが使えない

    • アセットストア アセットがURPに対応していない。 ◦ Bultin-RPでほぼ作られていて、変換が必要だった。 ◦ 特殊なシェーダーを使っている場合、だいたい下 色になる。 U2018〜 23
  14. URPとBultin-RP • さっき 問題 最新環境で おおよそ解消されている。 ◦ ただし昔買ったアセットストアが、そ まま流用できない場合 まだある。

    ◦ デザイナーさん 表現したい事を意識合わせしておく事が大切 • ゲームジャムで 多く 人にゲームを触ってもらえる事が大切 ◦ 軽いパソコンで動く事に越したこと 無い ◦ イテレーションを回すにも、軽さ 正義 U2018〜 24
  15. Unity Editorを開いたらまずやること ジャム設計 • (超重要!) ゲームシーン アスペクト比をまず決めること • Project フォルダ構

    を決めておくこと • Sceneをあらかじめ作成しておく ◦ 合わせてビルド設定に Sceneを設定しておく • 上記ができたら、Gitに初期コミットすること 30
  16. アスペクト比 調整を行う ジャム設計 Free Aspect ままだと… ・UIが固定化できない ・ゲーム性に影響する 多く 場合

    ・16:9(HD、Unityroom等) ・16:10 ・4:3(Mac等) 忘れると最終日 ビルドで 泣く事もし し … 31
  17. Project フォルダ構 を決めておくこと ジャム設計 • Unity 一般的なプロジェクトで 、第一階層に機能ごとにフォルダを分けることが 多い ◦

    Script、Scenes、Audio、Materialsなど • ゲームジャムで ユーザ毎にフォルダを分けた方が管理しやすい (と思う) ◦ 例) 第一階層に Scenes、ユーザフォルダ、アセットしか置かない ◦ ユーザフォルダに 個別で管理を行う ◦ you-riさん 発表(初めて ゲームプロジェクト バージョン管理)でも詳細な説明あり 35
  18. Project フォルダ構 を決めておくこと ジャム設計 一般的な構成 Assets Scenes Prefabs Scripts Resources

    Audio Assets Scenes Users ストア アセット 等 Aさん Bさん Cさん ゲームジャムでよくやる 構成 36
  19. Project フォルダ構 を決めておくこと ジャム設計 • ゲームジャムで プロジェクト 大規模化 しにくい ◦

    一般 製品プロジェクト ようにフォルダ構成を厳格にすることが、 初期ゲーム開発 度を増やすと限らない • ファイル変更によるコンフリクトが起こりにくい ◦ ゲームジャムに Gitを使わない人も参加することがある ◦ 余計なコンフリクトを避けるため ◦ フォルダ名により所有者が明確となっているため、誰が作成したフォルダかわかりやすい • Sceneについて 単一機能 も ユーザフォルダに格納する ◦ Sceneフォルダ直下 Scene 常に多人数に触られるも とする ◦ 個人フォルダ直下 Scene 所掌範囲 機能実装用にとどめる 37
  20. Sceneをあらかじめ作成しておく ジャム設計 共有して触るScene 初め うちから作っておく プロジェクト初期にこ 作業を実施しておきたい • Sceneを作る→ゲーム 大まかな流れ

    を決める ◦ ゲーム ゴールを決める ◦ 必要な工数を考える ▪ チュートリアル作る か? ▪ ステージ毎にSceneを変える か? 38
  21. Unity Editorを開いたらまずやること ジャム設計 • (超重要!) ゲームシーン アスペクト比をまず決めること • Project フォルダ構

    を決めておくこと • Sceneをあらかじめ作成しておく ◦ 合わせてビルド設定に Sceneを設定しておく • 上記ができたら、Gitに初期コミットすること 42
  22. 列挙型(enum)を定義しよう ジャム設計 • 対戦型ゲームで チームやプレイヤーを識別する必要がある。 ◦ 1プレイヤー(Red) / 2プレイヤー(Blue) /

    3プレイヤー(Green) / 4プレイヤー(Yellow) ◦ スポーツに 自チームと敵チームがある ◦ 対立構 が生まれれ 、そこを識別する必要がある • 武器に種類があれ 識別する必要がある。 ◦ メインウェポン / サブウェポン • マップタイルに種類があれ 識別する必要がある。 ◦ 街 / 川 / 山 / 城 45
  23. 列挙型(enum)を定義しよう ジャム設計 1P 「0」 2P 「1」 1P 「1」 2P 「2」

    として定義しよう… ゲーム シーン リザルト シーン 46
  24. 列挙型(enum)を定義しよう ジャム設計 winUser = PLAYER.ONE ゲーム シーン リザルト シーン 51

    enumについて 後述 CREATE A C# STYLE GUIDEにも詳細が記載されてます
  25. データ 取り扱いを考えよう ジャム設計 • ゲームがどんなデータを扱うか考えてみよう ◦ HP、MP、マップ構成、アイテム ◦ プログラマ これら

    値をどこに持っておくか、意識をしておく HP MP アイテム 値 武器A 武器B 武器C マップ構成 状態 : 毒 データ どこ? 52
  26. データ 取り扱いを考えよう ジャム設計 • シングルトン? ◦ 楽、わかりやすい ◦ DontDestoryOnLoad()を使って、Sceneまたぎをさせる ◦

    ゲームジャム向きと言える • GameController Componentで一元化する ◦ わかりやすい ◦ シーンまたぎ 時に処理を考えてあげる必要がある。 • PlayerPrefs ◦ 最近 あまり使わない 53
  27. Tag 使い所を考えよう ジャム設計 • Tag 比較 ◦ あるオブジェクトに「Player」 タグを持つオブ ジェクトが当たったか?を検知するコード

    ◦ コリジョンを検知する際に文字列比較で Tagと 当たったか?を検知したりする。 ▪ こ 方法 比較的遅い 58
  28. Tag 使い所を考えよう • そもそもTag 比較が必要? ◦ Unity 2019からTryGetcomponentという関数が追加 ◦ 下

    コード 「Playerが持ってるコンポーネント」があれ 、 if 中を実行する。 ▪ しかもGetComponentに比べて処理が早い U2019〜 60
  29. Player Tag 使い所を考えよう U2019〜 プレイヤーA プレイヤーB コンポーネント PlayerController Player コンポーネント

    PlayerController ↑ どっちかを比較 ↓ CompareTag() TryGetComponent() OnCollisionEnter() 61
  30. Input Systemを使おう • Input Systemに 2通り 方法で利用か う ◦ 使い方1

    Input Action アセットにキー バインド (紐付け)を作成する ▪ 癖 あるけど、慣れたら直感的 U2020〜 63
  31. Input Systemを使おう • Input Systemに 2通り 方法で利用か う ◦ 使い方2

    コードで書く ▪ プロジェクト初期 こっち 方法が良いと思う ▪ プレイヤー数が大人数にならない場合にもおすすめ U2020〜 64
  32. C# コード • Unity社公式 Create a C# style guide を読

    みましょう ◦ 英語苦手 人 コードだけ読め OK ◦ もしく DeepL翻訳つかって読んでみよう • 一般的な話も多く含まれる ◦ 無駄なコメントを書かない ◦ DRY原則 ◦ 変数や関数 命名規則 話など • ゲームジャム チーム開発 ◦ もちろん動くコードを書くことが大切 ◦ 綺麗なコードを書くことも考えよう https://resources.unity.com/ebooks/create-code-style-guide-e-book ジャム設計 65