Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

검 키우기 (SwordIdle)

812노드 스킬트리를 능동적으로 파며 검을 키우고, 마왕을 소환·처치해 엔딩을 보는 방치형 액션 게임. Unity 6 · C# · Windows

A voxel idle-action game where you dig through an 812-node procedurally generated skill tree to grow your sword and summon the demon lord. Scene, materials, UI, and sound are all generated in code.

층 밴드별 배경


이 프로젝트의 특징

  • 스킬트리 812노드를 손배치하지 않고 절차 생성한다. 시드 고정 난수 + 날개별 규칙(Core.RULES·GenSeq)으로 종류 배분·수치 스케일·키스톤 배치를 자동 결정한다. 트리 재편 시엔 세이브 마이그레이션까지 처리한다.
  • 씬·머티리얼·UI·사운드가 전부 코드 생성이다. 오디오 에셋 0개 — SFX 14종과 BGM을 런타임에 절차 합성한다. 프리팹도 없다. 유일한 외부 에셋은 Blender로 만든 복셀 FBX 15종.
  • 밸런스를 헤드리스 시뮬레이터로 튜닝했다. balsimCore.cs를 그대로 링크해 게임 로직을 동일 재현한다. 비용 곡선은 지수라 Mul ±0.01에 완주 시간이 2~3배 달라져, 눈대중 조정이 불가능하다.

게임 루프

  1. 전투 (기본 10초, 최대 30초) — 10×10 보드에 몬스터 스폰. 마우스 포인터를 올리면 본체 검이 근처 적을 광역으로 벤다(능동 조작). 분신 검은 무작위 적에게 자동 강하. 처치 5(단축 시 3)마리당 층 상승, 10층 배수 보스.
  2. 노드 스크린 — 정산 + 격자 스킬트리. 다음 전투 버튼을 눌러야 진행(자동 시작 없음).

방치형이지만 전투·진행 모두 능동이다(오프라인/방치 보상 없음).

10층 밴드마다 하늘·안개·조명·지면색과 BGM이 부드럽게 전환된다(지형 지오메트리는 동일).

1~10층 초원 21~30층 달밤 31~40층 설원 41~50층 화산

처치 체감 (Keep on Mining식 주스)

  • 코인 흡수 — 처치마다 코인이 튀었다가 골드 카운터로 빨려 들어간다(일반 3·보스 10·황금 16, 도착 시 카운터 펄스+틱음)
  • 카메라 셰이크 + 히트스톱 — 슬램·보스/황금 처치·전멸기·마왕 연출에서 화면이 흔들리고 순간 멈칫한다 (히트스톱은 timeScale 0.07을 unscaled 타이머로 복원 — ESC 일시정지와 충돌하지 않게 가드)
  • 킬 스트릭 피치 — 1.5초 안에 연속 처치하면 킬 사운드 음이 점점 올라간다(최대 +45%)
  • 잭팟 크리 — 본체 검 크리티컬의 10%가 슈퍼크리(피해 ×2 추가). 화면 플래시+주황 왕큰 팝업+전용 사운드. 분신은 제외(플래시 스팸 방지), 허공 스윙엔 연출 없음
  • 황금 몬스터 — 비보스 스폰의 1.3%. 금빛 발광+반짝 파티클, 골드 ×10, 처치 시 잭팟 아르페지오+골드 러시
  • 골드 러시 — 황금 몬스터 처치 or 콤보 만땅 도달 시 6초간 골드 ×2 + 스폰 가속(0.45×). 금빛 화면 펄스 오버레이 + 팡파레 + BGM 차임 가속. 지속 중 재발동 시 시간 연장

골드 러시

발동형 연출

스킬 날개 끝에서 해금되는 주기 발동 노드들. 예고 링으로 착탄 지점을 먼저 알린 뒤 터진다.

운석 소환 (낙하 중) 검풍 회오리 (보드 횡단)

