멀티플레이 클라이언트 화면에서 클라이언트 플레이어가 끊겨 보이던 이유

1. 문제 제기멀티플레이 게임을 만들다 보면 이런 순간이 온다.서버와 클라이언트는 둘 다 살아 있다.입력도 들어간다.위치도 대충 맞는다.그런데 이상하게도 내 화면에서 내 캐릭터가 부드럽게 움직이지 않는다.반응은 나쁘지 않은데, 화면은 미세하게 끊겨 보였다.처음에는 흔히 떠올리는 답부터 의심했다.서버 correction이 너무 자주 들어와서 캐릭터가 덜덜거리던 게 아닐까.결론부터 말하면 반은 맞고 반은 틀렸다.처음엔 실제로 correction 구조를 손봐야 했지만, 마지막까지 남아 있던 흔들림의 핵심은 서버 보정이 아니라 화면이 무엇을 따라가고 있었는가의 문제였다.2. 첫 번째 가설: correction이 너무 자주 들어온다당시 구조를 단순화하면 아래와 같았다.클라이언트는 자기 입력으로 먼저 움직인다.서버..

Attack3 projectile 넉백 거리 오류 수정

1. 문제 요약처음 보인 증상은 단순했다.Attack3 projectile에 맞으면 플레이어가 엉뚱한 곳으로 밀렸다.플레이어의 움직임 로직 문제라고 처음에 생각했다.처음엔 넉백 거리 버그처럼 보였다.하지만 실제로는 distance, direction, collision, input timing, projectile path, hierarchy가 같이 얽혀 있었다.2. 시도 목록과 결과#시도관측 결과결론1hit/stun telemetry 로그 추가second-hit 시점, planned move, actual delta, collision을 분리해서 볼 수 있게 됨감으로 보던 문제를 frame data로 바꾸는 단계2stun 마지막 frame clamp 적용 + impact position 기준 방향 실험..

AoE 수정 회고: 보이는 경계와 실제 데미지 경계를 일치시키기

1. 문제 요약플레이어가 빨간 원 안에 있다고 느끼는데도, 가장자리에서 데미지가 안 들어오는 현상이 있었다.핵심 원인은 단순했다.시각 경계(플레이어가 보는 원)물리 경계(실제 데미지 판정 원)이 두 경계가 같은 기준이 아니었다.2. Before Logic1) damage_hit = distance(player, center) 그래서 아래 구간이 생겼다.radius 이 구간에서 플레이어 체감은:눈에는 빨간 원 안실제 판정은 원 밖결과: 데미지 미적용즉, "범위 안인데 왜 안 맞음?"의 답은플레이어가 본 범위(시각 범위)와 실제 데미지 범위(물리 범위)가 달랐기 때문이다.3. After Logic1) damage_hit = distance(player, center) 이후에는 아래가 성립한다.visual-i..

Lunge 뒤돌아감 버그 수정

1. 문제 정의보스 Lunge 공격에서 아래 현상이 반복됐다.도약 시작 프레임에서 플레이어를 향하지 않고 뒤돌아가거나 옆으로 새는 방향 오차다시 되돌아가는 공격모션 (자식 Visual은 전진했는데 부모 BossController 루트 이동이 덜 반영되는 좌표 불일치)결과적으로 착지 위치, 타격 판정, 화면 연출이 서로 어긋나 전투 체감 품질이 떨어졌다.관련 파일:Assets/Scripts/Boss/Attacks/LungeAttackPattern.csAssets/Scripts/Boss/BossController.csAssets/Scripts/Boss/BossVisual.cs2. 원인 분석2.1. 이동 소스가 분리됨기존 Lunge는 패턴 코드의 수동 이동(MoveRaw)과 애니메이션 루트모션이 섞여 있었다...

게임 매니저 : 시작→전투 전환, 승리/패배 UI, 재시작 입력

1. 개요오늘 작업의 중심은 게임 루프의 빈 구간을 메우는 것이었다.기존에는 전투 HUD와 피격 피드백은 연결되어 있었지만, 씬 시작 흐름(시작→전투 진입), 전투 종료 흐름(승리/패배 판정), 재도전 입력(재시작)이 한 덩어리로 정리되어 있지 않았다.이번 리팩토링에서는 다음 세 가지를 우선 연결했다.시작→전투 전환을 Loading Scene 경유 구조로 분리GameManager에서 승리/패배 판정과 결과 UI 표시 통합Enter 입력으로 현재 씬 재시작2. 시작→전투 전환 구조2.1. SceneLoader 도입씬 전환 로직을 static 유틸리티(SceneLoader)로 분리했다.핵심 역할은 목표 씬을 예약하고, 로딩 씬을 먼저 진입시키는 것이다.목적지 씬 ID 보관전환 진행 중 중복 호출 차단Load..

