맨위로가기

Pygame

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Pygame은 피트 시너스가 개발한 파이썬 프로그래밍 언어 기반의 실시간 컴퓨터 그래픽스 및 컴퓨터 게임 개발을 위한 라이브러리이다. 2000년부터 자유 소프트웨어 커뮤니티 프로젝트로 시작되었으며, GNU 약소 일반 공중 사용 허가서에 따라 배포된다. 2009년 1.9.1 버전 이후 개발이 정체되었으나, 2016년 말부터 재개되어 2020년 10월 2.0.0 버전을 출시하였다. Pygame은 SDL 라이브러리를 사용하여 다양한 기능을 제공하며, 안드로이드 환경에서도 사용 가능하다.

더 읽어볼만한 페이지

  • 윈도우 API - 유니버설 윈도우 플랫폼
    유니버설 윈도우 플랫폼(UWP)은 마이크로소프트에서 개발한 애플리케이션 모델로, Windows 10, 11 등 다양한 기기에서 실행되는 앱 개발을 위한 통합 플랫폼이며, Visual Studio를 통해 개발되고 XAML Islands를 통해 기존 WinAPI 기반 애플리케이션에서도 활용 가능하다.
  • 윈도우 API - WinG
    WinG는 윈도우 3.x의 그래픽 성능 향상을 위해 개발된 기술로, DirectX로 발전하는 기반이 되었으며 한국 게임 산업에도 영향을 미쳤다.
  • MacOS API - 오픈스텝
    오픈스텝은 넥스트와 선 마이크로시스템즈가 개발한 객체 지향 프로그래밍 환경 및 API 표준으로, 넥스트스텝을 기반으로 다양한 운영체제에서 실행 가능하도록 설계되었으며, macOS, iOS의 Cocoa API 및 GNUstep과 같은 자유 소프트웨어 구현체의 기반이 되었다.
  • MacOS API - 코어 오디오
    코어 오디오는 macOS의 오디오 프레임워크로서 낮은 레이턴시와 유연한 설계를 특징으로 하며, 오디오 유닛 플러그인, 다양한 오디오 포맷, 그리고 하드웨어 추상화 계층 등의 서비스로 구성된다.
  • 리눅스 API - 와인 (소프트웨어)
    와인(Wine)은 유닉스 계열 운영체제에서 윈도우 응용 프로그램을 실행하기 위한 호환성 계층으로, 윈도우 API를 직접 구현하여 윈도우 프로그램이 리눅스, macOS 등에서 실행되도록 지원하며, 여러 기업의 후원을 받아 꾸준히 발전해왔다.
  • 리눅스 API - OpenAL
    OpenAL은 3차원 오디오를 위한 크로스 플랫폼 API로, 소스 객체, 오디오 버퍼, 리스너를 사용하여 3차원 공간에서 소리를 구현하며 다양한 운영 체제와 하드웨어를 지원한다.
Pygame - [IT 관련 정보]에 관한 문서
기본 정보
Pygame 로고
Pygame 로고
개발자Pygame 커뮤니티
최초 릴리스2000년 10월 28일
최신 릴리스 버전2.6.0
최신 릴리스 날짜2024년 6월 25일
운영체제크로스 플랫폼
장르API
라이선스GNU LGPL
웹사이트Pygame 공식 웹사이트
기술 정보
프로그래밍 언어파이썬
C
Cython
어셈블리어

2. 역사

Pygame은 개발이 중단된 PySDL을 대체하기 위해 피트 시너스(Pete Shinners)가 개발했다.[2][8] 2000년부터 커뮤니티 프로젝트로,[9] 자유 소프트웨어 GNU 약소 일반 공중 사용 허가서(GNU Lesser General Public License)에 따라 배포되어[5] Pygame이 오픈 소스 및 상업용 소프트웨어와 함께 배포될 수 있게 되었다.[10]

Pygame은 한동안 개발이 정체되었지만, 2020년 10월 28일 버전 2.0.0 출시 이후 활발하게 개발되고 있다.[35]

2. 1. 개발 정체와 Pygame 2 출시

Pygame은 개발이 중단된 http://pysdl.sourceforge.net/ PySDL을 대체하기 위해 Pete Shinners가 개발하였다.[41][46] 2000년부터 이어온 커뮤니티 프로젝트이며[47] 자유 소프트웨어 GNU 약소 일반 공중 사용 허가서로 배포된다.[44]

