Colyseus 8

[Midnight 스터디 카페 #11] 손님의 말은 믿지 않는다 — 순간이동, 이름표 도둑, 그리고 도배범

카페에 진상 손님이 나타났다기능이 어느 정도 쌓이자 문득 무서운 상상이 하나 들었습니다. 이 카페에 나쁜 마음을 먹은 손님이 들어오면 어떻게 될까. 공부 시간이 곧 순위이고 재화인 이 게임에서, 누군가 그 숫자를 마음대로 부풀릴 수 있다면 성실하게 앉아 있던 사람들은 전부 바보가 되어버리잖아요.그래서 저는 잠시 개발자를 멈추고 진상 손님이 되어보기로 했습니다. 이 카페를 어떻게 하면 망가뜨릴 수 있을까. 상상해보니 손님이 세 명 떠올랐어요. 순간이동하는 사람, 남의 자리를 훔치는 사람, 그리고 고래고래 소리 지르는 사람. 이번 편은 이 셋을 하나씩 문 앞에서 돌려보내는 이야기입니다.이 게임의 규칙은 딱 한 줄로 정리됩니다. 손님이 하는 말은 일단 안 믿는다. 앉았다고 하면 정말 앉았는지 확인하고, 여기까..

[Midnight 스터디 카페 #10] 내일 또 오게 만드는 법 — 스트릭, 칭호, 그리고 서사

오늘 재밌었다고, 내일 오는 건 아니다지난 편에서 재화에 쓰는 재미를 붙였습니다. 그런데 게임을 만들다 보면 잔인한 진실을 하나 마주하게 돼요. 오늘 두 시간 재밌게 논 사람이, 내일은 그냥 안 옵니다. 재미와 재방문은 별개거든요.스터디 앱이라면 이건 더 치명적입니다. 공부는 원래 하기 싫은 거고, 하루 빠지면 그다음 날 다시 앉기가 두 배로 힘드니까요. 그래서 이번 편의 숙제는 명확했습니다. 사람을 매일 돌아오게 만드는 것. 리텐션이라고 부르는, 사실상 서비스의 진짜 싸움이요.끊기면 아까운 것 — 스트릭리텐션 장치 중에 검증된 최강자가 있습니다. 연속 출석, 스트릭이에요. 듀오링고가 이거 하나로 먹고산다고 해도 과언이 아니고, 열품타 유저들도 연속 기록 끊기는 게 무서워서 자정 직전에 접속합니다.원리는..

[Midnight 스터디 카페 #9] 싸이월드 도토리에서 배운 것 — 재화를 쓰는 재미

시즌 2를 시작하며지난 편으로 시즌 1이 끝났습니다. 로컬에서 완전히 돌아가는 스터디 카페가 완성됐죠. 앉아서 공부하고, 원두를 벌고, 옆 사람과 순위를 다투는 것까지요.시즌 2는 이 카페를 진짜 서비스로 키우는 이야기입니다. 배포도 그중 하나지만, 그건 좀 뒤로 미뤘어요. 실제로 인터넷에 올려보고 나서 후기를 써야 진짜배기가 나오니까요. 대신 시즌 2는 다른 질문에서 출발합니다. 사람들이 이걸 계속 쓰게 만들려면 뭐가 필요한가.그 첫 번째 답이 오늘 이야기입니다. 재화를 쓰는 재미요.벌기만 하는 게임은 시든다지금까지 원두는 쌓이기만 했습니다. 좌석 업그레이드에 조금 쓰긴 했지만, 그걸 다 하고 나면 원두는 그냥 늘어나는 숫자였어요. 통장 잔고가 쌓이기만 하고 쓸 데가 없으면 흥미를 잃는 것과 똑같습니다..

[Midnight 스터디 카페 #8] 옆 사람이 내 공부에 영향을 주게 만들기 — 실시간 랭킹

혼자 하는 공부와, 같이 하는 공부지금까지 만든 걸 돌아보니 이상한 점이 있었습니다. 멀티플레이라면서, 정작 옆 사람이 있어도 그만 없어도 그만이었어요. 같은 공간에 캐릭터가 보이긴 하는데, 그게 내 공부에 아무 영향을 안 줬거든요.진짜 카페를 떠올려 봤습니다. 옆자리 사람이 세 시간째 미동도 없이 문제집을 풀고 있으면, 이상하게 나도 핸드폰을 내려놓게 되잖아요. 그 사람이 나한테 말을 건 것도 아닌데요. 존재 자체가 압력인 겁니다. 이번 편의 목표는 그 압력을 화면 안에 만드는 거였어요.가장 단순하고 강한 장치, 랭킹존재를 경쟁으로 바꾸는 가장 쉬운 방법은 랭킹입니다. 그래서 오늘의 집중 랭킹을 만들었어요. 오늘 하루 누가 제일 오래 공부했는지, 실시간으로 줄을 세웁니다.구현은 이미 쌓고 있던 데이터를..

[Midnight 스터디 카페 #6] 원두를 쓸 곳을 만들다 — 음료 카운터와 집중 버프

벌기만 하고, 쓸 데가 없었다지난 편에서 원두는 진짜로 쌓이기 시작했습니다. 서버가 죽어도 사라지지 않는, 믿을 수 있는 재화가 됐죠. 그런데 며칠 굴려보니 이상한 허전함이 있었어요. 열심히 원두를 모으는데, 정작 쓸 데가 없었습니다. 좌석 업그레이드 말고는요.게임에서 재화가 한 방향으로만 쌓이면 금방 시들해집니다. 통장 잔고가 늘기만 하고 쓸 일이 없으면 숫자에 흥미를 잃는 것과 똑같아요. 그래서 이번 편의 숙제는 명확했습니다. 원두를 쓰고 싶게 만들 것.재화의 나머지 절반재화에는 재미가 두 개 있어요. 버는 재미와 쓰는 재미. 지금까지는 버는 쪽만 있었으니, 이제 쓰는 쪽을 붙여서 루프를 닫아야 했습니다.기획서를 다시 펼쳤더니 마침 딱 맞는 게 적혀 있었어요. 라운지의 음료 주문 카운터. 카페니까 음..

[Midnight 스터디 카페 #5] 서버가 죽어도 원두는 남는다 — node:sqlite로 만든 영속성

휘발되는 성취감이 게임의 두 기둥은 연결감과 성취감입니다. 그런데 4화까지 만든 상태에서 성취감 쪽에 치명적인 구멍이 하나 있었어요. 원두도, 좌석 등급도, 누적 집중 시간도 전부 서버 메모리 위에만 있었던 겁니다.이게 무슨 뜻이냐면, 서버를 한 번 재시작하는 순간 모두가 쌓아 올린 게 전부 0으로 돌아간다는 얘기예요. 코드를 고쳐 서버가 재시작될 때마다, 배포할 때마다, 혹은 서버가 한 번 죽을 때마다. 세 시간을 집중해서 번 원두가 그렇게 사라지면 아무도 다시 안 옵니다. 성취감의 전제 조건은 내 노력이 사라지지 않는다는 신뢰거든요.DB, 그런데 최대한 가볍게해결책은 당연히 데이터베이스입니다. 문제는 어떤 걸 쓰느냐였어요.Postgres 같은 걸 붙이는 건 이 단계에선 과합니다. 별도 서버를 띄우고 ..

[비 오는 밤 스터디 카페] 2화. 핵심 루프와 첫 멀티플레이

먼저 증명해야 하는 것멀티플레이 게임에서 가장 먼저 증명해야 하는 건 그래픽이 아닙니다. 두 사람이 정말 같은 세계를 보고 있는가, 이거예요. 캐릭터가 아무리 예뻐도 옆 사람과 상태가 어긋나면 그 순간 게임은 무너지거든요.그래서 이번 편의 목표는 딱 두 가지로 잡았습니다. 최소한의 게임 루프를 세우는 것, 그리고 그게 여러 명 사이에서 동기화되는지 확인하는 것. 아트는 나중 문제였어요.에셋 없이 시작한 이유지금 검증하려는 건 손맛과 구조지 그림이 아닙니다. 그래서 캐릭터도, 타일도, 빗줄기도 전부 런타임에 도형으로 그렸어요. 둥근 사각형 몸통에 원형 머리, 바닥엔 그림자 타원, 비는 얇은 선 하나. 이미지 파일이 없으니 관리할 에셋 파이프라인도 없고, 그만큼 반복이 빨랐습니다.// 이미지를 불러오는 대신..

'비 오는 밤 스터디 카페'를 만들기 시작했습니다 (1화: 기획과 기술 선택)

새벽 두 시, 옆에 아무도 없을 때카페는 문 닫았고, 집중은 안 되고, 옆에 아무도 없습니다.공부든 작업이든 혼자 오래 붙잡고 있어 본 사람은 알 거예요. 힘든 건 공부 그 자체가 아니라, 그걸 혼자 하고 있다는 감각이라는 걸. 카페에 굳이 나가는 이유도 비슷하잖아요. 커피가 더 맛있어서가 아니라, 다들 각자 뭔가 하고 있는 그 공기 속에 있고 싶어서.그 감각을 화면 안에 넣어보고 싶었습니다. 그래서 시작한 프로젝트 이야기를, 오늘부터 연재로 풀어보려고 해요.만들려는 것기획서를 한 줄로 줄이면 이렇습니다.비 내리는 도심 야경, 픽셀 아트 감성의 가상 스터디 카페. 사람들이 같이 접속해서 자리에 앉아 공부하고, 공부한 시간이 재화가 되어 내 공간이 자라난다.여기엔 사실 욕구가 두 개 숨어 있어요.하나는 연..