로그인게임하기
현장 강의록

UML 다이어그램 읽는 법 — 게임 예제로 배우는 클래스·시퀀스·유스케이스

2026.10.11

현장 강의록 · 애니메이션고 2022 · 7편

UML의 화살표와 선은 무엇을 뜻하고, 클래스 다이어그램과 시퀀스 다이어그램은 언제 사용할까요? 게임 퀘스트의 유스케이스, 캐릭터 클래스의 관계, GameScene.Start의 호출 순서를 실습과 예제로 읽어 봅니다. 다이어그램의 관계를 C# 코드와 대조하며 게임 구조를 설명하는 방법을 익힙니다.

수업 정보

2022년 1학기 한국애니메이션고등학교 2학년 「3D 게임 프로그래밍」 3강 「프레임워크 설계를 위한 UML」에서 가르친 내용입니다.

WHY

UML 이 필요해진 까닭

알렌 교관이 제도대 위에 놓인 네 장의 설계도(행위자와 타원, 상자와 화살표, 세로 점선, 상태 고리)를 살피는 그림
UML 은 기획과 개발과 설계가 함께 읽는 그림 언어입니다.

UML(Unified Modeling Language)은 우리말로 통합 모델링 언어입니다. 소프트웨어 규모가 커지고 객체 지향으로 만들게 되면서, 기획과 개발 사이에 "누가 무엇을 하고, 어떤 클래스가 누구를 알고, 어떤 순서로 부르는지" 를 그림으로 약속할 필요가 생겼습니다. 설계만 맡는 아키텍트 직무가 생긴 것도 이 무렵입니다.

다이어그램무엇을 그리나답하는 질문
Use Case사용자와 기능누가 무엇을 할 수 있나?
Class클래스와 관계어떤 클래스가 있고 누가 누구를 아나?
Sequence시간 순서의 호출어떤 순서로 누가 누구를 부르나?
State Chart상태와 전환어떤 상태가 있고 언제 바뀌나? (다음 편)

수업에서는 Visual Paradigm 으로 그렸습니다. 도구는 무엇이든 괜찮고, 모양의 뜻을 아는 것이 중요합니다.

USE CASE

유스케이스 다이어그램

문제
  1. MMORPG 의 퀘스트에는 수락, 취소, 대화, 연속 퀘스트, 보상 선택 같은 쓰임새가 있습니다.
  2. 퀘스트 관련 콘텐츠를 유스케이스 다이어그램으로 그려 보세요.
MMORPG 퀘스트 유스케이스 다이어그램플레이어 캐릭터NPC 대화시작퀘스트 대화 진행대화 스킵퀘스트 수락퀘스트 취소퀘스트 완료보상 선택«include»«include»«include»«include»«include»«include» 연속 퀘스트«include»
정답. 플레이어가 직접 하는 일은 실선으로, 그 일에 딸려 오는 일은 «include» 점선으로 잇습니다.
모양뜻
사람 모양 (Actor)시스템을 쓰는 사람이나 바깥 시스템. 여기서는 플레이어 캐릭터
타원 (Use Case)사용자가 할 수 있는 일
실선Actor 가 직접 시작하는 일
«include» 점선 화살표그 일을 하면 반드시 따라오는 일. 화살표는 따라오는 쪽을 가리킵니다

플레이어가 직접 시작하는 일은 "NPC 와 대화 시작" 과 "퀘스트 완료" 둘뿐입니다. 대화를 시작하면 퀘스트 대화가 진행되고, 그 안에서 대화 스킵 · 수락 · 취소가 일어납니다. 퀘스트를 완료하면 보상을 고르고, 연속 퀘스트라면 다음 대화가 이어집니다. 기능 목록만 늘어놓았다면 놓쳤을 "연속 퀘스트" 연결이 그림에서는 화살표로 드러납니다.

CLASS

클래스 다이어그램

문제
  1. 3DLesson 솔루션에서 선언한 클래스들의 관계를 클래스 다이어그램으로 그려 보세요.
  2. 대상: Character, Controller, GameDB, GameScene, MonsterController, Weapon