2009년 8월에 출시된 버전 1.9.1을 마지막으로 개발이 정체되었다. 2009년 말에 pygame reloaded로서 pygame2를 향해 나아가는 듯했지만, 이루어지지 않았다. 2016년 말부터 회복되어, 2019년까지 버전 1.9.2부터 1.9.5까지 출시되었다. 버전 1.9.5 이후, pygame2 개발이 재시동되었다. 이후 버전 2.0.0 릴리스 이후 활발한 개발이 유지되고 있다.[35]

2. 1. 1. Pygame 2 개발 이정표

Pygame 2 버전은 2009년에 "Pygame Reloaded"로 계획되었지만, 2016년 말까지 Pygame 1.9.1 버전의 개발 및 유지보수가 완전히 중단되었다. 2019년 3월 1.9.5 버전이 출시된 후, 새로운 2 버전 개발이 로드맵에서 활발하게 진행되었다.[11]

Pygame 2.0은 Pygame 20주년 기념일인 2020년 10월 28일에 출시되었다.[12]

pygame 2가 완성되는 상태에 대한 마일스톤[38]은 다음과 같다.

  • pygame API가 SDL2 위에서 하위 호환성을 유지하며 거의 작동해야 한다.
  • 일부 작동하지 않는 부분이 있다면, 그렇게 명시되어 있어야 한다.
  • 최소한 Mac, 리눅스, Windows용 바이너리가 파이썬 2.7, 3.4, 3.5, 3.6, 3.7, 32비트/64비트 버전으로 제공되어야 한다.

2. 1. 2. Pygame 2 출시 이력

Pygame 2 버전은 2009년에 "Pygame Reloaded"로 계획되었지만, 2016년 말까지 Pygame 1.9.1 버전의 개발 및 유지보수가 완전히 중단되었다. 2019년 3월 1.9.5 버전이 출시된 후, 새로운 2 버전 개발이 로드맵에서 활발하게 진행되었다.[11]

Pygame 2.0은 Pygame 20주년 기념일인 2020년 10월 28일에 출시되었다.[12] 2009년 8월에 출시된 버전 1.9.1을 마지막으로 개발이 정체되었다. 2009년 말에 pygame reloaded로서 pygame2를 향해 나아가는 듯했지만, 이루어지지 않았다. 2016년 말부터 회복되어, 2019년까지 버전 1.9.2부터 1.9.5까지 출시되었다. 버전 1.9.5 이후, pygame2 개발이 재시동되었다.

2019년 3월 31일, 이전부터 리팩터 릴리스(리팩토링 (프로그래밍))라고 불리던 버전 1.9.5가 출시되었으며, 다음과 같은 공지가 있었다.[36]

  • SDL2 지원을 병합했다.
  • 동일한 코드 베이스에서 SDL1과 함께 컴파일하는 것도 가능하므로, pygame 2로의 전환이 용이해진다.
  • pygame2가 SDL2와 함께 출시될 때까지 SDL1 기반의 pygame 1.9.x의 릴리스는 계속된다.


2020년 10월 28일, pygame 20주년에 버전 2.0.0 안정판이 출시되었다.[37]

날짜버전비고
2019년 5월 5일2.0.0.dev1pre-release
2019년 6월 20일2.0.0.dev2pre-release
2019년 7월 14일2.0.0.dev3pre-release
2019년 10월 8일2.0.0.dev4pre-release
2019년 10월 28일2.0.0.dev6pre-release
2020년 5월 6일2.0.0.dev8pre-release
2020년 5월 31일2.0.0.dev10pre-release
2020년 9월 20일2.0.0.dev12pre-release
2020년 10월 11일2.0.0.dev14pre-release
2020년 10월 20일2.0.0.dev16pre-release
2020년 10월 21일2.0.0.dev18pre-release
2020년 10월 22일2.0.0.dev20pre-release
2020년 10월 23일2.0.0.dev22pre-release
2020년 10월 27일2.0.0.dev24pre-release
2020년 10월 28일2.0.0정식 버전


2. 2. 지원하는 Python 버전

Pygame 1.9.x 버전은 Python 2.7 및 Python 3.4부터 Python 3.7까지 지원한다.[1] Pygame 2 버전은 Python 3.4부터 Python 3.8까지 지원하며, Python 2.7 지원도 당분간 계속된다.[1]

3. 기능

Pygame은 심플 다이렉트미디어 레이어(SDL) 라이브러리를 사용하며 실시간 컴퓨터 게임 개발을 가능하게 하는 것을 목표로 한다. 이는 C 프로그래밍 언어 및 파생 언어의 저수준 메커니즘을 사용하지 않고도 가능하다. 이는 게임 내에서 가장 비용이 많이 드는 기능들을 게임 로직에서 추상화하여, 파이썬과 같은 고수준 프로그래밍 언어를 사용하여 게임을 구조화할 수 있다는 가정에 기반한다.[5]

