지난 소마고 3년 동안 계속해서 지원했던 앱잼 해커톤에 참여할 수 있게 되었다.
친구들과 후배들은 이 행사에 많이 갔는 데 계속해서 떨어지다 그래도 뭐라도 할 수 있어서 다행이라고 생각했다.
앱잼 해커톤은 전국 고등학생 개발자들이 모여서 무박 2일 동안 주제에 맞게 해커톤을 하는 축제라고 할 수 있다.
이번에는 6월 22일 부터 6월 23일까지 인천 IT 타워에서 진행했다.
내가 사는 곳과 굉장히 멀리서 진행되는 만큼 행사에 가기 전 인천에 유명한 곳을 많이 방문하고 가려고 했으나 당일 폭우 때문에 그렇게 많은 곳에 가지 못했다.
행사장에 들어가서 방명록에 이름을 작성하고 웰컴 티셔츠를 받고 자리에 착석했다.
분야는 총 3가지로 나뉘어져있었다.
생활, 엔터, 미래
원래는 생활에 지원을 한 줄 알았으나 엔터로 정해져 있어 당황했으나 엔터에서 내가 할 수 있는 것이 무엇이 있는 지 살펴보면 좋을 것 같았다.
주제는 당일 행사장에서 발표되었다.
도파민과 관련된 서비스를 만드는 것이 목표였다.
이후 분야별로 다른 실로 들어가 팀 빌딩을 시작했다.
팀 빌딩은 기획자가 주제에 맞는 기획을 생각하고 그 기획에 따라 팀원들을 모으고 개발을 하는 방식이었다.
팀 빌딩은 아이스 브레이킹 이후에 시작되었다.
인터넷 방송을 보던 사람들은 다 아는 맞추기 게임으로 진행되었다.
임시로 4명씩 한 줄로 팀을 구성해 총 6팀으로 이벤트 경기를 시작했다.
국기 / 과자 / 치킨 / 라면 로 나뉘었고 하나 같이 다 골 때렸는 데
국기는 생전 처음 보는 국가들이 굉장히 많았고
과자는 봉지가 아닌 이미 한 번 개봉되어 있는 상태로 접시에 담아져 있었으며,
치킨은 이름을 회사 이름까지 같이 적어야 하는 경우가 많았고,
라면은 조리 후 사진으로 나왔다.
이렇게 우여곡절 끝에 과자로 총 6개를 맞힌 팀이 상품을 얻게 되었다.
기획자들이 기획을 하는 동안 개발자들과 디자이너들은 잠시 쉬었고 20분이 지나고 모든 기획이 나왔다.
엔터 분야에서 나온 기획은 다음과 같다:
1. 내 운은 과연 좋을까?
2. 고양이 성장 시키기 게임
3. 2인용 pvp 운빨 핀볼게임
4. 도파민을 피해 집중하는 게임
5. 3개의 창을 사용하는 퍼즐게임
6. 도파민으로 버티는 게임
내가 예상한 것과는 달리 엔터는 게임을 위한 자리라고 같은 분야에 있던 후배에게 들었다.
엔터라고 해봤자 인터넷 방송이나 음악 스트리밍 같은 플랫폼형 서비스를 생각했는 데 말이다.
어찌되었든 나는 여기서 할 수 있는 것들을 찾아야 했고 게임에서 사용 가능한 통신쪽으로 맡으면 되겠다.라는 생각이 들었다.
예전에 실시간 통신으로 웹 소켓을 다뤄 본적이 있어 그걸 활용하면 실시간으로 게임을 대전할 수 잇다는 생각이 들었기 때문이다.
그래서 통신이 필요하다면 어디가 가장 필요할까 하다가 핀볼 게임에 기여하기로 결정하였다.
이렇게 4명이 모여 팀을 이뤄냈다!
처음 나온 기획이 되게 모호한 부분이 많아 구체적으로 한 번 다시 짜야할 필요가 있었다.
핀볼 대전이라고 해도 어떻게 상대를 이길 수 있을 지, 득점 방식은 어떻게 하는 지, 그리고 주제에 맞게 도파민과 어떻게 연결해야 할 지 등을 말이다.
대전하는 방식으로는 뿌요뿌요 테트리스 같운 아케이드 게임처럼 서로가 서로의 화면을 바라보면서 아이템으로 상대를 방해할 수 있도록 하는 요소를 기본으로 깔았다.
그리고 이 UI를 핀볼로 적용시켰다.
사진이 이것뿐이라 ㅈㅅ
또한 온라인으로 대전을 하기 위해 지금까지 나온 기획을 바탕으로 통신 체계를 구성했다.
원래는 JSON 형식으로 통신하려고 했으나 다른 팀원들이 문자열에서 JSON으로 변환하는 방법을 몰라서 쉼표를 기준으로 분리하고 또 콜론으로 키와 값을 구분해서 딕셔너리로 받아오기로 했다.
클라이언트가 값을 보낼 때에는 별도의 계산이 필요하지 않도록 현재 상태가 업데이트 될 떄 마다 그 상태를 웹 소켓으로 보내기로 했고,
웹 소켓 서버에서 상대방이 무슨 상태를 가지고 있는 지 현재까지 나온 상태를 조합한 모든 정보를 정리해서 한 번에 보내줘 내 쪽에서 상대방의 화면을 렌더링할 수 있도록 체계를 구성했다.
또한 아이템으로 상호작용이 일어날 경우 그에 따라서 어떤 결과가 내게 오는 지도 보낸다.
원래는 상대방이 아이템을 활성화시킬 때만 보내려고 했는 데 많이 복잡해진 것 같다.
대충 이렇게 구성했다. 아까 말했듯 JSON을 기준으로 작성된 거라 아이템도 원래 리스트로 해서 여러 개를 소환할 수 있게 했으나 하지 못한 점이 아쉽다.
https://youtu.be/GhnhqhgxK1w?si=EPkbW_l_PIEojUNR
발표 자료 제출 5분 전 상황
결과물은 나쁘지 않게 나왔다.
다만 엔진 구현하는 데에 시간을 많이 써서 클라이언트에서 통신을 구성하는 데에 시간이 없어 로컬에서 같은 키보드로 조작하는 형태로 바뀌었다.
경 기여도 0퍼 달성 축
사용되지 못한 내 코드에 애도를 표하며
비록 수상은 하지 못했지만 즐겁게 코딩하다 간 것에 의의를 두겠다.
좀 시상을 할 때 약간 의외인 것이 있었는 데
마지막으로 발표 할 때 나온 한 마디를 두고 가겠다.
우리 팀의 귀여움 담당 에일맄이다.
팀원 소개에도 들어가 있다.
다들 정신이 하나 둘 나갈쯤 행사장을 돌아 다니다 있길래 같이 찍어본 사진이다.
행사가 끝나고 사진을 다 같이 찍으려 했으나 다들 멀리서 온 관계로 시상식이 끝나고 다 가버려서 아쉬웠다.
나 홀로 건물 밖으로 나와 인천역앞 차이나 타운을 돌아다녔고 볶음밥을 먹었다.
여기 진짜 추천하고 싶은 데 나만 알고 싶은 맛집이라 따로 소개는 하지 않겠다.
점심 먹고 월미도로 가 산을 올라서 인천항을 바라보았다.
월미도를 갈 때에는 반드시 버스를 이용하도록 하자 거리가 20분 거리라길래 걸어 갔더니 햇빛이 뜨거워 가는 동안 쓰러질 뻔 했다.
그래도 숲속은 비교적 시원했다.
아래 날씨는 더웠지만 정상의 바람은 꽤 시원했다.
인천공항으로 가는 인천대교도 보였다.
전통정원쪽으로 내려가 간단하게 해커톤에서 챙겨온 간식을 먹으며 휴식 취했다.
버스를 타고 동인천역으로 가서 용산행 급행열차를 탔다.
그리고 용산역에서 광주송정으로 열차를 타고 돌아갔다.