순서도의 마름모·사각형·화살표는 무엇을 뜻하고, 그 흐름을 C# 코드로 어떻게 옮길까요? 기호 여덟 가지를 익히고 랭킹·건설 버튼 예제와 반복문·로그인 흐름 실습을 따라갑니다. 갈림길과 반복, 여러 경로가 합쳐지는 지점을 읽어 코드 작성 전에 처리 순서를 정리하는 현장 강의록입니다.
2022년 1학기 한국애니메이션고등학교 2학년 「3D 게임 프로그래밍」 3강 「프레임워크 설계를 위한 UML」, 4강에서 가르친 내용입니다.
그림으로 약속하기
순서도 (Flow Chart)
기획자의 개발 의도를 논리로 그려 개발자에게 전합니다. 절차 지향 개발이 주로 쓰이던 시기에는 순서도로 충분했습니다.
UML
객체 지향이 자리 잡고 개발 규모가 커지면서 구조까지 그리는 약속이 필요해졌습니다. 다음 편에서 다룹니다.
순서도는 오래된 도구지만 지금도 쓸모가 큽니다. 버튼을 눌렀을 때 일어나는 일, 로그인 흐름, 결제 흐름처럼 한 장면의 순서와 갈림길을 맞출 때는 순서도가 가장 빠릅니다.
순서도 읽기
순서도는 사용자의 시나리오를 논리로 그립니다. 한 장에 시나리오를 하나씩 그립니다. 시작점에서 출발해 사용자의 선택이나 상태에 따라 사다리처럼 갈라지고, 마지막에 정해진 결과에 도착합니다.
위 그림을 따라가 봅시다. 배고픈가? 예 → 돈이 있는가? 예 → 치킨. 배고프지 않으면 졸린지 묻고, 졸리면 에너지 음료를 마시고 코딩합니다. 어느 길로 가도 끝은 정해진 결과 중 하나입니다. 갈림길(마름모)에서 나가는 화살표에는 언제나 예 / 아니오가 붙습니다.
순서도 기호 여덟 가지
| 기호 | 모양 | 언제 쓰나 | 예 |
|---|---|---|---|
| 시작 / 끝 | 둥근 막대 | 순서도의 처음과 마지막 | 게임 실행, 건설 클릭 |
| 초기화 | 육각형 | 변수에 처음 값을 넣거나, 준비 작업을 할 때 | i = 0, 랭킹 데이터 수신 |
| 처리(계산) | 사각형 | 계산하거나 일을 할 때 | i = i + 2, 데이터 정렬, 건설 실행 |
| 입력 / 출력 | 평행사변형 | 데이터를 읽거나 쓸 때 | 건축물 데이터 불러오기, 저장 |
| 조건 판단 | 마름모 | 예 / 아니오로 갈라질 때 | 비용 충분?, 로그인 성공? |
| 문서(인쇄) | 물결 사각형 | 문서나 보고서를 만들 때 | 결과 리포트 출력 |
| 결합 | 원 | 갈라졌던 길이 다시 만날 때 | 두 랭킹 페이지가 정렬에서 만남 |
| 모니터 출력 | 모니터 모양 | 화면에 보여 줄 때 | "건설 비용이 부족합니다.", i 출력 |
파랑은 흐름의 시작과 데이터, 빨강은 준비와 판단과 화면, 초록은 일을 하는 단계입니다. 색은 약속이 아니라 읽기 쉽게 하려는 장치이고, 모양이 약속입니다.
수업 예제: 랭킹 페이지와 건설 버튼
왼쪽 랭킹 페이지. 전투력 랭킹과 수집 랭킹은 받는 데이터만 다르고, 받은 뒤의 일(점수로 정렬해서 출력)은 같습니다. 그래서 두 길을 결합 기호(원)에서 합쳤습니다. 순서도에서 결합을 찾으면 코드에서 함께 쓸 함수가 보입니다.
오른쪽 건설 버튼. 건설을 누르면 건축물 데이터를 불러오고, 비용이 충분한지 묻고, 정말 지을지 한 번 더 묻습니다. 두 번의 "아니오" 는 각각 다른 안내 문구로 끝납니다. 안내 문구까지 순서도에 적어 두면 기획자와 문구를 맞추는 일도 함께 끝납니다.

