Unity2019で制作中のレースゲームについて紹介

# 目次
[1.はじめに](#1-はじめに)
[2.ゲームを作り始めたきっかけ](#2-ゲームを作り始めたきっかけ)
[3.紹介](#3-紹介)
[4.説明](#4-説明)
[5.制作手順](#5-制作手順)
[6.最後に](#6-最後に)
# 1. はじめに
この記事は[この記事はN・S高等学校 Advent Calendar 2022の15日目](https://qiita.com/advent-calendar/2022/n-s-highschool)です。
まず、簡単に自己紹介をさせていただきます。
S高校2年生の"どらやき"と申します。Unityで4年間、レースゲームの制作を続けています。

# 2. ゲームを作り始めたきっかけ
小学校高学年辺りの時期から本格的に車に興味を持つようになり、中学校に上がった頃には今すぐにでも車を運転してみたいと思っていたほどでした。

ところが普通自動車免許の取得が可能になるまではあと数年。
車を運転したいという欲望を少しでも満たすとすればレースゲームで遊ぶ事くらいしか出来なかったのですが、私の家庭ではゲーム全般が禁じられていました。

そこで色々考えた末に「勝手に自分で作ってしまおう」と奮い立ったことがレースゲームを作り始めたきっかけとなりました。そして現在も制作し続けているUnityのレースゲームへと繋がっています。

# 3. 紹介
https://youtu.be/Ukyu5BoKWQA
↑こちらが現在制作中のレースゲーム（12/15 現在、最新です）
https://youtube.com/playlist?list=PLyznPZeVmcekk0Ca5029wHMBFxBDdH-Xo
↑今まで投稿してきた開発の進捗状況をまとめたYouTubeプレイリスト

当ゲームは、実車を動かすために必要な物理的機構を再現することでリアルな挙動を実現しています。
![打倒UE4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988183/51520a68-017e-661c-efe3-0ee798511f6e.png)

# 4. 説明
![CarG_Unity - SampleScene - PC, Mac & Linux Standalone - Unity 2019.4.40f1 Personal_ _DX11_ 2022_11_28 23_35_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988183/73c27be8-b8cb-c190-71f9-51c43b57e0b0.png)
![CarG_Unity - SampleScene - PC, Mac & Linux Standalone - Unity 2019.4.40f1 Personal_ _DX11_ 2022_12_12 23_15_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988183/36bee17b-03ca-b86e-7665-75e0cf912b8f.png)
内装の革張りや、パンチレザーに覆われたステアリングのテクスチャなどの細かな部分にも拘りをもって制作しております。
現実世界で車を運転する際に誰しもが視界に入るであろう内装は、車の外装と同じくらい大切です。運転中はずっとコックピットに座っている訳ですから。但し、内装しか見ることのできないレースゲームですと大半の方に醍醐味が伝わらない為、Youtube投稿では三人称視点も収録します。



↓物理演算を可視化
![CarSim2 - samplescene - PC, Mac & Linux Standalone - Unity 2019.4.40f1 Personal _DX11_ 2023_09_18 21_49_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988183/c8cd2b55-c43d-a54c-969d-505f4bece117.png)
車両に搭載されている調整可能な項目として、車両重量、駆動方式、エンジンのトルクカーブ、エンジンパワー、レブリミット、アイドリング回転数、タイヤ切れ角、ディファレンシャルギアの方式、サスペンションの細かなセッティング、ダウンフォース強度、タイヤの摩擦係数、ブレーキトルク、ギア比、クラッチの対応トルク、前後の重量配分、ABS、トラクションコントロール、カウンターステアアシスト、スタビリティコントロールが挙げられます。すなわち、車の限界領域の挙動を理解した上で操作すると思い通りに操れることになります。

# 5. 制作手順
どのようにレースゲームを制作しているかを大まかに紹介します。
1.Unityをインストール
2.Unityプロジェクトを作成
3.車を動かす上で必要なAssetを導入
4.モデリングもしくはネット上から3Dモデルを用意
5.車の3Dデータ及びコースの3Dデータをインポート
6.車両プレハブをヒエラルキーにドラッグ&ドロップ
7.使用する各3Dモデルにテクスチャを適用
8.車両プレハブに車の3Dモデルを下位オブジェクトとしてドラッグ&ドロップ
9.車両の各種パラメータを設定
10.稼働パーツの位置合わせ&設定（計器類、タイヤ、ステアリング等）
11.コースの3Dモデルをヒエラルキーへドラッグ&ドロップ
12.UIのパーツを配置し、車両のリアルタイム情報を表示するスクリプトの埋め込み

〜この時点で最低限のレースゲームが出来上がります〜

13.[HDRP](https://unity.com/ja/srp/High-Definition-Render-Pipeline)化（Unityプロジェクトを作る時点でHDRPを選択していなかった場合）
14.Lighting設定を調整し、グラフィック表現をリッチにする
15.改変が必要なテクスチャを探し、外部ソフトで編集
16.実車のエンジン音を収録
17.チューニングショップのサイトを参考に車のセッティングを煮詰める
18.Skyboxを4K画像へ差し替える

4~11,15~17の作業をループさせることで車種やコースの種類を増やすことが可能です。
![CarG_Unity - SampleScene - PC, Mac & Linux Standalone - Unity 2019.4.40f1 Personal_ _DX11_ 2022_12_12 23_07_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988183/7c8f0d6f-75da-c463-a348-4f9ebae4e39e.png)
↑記載した手順に沿って実際に筆者がゼロから作り直してみたところ、30分程度で出来ました。紅葉シーズンの日光いろは坂です。
# 6. 最後に
![スクリーンショット (157).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988183/3021f355-cb74-5f74-e4e0-c2d217d17445.png)

以上、制作中のレースゲームについて一通り紹介してきましたが、実はゲーム制作において決められないことがあります。

それはズバリ、"どこまで開発が進行すれば完成"とするかです。

理由は二つあります。
仮に当レースゲームが公に販売されるとすれば、自動車メーカーのロゴは使用不可であること等、様々な問題点が浮かび上がります。従って一つ目の理由は、販売できるようなゲームへと仕上げて"完成"へと持っていく必要性が見つからないからということになります。
続いてもう一つの理由は、追加実装できるコンテンツに無限の可能性があり、永遠に完成の一歩手前を歩んでいるからです。

自らレースゲームを制作してきたことで、ゲーム開発の大変さを痛感したと共に、実際にレースゲームを販売しているゲーム会社の凄さを改めて実感できました。