紹介動画
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}

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 : 退出確認