스킬트리 (총 812노드)

  • 4방향 날개 각 200노드(스킬 날개만 발동형 3종이 끝에 붙어 203) — 공격(위·빨강) / 스킬(오른쪽·보라) / 분신(왼쪽·청록) / 골드(아래·노랑). 손배열이 아니라 절차 생성(Core.RULES+GenSeq): 날개별 종류 배분·수치 스케일·키스톤(10마다) 규칙으로 자동 생성.
  • 마왕 축 9노드 — 4날개와 겹치지 않는 우하단 대각에 봉인 노드 8 + 마왕 소환 1. 입구는 4날개를 각 150개 이상 사야 열린다. 봉인 비용은 공격 날개 곡선의 idx 150+3i에 앵커(해금 시점 경제 기준 "마지막 파밍" 관문 — 시뮬 기준 축 공개 7.6h → 엔딩 8.3h). 고정값이면 해금 즉시 다 사져서 관문 느낌이 없다. 마왕 소환 노드 구매 시 즉시 최종 결전(진행도 페이즈 포효·HP바 백열 변화) → 무조건 처치(슬로모션+화이트아웃 후 엔딩 화면, 통계에 여정 시간 포함) → 계속 플레이(세이브 cleared).
  • 모든 노드 1회 구매, 구매한 노드와 인접한 노드만 공개. 노드 클릭=구매 · 드래그=이동 · 휠=확대/축소.

스킬트리 전체

572/812 노드 구매 상태. 4날개가 각 사분면을 채우고, 우하단 대각으로 마왕 축이 뻗는다. 키스톤(10마다)은 후광과 금별 배지로 강조된다.

  • 검 진화(강철→사파이어→자수정→황금→진홍→프리즘)는 공격력 노드+공격 키스톤 구매 수 0/10/23/40/60/81로 결정.
  • 체감 키스톤 4종(화면이 눈에 띄게 바뀌는 강함): 연쇄 번개(처치 시 근처 적에 번개)·검기 폭발(주기적 화면 전체 베기)·연격 콤보(연속 처치 시 피해 배수 스택)·분신 폭증(분신+5). 키스톤 슬롯에 배치.
  • 체감 일반 노드 3종(v3, 풀에서 뽑히는 레벨 스택형): 처형(공격 날개 — HP 처형선(5%+2%p/lv, 상한 30%) 이하 적 즉살)·운석 소환(스킬 날개 — 주기 낙하 광역)·검풍 회오리(분신 날개 — 보드를 휩쓰는 이동 장판).
  • 주의 — 트리 배치는 시드 고정 난수 생성 — Core.cs의 시드/생성 알고리즘·종류 풀을 바꾸면 기존 세이브의 노드 구성이 뒤섞인다. 그래서 v3(풀 개편)에서 SAVE_VER를 올리고 구 트리는 현행 가격 전액 환급 + 초기화로 마이그레이션했다(비용은 wing+idx로만 결정되므로 정확 환급 가능). 골드·기록·클리어는 유지.

검 외형 — 티어 6종 × 강화 40단계

검 모델은 FBX에 색을 굽지 않고 런타임에 조립한다. Voxel.Retint가 파트 이름 규칙(p_<역할>_*)을 읽어 역할별로 머티리얼을 입히고, 티어는 날·칼날빛·가드·보석·발광·길이를 바꾼다. 강화 레벨은 그 위에 장식을 누적한다 (Lv2/5/8 가드 스파이크 2→4→6, Lv4 폼멜 날개, Lv7 칼끝 파편 왕관, Lv10 핀, Lv3/6/9 오라 링 1→3).

강철 사파이어 자수정 황금 진홍 프리즘

윗줄 강화 Lv0(티어 기본형), 아랫줄 Lv7(가드 스파이크·폼멜 날개·파편 왕관·오라 링 2 누적). 프리즘은 날 색이 무지개로 순환하고, 티어 2 이상은 룬 조각이 검 주위를 돈다.

