프로젝트/CR4S

Core Reboot:Four Seasons - #15 EBS(Easy Building System) 이식

2h1824 2025. 5. 27. 21:03

프로젝트 정리

  • FoliageType, Mannequin, Maps, Materials, Meshes, Textures 폴더들에서 쓰지 않을 에셋들은 모두 삭제
  • Polygonal, Stylized 2가지 형태로 그래픽 관련 에셋들이 존재
  • 프로젝트 특성상 Stylized 말고는 쓰지 않음
  • Polygonal 관련 텍스처, 메테리얼, 메쉬 모두 제거

프로젝트 이식

  • 파일들간의 연결구조를 안전하게 유지하면서 이주시키기 Migrate 기능 사용

프로젝트 요구조건에 맞게 설정

  • 현재 프로젝트에서는 자원 소모에 관련해서는 인벤토리에서 차감할 예정
  • 아직 인벤토리 자원 소모 기능이 구현되지 않은 관계로 ResourcesComponent 임시 사용
    ㅡ> 추후 로직 수정하여 삭제 예정
  • 캐릭터에는 따로 특별한 로직들이 없음
  • 컨트롤러의 이벤트들을 온전히 사용할 수 있도록 하는 것이 관건

  • 이주시킨 EBS 시스템의 컨트롤러의 부모 클래스를 교체
  • CharacterController : C++로 구현한 프로젝트에서 캐릭터, 로봇을 조종하기 위해 사용하는 기본 컨트롤러
  • 입력 관련 병목 현상이 생길 수 있어 이벤트 그래프의 Legacy 입력 기반 이벤트들 추후 IMC로 교체 예정
    ㅡ> 우선순위 및 여타 설정을 통한 관리 목적

트러블슈팅

  • EBS 템플릿 프로젝트에서는 정상 작동했던 것이 이주 후에는 작동하지 않음
  • 블루프린트 노드를 디버그해도 큰 줄기에서의 이벤트는 모두 정상 호출되고 있음

  • CanbeBuilt 값이 false가 되어 자꾸 그 다음으로 넘어가지 못하는 상황

  • 해당 변수 검색하여 설정되는 지점 파악
  • CheckBuildStatus 함수 이름으로 보아 해당 지점이 유력

  • ActorIsLandscape, CheckBuildCollisions 로 설치가능 여부를 파악하여 오버랩된 지형들이 모두 조건을 만족하면 설치가능으로 판단하는 구조로 파악

  • 조건을 보니 Landscape 지형이 아니더라도 바닥면에 Tag로 IsLandscape를 추가해주면 조건 충족 가능

  • 건축용 콜리전을 침범하는 것이 없는지 확인하는 로직
  • CheckActorCollisions를 통과하지 못하는 중

  • 이전 게시글에서 보았던 BlockBuildingZone에 위치했는지 확인하는 함수로 보임
  • 이 과정에서 GetOverlappingComponents를 통해 그 여부를 파악하고 있음

결론

  • 건축물이 설치 가능한 지형의 조건은 2가지
    1. Landscape에 해당 or 그렇지 않다면 Tag가 IsLandscape에 해당
    2. 건축물 설치 금지 공간인지 확인을 위해 Overlap Event가 발생 가능한 지형
  • 그림처럼 Overlap Events가 발생하도록 설정
  • 더불어 Landscape 지형이 아니므로 Tag 추가

  • 정상 작동

참고자료