Skip to content

MVC Architecture

김동욱 edited this page Dec 7, 2025 · 2 revisions

1. MVC Architecture

  • Overview

    • Provides a clear separation of concerns between game logic(Model), rendering(View), and flow control(Controller)
  • Purpose

    • Establish consistent development rules
    • Prevent mixing rendering logic with game logic
    • Improve maintainability, reduces merge conflicts
    • Enable parallel team development

Refactoring View Layer

[Before]

  • DrawManager: responsible for almost all rendering operations by itself
  • GameScreen: was partially responsible for rendering

[After]

  • GameView: Serve as Rendering Orchestrator for Game State (previously existed in GameScreen)
  • DrawManager: serve as Rendering Infrastructure Manager
  • SpriteAtlas: Manage all sprites of entities
  • DTO package: Transfer Model data to the View in a safe, structured form
    • HUDInfoDTO
    • ShopInfoDTO
  • Renderer package: Process actual rendering
    • EntityRenderer
    • UIRenderer
    • HUDRenderer
    • ItemRenderer
    • ShopRenderer
    • SpecialAnimationRenderer
  • BackBuffer
  • FontPack

Refactoring Model & Controller Layer(Separating Model with Controller)

[Before]

  • GameScreen: responsible for almost all Game logic, mixed with rendering and model

[After]

  • GameModel: responsible for central hub of all game play data and rules (previously existed in GameScreen, GameScreen serve as controller independently)
  • base package: defines fundamental interfaces and abstracts contracts shared across the game's core system
  • Boss package: defines all boss entity implementations
  • Bullet package: defines all projectile-related entity implementations
  • item package: defines all gameplay items and item-related components
  • Level package: defines all components related to stage configuration and progression
  • pattern package: defines all attack, movement, and behavior patterns used by bosses and enemies
  • ship package: defines all ship-type entities used by the player and enemies
  • skill package: defines all skills used by players
mvc

Clone this wiki locally