마왕 최종 결전

4날개를 각 150노드 이상 사면 우하단 대각에 봉인 축이 열린다. 봉인 8노드 + 소환 노드를 사면 즉시 결전이 시작되고, 배경이 화산 팔레트로 바뀐다. 진행도 33/66/90%에서 페이즈 포효(셰이크·붉은 플래시·거대 링)가 터지고, HP바는 핏빛에서 백열로 변한다. 처치는 확정 — 1.1초 슬로모션과 화이트아웃 뒤 엔딩 화면으로 넘어간다.

강림 처치 (슬로모션 + 화이트아웃)

밸런스

balsim(헤드리스 시뮬레이터, Core.cs를 그대로 링크해 로직 동일 재현)으로 튜닝했다.

  • 적 HP는 하이브리드 곡선: 30층까지 지수(×1.16), 이후 성장률 점감. 순수 지수는 후반에 DPS가 못 따라가 벽이 생긴다.
  • 스낵게임 페이싱 (balsim snack 스윕으로 확정): 비용 BaseCost × Mul^idx, Mul≈1.220 (공격/골드 1.220, 스킬 1.224, 분신 1.227). 마왕 축 해금 요구치 각 날개 150개. 보상 증가율 ×1.08 유지. 지수 곡선이라 Mul 민감도 극심(±0.01이면 완주 2~3배) — 조정은 반드시 시뮬로.
  • 결과 (full-sim, 자동 최적 플레이 상한 DpsEff=1.0): 엔딩 ~8.3시간(691노드·314층), 완주 ~12.2시간 (809노드·386층·프리즘), 벽 없음 — 실플레이는 포인터 유효율만큼 길어져 대략 엔딩 11시간·완주 17시간 예상. 황금 몬스터·골드 러시 수입과 v3 신규 노드(처형 유효HP -30% 등) 기여를 시뮬에 반영한 수치. 티어 필요치는 전노드 82개 기준(사파이어10/자수정23/황금40/진홍60/프리즘81). ※ 페이싱 이력: 초기 문서의 "완주 31시간"은 외삽 추정 오류(실측 97h). 스낵게임 방향 확정 후 현재 값으로 인하. ※ 위 시뮬 수치의 노드 수(691·809)는 해당 시뮬 실행 시점 기준 — 현재 트리는 812노드다(v4에서 발동형 3종 추가).
  • 황금 몬스터(×10, 1.3%)·골드 러시(×2, 6초, 스폰 가속)는 balsim SimBattle에 반영됨 (plain 인자로 끄고 비교).