실습 1: 반복
- 변수 i 를 0 에서 시작해 2 씩 늘리고, 10 보다 크면 화면에 출력하세요.
i 를 0 으로 초기화하고(육각형), 결합 기호를 지나 조건을 묻습니다. i 가 10 보다 크지 않으면 2 를 더하고 다시 결합 기호로 돌아갑니다. 위로 돌아가는 화살표가 곧 반복문입니다. 조건이 참이 되면 반복을 빠져나와 i 를 출력합니다.
int i = 0; // 초기화 (육각형)
while (!(i > 10)) // 조건 판단 (마름모) — 아니오면 계속
{
i = i + 2; // 처리 (사각형)
}
Debug.Log(i); // 모니터 출력 → 12출력되는 값은 12 입니다. 10 일 때는 "10 보다 크다" 가 거짓이라 한 번 더 2 를 더하기 때문입니다. 순서도를 손가락으로 따라가 보면 이런 경계값 실수를 코드 전에 잡을 수 있습니다.
실습 2: 자동 로그인
- 게임이 실행된 뒤 이전에 로그인한 기록이 있으면 마지막에 저장된 계정으로 자동 로그인하고, 없으면 구글 로그인으로 보냅니다.
- 로그인에 실패하면 구글 로그인으로 다시 보내고, 성공하면 성공한 계정을 저장합니다.
- 자동 로그인이든 수동 로그인이든 성공하면 로비로 이동합니다.
문장으로 읽을 때는 복잡해 보였던 요구가 그림으로는 갈림길 두 개와 반복 하나입니다. 주목할 곳은 결합 기호입니다. "자동 로그인 성공" 과 "수동 로그인 성공" 이 같은 곳에서 만나 로비로 갑니다. 로비로 가는 코드를 여러 군데에 둘 필요가 없다는 뜻입니다.
void Start()
{
bool alreadyLogin = PlayerPrefs.GetInt("AlreadyLogin", 0) == 1; // 입력: AlreadyLogin 읽기
if (alreadyLogin) GoLobby(); // 예 → 결합
else TryGoogleLogin(); // 아니오 → 로그인 시도
}
void TryGoogleLogin()
{
GoogleLogin(success =>
{
if (!success) { TryGoogleLogin(); return; } // 실패 → 다시 시도
PlayerPrefs.SetInt("AlreadyLogin", 1); // 출력: true 저장
GoLobby(); // → 결합
});
}
void GoLobby() => SceneManager.LoadScene("Lobby"); // 처리: 로비로 이동4강에서는 이 순서도를 실제 Unity 화면으로 구현했습니다. 순서도의 도형마다 코드 한두 줄과 맞아떨어지는 것을 확인하는 실습이었습니다.
순서도를 그릴 때의 약속
한 장에 시나리오 하나
로그인과 결제를 한 장에 그리면 읽을 수 없습니다. 장면마다 나눕니다.
위에서 아래로
흐름은 위에서 아래, 왼쪽에서 오른쪽으로 흐르게 둡니다. 돌아가는 화살표는 반복일 때만 씁니다.
모든 갈림길에 예 / 아니오
마름모에서 나가는 화살표에는 언제나 답을 적습니다. 빠진 답이 곧 빠진 예외 처리입니다.
정리
- 모양이 약속입니다. 둥근 막대는 시작 · 끝, 마름모는 판단, 원은 다시 만나는 곳입니다.
- 돌아가는 화살표는 반복문, 결합은 함께 쓸 코드입니다.
- 손가락으로 따라가 봅니다. 경계값과 빠진 예외를 코드 전에 찾습니다.
다음 편에서는 객체 지향의 구조를 그리는 UML 다이어그램을 다룹니다.
함께 읽으면 좋은 글
AI가 만든 Unity 코드를 직접 검증해 보고 싶다면
이 글에서 살펴본 구조를 바탕으로 AI에게 작업을 요청하고 결과를 읽는 연습을 이어가세요. 「AI 코드를 읽는 게임 개발자」 무료 세션 1에서 시작하거나, 전체 커리큘럼과 수강 안내를 확인할 수 있습니다.