잉여톤 4회 후기
과거 동아리 내 게임잼과 그 이후 AWS Serverless 대회들, 그리고 지난 번 대리님 집에서의 코딩잼으로 자리잡게 된 잉여톤의 4회차를 이번 개롱 집들이를 겸해서 진행하게 되었다.
앞으로 얼마나 흥할지는 모르겠지만 간단히 정리해 github에 올려놨고, 여러 피드백을 받으며 간단히 언제 어디서 뭘 하고 싶은 지를 정리한 후 google forms로 신청을 받았더니 놀랍게도 나를 포함 총 9명이라는 인원이 참여를 하게 되었다. 생각보다 흥했고, 다들 재미있게 진행해주었다는 점에서 이 자리를 빌어 다시 한 번 감사의 말씀을 드리고 싶다.
집들이를 겸했기 때문에 전날부터 아내와 열심히 간식들과 술(!) 그리고 약간의 소품들을 준비했다. 그리고 당일 아침 열심히 집 청소를 하여 준비를 마쳤다.
사람들이 도착하고 대회가 시작되었다. 이미 팀을 구성해 온 대리님과 그의 동료 분도 있었고, 랜덤으로 진행할 계획을 한 사람과 관전으로 참가한 사람도 있었다. 관전자들의 참여도 최대한 이끌어내기 위해 랜덤 참가자들은 본인이 어떤 주제로 진행할 것인지 발표를 진행하였고 그렇게 각자의 목표가 일치하는 팀이 생성되었다.
- 대리님과 동료분은 vvvvv 비슷한 게임을 네트워크로 만들기로 하였고
- gasbank 팀은 당구 비슷한 게임을 네트워크로 만들기로 하였고
- 나는 좀 유연하게 분리될 수 있는 서버 모델에 대한 설계를 하기로 하였다.
냉면을 먹고 과자를 먹고 맥주를 먹고 그렇게 끊임없이 머리에 에너지를 공급하며 코드를 쏟아내었다. 6시간이라는 대단히 짧은 시간 내에서 네트워크로 게임을 만드는 것이 간단하지 않기 때문에, gasbank님과 대리님은 어느 정도 게임 클라이언트를 준비해온 터였다.
그럼에도 네트워크로 무언가를 연결한다는 작업은 아주 간단하지는 않았고, 생각보다 이러저러한 시행착오 끝에 결과물이 슬슬 윤곽을 드러냈다.
- 대리님 팀은 C#의 graphics로 간단한 게임 클라이언트를 만든 후, 여러 클라이언트가 간단히 서버와 http로 json 통신을 하며 서로의 상태를 갱신하는 구조였고,
- gasbank 팀은 c 클라이언트와 nodejs 서버가 udp로 매 frame마다 메시지를 주고 받으며 통신하는 구조였고, 서버에 접속하는 클라이언트를 순서대로 1:1 매칭하여 게임을 진행하게 할 수 있는 구조였다.
생각보다 c#의 http+json이 간단히 안 되어서 고생한다든가, 혹은 nodejs에서 udp로 raw byte buffer를 다뤄본 적이 없어서 시간이 좀 소요된다든가 하는 일이 있었지만, 그래도 부족한 시간을 최대한 활용하며 다들 놀라운 결과를 만들어냈다. 즉, 어느 정도 제대로 돌아가는 게임을 만들어냈다.
작업물을 발표하고 각자 궁금했던 부분들에 대해 논의했다. 각자 만들었던 서버 모델이 달랐기 때문에 재미있는 이야기가 꽤 오고 갔다.
- 서버 세션을 관리하기 위한 공유 메모리 구조는 어떤 구조이면 더 효율적일까
- 서버 모델에서 동기와 비동기, 어떤 모델이 더 유리할까
- UDP 통신이 TCP에 비해 정말 더 속도가 좋을까
- 어떤 언어/기반을 사용할 때 서버에서의 물리 엔진 구현이 쉬울까
등 꽤 많이 있었는데 벌써 잘 기억이 안 나니 아쉽다. 물론 다 경우에 따라 다르겠지만, 어쨌든 하나씩 깊게 다뤄볼만한 재미있는 주제들인 것 같다.
그렇게 다들 즐겁게 발표를 마치고, 시연을 하고, 서로 즐겨보면서 대회가 막을 내렸다. 순위를 매기고 선물을 증정하며 대회의 마무리를 기념하기 위해 기록을 남겼다.
먼 위치였음에도 불구하고, 다들 소중한 주말에 늦은 시간까지 코딩에 대한 혼을 즐겁게 불태워주어서 다시 한 번 감사의 말씀을 전하고 싶다. 생각만 하고 있었던 소소한 코딩을 잠깐이나마 모여서 즐길 수 있게 되었다면 그보다 더 바랄게 없을 것 같다.
앞으로도 종종 이런 기회에 많아졌으면 좋겠다 :)
개인적으로 내가 생각했던 모델에 대한 PoC를 못 했던 것은 좀 아쉽지만, 평소 수련의 부족으로 생각보다 뭔가 하나를 제대로 하는데에 시간이 너무 오래 걸리다보니 그냥 자연스럽게 포기를 하게 되었던 것 같다. 이는 좀 천천히 진행하면서 다른 글에 정리를 해보고 싶다.