BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
1995년 MS-DOS 게임 Mine Bombers 3.11을 현대 시스템에 이식
Port of the 1995 MS-DOS game Mine Bombers 3.11 to modern systems: a Rust/SDL2 native engine and a browser edition. Code: MIT OR Apache-2.0. Bring your own copy of the game files.
게임Rust · JavaScriptGitHub @jeiel85온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
1995년 MS-DOS 아케이드 게임 Mine Bombers 3.11(Skitso Productions)을 최신 Windows와 Linux에서 DOSBox 없이 실행하기 위한 Rust 엔진입니다. OpenRCT2와 같은 방식으로, 이 프로젝트는 엔진이고 게임 데이터는 사용자가 자기 사본을 준비합니다. 원작 3.11은 무료(프리웨어)입니다. 브라우저에서 실행하는 부가 에디션도 있습니다. 이 저장소와 배포 사이트에는 원작 게임 파일이 들어 있지 않습니다. 1. 원작 3.11을 받아 압축을 풉니다. 예: Internet Archive의 Mine Bombers 3.11 2. 게임을 처음 실행하면 폴더 선택 창이 열립니다. TITLEBE.SPY가 들어 있는 폴더(압축을 푼 게임 폴더)를 고르세요. 한 번만 고르면 기억합니다.README 전문 보기 ↗
1995년 MS-DOS 아케이드 게임 Mine Bombers 3.11(Skitso Productions)을 최신 Windows와 Linux에서 DOSBox 없이 실행하기 위한 Rust 엔진입니다. OpenRCT2와 같은 방식으로, 이 프로젝트는 엔진이고 게임 데이터는 사용자가 자기 사본을 준비합니다. 원작 3.11은 무료(프리웨어)입니다. 브라우저에서 실행하는 부가 에디션도 있습니다.
| 상태 | |
|---|---|
| Windows (네이티브) | 실제로 실행해 확인했습니다. 릴리스 zip 제공 |
| Linux (네이티브) | CI(ubuntu-latest)에서 빌드·테스트에 더해 실제로 실행해 메뉴까지 뜨는지 확인합니다. 사람이 원작 파일로 직접 플레이해 확인한 적은 아직 없고, 배포용 패키지(tar.gz/AppImage)도 없습니다 — 소스 빌드만 가능합니다. |
| 웹 | 라이브 데모 (부가 에디션) |
이 저장소와 배포 사이트에는 원작 게임 파일이 들어 있지 않습니다.
TITLEBE.SPY가 들어 있는 폴더(압축을 푼 게임 폴더)를 고르세요. 한 번만 고르면 기억합니다.Windows (릴리스 zip): Releases에서 MineBombers-<버전>-windows-x64.zip을 받아 풀고 MineBombers.exe를 실행합니다. exe에 코드 서명이 없어 처음에 Windows의 "PC 보호" 창이 뜰 수 있습니다("추가 정보" → "실행"). 함께 올라오는 .sha256 파일로 받은 파일을 확인할 수 있습니다.
소스에서 빌드하려면 Rust 툴체인이 필요합니다.
Windows (소스)
cargo run --release
SDL2 DLL은 저장소에 들어 있고, 빌드할 때 build.rs가 lib/의 DLL을 exe 옆(target/debug, target/release)으로 복사합니다. 그래서 cargo run --release는 물론 빌드된 exe를 직접 실행하는 것도 그대로 동작합니다. exe를 다른 곳으로 옮길 때는 같은 폴더의 DLL도 함께 옮기세요. 릴리스 zip 자체는 pwsh scripts/package_windows.ps1이 만듭니다.
Linux
sudo apt install libsdl2-dev libsdl2-mixer-dev
cargo run --release
폴더 선택 창은 xdg-desktop-portal이 있는 데스크톱에서 열립니다. 없으면 아래 방법으로 폴더를 직접 지정하세요. 파일 이름이 대문자(TITLEBE.SPY)여야 하므로, 소문자로 풀린 사본은 인식하지 못합니다.
MineBombers | 기억한 폴더로 시작합니다. 없으면 폴더 선택 창이 열립니다. |
MineBombers <폴더> | 이번 실행에만 그 폴더를 씁니다(기억하지 않음). |
--choose-game-folder | 폴더 선택 창을 다시 열어 다른 폴더를 고릅니다. |
--campaign | 싱글플레이 캠페인 모드로 시작합니다. |
환경변수 MINEBOMBERS_GAME_DIR | 게임 폴더를 지정합니다. |
환경변수 MINEBOMBERS_USER_DIR | 설정과 기록을 저장할 폴더를 바꿉니다. |
게임 폴더는 읽기만 합니다. 원작 파일과 원작 DOS 판은 이 엔진이 쓰는 어떤 것도 보지 않습니다. 엔진이 쓰는 파일은 사용자 폴더에 저장됩니다.
| OS | 사용자 폴더 |
|---|---|
| Windows | %APPDATA%\MineBombers |
| Linux | $XDG_CONFIG_HOME/minebombers (없으면 ~/.config/minebombers) |
처음 실행할 때 게임 폴더에 이미 있던 HIGHSCOR.DAT, PLAYERS.DAT, IDENTIFY.DAT, OPTIONS.CFG, config.toml, keysrel.cfg는 없는 것만 복사해서 기존 기록을 이어받습니다.
config.toml로 화면과 키를 바꿀 수 있습니다.
[display]
window_mode = "Windowed" # "Windowed", "Fullscreen", "Borderless"
scale = 2 # 1, 2, 3
width = 1280
height = 960
vsync = true
target_fps = 60
keep_aspect_ratio = true # 4:3 유지 (검은 여백)
[gameplay]
default_speed = 1.0
auto_bots = true # 빈 슬롯에 AI 봇 배치
bot_difficulty = "Medium" # "Easy", "Medium", "Hard"
[graphics]
crt_shader = false # F6
dynamic_lighting = false # F7
[keys.player1]
left = "Left"
right = "Right"
up = "Up"
down = "Down"
stop = "Space"
bomb = "Return"
choose = "RightShift"
remote = "RightControl"
라이브 데모를 열면 처음 한 번 원작 파일(ZIP, 압축을 푼 폴더, 또는 파일들)을 고르라고 합니다. 필요한 약 30개 파일만 이 브라우저에 보관되고 어디로도 전송되지 않으며, 메뉴(☰)의 "Forget game files"로 지울 수 있습니다. 모바일에서는 온스크린 컨트롤을 켤 수 있습니다.
로컬에서 실행하려면:
powershell .\scripts\build_web.ps1
npx serve web
MB_GAME_DIR에 내 게임 폴더를 지정하고 build_web.ps1을 실행하면 사본이 web/data/(git 미추적)에 복사되어 개발 중에는 선택 창이 뜨지 않습니다.
원작 규칙과 별개인 선택 기능입니다. 원작과 동작이 같은지는 아직 자동으로 검증하지 않습니다.
Tab 또는 B로 [YOU] → [EASY] → [NORM] → [HARD]를 순환합니다. 혼자서도 대전할 수 있습니다.
봇은 사람과 같은 방식으로 플레이합니다. 바위를 파서 묻힌 보물까지 길을 뚫고(다익스트라 경로 탐색, 비용 단위는 틱),
폭발 패턴을 정확히 계산해 폭발 범위 밖으로 피하고, 도망갈 자리가 있을 때만 폭탄을 놓습니다.
모든 난이도가 상점에서 같은 장비를 사고, 난이도는 그 장비를 얼마나 잘 쓰는지만 바꿉니다 — 새 폭발에 반응하기까지의
시간(EASY·NORM은 사람 수준인 0.3~0.4초, HARD는 즉시), 계획 거리, 손으로 팔 수 있는 바위, 폭탄을 굴착에 쓰는지,
원거리 무기·특수 무기를 쓰는지, 몬스터를 얼마나 일찍 피하는지, 실수를 얼마나 자주 하는지.F6), 동적 동굴 조명(F7), 4:3 유지/전체 채우기(F4), 창 배율(F1~F3)| 동작 | Player 1 | Player 2 |
|---|---|---|
| 이동 / 굴착 | 방향키 | W A S D |
| 정지 | Space | Q |
| 폭탄 설치 / 구매 | Enter | E |
| 무기 선택 / 판매 | Right Shift | Tab |
| 원격 폭탄 기폭 | Right Ctrl | Left Ctrl |
키는 게임의 Options → Redefine Keys 또는 config.toml에서 바꿉니다.
| 단축키 | 기능 |
|---|---|
F1 F2 F3 | 창 배율 1x / 2x / 3x |
F4 | 4:3 유지 ↔ 전체 채우기 |
F5 | 배경 음악 켜기/끄기 |
F6 / F7 | CRT 필터 / 동적 조명 |
F11 또는 Alt+Enter | 전체화면 |
[ ] (또는 - +) | 게임 속도 감소 / 증가 (Backspace로 1.00x) |
Esc 또는 F10 | 라운드 종료 / 메인 메뉴 |
Pause 또는 P | 일시정지 (P는 어느 플레이어 키에도 쓰이지 않을 때만) |
라운드 중 속도·음악·CRT·조명·화면 비율을 바꾸거나 일시정지하면 화면 위쪽에 현재 상태가 잠깐 표시됩니다.
| 게임패드 | 기능 |
|---|---|
| D-Pad / 왼쪽 스틱 | 이동, 메뉴 이동 |
| A | 폭탄 / 선택 |
| B, LB | 정지 / 취소 |
| X | 무기 선택 / 판매 / 봇 난이도 |
| Y, RB | 원격 기폭 |
| Start / Back | 일시정지 / 메뉴로 |
게임 규칙과 시뮬레이션(월드, 봇, 상점 가격과 봇 장비 구매, 맵, 옵션, 기록 파일)은 crates/mb-core 한 곳에 있고, 네이티브 게임(src/, SDL2)과 웹 에디션(crates/mb-wasm)이 함께 씁니다. 규칙을 고치면 두 판에 같이 반영됩니다.
cargo test --workspace # 원작 게임 파일 없이 실행됩니다
node --test web/test/*.test.mjs
테스트는 원작 파일 대신 테스트가 직접 만든 대체 파일로 돕니다. 내 사본으로 실제 파일 검증까지 하려면 MB_GAME_DIR(게임 폴더)와 필요하면 MB_GAME_ZIP(원작 ZIP)을 지정하세요.
MB_GAME_DIR=/path/to/mb311 cargo test -p mb-wasm -- --include-ignored
Windows에서 cargo test --workspace가 os error 1455(페이징 파일 부족)로 실패하면 동시 빌드 수를 줄여 cargo test --workspace -j 2로 실행하세요.
CI는 Windows와 Linux에서 네이티브 엔진을, 그리고 웹 에디션을 빌드하고 테스트합니다.
문서: 결정 기록 · 에셋과 라이선스 노트 · 이전 설계 문서(보관)
mb-reloaded를 기반으로 합니다. 이 프로젝트의 요청에 Ivan Dubrov가 2026-10-01 상위 저장소에 MIT OR Apache-2.0 라이선스를 추가해 주었습니다.MIT OR Apache-2.0). 상위에서 온 코드와 이 저장소에서 새로 쓴 코드 모두 해당합니다. 근거는 결정 기록 D3에 있습니다.crates/mb-core/src/world/bot.rs), 설정 파일(src/config.rs), 폴더 선택과 사용자 폴더(src/gamedir.rs, src/userdata.rs), 웹 에디션(crates/mb-wasm, web/), 앱 아이콘(직접 그린 폭탄 그림)