전투 HUD 이벤트 기반 연동: HP 갱신과 데미지 피드백 파이프라인

1. 작업 배경UI를 단순 배치에서 끝내지 않고, 전투 로직과 일관된 이벤트 경로를 연결한다.전투 HUD 골격 배치Health 이벤트 기반 HP 바 갱신DamageCaster 공격 윈도우 결과를 HUD 피드백으로 연결ShowHud(bool)로 HUD 전체 표시 제어핵심은 "UI가 데이터를 폴링해서 읽는 구조"가 아니라, "전투 시스템이 이벤트를 발행하고 UI가 이를 반영하는 구조"로 바꾼 점이다.2. 왜 이벤트 기반으로 작성했는가UI를 Update()에서 매 프레임 갱신하는 방식은 처음엔 단순하지만, 전투 기능이 늘어날수록 문제가 커진다.상태 변화가 없어도 매 프레임 조건문/참조 체크를 반복한다.피격, 사망, 콤보 종료처럼 "순간 이벤트"를 타이밍 맞춰 동기화하기 어렵다.HUD 로직이 전투 로직 내부로 ..

다른 환경에서 문제없이 세팅하기

1. 개요이번 정리는 "내 PC에서는 되는데, 다른 PC에서 깨지는 문제"를 줄이기 위해 실제로 적용한 세팅 복구 방식이다.핵심은 두 가지였다.대용량 외부 에셋은 각자 수동 임포트프로젝트는 코드/씬/설정 + 자동 검증 도구로 동기화2. 문제와 해결문제: 다른 PC에서 외부 에셋 미설치로 씬/프리팹 참조가 깨졌다.해결법: Assets/FourEvilDragonsPBR, Assets/CombatGirlsCharacterPack, Assets/UNI VFX는 각 PC에서 수동 임포트하도록 기준을 정했다.문제: 에셋 전체를 Git에 올리면 저장소 용량이 급증해서 free tier 한도를 압박했다.해결법: 벤더 에셋 원본은 커밋하지 않고, 코드/씬/프로젝트 설정만 추적하는 방식으로 운영했다.문제: "자동 다운로드..

[버그 수정] AoE / 페이즈 / 공격애니메이션

1. 개요이번 버그 수정의 목적은 "기능이 있는 상태"에서 "전투가 안정적으로 읽히는 상태"로 품질을 끌어올리는 것이었다.증상은 서로 달랐지만, 공통 원인은 전환 타이밍과 선택기 규칙의 불명확성에 있었다.2. 버그 리스트와 수정 결과증상원인수정AoE 장판이 뜨거나 파묻혀 보임바닥 밀착 보정값과 지면 기준 오차AoECircleController의 fallbackYOffset=0 적용페이즈 인트로 중 공격이 먼저 실행됨인트로 재생과 공격 선택의 타이밍 경쟁전환 구간 공격 선택 잠금 적용동일 패턴이 연속 반복됨2패턴 활성 시 재선택 제한 부재no-immediate-repeat 규칙 추가사거리 강제 AoE로 패턴 편중 발생선택 경로 분기 과다원거리 강제 분기 제거 + 공통 선택기 통합3. 디버깅에서 얻은 포인트..

장판 공격 구현 (AoE)

1. 개요 (Pattern 4 개선 목표)이번 작업의 핵심은 Pattern 4(AoE)를 "보여주기용 연출"이 아니라, 실제 전투에서 신뢰 가능한 공격 패턴으로 만드는 것이었다.장판 높이 오차(떠 보임/파묻힘) 제거타겟 진행 방향을 반영한 낙하지점 예측코드 수정 없이 인스펙터에서 난이도 튜닝 가능하도록 파라미터 노출2. 문제 정의: 맞긴 맞는데, 납득이 안 되는 AoE기존 AoE는 기능적으로는 동작했지만 체감 문제가 있었다.장판이 지면에서 미세하게 뜨거나 파묻혀 시각 신뢰도가 낮음타겟의 이동 방향을 충분히 반영하지 못해 "피했는데 맞는 느낌"이 생김예측 로직 상수값이 고정되어 튜닝 비용이 큼3. 해결 전략: Grounding + Predictive Spread3.1. 장판 Grounding 안정화AoEC..

728x90