게임 프로그래밍을 처음 배울 때 C 언어부터 시작하라는 말을 자주 듣습니다. C는 오래된 언어지만 컴퓨터가 메모리를 어떻게 다루는지 그대로 보여 주기 때문에, 이후 C++나 C#을 배울 때 단단한 바탕이 됩니다. 이 글은 C 언어 기초를 게임 장면에 빗대어 설명합니다.
왜 게임 프로그래밍 입문에 C 언어인가
상용 게임 엔진은 대부분 C++로 만들어져 있고, 언리얼 엔진도 C++를 씁니다. C++는 C의 문법을 거의 그대로 물려받았기 때문에 C를 먼저 익히면 C++의 기본 문법이 자연스럽게 따라옵니다.
또 C는 메모리 주소, 자료형 크기 같은 저수준 개념을 숨기지 않습니다. 나중에 게임이 느려지거나 메모리가 새는 문제를 만났을 때, 그 원인을 이해하는 힘이 여기서 생깁니다.
C는 문법이 작아서 배울 양이 상대적으로 적다는 장점도 있습니다. 기능이 적은 대신 프로그래머가 직접 해야 할 일이 많아, 컴퓨터가 실제로 어떤 순서로 일을 처리하는지 손으로 익히게 됩니다.
변수와 자료형: 캐릭터 정보를 담는 상자
변수는 값을 담아 두는 이름 붙은 공간입니다. 게임 캐릭터의 체력, 레벨, 이동 속도는 모두 변수로 표현합니다. 자료형은 그 상자에 어떤 종류의 값이 들어가는지 정하는 약속입니다.
| 자료형 | 담는 값 | 게임 예시 |
|---|---|---|
| int | 정수 | 체력 100, 레벨 5, 골드 개수 |
| float / double | 소수 | 이동 속도 3.5, 공격 확률 |
| char | 문자 하나 | 입력 키 'W' |
| 배열 | 같은 종류 여러 개 | 인벤토리 칸, 몬스터 목록 |
C에서는 변수를 쓰기 전에 자료형을 꼭 밝혀야 합니다. 이 습관이 나중에 C++와 C#에서도 그대로 이어집니다.
조건문과 반복문: 게임의 규칙을 만드는 도구
조건문(if, switch)은 '체력이 0 이하이면 사망 처리'처럼 상황에 따라 다른 행동을 하게 합니다. 반복문(for, while)은 같은 일을 여러 번 하게 합니다. 화면 속 모든 몬스터를 하나씩 확인해 움직이게 하는 일이 반복문의 대표적인 쓰임입니다.
- if: 플레이어가 아이템에 닿았으면 획득 처리
- switch: 입력 키에 따라 위·아래·왼쪽·오른쪽 이동
- for: 몬스터 배열을 처음부터 끝까지 돌며 위치 갱신
- while: 게임 종료 신호가 올 때까지 계속 반복
함수: 기능을 묶어 재사용하기
함수는 특정 일을 하는 코드 묶음에 이름을 붙인 것입니다. 데미지 계산, 경험치 획득, 레벨업 처리처럼 여러 곳에서 쓰는 기능을 함수로 만들어 두면 같은 코드를 반복해서 쓰지 않아도 됩니다.
좋은 함수는 한 가지 일만 합니다. '공격하고, 이펙트 내고, 점수 올리기'를 한 함수에 모두 넣기보다 각각 나누면 버그를 찾기 쉽고 수정도 편해집니다. 이 감각은 이후 객체지향 설계로 이어집니다.
포인터: 처음 막히는 곳, 그래도 넘어야 하는 곳
포인터는 값 자체가 아니라 값이 저장된 메모리 주소를 담는 변수입니다. 처음에는 어렵게 느껴지지만, 큰 데이터를 복사하지 않고 주소만 넘겨 빠르게 처리하는 데 꼭 필요합니다. 수천 개의 총알이나 파티클을 다루는 게임에서는 이런 차이가 성능에 직접 영향을 줍니다.
포인터를 배울 때는 그림을 그려 가며 '어느 상자가 어느 상자를 가리키는지' 따라가 보는 것이 가장 효과적입니다. 동적 메모리 할당(malloc, free)까지 익히면 메모리를 직접 빌리고 돌려주는 흐름을 이해하게 됩니다.
입문 다음 단계와 연습 방법
- 콘솔 화면에 숫자 맞히기, 가위바위보 같은 작은 게임을 만들어 봅니다.
- 배열과 구조체로 몬스터 여러 마리의 정보를 관리해 봅니다.
- 포인터와 동적 할당으로 크기가 바뀌는 목록을 만들어 봅니다.
- 그다음 C++의 클래스와 객체지향으로 넘어갑니다.
SBS아카데미게임학원 게임프로그래밍 과정은 첫 단계에서 C언어와 C++의 기본 데이터, 흐름 제어, 함수와 포인터를 다룬 뒤 WinAPI로 넘어가는 구성입니다.
자주 묻는 질문
C 언어를 건너뛰고 C#이나 유니티부터 해도 되나요?
가능합니다. 다만 메모리와 포인터 개념을 모르면 성능 문제를 이해하기 어려울 수 있어, 언젠가는 C 계열 기초를 따로 다져 두는 것이 좋습니다.
C 언어 공부에 수학이 많이 필요한가요?
기초 문법 단계에서는 사칙연산과 논리 정도면 충분합니다. 게임 수학은 문법을 익힌 뒤 벡터와 행렬부터 차근차근 배우면 됩니다.
