온라인 보드게임 만들기

직접 만든 보드게임의 규칙을 자바스크립트로 쓰면, 판 그리기와 온라인 대전, 기보, AI 상대는 보드마당이 맡습니다. 무료이고, 친구는 설치 없이 링크 하나로 들어와 둡니다.

  1. 규칙 쓰기
  2. 보드
  3. 온라인 대전
  4. AI 상대

이렇게 만듭니다

  1. 1. 규칙 쓰기

    npx boardmadang new my-game으로 틱택토에서 시작하는 게임 폴더를 만듭니다. index.js에 시작 판, 수를 두면 바뀌는 판, 누구 차례인지, 누가 이겼는지, 화면에 그릴 것을 씁니다. npx boardmadang dev를 켜면 두 플레이어의 판이 나란히 보여서 혼자 양쪽을 둬 보며 고칠 수 있습니다.

  2. 2. 올리기

    npx boardmadang pack으로 만든 zip을 게임 등록 화면에 올립니다. 규칙 코드가 지켜야 할 것, 무작위로 200판을 둬도 오류가 없는지, 충분히 빠른지를 자동으로 검사합니다. 혼자 한 판을 이기면(클리어 체크) 이름, 소개, 룰북을 적어 등록합니다.

  3. 3. 같이 두기

    등록하면 게임 목록에 나옵니다. 대전 찾기, 방 만들기, 관전, 기보 다시보기가 바로 됩니다. 내 프로필에서 "AI 만들기"를 누르면 AI 상대와 선공·후공 승률도 생깁니다.

게임 코드는 이렇게 생겼습니다

게임은 객체 하나입니다. 네트워크, 화면, 상대가 누구인지는 신경 쓰지 않고 규칙만 씁니다.

index.js
1export default {
2  id: 'my-game',
3  board: { places: 'cells', rows: 3, cols: 3 },
4  pieces: 'xo',
5  maxActions: 9,
6
7  setup(rng) { // 시작 상태
8    return { board: Array(9).fill(null), turn: 0 };
9  },
10  play(state, player, action) { // 둘 수 없는 수면 받은 상태 그대로
11    const i = action.row * 3 + action.col;
12    if (player !== state.turn || state.board[i] !== null) return state;
13    const board = state.board.slice();
14    board[i] = player;
15    return { board, turn: 1 - player };
16  },
17  turn(state) { return state.turn; }, // 누구 차례인지
18  result(state) { return null; },  // 끝났으면 { winner }
19  view(state, player) { /* 판에 그릴 기물 */ },
20};

누가 칸을 누르면 두 플레이어의 브라우저가 같은 수를 같은 순서로 play()에 넣습니다. 그래서 둘은 늘 같은 판을 보고, 대전 서버를 따로 만들지 않아도 됩니다.

무엇이 다른가요

이런 게임을 만들 수 있습니다

보드마당에서 만든 게임

자주 묻는 질문

코딩을 할 줄 알아야 하나요?
규칙은 자바스크립트로 씁니다. 처음 만든 폴더의 틱택토를 조금씩 고쳐 나가면 되고, AI 코딩 도구에 SDK 문서와 룰을 주고 초안을 받아도 됩니다.
돈이 드나요?
아니요. 보드마당은 개인이 운영하는 무료 사이트입니다. 게임을 하는 사람도 로그인 없이 게스트로 둘 수 있습니다.
올린 게임의 권리는 누구에게 있나요?
만든 사람에게 남습니다. 보드마당은 대전, 관전, 기보, AI 상대처럼 서비스에 필요한 만큼만 씁니다. 자세한 내용은 약관에 있습니다.
세 명 이상이 하는 게임도 되나요?
지금은 두 사람이 번갈아 두는 게임만 됩니다.