PyCon KR 2019 뱅크샐러드 돌아보기
핵심 내용
뱅크샐러드가 PyCon KR 2019에서 Python 기반 오픈소스 게임 엔진 Pyxel을 활용한 인터랙티브 게임 이벤트를 진행했다.
자세히 보기
뱅크샐러드는 PyCon KR 2019에서 키스톤 후원사로 참여하며, 엔지니어 4명이 발표자로 나섰다. 특히 작년 온라인 이벤트와 달리 올해는 오프라인 부스에서 Pythonic Adventure와 Challenge라는 인터랙티브 게임을 운영해 방문객들의 큰 호응을 얻었다.
Pyxel 기반 게임 개발
게임 엔진으로는 Python 기반 오픈소스인 Pyxel을 채택했다. Pyxel은 간단한 픽셀 게임 제작에 용이하고 학습 곡선이 낮아 Python 언어로 직접 개발할 수 있다는 장점이 있다. update 함수에서 프레임 업데이트를, draw 함수에서 화면 렌더링을 수행하는 구조로 구현되었으며, 이미지 스프라이트는 pyxel.blt API를 통해 특정 위치와 크기로 그려진다.
리소스 처리 측면에서는 일반 오디오 파일 대신 문자열 기반의 문자열 표기법을 사용해 사운드를 정의하고, pyxel_music_tool을 활용해 음표를 변환했다. 또한 타일맵은 .png 파일을 .pyxres 형식으로 변환하여 사용했다.
Python 원리를 활용한 게임 메커니즘
게임은 빈칸을 채워 코드를 완성하면 몬스터를 공격하는 방식이다. Adventure는 초보자용, Challenge는 숙련자용으로 난이도를 구분했으며, Python의 내부 동작 원리를 이해해야 풀 수 있는 문제를 출제했다.
- 부동소수점 연산:
0.1 + 0.1 + 0.1의 결과가0.30000000000000004가 되는 IEEE 754 표준 특성을 이용해,len(str(...))을 통해 최대 피해량(4 ** 19)을 계산하는 문제를 제시했다. - 진법 변환:
int('10101', 16)처럼 두 번째 인자(base)를 활용해 십진수 65793과 같은 큰 값을 생성하는 문제를 통해 진법 변환 원리를 테스트했다. - Truth-value Testing:
len,dir등 내장 함수가True로 평가되는 Python의 진리값 테스트 특성을 활용해 최대 피해를 계산하는 문제를 출제했다. - List Comprehension:
sum([int(i == i) for i in range(10, 90)])처럼 리스트 내포와 논리 연산자를 조합해True값을 최대로 만드는 문제를 통해 Python의 평가 순서를 이해하도록 유도했다.
뱅크샐러드는 이러한 문제를 통해 참가자들이 Python의 세부적인 동작 방식과 라이브러리 활용법을 재미있게 학습할 수 있도록 기획했으며, 예상보다 많은 인파로 인해 대기 줄이 길어진 점에 대해 사과했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.