구조 (씬/머티리얼은 코드 생성, 모델은 Blender 제작 FBX)

  • Assets/Scripts/Core.cs — 세이브, 스킬트리 절차 생성(KINDS/RULES/GenSeq/WINGS + 마왕 축), 효과 집계(E), 스탯, 티어
  • Assets/Scripts/Game.cs — 메인 루프: 카메라/배경/보드 생성, 전투 상태머신, 검 4모션, 적 4종, 체감 이펙트, 마왕 결전
  • Assets/Scripts/GameUI.cs — 런타임 UGUI/TMP(하단 패널·정산·토스트·데미지 팝업·콤보 카운터·마왕 HP바·엔딩 화면). 한글 폰트는 OS 폰트에서 런타임 생성(맑은 고딕 우선, 굴림·바탕·Arial 순 폴백)
  • Assets/Scripts/TreeBoard.cs — 스킬트리 보드(패닝·줌·구매·공개 로직)
  • Assets/Scripts/Voxel.cs, Agents.cs — 복셀/모델 헬퍼(Spawn·Retint·Cleanup), 검/적/파티클/번개 상태 클래스
  • Assets/Scripts/Sfx.cs — 절차 합성 사운드(오디오 에셋 없음). SFX 14종 + BGM(바람 노이즈, 층 테마별 코드 패드 크로스페이드, 5음계 차임). 볼륨은 하단 사운드 버튼 또는 M 키로 100→60→30→음소거 순환, 세이브에 저장
  • Assets/Resources/Models/*.fbx — Blender 스크립트로 제작한 HD 복셀 모델 15종(검·룬·뿔·적 4종·나무 2·바위 3·구름·돌·타일). 파트 이름 규칙 p_<역할>_*Voxel.Retint가 역할(body/dark/eye/blade/edge/guard/gem/grip/leaf/trunk/visor/cream 등)별로 런타임 머티리얼을 입힌다(층별 색·티어 진화·발광이 전부 여기서 결정되므로 FBX에 색을 구울 필요 없음). 재생성: Blender/swordidle_models.py를 Blender(MCP)에서 import swordidle_models; swordidle_models.build_all().
  • Assets/Editor/ProjectSetup.cs — CLI 셋업(씬·Resources 머티리얼·Always Included 셰이더·아이콘)과 빌드
  • 주의Resources/std·ghost·unlit·add.mat은 셰이더 스트리핑 방지용 — 지우면 빌드에서 분홍 렌더링 난다. "GUI/Text Shader"는 에디터 리소스라 Always Included에 넣으면 빌드가 깨진다(이미 겪음)

조작 / 편의

  • M 키 또는 하단 사운드 버튼: 볼륨 100→60→30→음소거 순환 (세이브)
  • ESC: 일시정지 메뉴(계속·볼륨·저장 후 종료). 게임 시간 정지(timeScale=0)
  • 첫 플레이엔 조작 힌트 표시(첫 처치 시 사라짐), 첫 정산 화면엔 노드 구매 안내 토스트
  • 창이 비활성이면 10fps로 낮춰 CPU/GPU 절약(게임 로직은 계속 진행)
  • 앱 아이콘: Assets/icon.png(Blender 렌더). ProjectSetup.Build가 매 빌드 시 자동 등록

세이브 / 디버그

  • 세이브: %USERPROFILE%\AppData\LocalLow\SwordIdle\검 키우기\save.json (10초마다 + 종료 시)
    • 원자적 저장(tmp→교체) + save.json.bak 백업 + 본 파일 파손 시 백업 자동 복구, v 버전 필드로 마이그레이션 대비
    • SAVE_VER=4. v1: 러프 환급 / v2·v3: 트리 재편이라 현행 가격 전액 환급 + 트리 초기화 (로드 시 토스트 안내)
    • 초기화 시 save.json·.bak·.tmp를 모두 삭제해야 함(백업이 남으면 다음 로드에서 되살아남)
  • 디버그 환경변수(전부 세이브 차단): SWORD_T=초(전투 시간), SWORD_G=골드(double), SWORD_B=N(싼 노드부터 자동 구매), SWORD_F=1(새 세이브), SWORD_W=N(분신 강제), SWORD_MAW=1(마왕 결전 즉시 테스트), SWORD_CAP=폴더(스크린샷 3장 후 종료)

실행 / 빌드

  • 에디터: Unity 6000.0.77f1로 프로젝트 열고 Assets/Scenes/Main.unity 재생
  • 빌드 결과물: Build\SwordIdle.exe (Win64)
  • CLI 재빌드:
    Unity.exe -batchmode -quit -projectPath <이 폴더> -executeMethod ProjectSetup.Build
    
    (씬/머티리얼/설정을 처음부터 다시 만들 때는 ProjectSetup.Setup)
  • 주의 — 에디터로 프로젝트를 열어둔 채 CLI 빌드하면 실패한다("another Unity instance"). 에디터를 닫거나, 프로젝트를 임시 폴더에 복사해 거기서 빌드할 것.

라이선스

MIT

About

검 키우기 — Electron판을 Unity 6로 포팅한 방치형 게임 (800노드 스킬트리 + 마왕 엔딩)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages