2026/08 7

4화-부루마블 게임 만들기 [파산 작전]

축소판 20칸으로 "일단 굴러는 간다"를 확인했으니, 이제 진짜 게임으로 살을 붙일 차례. 20칸을 40칸으로 늘리고, 4개 리그(KBO·NPB·MLB·윈터리그)를 한 바퀴 도는 풀보드를 깔았다. ■ 이제 구장에 건물을 올린다부루마블의 꽃은 건물이다. 구장을 사면 4단계까지 올릴 수 있게 했다.1단계 외야 잔디석 → 2단계 내야 지정석 → 3단계 프리미엄석 → 4단계 스카이박스(랜드마크)단계가 오를수록 통행료 곡선이 가팔라진다. 여기에 "같은 도시권 다 사면 2배", "한 리그 통째로 먹으면 추가 배수" 같은 독점 보너스도 얹었다. 이벤트 카드도 16종 만들었다 — 끝내기 안타(자금 보너스), 스토브리그 세금(자산 비례 과세), 신인왕 등극(무료 업그레이드) 같은 것들. 카드마다 "부자한테 유리한가(눈덩..

3화 — 부루마블 게임 만들기 첫 프로토타입 (React)

숫자로 뼈대를 검증했으니, 이제 진짜 화면을 만들 차례다. 목표는 소박하게 잡았다. 20칸짜리 축소판으로, 한 기기에서 2명이 번갈아 하는 퀵매치. 풀 게임(40칸)은 나중이고, 일단 "주사위 굴리면 말이 움직이고 구장을 산다"는 최소 루프부터.■ 스택은 심플하게React + TypeScript, 상태관리는 Zustand, 보드는 그냥 CSS 그리드. 20칸을 정사각형 둘레에 배치하고, 가운데엔 "주사위 굴리기" 버튼과 경기 로그를 뒀다. 구장 칸엔 가격과 통행료, 도착하면 매입/포기 선택. 첫 파산이 나면 자산 많은 쪽이 승리.보드는 생각보다 금방 나왔다. 타일이 색깔별로 깔리고, 말(곰/사자)이 출발 칸에 놓이고, 로그창엔 "게임 시작! 주사위를 굴리세요"가 떴다. 여기까진 순조로웠다. ■ 그런데 버..

2화 부루마블 게임 제작 <밸러스패치>

2화 — 코드보다 숫자 먼저1화에서 기획서 0.1을 자랑스럽게 펼쳤다. 컨셉 좋고, 원칙 그럴듯하고, 마스코트도 귀엽고. 그런데 게임 개발을 좀 해본 사람이라면 안다. 종이 위에서 완벽해 보이는 밸런스가 실제로 돌려보면 와르르 무너지는 일이 얼마나 흔한지.그래서 이번엔 규칙을 정했다. 한 줄도 코딩하기 전에, 숫자부터 두들겨 본다.■ 왜 시뮬레이터부터?보드게임 밸런스는 "감"으로 맞추면 거의 틀린다. 통행료를 얼마로 할지, 자산 칸을 몇 개 둘지, 독점 보너스를 얼마나 줄지 — 이걸 손으로 계산하는 건 불가능하다. 변수가 서로 얽혀서, 하나 바꾸면 열 개가 흔들린다.그래서 UI도, 그래픽도 없이 파이썬으로 게임 규칙만 구현했다. 주사위 굴리고, 이동하고, 매입하고, 통행료 내고, 파산하는 로직. 그리고 ..

1화 — KBO로 부루마블을 만들면?

