Pygame
Pygame은 Python에서 2차원 게임과 멀티미디어 프로그램을 작성할 수 있도록 SDL의 기능을 제공하는 공개 소스 라이브러리 모음이다. Pete Shinners가 2000년경 시작했으며 창과 이벤트, 화면 그리기·스프라이트·입력·오디오 등 게임 개발에 반복해서 필요한 부분을 파이썬...
| 분류 | 게임 엔진 개발용 Python 멀티미디어 라이브러리 |
|---|---|
| 최초 개발자 | Pete Shinners |
| 개발 시작 | 2000년 |
| 개발 언어 | Python, C |
| 주요 기반 | SDL 2 (Simple DirectMedia Layer) |
| 주요 모듈 | pygame.display, event, draw, image, mixer, font |
| 오디오 | SDL_mixer 기반 효과음·음악 |
| 글꼴 | SDL_ttf·FreeType 기반 |
| 게임 상태 | 개발자가 직접 작성하는 업데이트·그리기 루프 |
| 입력 | 키보드, 마우스, 조이스틱·게임패드 |
| 이미지·그리기 | Surface·Rect·Sprite |
| 기타 기능 | 충돌 판정, 픽셀·수학·시간 관리 |
| 주요 플랫폼 | Windows, Linux, macOS 등 |
| 후속 포크 | pygame-ce (Community Edition, 2023년 이후) |
| 원본 라이선스 | GNU LGPL v2.1 |
| 예제 | 공개 도메인 예제 프로그램 |
| 공식 사이트 | pygame.org |
| 공식 저장소 | pygame/pygame |
| 별도 포크 | pygame-community/pygame-ce |
Pygame은 Python에서 2차원 게임과 멀티미디어 프로그램을 작성할 수 있도록 SDL의 기능을 제공하는 공개 소스 라이브러리 모음이다. Pete Shinners가 2000년경 시작했으며 창과 이벤트, 화면 그리기·스프라이트·입력·오디오 등 게임 개발에 반복해서 필요한 부분을 파이썬 코드로 다룰 수 있게 한다. 자체 레벨 편집기나 완성된 게임 규칙을 강제하지 않아 엄밀하게는 범용 게임 엔진보다 게임 개발 프레임워크·멀티미디어 라이브러리에 가깝다.[1]
Pygame의 기본 실행 방식은 개발자가 Python의 반복문 안에서 이벤트를 처리하고 게임 상태를 갱신한 뒤 화면을 그리는 구조다. pygame.display는 창과 화면 Surface를 만들고 pygame.event는 키보드·마우스와 창 관련 이벤트를 받아 처리한다. pygame.time.Clock을 이용하면 프레임 간 시간을 관리할 수 있으며 pygame.Rect와 Sprite 그룹은 사각형 충돌과 여러 객체의 갱신을 돕는다. 게임 세계와 카메라·애니메이션 시스템의 구조는 프로그램 작성자가 필요에 따라 설계한다.
화면 표시는 Surface와 Rect 및 pygame.draw, 이미지 로딩·변환 기능을 중심으로 한다. 이미지는 SDL과 SDL_image, 글꼴은 SDL_ttf 및 FreeType, 오디오는 SDL_mixer가 처리한다. 개발자는 Python으로 픽셀을 직접 수정하거나 스프라이트를 복사하고 여러 Surface를 한 화면에 그릴 수 있으며 NumPy와의 연동을 통해 배열 기반 이미지 처리도 가능하다. OpenGL을 이용할 때는 창·컨텍스트를 생성하는 기능과 별도의 Python 그래픽스 바인딩을 결합할 수 있다.[2]
Pygame의 라이브러리 수준에서는 고정된 게임 오브젝트 모델이나 물리 엔진, 네트워크 서버를 모두 제공하지 않는다. 개발자는 필요에 따라 자체 충돌·물리, 게임 상태와 AI를 Python 코드로 만들거나 다른 라이브러리를 추가할 수 있다. 코드 중심 개발 방식 때문에 교육용 2D 게임과 프로토타이핑, 프로그래밍 학습에 폭넓게 활용되며, 게임 루프·입력 처리·화면 갱신의 기본 원리를 직접 이해하기에도 유용하다.
2023년에는 기존 Pygame의 일부 핵심 개발자가 독립 포크인 pygame-ce(Community Edition)를 시작했다. 두 배포판은 많은 인터페이스와 공통 기술을 공유하지만 별도의 저장소와 릴리스 과정·기여 체계로 운영된다. pygame과 pygame-ce를 같은 패키지의 단순한 버전 차이로 이해하기보다 별개 소스 계열로 분류해야 한다. Python 프로젝트에서는 사용하려는 API와 해당 배포판의 버전·호환성을 확인해야 한다.[3]
원본 Pygame의 소스는 GNU LGPL v2.1로 배포된다. 이 라이선스는 Pygame을 이용한 게임 코드를 반드시 같은 라이선스로 공개해야 한다는 뜻은 아니며, 라이브러리 자체를 변경하여 배포하는 경우에는 해당 조건을 따라야 한다. SDL·이미지·글꼴·오디오와 기타 서드파티 구성 요소에는 각각의 라이선스가 적용된다. Pygame은 Python의 쉬운 문법과 네이티브 멀티미디어 라이브러리를 게임 제작에 연결한 초기의 대표적인 프레임워크다.[4]