Gamedevファイル構造


ゲーム開発のためのファイル構造ゲームのビジュアルに新しい効果を追加するほどセクシーではない.それにもかかわらず、それは対処する必要があります.
去年の最初のゲームを始めたとき、アイデアやインスピレーションのためにこのタイプの情報を探していました.それはあなたが迅速にXcodeを使用して迅速にゲーム開発にそれを絞り込むときに余分な真のリング.
これは私がXcode、バージョン管理とストレージで私の最新のゲームプロジェクトを組織した方法の内訳です.

エバー進化


私は最近私の2番目のゲームを終えた.Hypastorm , しばらくの間私の最初のゲームを開催した後.どのkindaは私の2番目のゲームを最初に作ります、しかし、来るためにもう一つのポストでそれの上でより多く.
私が最初のゲームで働き始めた時から、私がとても学んだと感じたので、私は第2のゲームを始めました.私は新しい新鮮なキャンバスのゲーム開発に私のアプローチの新しい構造を試してみたかった.私は戻って、私の最初のゲームにこの構造を適用します.
それで、私のゲームプロジェクト構造は、2つのゲームの間で大いに進化しました.そして、それは絶えず変化しています、そして、私が私の第3のゲームの前の生産を開始したので、私は微調整、合理化して、さらにそれを改訂します.
しかし、今のところ、第2のゲームがどのように扱われるかについて集中しましょう.

コード


私はGitをバージョン管理にメインコードベースに使用します.
これは、私が取り組んできたゲームは、芸術とサウンドに重くはないとして、うまくいっている.リポジトリのサイズには小さな足跡があります.
私は、より大きな資産に依存するゲームを開始する日私は次のステップとしてGit LFSを使用して検討します.
Xcodeでは次のようなゲームを作りました.
Game Repository
+-- Shared
    +-- Entities
    +-- Components
    +-- Scenes
    +-- UI
    +-- Audio
    +-- Log
    +-- Utilities
    +-- Preload
    +-- Assets
    +-- Level.swift
    +-- ECS.swift
    +-- GameData.swift
    +-- GameConfig.swift
    +-- GameManager.swift
    +-- SceneManager.swift
+-- iOS
+-- tvOS
+-- macOS
+-- Nexus
+-- GameMath
+-- Tools
迅速なブレークダウンは、各フォルダー/上記のファイルになります.

  • エンティティ/コンポーネント:ECS、ユニークなゲームの仕組み.

  • シーン:メイン有限のゲームステートマシンを含むすべての可能なゲームの状態で別のゲームシーン.

  • UI:HUD、すべてのゲームのオーバーレイとボタンのようなUIの要素とラベル.

  • オーディオ:私のオーディオプレーヤーとミキサー.私の次のゲームでは、これらのエンジンのフレームワークに移動されます.

  • ログ:デバッグログとパフォーマンスを測定するための多くの道標.

  • ユーティリティ:便利な方法とアップルのフレームワークの異なる拡張.

  • preload :ディスクからのプリローディングを処理し、メモリへの資産のデコードとGPUに.これは十分に成熟している次のゲームのための私のエンジンフレームワークに卒業されている.

  • 資産:グラフィックス、サウンドエフェクト、音楽、レベルデータ、JSON ...あなたは、それをここに名前を付けます.

  • レベル.Swift :ディスク上のデータから再生可能なレベルを作成します.

  • ECSスウィフト:私のECSのゲーム固有の拡張.

  • ゲームデータ.Swift:データレベル間の永続的.

  • ゲームセンター.スウィフト:ゲームの設定とエンティティの統計情報を微調整する中心的な場所.

  • ゲーマー.スウィフト:どこで始まるか

  • Scenemanagerスウィフト:フェードイン/フェードアウト.別の画面サイズに適応を処理します.矢田弥太.

  • IOS/TVOS/MacOS:各プラットフォームのターゲットのユニークなコード.

  • ネクサス:私の軽量ゲームエンジンのフレームワーク.ゲームの間に一般的なボイラー板のコードを削減します.

  • Gamemath私の数学ライブラリ.アップルのフレームワークによってカバーされていないすべての必要な数学操作の空白で埋めます.三角法を聞きましたか.

  • ツール:ゲーム固有のツール.主にコマンドライン.コンバータ、ジェネレータ、私のようなXcode Asset Catalog Generator , 自動化.
  • 私はXcode Serverを使用して、古いプラットフォームの各Mac用の小さなテストスイートを実行しているときに私は、リポジトリには、余分な安全性のネットとして物事を壊すのリスクを減らすために新しいコミットを行う.

    資産


    上記のコードリポジトリにある資産は、最終的で小さく、最適化されたエクスポートされたバージョンです.しかし、あなたは、元のソース資産で働くために場所を必要とします.
    私はGit LFSを選びました、そして、彼らが私のために働く寛大な無料層を持っているので、私はAzure Devopsの上で起源倉庫を保ちます.
    Assets Repository
    +-- Art
        +-- Entities
        +-- FX
        +-- Output
        +-- UI
    +-- Audio
        +-- Title Music
        +-- In Game Music
        +-- Sound Effects
    
    上記の構造に注目すべきことの短い内訳.

  • アート:ここでは、Photoshop、ブレンダー、イラストレーターや他のアートファイルに行く.The Output ディレクトリはどこでエクスポート/レンダリングされたバージョンの資産を送信する場所です.私は私の変換スクリプトをTools さまざまなデバイスとスクリーンのために最適化されたバージョンでここからXcode資産カタログを構築するコードリポジトリで.

  • オーディオ:これについて多くを言うために、私はここですべてのオーディオ関連の仕事を保存します.私はロジックPro Xと私は音楽を使用して音楽を使用してOrganize as folder の代わりにas package , プロジェクトを保存するときは、バージョン管理で動作する場合は、もう少し親しみやすい.
  • 残り


    ゲームになるものを構成するファイルから離れて、ゲームの開発サイクルの間に生成されるファイルの他のタイプの束があります.
    私は普通のクラウドベースの同期サービスでそれらを維持することを選択しました.私はiCloudドライブを使用している私はそこで利用可能なストレージの膨大な量を持っていた.さもなければ、dropboxと考えました.
    これは代わりにバージョン管理で行くことができました、しかし、私はこれのために雲ドライブを使うことがより意味があるのを感じました.私は私が私が計算された上でドキュメントを開くことができますし、外出先でそれらを編集することができます私は何かアイデアを得る場合は、どこにでもファイルにアクセスすることができます.またはアイデアや流れを説明するために私のアップルの鉛筆を使用します.
    その上で、私はアクセスを与えるかもしれない非コーディングの人々とこのフォルダを共有するのをより簡単にします.
    iCloud Drive
    +-- Concept Art
    +-- Documentation
    +-- Marketing
    
    そして、故障.

  • コンセプトアート:私の初期の初期の図面やインスピレーションアートや気分ボードのコレクション.Purerefインスピレーション芸術を整理する素晴らしいツールです.

  • ドキュメント:ゲームデザインドキュメント、私の時間ログと資産追跡スプレッドシート.

  • マーケティング:アップルStoreのためのビデオとスクリーンショット.ソーシャルメディア上で共有する動画.私は実際には全くマーケティングをする時間がなかった.追加のコンテンツは、おそらく後にここに表示されます.今のところ、私は主にゲームをして、個人のGamedev習慣とワークフローを構築することに集中しました.
  • 結論


    あなたが私がどのように私が私の最後のゲームプロジェクトを組織したかのブレークダウンを見つけたことを願っています.あなたは私がどのように使用するか、微調整することができます私のゲームのプロジェクトを整理するからいくつかの便利なアイデアを持っている可能性があります.
    私が以前に述べたように、それは進化しています、そして、私は私が働き始めた次のゲームのために複数の調整をしました.私はこの記事を再訪し、今から1年で更新版を作るかもしれません.
    コーディングを続ける!