"C 코드로 로봇을 프로그래밍하고, 전장에 내보내라."
1985년 Tom Poindexter가 만든 고전 게임 CROBOTS의 웹 리부트입니다.
원작 그대로의 게임 엔진(C)을 WebAssembly로 컴파일해 브라우저에서 구동합니다.
CROBOTS는 아케이드 게임이 아닙니다. 플레이어가 직접 조종하는 것은 없습니다.
여러분이 해야 할 일은 C 언어로 로봇의 전략을 프로그래밍하는 것입니다.
- 작성한
.r또는.c파일을 업로드하면 컴파일됩니다. - 두 로봇이 1000m × 1000m 전장에서 자율적으로 전투를 벌입니다.
- 스캐너로 적을 탐지하고, 캐논을 발사하고, 드라이브로 이동합니다.
- 먼저 데미지 100%가 되는 쪽이 패배합니다.
2v2 또는 그 이상의 팀 전투를 지원합니다.
- Safe 모드: 아군 미사일에 데미지를 받지 않습니다 (초보자 권장)
- Competitive 모드: 아군 오사(friendly fire)도 실제 데미지를 입힙니다
friend()함수로 스캔 대상이 아군인지 확인하여 오사를 방지할 수 있습니다
- 로봇 파일 작성 — 확장자
.r또는.c인 C 소스 파일을 작성합니다 - 업로드 — 브라우저에서 두 슬롯에 각각 드롭하면 자동으로 컴파일됩니다
- Battle! — 두 로봇이 모두
ready상태가 되면 전투를 시작합니다 - 리플레이 — 재생/일시정지, 배속, 스크럽으로 전투를 다시 봅니다
가장 단순한 로봇 (움직이기만 하는 연습용 타겟):
main()
{
while(1) {
drive(rand(360), 50);
}
}| 문서 | 내용 |
|---|---|
| 로봇 언어 가이드 | CROBOTS C 언어 문법, 제약사항, 연산자 |
| 내장 함수 레퍼런스 | scan, cannon, drive 등 전체 함수 레퍼런스 |
| 배틀필드 메커니즘 | 좌표계, 이동, 미사일, 데미지 규칙 |
| 예제 로봇 분석 | 샘플 로봇 4종 코드 해설 및 전략 팁 |
| 모드 | 설명 |
|---|---|
| FFA (Free For All) | 모든 로봇이 개별 전투. 최후의 1대가 승리 |
| Team Safe | 팀 배틀. 아군 미사일이 아군에게 데미지를 주지 않음 |
| Team Competitive | 팀 배틀. 아군 오사(friendly fire)도 실제 데미지 |
- 게임 엔진: 원작 C 코드 → Emscripten → WebAssembly
- 렌더링: Three.js (Orthographic 뷰, 네온 사이버펑크 스타일)
- 프론트엔드: TypeScript + Vite, Web Worker로 엔진 격리
원작 CROBOTS(1985)의 게임 엔진을 기반으로 하되, 다음을 추가/변경했습니다:
| 항목 | 원작 | 리부트 |
|---|---|---|
| 플랫폼 | IBM-PC / DOS, curses 터미널 | 브라우저 (WebAssembly + Three.js) |
| 로봇 수 | 최대 4대 (FFA) | 최대 4대 (FFA + 팀 배틀) |
| 팀 배틀 | 없음 | Safe / Competitive 두 가지 모드 |
friend() 함수 |
없음 | 직전 scan() 대상이 아군인지 확인 |
| 교착 감지 | 없음 | 5,000 모션 사이클 무변화 시 자동 종료 |
| 리플레이 | 없음 | 프레임 녹화, 재생/배속/스크럽, JSON 저장 |
| 렌더링 | curses 텍스트 | Three.js 네온 사이버펑크 스타일 |
원작의 로봇 언어(C 서브셋), 물리 규칙, 내장 함수(scan, cannon, drive 등)는 그대로 유지됩니다. 원작용으로 작성된
.r파일은 수정 없이 동작합니다.
원작 CROBOTS는 1985년 IBM-PC/DOS용으로 개발되었으며,
현재 GPLv2 라이선스로 공개되어 있습니다.
원작 소스코드와 매뉴얼은 original/에서 확인할 수 있습니다.
이 리부트 프로젝트도 동일하게 GPLv2를 따릅니다.