SDL이 제공하는 다른 기능으로는 벡터 수학, 충돌 감지, 2D 스프라이트 장면 그래프 관리, MIDI 지원, 카메라, 픽셀 배열 조작, 변환, 필터링, 고급 freetype 폰트 지원 및 그리기가 있다.[13]

Pygame을 사용하는 애플리케이션은 Pygame Subset for Android(pgs4a)를 사용하여 안드로이드 폰 및 태블릿에서 실행할 수 있다.[14] 안드로이드에서 사운드, 진동, 키보드 및 가속도계가 지원된다.[15]

4. 커뮤니티

Pygame은 원래 개발이 중단된 http://pysdl.sourceforge.net/ PySDL을 대체하기 위해 피트 시너스(Pete Shinners)가 개발한 것이다.[41][46] 2000년부터 이어온 커뮤니티 프로젝트이며[47] 자유 소프트웨어 GNU 약소 일반 공중 사용 허가서로 배포된다.[44]

과거 핵심 개발자와 저장소 소유자 간의 의견 불일치로 인해 pygame-ce (커뮤니티 에디션)라는 포크가 생성되었다.[16]

파이썬 (그리고 일반적으로, 필수는 아니지만 Pygame)을 사용하여 게임을 만드는 PyWeek라는 정기적인 대회가 있다.[17][18][19] 커뮤니티는 Pygame에 대한 많은 튜토리얼을 만들었다.[20][21][22][23][24]

