잉여톤 11회
Summary
항목 | 내용 |
---|---|
장소 | 서울대학교 연구공원 423호 |
날짜 | 2018년 12월 15일 (토요일) |
시간 | 11시 30분부터 20시까지 |
이 자리를 빌어 장소 제공을 흔쾌히 허락해 주신 제로투원게임즈 관계자분께 심심한 감사의 말씀을 전합니다. 그 분은 보실 일이 없겠지만…
Motivation
상기된 시간과 장소에서는 로켓
이 발사됩니다.
발사되는 로켓은 궁극의 잉여력이 깃들어 있다고 여겨지는 잉여행성
으로 향한다고 합니다.
잉여력이 누구보다 높다고 자부하는 잉여톤 골수 멤버들이 이 로켓에 타지 않는다는 일은 인류 역사상
상상한 사람이 없다고 전해집니다.
그럼 이 글을 읽는 우리 잉여로운 개발자 여러분 모두 발사되는 로켓에 몸을 실어 볼까요?
그러나…! 와서 로켓이 발사되는 것을 구경만 해도 사실 뭐라 그러는 사람은 없을 겁니다.
Objective
이날은 모두들 게임
을 만듭니다. 협동 혹은 경쟁 온라인 플레이가 반드시 되어야만 합니다.
싱글 플레이만 된다거나 마감을 앞두고 갑자기 돌아가지 않는다거나 하는 10여회에 걸쳐 써먹은 클리셰는 용납하지 않습니다.
미리 준비해오는 것은 역시 용납하지 않습니다. 설사 용납이 된다 한들 뭔갈 미리 한다는 것은 불가능하다는 사실 역시 10여회 역사가 똑똑히 증명하고 있습니다. 당일 마감 시한이 되어도 다 안 끝나는데 미리 해 온다? 각자 생각해 보면 자명한 일입니다.
팀 플레이를 지향하지만, 팀 플레이와 잉여력이 상충하는 분은 꼭 그렇게 하시지 않아도 됩니다만, 상기된 조건만큼은 반드시 지켜주셔야 합니다.
그러나…! 위에서 주저리주저리 써 놓은 목표에 부합하지 않는 짓을 하더라도 사실 뭐라 그러는 사람은 없을 겁니다.
Register
장소의 협소함으로 인해 최대 10명으로 참석자를 제한하는 것을 양해 바랍니다.
자리가 남는 일이 있어도 주최자가 자의적 판단으로 참가를 거절 할 수 있으며, 그 사람은 결코 참석해서는 안됩니다.
이렇게 참석하지 못하는 사람은 전세계 약 70억여명
으로 추정이 되고 있습니다.
참석이 거절된 70억여명을 나열하기보단 참석이 허가된 특권을 누리는 자를 언급하는 것이 지면을 아낄 수 있겠죠…
하지만 자연을 사랑하는 잉여톤 준비위원회는 그 지면조차 아끼기 위해 명단은 생략하는 거국적 판단을 내리게 되었습니다.
요컨대 반드시 명단에 있는 분만 참석 해 주세요.
그러나…! 그냥 참가해도 사실 뭐라 그러는 사람은 없을 겁니다.
Schedule
본 대회는 2018년 12월 15일(토요일) 11시 30분에 모여서 점심을 피자
로 간단히 해결한 후 진행됩니다.
지각은 결코 있을 수 없는 일입니다.
지금까지의 잉여톤을 되돌이켜보면 지각으로 유무형의 피해를 본 사례를 많이 볼 수 있었죠.
잉여톤에 참가한 것 자체로 오는 피해에 비하면 새발의 피긴 하지만 말입니다.
그러나…! 지각하더라도 사실 뭐라고 하는 사람은 없을 겁니다. 다들 그럴 것이기 때문에…
- 노트북은 반드시 지참해야합니다.
- 빨리 오면 좋은 자리를 선점할 수 있습니다.
시간 | 내용 |
---|---|
11시 30분-13시 30분 | 브레인브레이킹 및 아이스스토밍, 그리고 점심 식사 |
13시 30분-19시 30분 | 집중 개발 |
19시 30분-20시 00분 | 플레이 |
Team
팀은 당일에 결성합니다. 사다리를 탈 수도 있습니다.
Result
단짠단짠 김복치
배고픈 복치씨는 무한 먹자골목의 세계에 들어갔다. 하지만 예민한 복치씨는 단짠 비율을 잘못 맞추면 큰일이 나는데..!
- 기획
- 각 스테이지마다 캐릭터는 계속 걸어가면서 음식점을 만나게 됨
- 요리가 무엇인지 잘 모르는 상황에서 먹을까 말까 를 선택. 그러면서 단짠 게이지가 변하고, 공복과 이 게이지의 균형을 잘 맞춰 스테이지를 깨야 함
- 2인용 모드로 네트워크로 연결된 두 명의 플레이어가 위 아래로 화면을 보면서 같은 스테이지를 같이 게임할 수 있음
- 개발
- 서버는 포기하고 시작. 그간의 경험을 보면 서버까지 제 시간 내에 할 수 있을리가 없다..!
- 클라만 다시 React로 도전. Component를 만들어가면서 absolute로 배치해서 그럴싸하게 만드는건 전에 비해 많이 익숙해져서 괜찮았음. 어설프게 하지도 못하는 canvas 쓰는 것보다는 훨씬 낫지 않을까 싶음.
- 하지만 asset을 구하는게 쉽지 않았음. 무엇보다 asset을 쓸 수 있는 형태로 가공해두는데 시간이 너무 오래 걸림. sprite animation 이나 background transparent 등에 대해서는 미리 component를 준비해둘 수 있겠다 싶었음.
- 반성
- 원래 목표인 PWA는 한 발짝도 다가가지 못했는데 이에 대해서는 연습이 더 필요함.
- 중간에 체력 부족으로 구현을 멈췄는데 쉬지 않고 개발할 수 있는 기반을 좀 더 만들어두어야겠음.
- front-end만 몇 회째 집중하고 있는데 형태도 다 비슷한 것 같고 이제 슬슬 재사용 가능한 기반을 만들어두는 편이 좋지 않을까 싶음.
- 기획만 놓고 보면 예전 소상공인 김복치 와 너무 유사해서 좀 다른 컨셉을 넣었으면 좋겠는데 이 부분에 대해서는 좀 더 공부를 하는 것이 필요함.
- 결국은 연습, 또 연습.
JPM: 장풍맨
팀원: 김진용, 김거엽
시놉시스: 배고픈 장풍맨은 무한 경쟁 세계에 빠져 들어갔다. 그곳에서 우리의 장풍맨은 다수의 도플갱어를 만나며 큰일이 나는데..!
거엽의 기록
- 기획
- 당초 거엽은 ‘육각형 타일맵’을 이용한 게임이었으면 좋겠다고 강하게 강조했지만, 보기와는 달리 별로 강하지 않았는지 곧장 포기한 후 사각형 타일맵은 거치지도 않고 그냥 타일맵 시스템 자체를 버리게 된다. (사랑해요 유니티!!!)
- 지난 10회에서 맛보기로 써 본
Photon
에 대한 지식을 진일보시킨 진용은 이번 잉여톤에서 자신의 지식을 한껏 뽐내 볼 계획으로 보인다. - 이 둘이 만들 게임은 io류의 게임이다.
- 모바일로 만드는 것도 시간 내 무리라고 빠르게 합의, PC 게임으로 결정되어 최근 출시한 레드 데드 리뎀션 2와 동일한 플랫폼에서 경쟁하게 된다.
- 트윈 스틱 조작 방식을 택하고, 아이템을 먹으면 각자 쏘는 미사일이 점점 커지는 식의 병맛 컨셉을 버무린 io 뭐시기가 되는 것을 목표로 삼게 된다.
- 뭔가 쏘는 것은 ‘장풍’이라고 하고, 그러다보니 게임 이름은 자연스럽게 ‘JPM: 장풍맨’이 되었다.
- 그렇게 제 11회 잉여톤의 장대한 막이 올라가게 되는데…
- 개발
- 개발 방식은 거엽이 오래도록 꿈꿔온 페어 프로그래밍을 채택하기로 했다. 우선 진용부터 개발 시작!
- github.com 저장소를 셋업하고, 빠르게 트윈 스틱의 첫 번째 스틱인 ‘이동’ 스틱 기능을 만들게 된다. WASD 키를 이용해 네 방향으로 이동하게 만들었다.
- 유니티 Input 설정을 잘 만지면 ‘가상 스틱’을 하나 더 추가하는 것이 매우 손쉬운 일이라는 것을 깨닫게 된 거엽. 연신 놀라며 비판적인 시각은 잊은 채 멍하니 진용이 써 내려가는 코드에 심취해간다.
- 두 번째 트윈 스틱은 총알이 나가는 방향을 결정하는 조작계이다. 이는 키보드의 화살표 키 네 개를 이용한다. 플레이어의 이동과 총알 발사가 재빠르게 완성되었다. 이때부터 이 둘은 이번 잉여톤 11회의 승자는 자신들이 될 것임을 믿어 의심치 않게 되었던 것이다.
- 이동 좌표계와 총알 발사 좌표계의 월드/로컬 변환에 따른 착각이 다수 발생했지만, 이는 이런 구현을 할 때마다 한번씩은 거쳐가는 통과의례같은 것으로 이미 자리매김한지 오래인 것 같다.
- 진용은 이 게임의 제목을 정한 장본인답게, 게임이 컨텐츠로서 강조될 수 있도록 ‘설정’에 집중하는 모습을 보이기도 한다. 그는 플레이어가 누구이며, 발사되는 총알은 무엇이며, 적들은 무엇이며 여기가 어디인지 등등에 대해 다분히 신경을 쓰는 모습이었지만, 옆에서 지겨보는 거엽은 그런 것에 신경 쓸 시간 따위는 없다는 이야기는 마지막까지 하지 않은 채 숨소리와 불안한 눈빛, 떨리는 다리, 자라나는 손톱과 발톱 등으로 모든 시그널을 보내 봤지만 결국 그의 의지를 꺾지는 못했다.
- 진용은 자신이 최근 착수한 ‘봄버맨-like’ 프로젝트에서 사용하기 위해 모아 둔 봄버맨 리소스를 들고 와서 장풍맨에 적극 적용하게 된다. 그 모습을 보고 거엽은 크게 만족스러워했다고 한다.
- 이쯤 되면 게임이 사실상 완성된 모양새나 다름 없긴 했지만 페어 프로그래밍의 명분을 잃을 수는 없는 법. 간신히 생긴 틈을 타서 거엽은 제어권을 얻게 된다. 제어권을 얻었다 함은 개발 본부를 진용의 자리에서 거엽의 자리로 옮긴 것을 뜻하는 것이다.
- 드디어 프로젝트의 주도권을 얻게 된 거엽. 그러나 그의 기쁨은 잠시. 이제부터 만들어야 할 부분은
Photon
파트였다.Photon
이라면 10회 잉여톤에서 잠시 맛보기만 한 것이 전부인 상태에서 그는 아무것도 할 수 없었다. 진용은 옆에서 만연의 미소를 띠며Photon
의 기본 원리부터 청산유수로 쏟아내기 시작했다. 그 전까지 진용이 개발을 하고 있을 때도 멍하니 있던 거엽은 제어권을 얻는 둥 마는 둥 하면서 또다시Photon
의 뛰어난 설계 원리와 그를 완전히 이해하고 지시하고 있는 진용의 모습에 감탄할 사이도 없이아바타 프로그래밍(avatar programming)
에 돌입하게 된다. 그러나 이런 아바타라면 행복한 아바타라 할 것이다. 시키는대로 하고는 있지만 결과적으론 생각대로 코딩되고 있었기 때문이다. 쓰는 대로 작동하는 코딩이란 걸 한 지가 언제였던가… 때는 1999년 뭐 언젠가 있었던 것 같기도 하고 정확하지 않은 기억이라 그 이야기는 다음 기회에 자세히 쓰도록 한다. - 짧디 짧은 거엽 시대는 가고 다시금 진용 시대가 열렸다. 저녁을 먹는 시간을 틈타 자연스럽게 진용에게 제어권이 넘어간 것이다. 남은 작업은 이제 리소스를 제대로 붙이고, 플레이어가 죽으면 다시 부활하고 하는 식의 플레이 루프를 완성 시키는 것이었다. 가장 중요한 부분이다. 그렇게 잉여톤의 마감 시각은 불현듯 우리를 덮치게 되었던 것이다.
-
반성
- 팀원 둘 다 유니티는 매우 익숙한 편이었고, 이미 팀웍을 이룬 경험도 있어서 굉장히 자만에 빠져 있었다. 오만하게 들리기 원치 않지만 우리는 잉여톤 역사상 가장 위대한 팀이었던 것이다. 그러나, 이제는 너무 식상해져버린 틀에 박힌 io류의 게임을 타겟으로 했고, 마지막 마감 시간 가까이에 와서 플레이어 리스폰이라는 중요 기능을 급하게 구현하는 우를 범하게 된 점은 길이길이 뼈에 새겨야 할 교훈으로 남게 된 것이다.
- 유니티를 써서 하루만에 뭔갈 만드는 일은 결과물만 보면 재미있지만, 과정도 좀 식상한 느낌이 있었다. 다음 기회에는 역시 우리 마음 속 오래된 고향 같은 C++를 사용 해 보고 싶다.
진용의 기록
- 기획
- 당초 거엽이 기획했던 육각 타일맵의 좌표계를 알아보던 와중 구현 레퍼런스 grids/hexagons를 보고 잠시 영어와 산수의 압박으로 정신이 혼미해진 진용은 7시간 내에 구현하기는 힘들 것으로 판단, 거엽에게 육각 좌표계를 버리고 직각 좌표계를 사용하자고 제안한다.
- 허나 직각 좌표계를 찾던 도중 통신 방식이 C++ 소켓을 이용한 tcp/udp 선에서의 구현이라는 거엽의 말을 듣고 다시 한번 정신이 혼미해진 진용은 그동안 익힌 잔재주
Photon
의 도입을 제안, 흔쾌히 두 사람의 의견은 타협점을 찾게 된다. - 그리하여 탑뷰 트윈스틱 슈팅 PvP 무한 경쟁 빈익빈 부익부 게임의 기틀이 완성되었다.
- 개발
- 거엽이 오래도록 꿈꿔온 페어 프로그래밍은 진용 또한 진귀한 경험이라고 판단, 잉여톤 최초의 아바타 프로그래밍 체제를 구축하게 된다.
- 지난 10회에서
GyroPlane
게임을 통한Photon
삽질과 그동안 익힌 잔재주를 통해 예전과는 다른 속도로 남들과는 다르게 누구보다 빠르게 코드를 써내려가는 진용. - 그러나 그것도 잠시, 개발 제어권이 전 개발자이자 현 사장님인 거엽으로 넘어가자 그의 타자 속도와 차원이 다른 비주얼 스튜디오 단축키 사용을 보며 지금까지 자신이 한 일은 번데기 앞에서 주름 잡기요, 돼지 앞에서 코 뒤집기였다는 사실을 깨닫게 되었다.
- 그렇게 이동과 장-풍, 아이템 획득과 사망 후 부활까지 구현한 거엽과 진용은 반나절도 안되는 시간에 게임의 메인 로직을 구현했다는 사실에 크게 탄복하며 다가올 결과를 기대하고 있었다…!
-
반성
- 역시 플레이어 부활은 너무 급하게 넣었는지 작동을 제대로 확인하지 못해 시연 시 서버와의 통신이 폭주, 늘어난
Photon
메세지 사용량에 그만 유료 플랜으로 전환당할 뻔했다. Photon
을 사용하여 멀티플레이를 구현한 것은 좋았지만, 새로운 로직을 구현한다기보다는 기존에 이미 있던 게임 방식을 다시 재구성하는데 지나지 않아 잉여력이 떨어진다는 문제가 있어서 아쉬웠다.
- 역시 플레이어 부활은 너무 급하게 넣었는지 작동을 제대로 확인하지 못해 시연 시 서버와의 통신이 폭주, 늘어난
Kyu’s YingYeoDay
팀원: 상규
11회 잉여톤의 추억을 담아봅니다…….
상규의 기록
- 기획
- 원래는 쯔꾸르를 사용하여 RPG 게임을 개발하고 싶었다. 스팀에서 84,000원 이라는 비싼 가격 덕분에 포기하고 다른 툴을 찾다가 “WOLF RPG editor”라는 프로그램을 찾았다. 무료이며 굉장히 직관 적이서 이 툴을 선택하기로 했다
- 처음에는 이런 저런 복잡한 contents를 생각하다가 의미 있는 게임을 만들고 싶어서 일기 처럼 오늘 있었던 일을 게임에 기록(?)해 놓으면 재미 있을 꺼 같아서 11회 잉여톤에서 오고가는 이야기와 오늘 내가 느끼고 본것들을 구현하기로 했다.
- 개발
- 당일 총 7분이 잉여톤에 참석하였다. 중간중간 오고가는 이야기들을 기록하고 특징이나 관심사를 생각하여 참석인원에 대한 캐릭터를 만들고 해당 캐릭터에게 대사를 입혔다.
- 그래도 나름 RPG게임이기에 던전을 구현하여 사냥이 가능케 하였다.
- 아이템, 기술 등등은 이미 “WOLF RPG editor” 툴 자체에서 지원을 하기에 따로 구현할 필요가 없었다.
- 필요로하는 사물이나 이벤트 같은 경우 Map을 먼저 설정 한뒤 그 위에 layer 별로 설정하면 되는 시스템이었다. 총 3개의 사물 layer와 1개의 event layer가 존재한다.
- 개발중 재미있었던 부분은 기본으로 제공되는 image외에도 추가로 원하는 이미지를 사용하여 customizing이 가능했던 것이다.(시작 화면 참고)
- 반성
- 이 게임에서 가장 아쉬운 점은, 내부 기획을 하지 못했던 것이다. Editor에서 User Database와 Variable Database를 통해서 훨씬더 detail한 부분까지도 설정이 가능하다. Level, skill, item 등 main character가 내가 만든 세상을 탐험하면서 성장하는 과정에 대한 설계가 아쉬웠다. 물론 기승전결을 담고 있는 스토리가 아니기에 성장이라는 컨텐츠는 없다. 다음에는 RPG 답게 leveling이나 stage에 대한 설계 또한 하고싶다.
- 약간의 customizing에 대한 아쉬움이 남는다. 맵중에서 로켓 그림이 있는 image가 있는데 중간에 사라졌다 다시 생긴다. 아마도 sprite 처럼 특정 크기에 여러개의 모습을 지원해야하기 떄문인 것 같다. 또한 몬스터나 스킬을 사용하는 부분에서도 조금더 contents와 유사한 방향의 것들을 구사했음 하는 아쉬움이 남는다.
Paper.io Copycat
- lance.gg로 bootstrap한 후, 땅따먹는 로직을 어떻게 만들 수 있을지 고민하다가, 당일 대회 종료
- 이후, polygon 연산을 이용한 방법이 떠올라 구현 추가 (https://github.com/dplusic/vigilant-parakeet/blob/master/src/common/Model/Territory.js)