Loading the catalog…
Loading the catalog…
하트 HP, 장애물, 그리고 벽을 못 지나가던 돌진형 기간: 2026-09-28 ~ 2026-09-30 트릭컬 리바이브 IP로 만드는 아이작류 로그라이크 팬게임 개발 기록입니다. 이번에 한 일 요약 플레이어 HP를 반 칸 단위 하트 로 전환, 적 HP 10배 스케일 탐색 자원 엘리프(골드)·열쇠·폭탄 과 체력 회복 픽업, 전투방 클리어 드롭 파괴 가능한 장애물 과 장애물 Layout 3종 장애물에 막힌 적을 위한 A* 우회 이동 돌진형 적의 벽 스침 처리 (이게 제일 길었다) SpawnPoint 배치 역할 지정 1. 체력을 하트 칸으로 바꾸다 기존 HP는 게이지였다. 아이작류인데 체력이 막대기라 피격 한 번의 무게가 잘 안 느껴졌고, 회복이나 방어막 수치도 소수점이 섞여서 설명하기 애매했다. 그래서 아이작처럼 하트 칸으로 바꿨다. 시작 HP 5칸. 내부적으로는 반 칸 = 1단위 정수 (5칸 = 10) 적에게 받는 피해는 최소 반 칸이 아니라 최소 1칸 층 배율 대신 약·중·강·치명 피해 등급표 . 3층 약공격은 1.5칸 HUD는 반 칸 하트 아이콘 줄, 방어막은 파란 하트로 이어서 표시 보스 대형 패턴도 등급을 매겼다. 새마음금고 착지는 중, 크레용사용 내려찍기는 강, 황금 3방향 내려찍기는 치명. 그런데 왜 적 HP를 10배로? HP를 정수로 바꾸고 나니 "최대 HP의 N%" 같은 효과를 계산할 때 공격력 1 기준 수치로는 해상도가 너무 낮았다. 그래서 플레이어 쪽 칸 수는 그대로 두고, 적 쪽 숫자만 10배 로 키웠다. 플레이어 기본 공격력 1 → 10 적·보스·장애물 HP ×10 새마음금고 보물 회복 15 → 150 체감 난이도는 그대로인데 이후 화상 같은 도트 피해나 % 효과를 넣을 여유가 생겼다. 비율 계산 결과는 내림하되 최소 1단위를 보장하는 공통 함수로 통일했다. 기존 아이템도 하트 규칙에 맞춰 손봤다. 코미의 베개는 "N킬마다 회복", 광기의 가면은 "주변 적에게 공격력 기반 오라 피해"로 바꿨고, 풍선 갑옷은 +1칸. 2. 탐색 자원: 엘리프, 열쇠, 폭탄 보스방으로 직행하는 것과 방을 뒤지는 것 사이에 선택이 있으려면, 뒤졌을 때 얻는 게 있어야 한다. 그래서 아이작의 동전·열쇠·폭탄에 해당하는 자원을 넣었다. 셋 다 보유 한도 99. 픽업 하나에 1개 가득 차 있으면 줍지 않고 바닥에 남는다. 대신 밀 수 있는 충돌체라 발에 채인다 체력 회복 픽업(1칸)도 같은 규칙. 회복량이 전부 들어갈 때만 줍는다 (반 칸만 비었으면 안 주움) Pickup 레이어는 플레이어·환경·다른 픽업과만 충돌해서, 적과 투사체는 하트를 통과한다 일반 전투방은 클리어할 때 한 번만 드롭을 추첨한다. 확률 결과 (가중치) 33% 하트 30 · SP 30 · 엘리프 20 · 열쇠 12 · 폭탄 8 67% 없음 방 seed로 재현되고, 재방문하거나 층을 다시 불러와도 재추첨하지 않는다. 그리고 기존의 "클리어 시 SP 확정 지급"과 "적 처치 시 25% SP 드롭"은 삭제 했다. 에르핀 저학년 스킬이 너무 자주 돌아서 SP 공급을 줄일 필요가 있었다. 폭탄은 이번엔 얻고 들고 다니는 것까지만 만들었다. 던지고 터뜨리는 건 비밀방과 함께 다음 주차. 3. 파괴 가능한 장애물과 Layout 방 크기(Small·Basic·Wide·Tall·Large)는 다양해졌지만, 같은 크기의 방은 결국 비어 있거나 기둥 하나뿐이라 다 비슷하게 느껴졌다. 그래서 1 × 1 파괴 가능 장애물을 만들고, 이걸 배치한 Layout을 수작업으로 설계했다. 플레이어, 적, 투사체, 돌진 모두 막는다 플레이어 공격 5타 에 파괴 (공격력과 무관하게 공격 1회 = 1타) 아티팩트 부가 피해(광기의 가면 오라, 번개)나 적 공격은 타수에 안 센다 기본 3% 확률로 드롭. 장애물 ID + 방 seed로 결정되고, 파괴 상태는 방 상태에 남아서 재방문해도 부서진 그대로 "공격력과 무관하게 5타"로 정한 이유는, 딜 빌드일수록 장애물이 휴지처럼 녹는 걸 막고 싶어서였다. 장애물은 엄폐물이기도 하니까. Layout은 Large 방 기준으로 엄폐물 블록형 등 3종을 만들었다. 대신 사람이 만든 Layout은 실수가 나기 쉬워서, 검증기가 이런 걸 잡아서 명시적으로 실패 하게 했다. 장애물끼리 겹침 문과 필수 통로가 막힘 모든 영역에 도달 가능한지 원거리 적 스폰 위치에서 사선이 나오는지 4. 막힌 적에게 길을 알려주기 (A*) 장애물을 놓자마자 예상대로 적이 장애물에 코를 박고 멈췄다. 기존 적들은 플레이어를 향해 직선으로만 움직였으니까. 규칙은 단순하게 잡았다. 목표까지 몸통 크기의 직선 이 비어 있으면 그냥 직선 이동 막혔으면 적 주변을 0.5유닛 격자로 나눈 A* 경로 로 우회하고, 보이는 가장 먼 경로점을 향해 이동 경로는 0.25초마다 재계산. 같은 배치면 같은 경로 적 타입별로는 이렇게 다르게 반응한다. 적 사선/경로가 막혔을 때 원거리형 사거리 안이어도 쏘지 않고 우회 저격형 조준을 시작하지 않음. 조준이 끝난 순간 막혀 있으면 발사 취소 후 재배치 돌진형 직선이 뚫려 있을 때만 예고 시작. 예고를 시작한 뒤엔 막혀도 그대로 돌진 기둥에 등을 붙인 원거리형 seed 1~10으로 장애물 방 20개를 돌리는 Play Mode 테스트를 하다가 재밌는 사례가 나왔다. 원거리형이 기둥에 등을 붙인 채 이동도 사격도 안 하고 멈춰 있었다. 원인은 후퇴 로직이었다. 플레이어가 최소 사거리 안으로 들어오면 뒤로 물러나는데, 뒤가 기둥이라 못 물러나고, 물러나는 중이라 쏘지도 않았다. 그래서 직선 후퇴가 막히면 좌우 45°를 확인해서 빈 쪽으로 물러나고, 셋 다 막혔으면 그냥 제자리에서 쏘게 했다. 궁지에 몰린 적이 반격하는 게 오히려 자연스럽다. 5. 돌진형이 벽을 스치면 멈추는 버그 — 네 번 고친 이야기 이번 기간의 하이라이트. 수정 → 피드백 → 재수정이 네 번 반복됐다. 1차: 스치기만 해도 정지 돌진형은 벽에 부딪히면 멈추고 잠깐 빈틈을 보인다. 그런데 벽을 살짝 스치기만 해도 정면 충돌처럼 멈췄다. 장애물이 생기니 이게 훨씬 자주 보였다. 충돌 법선과 진행 방향의 각도로 나눴다. 얕게 스친 건 벽을 따라 미끄러지고, 정면에 가까우면 멈춘다. 문과 플레이어에 부딪힌 건 항상 멈춘다. // 개념만 단순화한 예시 float dot = Vector2.Dot(chargeDir, contactNormal); bool isGlancing = /* 입사각이 기준 이상 */; if (isGlancing) SlideAlong(contactNormal); else EnterRecovery(); 2차: 벽에 붙은 채 다시 돌진하면 또 멈춤 미끄러짐은 잘 됐는데, 첫 충돌 뒤 벽에 붙은 상태에서 다음 돌진 을 시작하면 또 막혔다. 원인은 Unity 물리 콜백이었다. 이미 접촉 중인 충돌 쌍에는 OnCollisionEnter2D 가 다시 오지 않는다. 판정을 Enter에만 걸어놨으니 두 번째 돌진에선 판정 자체가 안 돌고 그냥 물리에 막힌 거다. OnCollisionStay2D 에도 같은 판정을 연결했다. 3차: 벽에서 멀어지는 돌진도 정면 충돌 이번엔 벽에 붙어 있다가 벽 반대쪽으로 돌진해도 멈췄다. 내적에 절댓값을 씌운 게 문제였다. |dot| 으로 각도를 보면 벽으로 들어가는 방향이든 벽에서 나오는 방향이든 똑같이 "정면"으로 판정된다. 벽으로 접근하는 접촉일 때만 각도를 판정하고, 이탈하거나 평행하게 움직일 땐 원래 방향을 유지하도록 바꿨다. 접촉점이 여러 개면 벽 쪽으로 가장 강하게 들어가는 법선을 쓴다. 4차: 미끄러진 뒤 원래 방향으로 안 돌아옴 마지막으로, 미끄러짐이 조준 방향 자체를 덮어써서 벽을 벗어나도 벽 접선 방향으로 계속 가버렸다. 조준 방향은 그대로 보존하고, 벽 접촉이 유지되는 동안만 조준 방향을 벽 접선에 투영해서 이동하도록 바꿨다. 접촉이 끝나면 원래 돌진 방향으로 복귀한다. 덤: 스케일 연출이 충돌체를 키우고 있었다 추적하다 보니 돌진형의 예고·돌진·회복 연출이 루트 Transform 스케일 을 바꾸고 있었다. 보이는 건 살짝 커지는 연출인데 Collider도 같이 커져서, 판정 범위가 상태마다 달라지고 있었다. 1편에서 새마음금고 탄성 연출을 시각용 자식에만 걸었던 것과 같은 문제다. 돌진형뿐 아니라 일반 적·소환몹 전부 상태 배율을 1로 맞췄다. 추가로 정한 것 미끄러짐 허용 범위는 벽면 기준 30°까지로 조정 예고 시작 전 플레이어와의 여유 거리, 첫 장애물까지의 거리가 모두 최소 1유닛이어야 돌진 (코앞에서 돌진 시작하는 어색함 방지) 예고선은 첫 벽 접촉 지점까지만 그린다. 미끄러질 경로까지 예측해서 그리진 않는다 매 단계마다 자동 검증에 케이스를 추가했더니(80° 경계, 진입/유지 콜백, 이탈 방향 보존, 접촉 종료 후 복귀...) 나중엔 돌진형 검증만 꽤 두꺼워졌다. 그래도 수동 피드백이 올 때마다 "이건 이미 테스트로 막혀 있다"고 확인할 수 있어서 마음은 편했다. 6. SpawnPoint에 역할 붙이기 장애물 Layout이 생기니 "적이 어디서 나오느냐"도 중요해졌다. 원거리형이 플레이어 코앞에서 나오면 의미가 없고, 돌진형이 기둥 바로 앞에서 나오면 돌진을 못 한다. 그래서 SpawnPoint에 배치 역할을 붙였다. 역할 어울리는 적 근접 압박 추적형, 고속형 후방 사격 원거리형, 저격형 돌진 경로 돌진형 역할이 안 맞는 배치는 검증 단계에서 거부한다. 다음 단계는 이 위에 위협 점수와 방 난이도 를 얹어서, 층 안에서 쉬운 방과 어려운 방의 흐름을 설계하는 것. 다음 목표 엘리프·열쇠·폭탄 HUD (미니맵·아티팩트 HUD 재배치와 같이) 폭탄 사용과 비밀방 방 난이도와 층 규모 확장, 특수방 추가
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
팬게임 개발일지. 하트 HP, 장애물, 그리고 벽을 못 지나가던 돌진형 기간: 2026-09-28 ~ 2026-09-30 트릭컬 리바이브 IP로 만드는 아이작류 로그라이크 팬게임 개발 기록입니다. 이번에 한 일 요약 플레이어 HP를 반 칸 단위 하트 로 전환, 적 HP 10배 스케일 탐색 자원 엘리프(골드)·열쇠·폭탄 과 체력 회복 픽업, 전투방 클리어 드롭 파괴 가능한 장애물 과 장애물 Layout 3종 장애물에 막힌 적을 위한 A* 우회 이동 돌진형 적의 벽 스침 처리 (이게 제일 길었다) SpawnPoint 배치 역할 지정 1. 체력을 하트 칸으로 바꾸다 기존 HP는 게이지였다. 아이작류인데 체력이 막대기라 피격 한 번의 무게가 잘 안 느껴졌고, 회복이나 방어막 수치도 소수점이 섞여서 설명하기…
Open source팬게임 개발일지. 층별 보스와 보상 시스템 기간: 2026-09-19 ~ 2026-09-28 트릭컬 리바이브 IP로 만드는 아이작류 로그라이크 팬게임 개발 기록입니다. 이번에 한 일 요약 1~3층 보스 부스러기 · 새마음금고 · 크레용사용 완성, 3층 Run에 연결 무작위 아티팩트 1개 지급 → 아티팩트·스펠 후보 3개 중 1개 선택 으로 보상 구조 변경 첫 콘텐츠 묶음: 스펠 3종 + 아티팩트 3종 전체 Run 플레이테스트와 피드백 반영 1. 보스 세 마리를 한 틀로 묶기 보스마다 패턴이 완전히 다르다 보니, 처음부터 보스별 컨트롤러를 따로 짜면 금방 난장판이 될 것 같았다. 그래서 새마음금고를 만들면서 공통 계약 IBossPatternRuntime 을 먼저 뽑았다. 이 패턴을 지금 고를 수 있는가 시작…
Open source