---
title: "브라우저 오목 게임, 랜덤 대신 휴리스틱 AI로 수를 둔다"
published: 2026-07-01T22:03:36.000Z
canonical: https://jeff.news/article/4500
---
# 브라우저 오목 게임, 랜덤 대신 휴리스틱 AI로 수를 둔다

브라우저에서 돌아가는 15x15 오목 게임을 만들고, 승리 판정과 재시작, 착수 수 추적까지 넣은 프로젝트다. 핵심은 AI가 랜덤으로 두지 않고 후보 수를 좁힌 뒤 공격 패턴, 방어 블록, 중앙 선호도를 점수화해서 가장 강한 수를 고른다는 점이다.

- 브라우저에서 바로 돌아가는 15x15 오목 게임을 만든 프로젝트임
  - 플레이어는 흑돌을 놓고, 게임은 턴과 착수 수를 계속 추적함
  - 승리 판정은 가로, 세로, 대각선 2방향까지 총 4방향을 확인함
  - 누가 이기면 승리한 돌 라인을 강조해서 “어디서 끝났는지” 바로 보이게 함

- 재밌는 건 AI가 랜덤으로 대충 두는 방식이 아니라는 점임
  - 이미 놓인 돌 근처에서 후보 수를 찾고, 그 후보들을 점수화함
  - 자기 공격 패턴도 보고, 플레이어가 이길 수 있는 자리를 막는 방어 점수도 따짐
  - 여기에 중앙 쪽을 선호하는 점수까지 더해서 가장 강한 수를 고름

- 선택 옵션으로 ‘AI 포커스 영역’ 오버레이도 있음
  - AI가 강한 후보라고 본 지점을 화면에 보여주는 기능임
  - 그냥 “AI가 여기 뒀네”가 아니라, 어떤 후보군을 보고 판단했는지 살짝 들여다볼 수 있음

- 본문에 기술 스택 이름이 비어 있는 부분은 아쉬움
  - “어떤 언어와 도구로 만들었는지”가 빠져 있어서 구현 환경은 확인이 안 됨
  - 그래도 구조 자체는 브라우저 게임, 승리 판정, 휴리스틱 AI, 후보 시각화라는 흐름이 꽤 명확함

---

## 기술 맥락

- 이 프로젝트의 핵심 선택은 랜덤 AI 대신 휴리스틱 AI를 쓴 거예요. 오목 같은 게임은 완전한 인공지능을 붙이지 않아도, 공격 자리와 방어 자리를 점수화하는 것만으로 플레이 감각이 꽤 달라지거든요.

- 후보 수를 전체 15x15 보드에서 전부 찾지 않고 주변 위치로 좁힌 것도 중요한 선택이에요. 가능한 모든 칸을 매번 평가하면 단순 게임치고 계산이 불필요하게 커지니, 실제로 의미 있을 만한 자리만 먼저 골라내는 식이에요.

- 공격 점수와 방어 점수를 같이 둔 이유는 AI가 너무 멍청해 보이는 순간을 줄이기 위해서예요. 자기 승리만 보다가 상대의 즉시 승리 자리를 놓치면 체감 품질이 바로 깨지기 때문에, 방어 블록을 별도 기준으로 넣은 거죠.

- AI 포커스 영역 오버레이는 디버깅에도 쓸모가 있어요. 어떤 후보를 강하게 봤는지 화면에서 확인할 수 있으면, 점수 함수가 이상하게 튀는 상황을 고치기 훨씬 쉬워요.

## 핵심 포인트

- 15x15 오목판 렌더링, 흑돌 착수, 4방향 승리 판정, 승리 라인 강조를 지원함
- AI는 주변 후보 수를 탐색하고 공격·방어 패턴을 점수화하는 휴리스틱 방식임
- 선택적으로 AI가 강하게 본 후보 위치를 시각화하는 포커스 영역 오버레이도 있음

## 인사이트

작은 브라우저 게임이지만 ‘랜덤 AI’에서 한 단계만 올라가도 체감이 확 달라지는 지점을 잘 보여줌. 게임 AI를 거창한 모델로 시작하지 않고, 후보 생성과 점수 함수로 먼저 잡는 접근이라 사이드 프로젝트에도 꽤 참고할 만함.
