파이썬 게임 개발: Pygame 시작하기
세상에는 게임 개발을 위한 많은 게임엔진들이 있고, 그중에는 파이썬을 위한 게임 엔진들도 많습니다. 이번에는 Pygame을 사용하는 기본적인 방법을 다룹니다. 파이게임(Pygame)은 주로 2D 게임을 개발하기 위한 파이썬 패키지입니다.
파이게임은,
- 전용 IDE(통합개발환경)이 없습니다: 대부분의 게임개발은 소스코드에디터에서 이루어지며 게임에 사용하는 이미지, 음향 등은 별도로 작업해야 합니다.
- 하나의 창만 관리합니다: 물론 다른 GUI 패키지를 사용하여 새로운 창을 만들 수는 있지만 두개의 파이게임을 동시에 실행할 수는 없습니다.
- 3D지원이 굉장히 빈약합니다: 예제에는 3D 랜더링한 작품들이 많이 보입니다만 굉장히 코드가 난해해지고 파이게임의 모듈이 아닌 것들을 활용하기에 게임에 필요한 자원이 급격히 증가합니다. Panda3D와 같은 3D 게임을 위한 파이썬 엔진을 사용하시는 것이 좋습니다.
- 빌드 도구를 제공하지 않습니다: 게임을 독립실행 파일로 만들기 위해서는 PyInstaller등 별도의 파이썬 빌드도구가 필요합니다.
개발도구 및 패키지 설치
여기서는 Windows 11 환경에서 윈도우 스토어를 통해 받은 Python 3.9.9를 사용하며, 소스코드 에디터로 VS Code를 사용합니다.
다음에는 대강 새로운 폴더를 만들고 VS Code를 열었습니다. Ctrl + ` 키를 눌러 터미널을 열고 .pyenv
라는 이름으로 가상환경을 생성합니다. PS >
는 파워쉘(PowerShell)스크립트를 의미합니다.
PS > python -m venv .pyenv
디렉토리 이름 앞에 .
을 붙이면 VS Code의 파일탐색기에서 최상단으로 가기 때문에 별로 볼일없을거 같은 디렉토리의 이름을 지을 때는 이렇게 만들고 있습니다.
이제 방금 만든 파이썬 가상환경을 실행합니다.
PS > & .pyenv/Scripts/Activate.ps1
PIP를 업데이트 한 뒤 파이게임을 설치합니다.
PS > python -m pip install --upgrade pip
PS > pip install pygame
파이게임 헬로월드
헬로월드(Hello world)는 초보일 때 소스코드 기초를 배우기 위한 것 뿐만 아니라 내가 환경을 제대로 구성했는지 확인하는 중요한 역할을 합니다. 허겁지겁 코드부터 만든 뒤 오류가 나면 설치 오류인줄 모르고 한참을 헤멜 수 있으니 새로운 개발환경을 구성한 뒤에는 꼭 헬로월드부터 해보시는 것을 추천합니다.
hello.py
파일을 만들고 아래의 내용을 복사해서 붙여넣습니다. 나무위키를 참조한 코드입니다.
import pygame
import sys
from pygame.locals import QUIT
width = 600
height = 400
white = (255, 255, 255)
black = (0, 0, 0)
fps = 30
pygame.init()
pygame.display.set_caption("Hello, world!")
displaysurf = pygame.display.set_mode((width, height), 0, 32)
clock = pygame.time.Clock()
gulimfont = pygame.font.SysFont("굴림", 70)
helloworld = gulimfont.render("Hello, world!", 1, black)
hellorect = helloworld.get_rect()
hellorect.center = (width / 2, height / 2)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
displaysurf.fill(white)
displaysurf.blit(helloworld, hellorect)
pygame.display.update()
clock.tick(fps)
파이게임 예제
예제를 통해 파이게임의 기능과 구현방법을 살펴볼 수 있습니다.
예시로 aliens
를 실행합니다.
from pygame.examples import aliens
aliens.main()
예제 모듈을 불러와 main()
를 실행하면 게임을 실행할 수 있습니다. 몇 개의 예제는 pyopengl
과 numpy
패키지를 필요로 합니다.
aliens
: 방향키와 스페이스를 사용한 우주선 격추 게임입니다.arraydemo
: 클릭할 때마다 조작된 이미지를 보여줍니다. S 키로 그림을 저장할 수 있습니다.blit_blends
: 이미지 오브젝트의 밝기를 조정합니다.camera
: 웹캠이 있는 경우 영상을 보여줍니다.cursors
: 게임 내 마우스 커서를 변경합니다.dropevent
: 이미지 파일의 드래그 앤 드롭 기능을 보여줍니다.eventlist
: 파이게임의 마우스/키보드 입력 이벤트를 확인할 수 있습니다.font_viewer
: 모든 시스템 글꼴를 랜더링하여 보여줍니다.freetype_misc
: 프리타입 글꼴을 랜더링합니다(실행함수는run()
).glcube
: 파이게임 안에 OpenGL 큐브를 랜더링합니다.moveit
: 오브젝트를 움직입니다.pixelarray
: 이미지 배열을 처리하는 방법을 보여줍니다.stars
: 클릭 지점을 중심으로 별이 흩어집니다.textinput
: 텍스트 입력을 받습니다.vgrade
: 수직 그라데이션을 numpy로 생성하고 걸린 시간을 측정합니다.
'프로그래밍 > 파이게임' 카테고리의 다른 글
Pygame: 등축투영 타일의 좌표 (0) | 2022.01.23 |
---|---|
Pygame: 타일셋 그리기(3) - 바닥 타일셋 그리기 (0) | 2022.01.21 |
Pygame: 타일셋 그리기(2) - 지형 타일셋 제작 (0) | 2022.01.20 |
Pygame: 타일셋 그리기(1) - 코딩으로 기본 타일셋 생성 (0) | 2022.01.19 |
Pygame: 타일 맵 만들기 (0) | 2022.01.18 |
댓글