"부루마블 같은 걸 만들어 볼까?" 이 한마디로 시작했다. 정확히는 — KBO에서 시작해 일본 NPB, 미국 MLB까지 진출하는 야구 테마 보드게임. 이름은 가칭 '다이아몬드 마블'. 이 시리즈는 그걸 맨땅부터 만들어가는 기록이다. 미리 스포일러를 하자면, 이 제작기는 매끈한 성공담이 아니다. "재미가 없다"는 벽에 두 번 부딪히고, "이걸로 돈이 되긴 하냐"는 냉정한 현실까지 마주한 뒤 게임의 방향을 크게 튼다. 그 과정이 오히려 이 시리즈의 진짜 이야기다. 하지만 1화인 오늘은 기획 단계부터. ■ 왜 하필 마블 게임?기존 '모두의 마블' 계열은 오랫동안 파워크리프 비판을 받아왔다. 신규 캐릭터·아이템·주사위가 계속 이전 것들을 무력화시키면서 밸런스가 무너진다는 것. "돈 쓴 만큼 세진다"는 구조에 지..

커플 앱 만들기 (8) — 매일 열 이유, 그리고 다음

7화까지 오니 기능은 충분해 보였다. 근데 앱을 쭉 써보다 마지막 질문이 남았다. "이거 매일 열 이유가 있나?"룰렛은 좋은 기능이지만 매일 쓰는 건 아니다. "오늘 뭐 먹지"가 매일 고민은 아니니까. 케미 지수나 대시보드도 자주 볼 건 아니고. 하루하루 앱을 여는 확실한 이유, 소위 말하는 데일리 글루(daily glue)가 없었다. 이걸 마지막으로 풀었다.오늘의 질문 — 매일의 접착제답은 흔하지만 강력한 거였다. 매일 하나씩 뜨는 커플 질문.매일 같은 질문이 두 사람에게 뜬다 ("어른이 됐다고 느낀 순간이 있어?" 같은)근데 핵심은 이거다. 내가 답해야 상대 답이 열린다둘 다 답한 질문은 아카이브에 차곡차곡 쌓인다 방 최상단에 제일 크게 박아놨다. 들어오면 제일 먼저 보이게.이 구조가 마음에 들었던 ..

커플 앱 만들기 (7) — 관계를 데이터로

방향을 튼 뒤로 앱이 살아났고, 이제 여기까지 쌓인 걸 활용할 차례였다. 지금까지 둘이 룰렛 돌리고, 기분 남기고, 내기한 게 전부 포인트 원장(2화의 그거)에 기록으로 쌓여 있었다. 이 데이터를 그냥 두면 아깝다. 관계를 보여주는 지표로 바꿨다.케미 지수 — 관계를 숫자로최근 7일 활동을 종합해서 0~100점짜리 "이번 주 케미"를 만들었다. 네 가지를 가중합했다.함께 정하기 (룰렛)마음 나누기 (기분 기록)티키타카 (내기)꾸준함 (연속일)점수에 따라 "천생연분 / 깨가 쏟아지는 / 알아가는 중 / 데워지는 중" 같은 레벨도 붙였다. 방 상단에 원형 게이지로 얹어놔서, 들어오면 바로 "우리 이번 주 어때"가 보인다.이것도 새 테이블 없이 원장에서 계산했다. 자꾸 원장 얘기가 나오는데, 진짜로 초반에 이..

커플 앱 만들기 (6) 카카오 로컬 API로 주변 맛집 검색 연동하기 (Node.js/Flutter)

여기까지 오면서 앱은 그럴듯해졌는데, 사실 결정적인 게 다 가짜였다. 룰렛에 뜨는 맛집이 전부 내가 하드코딩해둔 목업이었다. "면사랑", "평안도상원냉면" 같은 게 코드에 박혀 있었던 거다. 데모용으론 괜찮은데, 이게 진짜 서비스가 되려면 내 주변의 실제 맛집이 떠야 한다. 이번 화는 가짜를 진짜로 바꾸는 얘기다.카카오로 진짜 맛집 가져오기국내 장소 데이터는 카카오 로컬 API가 제일 무난했다. 카테고리별로 이렇게 나눠서 붙였다.음식점 → 카테고리 검색 (FD6)카페 → 카테고리 검색 (CE7)술집, 디저트 → 키워드 검색호출은 헤더에 키 하나 넣으면 된다.GET https://dapi.kakao.com/v2/local/search/category.jsonAuthorization: KakaoAK {RES..