Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History
59 lines (49 loc) · 2.76 KB

File metadata and controls

59 lines (49 loc) · 2.76 KB

게임플레이 시스템

개요

게임플레이는 월드(MapleWorld) 단위로 구성되며, 플레이어/몹/스킬/아이템 시스템이 패킷과 이벤트 버스로 연결됩니다.

월드와 포털 이동

핵심 구성

  • MapleWorld: 월드 내 엔티티(플레이어, 아이템) 관리
  • Portal: 플레이어 충돌/상호작용 기반 월드 전이
  • MapleServer::MoveUserToWorld: 서버 권한 월드 이동 처리

처리 흐름

  1. 플레이어가 포털 콜라이더 안으로 진입합니다.
  2. 입력(bUp)이 들어오면 EntityRouterTryTransferByPortal을 호출해 이동 할 수 있는지 검증합니다.
  3. 서버가 사용자 상태/쿨다운 검증 후 대상 월드로 이동시킵니다.
  4. 기존 월드에서 Despawn, 대상 월드에서 Spawn을 수행합니다.

Note

월드 이동 후 윗 방향키가 눌린 상태라 바로 이전 월드로 가지는 것을 막기 위해 포탈 이용 쿨타임을 뒀습니다.

플레이어 시스템

  • 이동: Foothold 기반 물리 처리 + 예측/재조정
  • 입력 잠금/해제: PlayerMovement::LockInput, UnlockInput
  • 네임태그: PlayerSpawnPacket의 닉네임으로 초기화
  • 카메라: 로컬 플레이어 스폰 시 카메라 타겟 연결

몹 시스템

AI

  • AIStrategy 인터페이스 + BasicAI 구현(FSM)
  • 기본 상태: Idle, Move, Chase (Attack/Dead 확장 가능)
  • 서버에서만 AI를 실행하고 상태를 네트워크로 전파합니다.

스폰/리스폰

  • MobSpawner가 스폰 큐를 관리합니다.
  • 사망 이벤트 수신 시 큐에 복귀시키고 지연 후 재스폰합니다.
  • 월드 신규 진입 유저에게 현재 활성 몹 목록을 재전송합니다.

전투 반응

  • 투사체 히트박스 충돌 시 데미지/기절/넉백을 서버에서 처리합니다.
  • MobStatePacket을 주기적으로 브로드캐스트하며, 피격 시 즉시 추가 전송합니다.

스킬 시스템

클라이언트

  • 입력 감지 시 SkillUsingPacket 전송
  • 로컬에서 즉시 스킬 애니메이션을 시작해 체감 지연을 줄임

서버

  • 시퀀스 중복 방지(lastSeq)
  • 틱 오프셋을 계산해 스킬 적용 시점을 예약
  • 쿨다운/상태를 권한적으로 관리하고 결과를 전파

아이템 시스템

  • 몹 사망 시 ItemDropManager 확률 테이블로 드롭 결정
  • 서버 MapleWorld가 아이템 오브젝트 생성 후 ItemDropPacket 전송
  • 클라이언트는 아이템 정보 DB(ItemDB)를 참고하여 텍스처를 로드 후 표시
  • 획득/삭제 시 ItemDespawnPacket으로 동기화

인벤토리 상호작용

  • 슬롯 이동/스왑/스택 합치기 지원
  • 변경 슬롯만 추적(dirtySlots)하여 부분 동기화
  • 서버가 변경 결과를 InventorySyncPacket으로 전달