Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

9강: 무한맵의 제작 #80

Closed
Tracked by #14
fkdl0048 opened this issue Apr 2, 2024 · 0 comments · Fixed by #103
Closed
Tracked by #14

9강: 무한맵의 제작 #80

fkdl0048 opened this issue Apr 2, 2024 · 0 comments · Fixed by #103
Assignees
Labels
Study pertaining to teaching and learning

Comments

@fkdl0048
Copy link
Collaborator

fkdl0048 commented Apr 2, 2024

9강: 무한맵의 제작

  • 강의 목표
    • 무한 맵 생성을 위한 기믹 액터의 설계
    • 에셋 매니저를 활용한 에셋 관리 방법의 학습
    • 액터의 스폰과 약참조 포인터 사용 실습
  • 강의 과제
    • 현재 프로젝트에서 사용하는 기믹을 설명하고, 이들이 어떤 상태를 거쳐 발전되는지 정리하시오.
    • 애셋매니저로부터 다수의 애셋을 필요할 때 제공 받는 방법은 현재 게임에서 어떻게 활용될 수 있는지 생각하시오.

스테이지 기믹의 설계

스테이지 기믹 기획

  • 스테이지는 플레이어와 NPC가 1:1로 겨루는 장소
  • 총 4개의 상태를 가진다.
    • READY: 플레이어의 입장을 처리하는 단계
    • FIGHT: 플레이어와 NPC가 대전하는 단계
    • REWARD: 플레이어가 보상을 선택하는 단계
    • NEXT: 다음 스테이지로 이동을 처리하는 단계
  • 무한하게 순환하는 구조로 설계

스테이지 준비 단계

스테이지 중앙에 트리거 불륨을 준비하고 overlap이 발생하면 대전 단계로 이동한다.

스테이지 대전 단계

대전상태에 진입하면 플레이어가 외부로 나가지 못하게 문을 닫고 대전할 NPC를 스폰한다. 이후 NPC가 없어지면 보상 단계로 이동한다.

스테이지 보상 단계

정해진 위치의 아이템 상자를 랜덤하게 선택하면 보상을 얻고 다음 스테이지 단계로 이동한다.

다음 스테이지 선택 단계

스테이지 문을 개방하면 해당 문에 새로운 스테이지를 스폰한다.

스테이지 기믹의 설계와 구현

  • 스테이지에 설피한 트리거 불륨의 감지 처리
  • 각 문에 설치한 네 개의 트리거 볼륨의 감지 처리
  • 상태별로 설정할 문의 회전 설정
  • 대전할 NPC의 스폰 기능
  • 아이템 상자의 스폰 기능
  • 다음 스테이지의 스폰 기능
  • NPC 죽음 감지 기능
  • 아이템 상자 Overlap기능

아이템 상자의 랜덤 보상

에셋 매니저

언리얼 엔진이 제공하는 에셋을 관리하는 싱글톤 클래스로 엔진이 초기화 될 때 제공되며, 에셋 요청을 받을 수 있다. PrimaryAssetId를 통해 에셋을 요청하고, 에셋을 로드하면 에셋을 사용할 수 있다. Unity의 Resources.Load와 비슷한 기능

강참조와 약참조

강참조는 현재 TObjPtr로 사용되고, 해당 액터의 생명주기에 직접적으로 관련 있다면 사용하는 반면, 다른 액터의 참조를 가져야 한다면 약참조를 사용한다. 약참조는 TWeakObjectPtr로 사용된다.

정리

  • 기믹 구현을 위한 다양한 상태 설계
    • State패턴으로 상태를 설계 (강의에선 델리게이트로 구현)
  • 상태 변경 시 에디터에서 관련 로직을 수행하는 OnConstruction 함수의 활용
    • OnConstruction 함수는 에디터에서 액터의 속성이 변경될 때 호출되는 함수
  • 약한 참조를 사용하는 약포인터의 선언과 활용
    • 약한 참조는 액터의 참조를 가져야 할 때 사용 (TWeakObjectPtr)
    • 맵 내에서 스스로 상태를 결정하는 오브젝트의 참조가 필요할 때
  • 에셋 매니저를 활용한 특정 에셋을 로딩하기
    • 에셋 매니저를 통해 특정 에셋을 로딩하고 사용할 수 있다. 싱글톤
@fkdl0048 fkdl0048 self-assigned this Apr 2, 2024
@fkdl0048 fkdl0048 added the Study pertaining to teaching and learning label Apr 2, 2024
@fkdl0048 fkdl0048 added this to Todo Apr 2, 2024
@fkdl0048 fkdl0048 moved this to Two-Week Plan in Todo Apr 2, 2024
@fkdl0048 fkdl0048 moved this from Two-Week Plan to In Progress in Todo Apr 5, 2024
@fkdl0048 fkdl0048 linked a pull request Apr 16, 2024 that will close this issue
@github-project-automation github-project-automation bot moved this from In Progress to Done in Todo Apr 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Study pertaining to teaching and learning
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant