紹介動画

紹介動画

4/27制作開始

オンラインマルチプレイレースゲーム

flowchart TB
    n7["メニュー"] <-- オンラインに接続 --> n15["ロビー作成ダイアログ/<br>セッション一覧"]
    n7 <--> n22["表示名変更"]
    n7 -- 終了 --> n11["アプリ終了"]
    n15 <-- セッションに参加/退出 --> n19["ロビー"]
    n19 -- 開始受信 --> n21["ゲーム"]
    n21 -- ゴール --> n24["リザルト"]
    n24 -- 自動で戻る --> n19
    n29["自動ログイン"] --> n7
    n28["通信エラー"] --> n29
    n30["Small Circle"] -- ゲーム起動 --> n29
    n7 --> n31["練習用レベル"]

    n7@{ shape: proc}
    n15@{ shape: proc}
    n22@{ shape: rect}
    n11@{ shape: f-circ}
    n19@{ shape: proc}
    n21@{ shape: proc}
    n24@{ shape: rect}
    n29@{ shape: rect}
    n28@{ shape: in-out}
    n30@{ shape: sm-circ}
    n31@{ shape: rect}

image.png


https://github.com/A6P3W/CatsRace

技術

classDiagram
    direction TB

    class MBaseObject {
        基底オブジェクト
    }

    class AActor {
        World上に存在するオブジェクト
    }

    class MActorComponent {
        Actorに機能を追加するComponent
    }

    class MSceneComponent {
        Transformと親子階層
    }

    class APawn {
        Controllerから操作されるActor
    }

    class APlayerController {
        入力を受けPawnを操作
    }

    class AGameModeBase {
        ゲームルールとPlayer生成
    }

    class World {
        Scene内のActorとSystemを管理
    }

    class SceneManager {
        World切り替えを管理
    }

    class GameInstance {
        Sceneを跨ぐゲーム状態
    }

    class FActorManager {
        Actorを管理
    }

    class FCollisionSystem {
        Collisionを管理
    }

    class FTimerManager {
        Timerを管理
    }

    class FReplicationSystem {
        Network同期を管理
    }

    class MEnhancedInputComponent {
        入力Actionを処理
    }

    class MMovementComponent {
        Actorの移動を処理
    }

    class MNetMovementComponent {
        Network対応移動
    }

    class MCameraComponent {
        Camera
    }

    class MSpriteComponent {
        2D描画
    }

    class MCollisionComponent {
        Collision基底
    }

    class MCircleCollisionComponent
    class MRectangleCollisionComponent
    class MLineCollisionComponent

    %% 継承
    MBaseObject <|-- AActor
    MBaseObject <|-- MActorComponent
    MBaseObject <|-- GameInstance

    AActor <|-- APawn
    AActor <|-- APlayerController
    AActor <|-- AGameModeBase

    MActorComponent <|-- MSceneComponent
    MActorComponent <|-- MEnhancedInputComponent
    MActorComponent <|-- MMovementComponent

    MMovementComponent <|-- MNetMovementComponent

    MSceneComponent <|-- MCameraComponent
    MSceneComponent <|-- MSpriteComponent
    MSceneComponent <|-- MCollisionComponent

    MCollisionComponent <|-- MCircleCollisionComponent
    MCollisionComponent <|-- MRectangleCollisionComponent
    MCollisionComponent <|-- MLineCollisionComponent

    %% Actor / Component
    AActor "1" *-- "0..*" MActorComponent : Componentを所有
    AActor "1" o-- "1" MSceneComponent : RootComponent

    MActorComponent --> AActor : Owner

    %% Controller / Pawn
    APlayerController --> APawn : Possess・操作
    APawn --> APlayerController : Controllerを参照
    APlayerController *-- MEnhancedInputComponent : 入力Component

    %% Pawn
    APawn --> MCameraComponent : Cameraを使用

    %% GameMode
    AGameModeBase ..> APlayerController : 生成
    AGameModeBase ..> APawn : 生成
    AGameModeBase --> APawn : PlayerPawnを管理

    %% World
    SceneManager *-- World : CurrentScene
    SceneManager *-- GameInstance : Game状態

    World *-- FActorManager : Actor管理
    World *-- FCollisionSystem : Collision管理
    World *-- FTimerManager : Timer管理
    World *-- FReplicationSystem : Network同期

    World --> AGameModeBase : GameMode
    World --> APlayerController : LocalController

    FActorManager *-- AActor : Actorを所有
    FCollisionSystem --> MCollisionComponent : Collision判定
    FReplicationSystem --> AActor : Actor同期
    FReplicationSystem --> MActorComponent : Component同期
classDiagram
direction TB

class AActor
class APawn
class APlayerController
class AGameModeBase
class AWidgetBase
class MActorComponent
class GameInstance

class APlayer {
レースで操作するプレイヤー
}

class PC_Game {
レース中のPlayerController
}

class AGameSceneBase {
レース全体を管理
}

class AGameScene01 {
Stage1
}

class AGameScene2 {
Stage2
}

class APracticeGameMode {
Practice
}

class WMainHUD {
Race HUD
}

class WCountDown {
Countdown表示
}

class WPauseMenu {
Pause Menu
}

class WControlGuide {
操作説明
}

class APlayerDirectionIndicator {
他Player方向表示
}

class MGhostRecorderComponent {
Playerの走行を記録
}

class MGhostPlaybackComponent {
Ghostを再生
}

class AGhostPlayer {
Ghost Actor
}

class GI_main {
Scene間でゲーム状態を保持
}

%% 継承
AActor <|-- APawn
APawn <|-- APlayer

AActor <|-- APlayerController
APlayerController <|-- PC_Game

AActor <|-- AGameModeBase
AGameModeBase <|-- AGameSceneBase
AGameSceneBase <|-- AGameScene01
AGameSceneBase <|-- AGameScene2
AGameModeBase <|-- APracticeGameMode

AActor <|-- AWidgetBase
AWidgetBase <|-- WMainHUD
AWidgetBase <|-- WCountDown
AWidgetBase <|-- WPauseMenu
AWidgetBase <|-- WControlGuide

AActor <|-- APlayerDirectionIndicator
AActor <|-- AGhostPlayer

MActorComponent <|-- MGhostRecorderComponent
MActorComponent <|-- MGhostPlaybackComponent

GameInstance <|-- GI_main

%% GameMode → Player
AGameSceneBase ..> PC_Game : DefaultControllerとして生成
AGameSceneBase ..> APlayer : DefaultPawnとして生成

APracticeGameMode ..> PC_Game : Controller生成
APracticeGameMode ..> APlayer : Pawn生成

%% Controller → Player
PC_Game --> APlayer : Possessして操作

%% Controller → UI
PC_Game ..> WMainHUD : 生成・管理
PC_Game ..> WCountDown : 生成・管理
PC_Game ..> WPauseMenu : 生成・管理
PC_Game ..> WControlGuide : 生成・管理
PC_Game ..> APlayerDirectionIndicator : 生成・管理

%% Ghost
AGameSceneBase --> MGhostRecorderComponent : Raceを記録
AGameSceneBase --> AGhostPlayer : Ghost再生を管理
AGhostPlayer *-- MGhostPlaybackComponent : Playback

%% Persistent state
AGameSceneBase --> GI_main : Result等を保存
APlayer --> GI_main : Camera設定等を取得
classDiagram
    direction LR

    AGameModeBase <|-- ALobbyScene
    APlayerController <|-- PC_Lobby
    AActor <|-- ALobbyPlayerState
    GameInstance <|-- GI_main

    ALobbyScene --> PC_Lobby : Lobby操作を担当
    ALobbyScene *-- ALobbyPlayerState : PlayerState生成・管理
    PC_Lobby --> ALobbyPlayerState : Player状態を参照・変更
    ALobbyScene --> GI_main : Lobby情報を保存

    PC_Lobby ..> WLobbyHUD : UI管理
    PC_Lobby ..> WMapSelectDialog : Map選択
    PC_Lobby ..> WLeaveLobbyConfirmDialog : 退出確認