Pygame으로 만드는 나만의 RPG 게임 3강입니다!
지난 시간에는 맵 경계 처리와 카메라 이동을 구현해서, 캐릭터가 화면 중앙에 위치하면서 자연스럽게 맵을 탐험할 수 있도록 만들었죠.
이번 강의에서는 본격적으로 **진짜 맵 구조**, 즉 타일맵(Tilemap)을 직접 만들어보고, 이를 Pygame에 불러오는 과정을 배워봅니다.
—
1. 타일맵(Tilemap)이란?
타일맵은 일정한 크기의 작은 타일 이미지(예: 32×32, 48×48)를 조합해서 하나의 큰 맵을 구성하는 방식입니다.
예를 들어,
- 잔디: tile_01.png
- 돌: tile_02.png
- 물: tile_03.png
이런 타일들을 격자 형태로 배치해서 하나의 지형을 만드는 것이죠.
장점은?
– 반복되는 이미지 저장 공간 절약
– 레벨 디자인 속도 향상
– 충돌 처리도 셀 단위로 관리 가능
—
2. Tiled Map Editor 설치
Tiled는 무료 맵 에디터입니다.
▶ 다운로드: https://www.mapeditor.org/
설치 후 다음 순서로 새 맵을 만듭니다:
- File → New → Tile Layer 선택
- 맵 크기: 50 x 30 타일 / 타일 크기: 48 x 48
- 타일셋 추가: 외부 이미지 파일 불러오기
- 맵을 자유롭게 드래그하여 디자인
- 파일 → Export → .json 형식으로 저장
—
3. 타일셋 만들기
타일셋은 여러 타일 이미지가 한 이미지에 모여 있는 스프라이트입니다.
예: 48×48 크기 타일 10개를 하나로 만든 이미지 (480×48)
저장 후 Tiled에서 불러올 때 타일 크기를 정확히 지정해야 합니다.
—
4. 맵 JSON 불러오기
Tiled에서 만든 JSON 맵 파일은 Python에서 불러와서 처리할 수 있습니다.
import json
with open("map.json", "r") as f:
map_data = json.load(f)
print(map_data.keys()) # layers, tilesets, width, height 등
우리가 실제로 그려야 할 건 `layers` 안의 `data` 배열입니다. 이 배열에는 타일 번호가 저장되어 있습니다.
—
5. 타일맵을 화면에 그리기
import pygame
import json
import os
TILE_SIZE = 48
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
# 타일셋 이미지 (타일 10개 가로 배열)
tileset = pygame.image.load("tileset.png")
# 타일 개수 계산
TILE_COLS = tileset.get_width() // TILE_SIZE
def draw_map():
with open("map.json", "r") as f:
map_data = json.load(f)
layer = map_data['layers'][0] # 첫 번째 레이어
data = layer['data']
map_width = map_data['width']
map_height = map_data['height']
for i, tile_num in enumerate(data):
if tile_num == 0:
continue # 0은 빈칸
tile_index = tile_num - 1
col = tile_index % TILE_COLS
row = tile_index // TILE_COLS
x = (i % map_width) * TILE_SIZE
y = (i // map_width) * TILE_SIZE
screen.blit(tileset, (x, y), (col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE))
이제 `draw_map()` 함수를 main 루프에 넣어서 호출하면 맵이 그려집니다!
—
6. 실습을 위한 참고 이미지 리소스
아래 무료 리소스를 활용해보세요:
—
7. 다음 강의 예고
4강 – NPC 만들기: 등장 위치 지정, 간단한 움직임, 상호작용 준비
다음 시간에는 맵 위에 NPC를 배치하고, 플레이어와 대화하거나 반응하는 구조를 만들어보겠습니다. 본격적인 RPG 세계관이 살아나는 순간이에요!
—
이 시리즈는 기획부터 시스템 구현까지, 실제 RPG 게임 제작 과정을 체험하며 배우는 실습형 강의입니다. 함께 진짜 게임을 만들어가봐요!