티스토리 뷰

지원 및 동기

2022년 당시 3학년인 저는 졸업후 진로고민 하고 있던 중 광고에서 메이플스토리월드 해커톤을 발견하고 개발트랙으로 지원하였습니다.

지원 양식의 질문은 무난했던 것 같습니다. 지원 동기, 게임개발 경험 등 질문별로 최소 글자수가 존재하였으며, 성실하게 작성하여 제출하였습니다.

 

합격자 발표 및 교육시작

예정된 합격자 발표일에 탈락문자를 받았으나 몇시간 후 합격문자를 다시 받았습니다. 뭔가 해프닝(?)이 있었던  것 같으나 합격해서 기분이 좋았습니다.

교육이 시작된 첫 째주에는 유투버 조코딩님의 메이플월드 사용법 및 간단한 게임제작 실습영상(https://youtu.be/GzxSUjhbFNQ)을 시청하였습니다.

 

교육내용

일반적인 해커톤과 달리 메이플스토리월드 해커톤은 12주로 구성되었으며 게임제작에 앞서 게임제작에 필요한 교육을 충분히 제공하여 좋았던 것 같습니다. 저는 고등학교 때 게임개발 경험이 있었고, 팀원은 처음으로 게임개발을 시작하신 분이였는데 프로그램 후반부에 가서는 어려움없이 기획한 게임제작이 가능하였습니다.

 

해커톤 기간동안 총 5개의 미션(개인 or 팀)과 두번의 퀴즈(개인)가 제공되었습니다. 미션의 난이도는 게임제작 활동하면 자연스럽게 해야할 일이여서 어려움이 없었고, 퀴즈는 교육교안이나 조코딩님 게임제작실습 내용에서 출제되었던 것 같습니다.

 

해커톤 진행기간 동안 디스코드에서 공지가 제공되고 노션에서 교안과 교육영상 링크를 제공하였습니다. 게임을 제작하는데 필요한 기초개념, 메이플스토리월드 사용법, 장르별 게임제작 실습교안이 제공되었습니다.

 

게임제작

팀 빌딩 이후 저희팀은 매주 1회 팀회의를 진행하였습니다. 팀빌딩 이후 몇주간은 개인교육기간이였지만 상관없이 팀회의를 하였던점이 결과적으로 좋았던 것 같습니다.

저희팀은 상황에 따라 오프라인과 온라인 두방식으로 진행하였는데 원활한 진행면에서는 오프라인이 좋았던 것 같습니다. 첫번째와 두번째 회의에서는 앞으로 제작해야하는 게임에 대해 토의하였고 어떤 공부를 해야할지 의논하였습니다. 결과적으로 저희팀은 다양한 미니게임을 만들어 스토리와 조합하는것을 목표로 하였습니다.

 

제가 맡은 미니게임은 사다리게임, 사천성, 슬라임 분할 입니다.

 

1. 사다리 게임

사다리게임 인게임화면

사다리 게임은 흔히 아는 똥피하기 게임을 응용한 게임입니다. 흔히 위에서부터 떨어지는 물체를 피하는 것을 역발상하여 하는에서 떨어지는 사다리를 이용하여 오르고 다른 사다리로 갈아타며 바닥에 닿지 않도록 오래 버티는 게임입니다.

 

랜덤으로 생성되는 사다리가 겹치지 않도록 생성 후 이미 생성된 사다리와 충돌하는지 검사하는 함수를 활용하였습니다. 또한 억까(?)패턴을 방지하기 위해 실험을 통해 생성주기 시간을 설정하였습니다. 이것도 검증해주는 알고리즘을 개발해보면 좋겠다고 생각이 들었습니다.

 

2. 사천성

제작과정

제가 제작한 3가지 미니게임중 가장 난이도가 높았고 시간을 많이 투자했던 것 같습니다.

우선 사천성 게임룰은 두 패가 일치하는지 뿐만아니라 두 패 사이의 최소꺽는 횟수가 2회이여야 매칭성공입니다.

꺽는 횟수가 고려되지 않는다면 bfs, 다익스트라 알고리즘도 충분하였지만 꺽는횟수가 고려되는 새로운 탐색알고리즘이 필요하였습니다.

이점을 고민하던중 A* 알고리즘에 대해 알게되었습니다. A* 알고리즘의 특징으로는 시점과 종점이 정해져있고 휴리스틱 추정값이 존재한다는 점이였습니다. 게임에서 두 패가 선택되기 때문에 시점과 종점은 정해졌고 휴리스틱 추정값을 꺽은 횟수*COST로 설정하여 매칭알고리즘을 구현하였습니다.

매칭 알고리즘의 핵심 식으로는 dist(x) = (시점에서 x까지의 맨하탄 거리) + (시점에서 x까지 꺽은횟수)*COST + (x에서 종점까지 맨하탄거리) 입니다. COST값을 크게 주고 우선순위큐를 통해 꺽은횟수가 적은순으로 탐색을 진행하였습니다. 또한 꺽은횟수가 3회이상일때부터는 룰에의해 매칭실패이기 때문에 탐색을 멈춰야합니다.

 

매칭알고리즘 구현이 쉽지가 않았지만 더 큰 고통(?)은 매칭경로를 그려주는 reconstruct함수 구현했을 때였습니다. 현재 가중치와 직전 후보들의 가중치를 비교하여 종점에서 시점까지 찾아가는식으로 구현하였습니다. 두 거리가 비교적 짧을때는 의도되로 경로가 재구성되었지만, 두 거리가 멀어질 때 직각형태가 아닌 지그재그(꺽는횟수 3회이상)방식으로 경로가 재구성되는 문제가 발생하였습니다. 

해당 문제는 현재로 부터 직전 경우의수만 고려되어 모호한 상태가 발생되어 직전뿐만 아니라 직전의직전까지 고려하여 유일한 경로를 구성하여 해결하였습니다. 이 문제점을 찾기위해 오랜시간동안 눈물의 디버깅(?)을 하였지만 문제해결하였을때 쾌감은 아직도 잊지못합니다..

사천성게임 인게임화면

 

3. 슬라임 분할

슬라임 분할 인게임

슬라임 분할 게임은 Ballon pang 게임을 모티브로 제작되었습니다. 해당 게임 기획할때와 달리 막상 제작난이도가 높았습니다. 메이플월드에서 제공하는 물리기능도 있지만 해당 게임에서는 인터렉티브하게 중력이 달라져야하기 때문에 슬라임에 크기와 중력을 비례하는 (야매)공식을 만들어 적용하였습니다. 슬라임 분할 게임제작은 해커톤 막바지에 제작시작하여 슬라임과 플레이어 충돌처리를 못한점과 다양한 클래스제공이 기획당시 목표였는데 달성하지 못해 아쉬움이 많이 남았습니다.

 

개인적인 게임제작뿐만 아니라 팀활동도 많이하였는데 기획자님이 열일해준결과 게임제작이 안터지고 수월하게 진행된 것 같습니다.

팀 노션페이지를 관리와 할일 목록 리스트관리 스케쥴까지 맡아주신 결과 개발에만 집중할 수 있었고 전체적으로 길을 잃지 않고 게임완성을 할 수 있었던 것 같습니다. 다시 한번 기획자님의 중요성을 깨닫는 계기가 되었습니다..

 

해커톤당일

이번 오프라인 해커톤은 수원컨벤션센터에서 진행되었습니다. 저희팀은 각자 만든 미니게임을 오프라인 해커톤에서 합치기로하였는데, 합치는 작업이 간단하지가 않아 전체적인 게임퀄리티가 목표한것만큼 나오지 않아 아쉬웠습니다.

당일에는 해커톤 프로그램말고도 메이플월드 레퍼런스가 열렸고 개발집중시간이 주어졌지만 강연이나 레크레이션등 12주동안 해커톤한것에 대한 축제(?)느낌이 강하게 느껴졌습니다. 

 

게임출시 및 느낀점

해커톤 시작일에 밤을새우고 다음날 마감기한인 새벽즈음 게임출시를 완료하였습니다.

개인적으로는 각각의 게임완성이 되면 쉽게 게임완성이 될거라 생각하였는데 합치는 작업이 게임제작보다 더까다롭다는 점을 알게되었고 이점을 알았다면 시간을 더 할애하여 합치는 작업을 했더라면 기획과 가까운 결과물이 나올수도 있었겠다 아쉬움을 느꼈습니다. 아쉬움과 별개로 게임인트로 사진은 디자이너님의 능력 오버플로우(?)로 인해 게임퀄리티에 비해 너무 좋게나와서 사기에 가깝지 않나 자책을 느꼈습니다. 출시까지 우여곡절이 있었지만 그 모든과정을 통해 배운점이 있었고 팀원분들과 훈훈하게 마무리하여 개인적으로 성공적인 해커톤이었다고 느꼈습니다.

 

+ 개발할때 느낀 부족한점이나 개발새발 코드를 리팩토링하여 재출시할 예정입니다.

 

수료증 발급

 

 

다른 프로그램과 마찬가지로 수료증을 받았는데 개인적으로 디자인이 예쁜것 같습니다.

'후기' 카테고리의 다른 글

ICPC 후기(일기)  (1) 2024.01.06
댓글