PygameEngine
경희대학교 게임프로그래밍입문 수업 프로젝트
Pygame을 이용하여 게임엔진의 요소들을 구현해 보자.
교수님이 또다시 괴상한 과제를 내주셨다. Pygame으로 게임엔진만들기… 이게 되는건가 싶긴 한데, 본인이 만들고 싶은 기능을 만들어 보라고 하셨으니 만들어 보았다.
본 프로젝트에서의 핵심 컨셉은 절차적 지형 생성
이다.
게임 프로젝트를 진행하면서 가장 까다로웠던 부분이 맵을 구현하는 것이었기에, 자동으로 맵을 만들어 보고 싶었다. 그래서 핵심으로 절차적 지형 생성
을 구현하고자 했으며, 이것만으로는 조금 심심해서 카메라 기능도 넣고 간단한 봇도 추가했다.
사실 이걸 3D 렌더링 공간에서 구현하고 싶었다. 그런데 컴퓨터 성능 문제인 건지 게임을 실행할 수 없을 정도로 버벅이는 것이 아닌가. 눈물을 머금고 2D로 구현했다.
사실 원리는 간단하다. 지형을 리스트에 저장하고, 추가적인 로딩이 필요하면 근처 지형을 참고하여 다음 지형을 생성하면 된다. 여기서는 간단하게 근처 지형이 오르막/내리막/평지이면 다음 지형도 오르막/내리막/평지일 가능성을 높게 설정했다.
다음으로 봇이다. 봇은 수업에서 배운 경사하강법을 응용해서 가장 높은 곳으로 올라가려고 하는 성질을 부여했다. Adam 옵티마이저를 참고했으며, 어느정도 가중치를 부여했다.
카메라는 뭐… 그냥 카메라다. 다만 원하는 대상을 지정할 수 있는 기능을 추가했다.
추가로, 최적화를 위해 화면상에 존재하는 물체에 한해서만 충돌 검사를 하며, 물 속에 들어갔을 시 부력 작용 등 소소한 기능도 넣어 봤다.
혹시 관심 있는 사람이 있다면 Github 링크를 남기니 받아서 실행해 볼 수 있다.