3DLesson 클래스 다이어그램GameSceneControllerMonsterControllerCharacterWeaponGameDBcontrollercharacter1gameDB실선 화살표: 연관(멤버로 가짐) 점선 화살표: 의존(잠깐 씀) 빈 삼각형: 상속
정답. 그동안 수업에서 만든 클래스들의 관계입니다.
선뜻코드에서는
실선 + 열린 화살표 (연관)멤버 변수로 계속 가지고 있습니다Controller controller; 같은 필드
점선 + 열린 화살표 (의존)잠깐 불러 씁니다함수 안에서 GameDB.GetSingleton() 을 부름
실선 + 빈 삼각형 (상속)자식이 부모를 물려받습니다class MonsterController : Controller
관계가 코드에 나타나는 모양설명용 예시
public class GameScene : MonoBehaviour
{
    Controller controller;        // 연관: 실선 화살표 "controller"
    Character character1;         // 연관: 실선 화살표 "character1"
    GameDB gameDB;                // 연관: 실선 화살표 "gameDB"
}

public class MonsterController : Controller   // 상속: 빈 삼각형
{
    void Attack(Character target) { }         // 의존: 점선 화살표 (매개변수로 잠깐 씀)
}

선 이름(controller, character1, gameDB)은 멤버 변수의 이름입니다. 클래스 다이어그램을 보면 코드를 열지 않고도 "GameScene 이 무엇을 쥐고 있는지" 를 압니다. 반대로 화살표가 너무 많이 모이는 클래스가 보이면, 그 클래스가 너무 많은 일을 하고 있다는 신호입니다.

SEQUENCE

시퀀스 다이어그램

문제
  1. GameScene 의 Start() 함수에서 일어나는 호출을 다이어그램으로 그려 보세요.
  2. 라이프라인: GameScene, Character, GameDB, MtNetwork
GameScene.Start() 시퀀스 다이어그램GameSceneGameDBCharacterMtNetwork1: Create()2: Init()3: GetCharacter()4: transform.SetParent()5: Get()6: Start()6.1: Connect()7: RegisterGameListener()
정답. 위에서 아래로 시간이 흐르고, 번호는 호출 순서입니다.
모양뜻
위의 상자와 아래로 뻗은 점선 (라이프라인)객체와 그 객체가 살아 있는 시간
세로 막대 (활성화)그 객체가 일하고 있는 구간
실선 + 꽉 찬 화살촉함수 호출
점선 + 열린 화살촉객체를 만들거나(Create) 얻어 옴(Get)
자기에게 돌아오는 화살표자기 함수를 부름 (Init, Connect)
GameScene.Start()설명용 예시 — 다이어그램을 코드로
void Start()
{
    Character hero = Character.Create();         // 1: Create()  → 안에서 2: Init(), 3: GetCharacter()
    hero.transform.SetParent(transform);         // 4: transform.SetParent()
    MtNetwork net = MtNetwork.Get();             // 5: Get()
    net.Start();                                 // 6: Start()   → 안에서 6.1: Connect()
    net.RegisterGameListener(this);              // 7: RegisterGameListener()
}

Character 상자가 GameScene 보다 아래에서 시작하는 데 주목하세요. Create() 로 만들어지기 전에는 Character 가 없기 때문입니다. MtNetwork 도 Get() 으로 얻어 온 뒤부터 그려집니다. 시퀀스 다이어그램은 "언제 무엇이 생기는지" 까지 보여 줍니다.

STATE

상태 다이어그램

네 번째 다이어그램인 상태 다이어그램(State Chart)은 게임에서 특히 중요해서 다음 편에서 몬스터의 상태 머신과 함께 따로 다룹니다.

정리

  1. 유스케이스는 누가 무엇을, 클래스는 누가 누구를, 시퀀스는 어떤 순서로.
  2. 선의 종류가 뜻입니다. 실선은 가지고 있고, 점선은 잠깐 쓰고, 빈 삼각형은 물려받습니다.
  3. 이미 짠 코드를 다시 그려 봅니다. 화살표가 몰리는 곳이 고칠 곳입니다.

다음 편에서는 상태 다이어그램과 몬스터의 상태 머신, 그리고 게임 프레임워크 설계를 다룹니다.

함께 읽으면 좋은 글

AI가 만든 Unity 코드를 직접 검증해 보고 싶다면

이 글에서 살펴본 구조를 바탕으로 AI에게 작업을 요청하고 결과를 읽는 연습을 이어가세요. 「AI 코드를 읽는 게임 개발자」 무료 세션 1에서 시작하거나, 전체 커리큘럼과 수강 안내를 확인할 수 있습니다.

← 개발 노트 목록