5. Pygame을 사용한 주요 게임


  • 프레츠 온 파이어[25]
  • 위험한 고등학교 소녀들, 위험에 빠지다![26]
  • 슬링샷
  • [http://www.pygame.org/project-Spacemax-1698-.html Space Max (슈팅 게임)]

6. 관련 자료

Pygame은 개발이 중단된 http://pysdl.sourceforge.net/ PySDL을 대체하기 위해 피트 시너스(Pete Shinners)가 개발하였다.[41][46] 2000년부터 이어온 커뮤니티 프로젝트이며[47] 자유 소프트웨어 GNU 약소 일반 공중 사용 허가서로 배포된다.[44]

2D 엔진 및 라이브러리는 다음과 같다.


  • https://code.google.com/archive/p/pgu Pygame Utilities (PGU): Python을 강화하기 위한 도구와 라이브러리 모음이다. 도구에는 타일 편집기 및 레벨 편집기 (사각형, 등각 투영, 육각형)가 포함된다. GUI 강화에는 완벽한 기능을 갖춘 GUI, HTML 렌더링, 문서 레이아웃, 텍스트 렌더링이 포함된다. 라이브러리에는 스프라이트 및 타일 엔진, 상태 엔진, 타이머, 하이 스코어 시스템이 포함된다.
  • Pyglet: OpenGL 기반 라이브러리로, 게임이나 시각적으로 풍부한 애플리케이션을 만드는 데 사용된다.
  • [http://www.mirthkit.com MirthKit]: 크로스 플랫폼 2D 게임 제작 및 배포를 위한 간단한 툴킷이다.

7. 참고 문헌


  • L-Line영어 게임 프로그래밍 -- 파이썬과 pygame을 사용하여 프로그래밍과 게임 개발을 배우는 입문서[41]
  • Python영어과 Pygame을 사용한 컴퓨터 과학 입문 -- 파이썬과 pygame을 사용하여 프로그래밍을 배우는 전자책[44]

8. 샘플 코드

python

import pygame, sys

pygame.init()

screen = pygame.display.set_mode((1280, 720))

clock = pygame.time.Clock()

clock.tick(30)

black = 0, 0, 0

raccoon = pygame.image.load("raccoon.png")

raccoon = pygame.transform.scale(raccoon, (200, 140))

raccoonrect = raccoon.get_rect()

velocity = [1,1]

while True:

raccoonrect = raccoonrect.move(velocity)

if raccoonrect.left < 0 or raccoonrect.right > 1280:

velocity[0] = -velocity[0]

raccoon = pygame.transform.flip(raccoon,True,False)

if raccoonrect.top < 0 or raccoonrect.bottom > 720:

velocity[1] = -velocity[1]

for event in pygame.event.get():

if event.type == pygame.QUIT: sys.exit()

#screen update

screen.fill(black)

screen.blit(raccoon, raccoonrect)

pygame.display.flip()

```

다음은 가장자리에 닿으면 튕기는 "raccoon.png" 이미지를 만드는 코드이다.

참조

[1] 웹사이트 Contributors to Pygame https://github.com/p[...] GitHub
[2] 웹사이트 Python Pygame Introduction - History http://www.pygame.or[...] 2017-04-28
[3] 웹사이트 Downloads - Pygame - Python game development https://pypi.python.[...]
[4] 웹사이트 Yet another bug fix release https://www.pygame.o[...] 2023-12-02
[5] 웹사이트 About Pygame https://www.pygame.o[...] GitHub 2019-08-31
[6] 웹사이트 GettingStarted https://www.pygame.o[...]
[7] 웹사이트 How to Implement a Dialogue System in Pygame https://www.makeuseo[...] 2024-11-29
[8] 웹사이트 pySDL sourceforge page http://sourceforge.n[...]
[9] 웹사이트 commit by other authors https://github.com/p[...] GitHub
[10] 웹사이트 Pygame Front Page — pygame v2.0.1.dev1 documentation https://www.pygame.o[...] 2021-02-26
[11] 웹사이트 pygame 1.9.5 released into the wilds https://www.pygame.o[...]
[12] 웹사이트 pygame 2.0 - the happy dance birthday release https://github.com/p[...] GitHub
[13] 웹사이트 Pygame docs https://www.pygame.o[...]
[14] 웹사이트 Example of using RAPT to package pygame(_sdl2) games.: renpytom/rapt-pygame-example https://github.com/r[...] GitHub 2019-04-01
[15] 웹사이트 API — Pygame Subset for Android http://pygame.renpy.[...] 2014-10-14
[16] 웹사이트 pygame - Community Edition https://pypi.org/pro[...]
[17] 웹사이트 PyWeek - Python Game Programming Challenge http://www.pyweek.or[...]
[18] 웹사이트 Why PyWeek: An Interview with Richard Jones https://www.i-progra[...] 2020-03-31
[19] 웹사이트 PyWeek - Python Wiki https://wiki.python.[...] 2019-04-01
[20] 웹사이트 pygame documentation: Tutorials http://www.pygame.or[...]
[21] 웹사이트 Python Game projects with source code https://coderslegacy[...] 2020-12-25
[22] 웹사이트 Line by line tutorial - Tutorial for beginners http://pygame.org/do[...]
[23] 웹사이트 Creating Games with Python - A tutorial explaining how to use pygame for game development and improved execution http://www.linuxjour[...]
[24] 웹사이트 Arinoid tutorials video tutorials at ShowMeDo http://showmedo.com/[...]
[25] 웹사이트 fretsonfire/src at master · skyostil/fretsonfire https://github.com/s[...] 2023-06-02
[26] 웹사이트 Dangerous High School Girls in Trouble! http://pygame.org/pr[...] 2011-07-08
[27] 웹사이트 Python Pygame Introduction - History http://www.pygame.or[...] 2020-11-10
[28] Libregamewiki Libregamewiki's article on Pygame http://libregamewiki[...]
[29] 문서 An Introduction to Python Game Programming http://rene.f0o.com/[...]
[30] 문서 Line by line tutorial http://pygame.org/do[...]
[31] 문서 Creating Games with Python http://www.linuxjour[...]
[32] 문서 PyGame Tutorials http://pygametutoria[...]
[33] showmedo pyGame Basics http://showmedo.com/[...]
[34] Pyweek homepage Pyweek homepage http://www.pyweek.or[...]
[35] Github graphs/contributors https://github.com/p[...]
[36] 뉴스 pygame 1.9.5 released into the wilds — 31 Mar, 2019 https://www.pygame.o[...] 2019-03-31
[37] 웹사이트 pygame 2.0 - the happy dance birthday release https://github.com/p[...] GitHub 2020-11-10
[38] 문서 2.0 Milestone https://github.com/p[...]
[39] 웹사이트 Dangerous High School Girls in Trouble! http://pygame.org/pr[...] Pygame.org 2011-07-08
[40] 웹인용 Contributors to Pygame https://github.com/p[...] GitHub
[41] 웹인용 Python Pygame Introduction - History http://www.pygame.or[...] 2017-04-28
[42] 웹인용 Downloads - Pygame - Python game development https://pypi.python.[...]
[43] 웹인용 2.1.2 https://github.com/p[...] GitHub
[44] 웹인용 About Pygame https://www.pygame.o[...] GitHub 2019-08-31
[45] 웹인용 GettingStarted https://www.pygame.o[...] 2022-07-06
[46] 웹인용 pySDL sourceforge page http://sourceforge.n[...]
[47] 웹인용 commit by other authors https://github.com/p[...] GitHub



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com