BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기낮엔 용사, 밤엔 마왕 — 성을 털고 지키는 방치형 성 키우기. React + TypeScript + Agent8 Game Server, Verse8 배포. Play: https://verse8.io/Y4e8r8Z
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
낮에는 남의 성을 털고, 밤에는 내 성을 지킨다. 용사 셋을 이끌고 다른 마왕의 탑을 공략하고, 내 탑에는 몬스터를 세워 밤마다 몰려오는 침입자를 막는 방치형 성 키우기 게임입니다. Verse8(Agent8) 플랫폼에 배포했고, 설치 없이 브라우저에서 바로 돌아갑니다. 세로 화면에 맞췄고, 마우스 클릭(터치)만으로 조작합니다. 화면에는 늘 내 마왕성 탑이 서 있습니다. 탑의 층마다 몬스터를 세우고, 꼭대기에는 마왕이 앉아 있습니다.README 전문 보기 ↗
낮에는 남의 성을 털고, 밤에는 내 성을 지킨다.
용사 셋을 이끌고 다른 마왕의 탑을 공략하고, 내 탑에는 몬스터를 세워 밤마다 몰려오는 침입자를 막는 방치형 성 키우기 게임입니다. Verse8(Agent8) 플랫폼에 배포했고, 설치 없이 브라우저에서 바로 돌아갑니다. 세로 화면에 맞췄고, 마우스 클릭(터치)만으로 조작합니다.
▶ 플레이: https://verse8.io/Y4e8r8Z
화면에는 늘 내 마왕성 탑이 서 있습니다. 탑의 층마다 몬스터를 세우고, 꼭대기에는 마왕이 앉아 있습니다.
공성과 출정
방치형 흐름
운영 요소
| 영역 | 사용 기술 |
|---|---|
| 클라이언트 | React 18, TypeScript 5.7, Vite 8 |
| 렌더링 | DOM + CSS 스프라이트 시트(홈·공성), Canvas 2D(전투) |
| 서버 | Verse8 Agent8 Game Server (server/src/*.ts, 원격 함수 · $global 상태/컬렉션 · $asset 재화 · $lock) |
| 플랫폼 | @agent8/gameserver, @verse8/platform(VX Shop), @verse8/ads(보상형 광고) |
| 테스트 | Vitest 143개(순수 게임 규칙·밸런스), Agent8 서버 하네스 25개(원격 함수) |
| 아트 | PixelLab으로 생성한 픽셀 아트(유닛·배경·UI 키트·아이콘·컷신) |
조작되면 안 되는 값은 전부 서버에서
골드·영혼석은 Verse8 Asset, 진행도는 Global User State, 순위는 Global Collection에 둡니다. 원격 함수는
누구나 부를 수 있는 공개 엔드포인트라고 보고, 클라이언트가 보낸 점수·보상·결과는 쓰지 않습니다. 공성 결과,
전리품, 광고·패스 보상, 결제 지급($onItemPurchased, 같은 구매 ID 중복 지급 방지)은 서버가 직접 계산합니다.
결정론 전투 — 서버와 화면이 같은 결과
전투는 server/src/battle.ts의 순수 함수이고 시드(계정 + 시각)로만 무작위가 정해집니다. 서버가 공성 파도의
승패를 정하면, 화면은 같은 결과를 걸어오고 싸우고 쓰러지는 연출로 재생합니다. 게임 규칙은 DOM을 모르기 때문에
Vitest에서 그대로 돌립니다.
시뮬레이션으로 맞춘 성장 곡선
성장 공식은 server/src/growth.ts, 숫자는 BALANCE(server/src/catalog.ts) 한 곳에만 둡니다.
tests/balance.test.ts가 50로컬 서버 모드 — 배포 없이 서버까지 확인
Agent8 서버는 클라우드에서만 돌아서 서버를 고칠 때마다 배포해야 확인할 수 있었습니다. 그래서 브라우저 안에
$global·$asset·$lock·$sender를 흉내 낸 저장소를 깔고 같은 server.ts를 그대로 실행하는 모드를
만들었습니다(src/services/localServer.ts, 개발 서버에서 ?local=1일 때만 켜지고 배포 빌드에는 빠집니다).
여러 계정, 시간 되감기, 가짜 결제로 끝까지 플레이해 보고 배포합니다. README의 캡처도 이 모드로 찍었습니다.
플랫폼 코드는 서비스 층에만
Verse8 SDK 호출은 src/services/(api, shop, ads, connection)에만 있고, 화면과 게임 규칙은 SDK를 직접 부르지
않습니다.
npm install
cd server && npm install && cd .. # 서버 타입 검사용
npm run dev # 개발 서버 (Agent8 preview 서버에 연결)
# 브라우저에서 http://localhost:5173/?local=1 → 로컬 서버 모드(배포 없이 서버 코드까지 실행)
npm test # Vitest 143개
npm run test:server # Agent8 서버 하네스 25개
npx tsc --noEmit -p tsconfig.app.json # 클라이언트 타입 검사
npx tsc -p server/tsconfig.json --noEmit # 서버 타입 검사
npm run build # 배포 빌드
로컬 서버 모드 콘솔 도구: localServer.gold(5000), localServer.rewind(90)(분 단위로 시간 되감기),
localServer.buy('premium')(가짜 결제), localServer.as('다른계정'), localServer.wipe().
server/src/ 게임 서버 (원격 함수, 전투, 공성, 성장 곡선, NPC, 리그, 패스, 결제·광고 보상)
catalog.ts 유닛·마왕 능력치와 BALANCE(모든 밸런스 숫자)
growth.ts 성장 곡선(능력치·비용·골드·k/m 표시)
battle.ts 결정론 라운드 전투
siege.ts 공성 파도
server/test/ Agent8 서버 하네스 테스트
src/screens/ 화면(홈 탑, 출정, 강화, 편성, 리그·패스, 상점, 설정, 컷신)
src/render/ 스프라이트, 전투 캔버스, 공성 연출
src/services/ Verse8 SDK 연결(api, shop, ads), 로컬 서버 모드
src/tutorial/ 클릭 튜토리얼
tests/ 게임 규칙·밸런스 테스트
docs/ 설계·결정 기록(docs/superpowers/specs), 아트·UI 규칙, VX Shop 상품표
art/ PixelLab 원본과 후보
art/.public/audio/CREDITS.md.