간단한게임만들기

7. 간단한게임만들기

이번장에서는 Python tkinter를 이용해 게임을 만들어보겠습니다.

게임은 대표적인 GUI 프로그램입니다. 당연하겠죠? 게임을 하려면 뭔가 눈에 보이는 것이 있어야 하니까요.

게임을 개발하는 언어는 다양합니다. 자신이 처한 상황에 따라 게임 개발 언어를 선택해야 합니다. 주요한 선택 기준은 다음과 같습니다.

선택 기준

설명

게임 엔진

어떤 게임 엔진을 사용할지에 따라 언어가 결정됩니다. 예를 들어, Unity는 C#을 사용하고, Unreal Engine은 C++을 사용합니다.

타겟 플랫폼

모바일, 웹, 데스크톱 등 목표 플랫폼에 따라 적합한 언어가 다릅니다. 예를 들어, 모바일 게임은 Java(Kotlin), Swift 등을 사용할 수 있습니다.

개발 팀의 경험

개발 팀이 이미 잘 알고 있는 언어를 사용하는 것이 효율적입니다.

성능 요구사항

고성능이 요구되는 게임은 저수준 메모리 제어가 가능한 C++ 등이 적합합니다.

생산성

빠른 프로토타이핑과 간단한 게임은 Python, JavaScript 등을 사용할 수 있습니다.

게임을 개발하기 위해서는 그래픽, 사운드, 물리 엔진 등을 개발자가 제어해야 합니다. 모든 것을 코딩해야 한다는 뜻입니다. 하지만 게임 개발자가 모든 것을 할 수 없으므로, 게임 개발에 필요한 기능을 미리 구현하여 제공하는 프레임워크를 사용하게 됩니다.

파이썬으로 게임을 개발하려면 PyGame, Panda3D, PyOpenGL 등과 같은 라이브러리와 프레임워크를 이용해야 합니다. 공부를 더 해야 한다는 뜻입니다. 게임 개발은 이 책의 범위를 벗어납니다. 관심 있는 독자는 관련 분야를 추가로 학습하시기 바랍니다.

우리는 GUI 프로그램을 간단히 응용하는 게임을 만들어 보고, 그 경험을 바탕으로 Python 응용 능력을 높이는데 목표가 있습니다.

../../_images/ch07_00_01_game_intro.webp

Fig. 7.1 파이썬을 이용해 간단한 게임을 개발할 수 있습니다.

참고로 게임 개발 프레임워크와 특징을 살펴보면 다음과 같습니다.

프레임워크(언어)

특징

Unity
(C#)

- 크로스 플랫폼 지원

- 강력한 에디터와 커뮤니티

- 2D 및 3D 게임 개발 가능

Unreal Engine
(C++)

- 고성능, AAA급 게임 개발에 적합

- 실시간 렌더링 및 물리 엔진

- 블루프린트 비주얼 스크립팅 지원

Godot
(GDScript, C#, C++)

- 오픈 소스, 무료

- 가벼운 설치 파일과 쉬운 배포

- 2D 및 3D 게임 개발 지원

PyGame

Python

- 교육용으로 많이 사용

- 2D 게임 개발에 주로 사용

Panda3D

Python, C++

- 디즈니와 CMU에서 개발

- VR 및 AR 지원

Cocos2d
(C++, Lua, JavaScript)

- 2D 게임에 특화

- 크로스 플랫폼 지원

- 많은 상업용 게임에서 사용

Phaser
(JavaScript)

- HTML5 게임 개발에 적합

- 빠른 프로토타이핑 가능

- 웹 브라우저에서 직접 실행 가능

Construct
(JavaScript)

- 비주얼 스크립팅을 통해 코드 작성 없이 게임 개발 가능

- 2D 게임 개발에 특화

- 교육용으로 많이 사용

CryEngine
(C++)

- 고성능, 사실적인 그래픽

- AAA급 게임 개발에 적합

- 강력한 샌드박스 편집기 제공

GameMaker Studio
(GML (GameMaker Language))

- 쉬운 게임 개발, 빠른 프로토타이핑 가능

- 2D 게임에 특화

- 다양한 플랫폼에 배포 가능

맨 위로 이동