[Paper2D로 게임 만들기 필기] 9. 게임 인스턴스, 컴포넌트, UI, 유지보수

2023. 7. 30. 20:15·언리얼엔진5/블루프린트 Paper2D 로 게임 만들기

게임 인스턴스

 

데이터 / 변수 관리법 세 가지

 

   이제껏 만들어서 사용하던 BP_gamemode 라는 gamemode는 레벨에 종속적이다. 따라서 레벨이 바뀌면(ex. 맵 이동) 정보가 휘발될 수 있음. 따라서 전역적인 변수는 관리가 힘들다.

   그 다음으로 많이 사용한 get actor of class 는 정석적인 관리법은 아니다.(임의로 액터에 접근하여 데이터 관리)

따라서  게임 시작부터 끝까지 유지 되어야 하는 정보가 있다면 '게임 인스턴스' 를 사용한다.

 

게임 인스턴스는 게임의 시작과 끝까지 유지되는 클래스라고 생각하면 된다. 

GameIstance 클래스

 

게임 인스턴스 설정

 

컴포넌트

 

컴포넌트

컴포넌트의 종류는 두 가지인데, Actor Component와 Scene 컴포넌트 이다.

 

액터 컴포넌트(Actor Component) - 어느 액터에나 붙을 수 있는 컴포넌트 / 액터에 대한기능만 가지고 있음

씬 컴포넌트(Scene Component) - 씬에 쓰이고, 씬에 붙을 수 있는 컴포넌트 / 액터에 대한 회전, 좌표 변경 등이 가능하고 계층적 구조를 띈다. 

 

유니티의 컴포넌트와 같은데, 언리얼에서는 미리 이렇게 틀이 만들어져 있다. 만약 플레이어의 정보를 따로 저장하고 싶다면 액터 컴포넌트를 만들어 그 곳에 몰아주면 된다. 또 만약 씬 컴포넌트를 사용한다면 액터의 회전 등 눈에 보이는 변형이 가능하다 생각하면 편할 듯하다.

 

UI

 

Widget Blueprint

   이전에 체력 바를 만들 때 위젯으로 만들어서 플레이어에 달아 주었었다. 

 

canvas panel 로 만든 간단한 위젯

   Text block 에는 Kill Count 를 세어 줄 수 있게 함수를 만들어 출력해 준다.  위젯에서 Kill Count를 셀 수 있도록 변수를 만들기 보다는 게임모드 / 인스턴스에서 가져오는 것이 좋다는 것을 우린 이미 알고 있다. 설계를 잘 해서 코드의 작동이 꼬이지 않도록 해 주자. 버그는 이러한 사소한 것들에서 생긴다고 했다. 

GameMode의 KillCount 변수에서 값을 가져온다.

 

UI 위젯을 뷰포트에 추가해 준다.

 

유지 보수 관점에서의 함수 사용시 주의점

 

   Rookiss 님의 설명을 참고해서 적어보자면, 현업에서는 한 코드를 한 명만 보는 것도 아니고, 코드를 복사해서 쓰는 일도 비일비재하다 한다. 따라서 코드의 관리가 수월하게 해 주어야 한다. 

 

   예를 들어 내가 짠 함수가 앞의 좌표를 확인 후 공격을 하는 함수라고 해보자. 그러면 이 함수는 '좌표 계산 + 공격' 이 한번에 들어간 함수이다. 만약 팀장님이 오셔서 이제부터 플레이어가 공격만 하는 것이 아닌, 앞의 좌표에 대한 계산 후 공격이 끝나면 아이템을 줍는 행동도 할 수 있게 만들고 싶다고 하신다. 그러면 이전 함수 전체를 복사해서 아이템을 줍는 함수를 새로 만드는 것이 아니라,  '좌표 계산' + '공격' 을 따로 분리해 준다면 '좌표 계산' + '아이템 줍기' 형식으로 새 함수를 쉽게 만들 수 있을 것이다. 또한 좌표 계산에 변형을 가해야 한다면 손쉽게 함수를 찾아서 수정할 수 있다.

   말 그대로 어떤 협업자가 와도 함수 이름이 직관적으로 이해하기 쉽게 잘 쓰여 있다면, 함수만 떼서 사용하는 식으로 사용이 가능하다는 말이다. 

 

선택 후 손쉽게 함수로 만들기가 가능하다.

 

자동으로 함수로 만들어 주니 편하다.

 

 

몬스터 랜덤 스폰, 디스폰

 

   몬스터를 수동으로 계속 배치해줄 수는 없으니 랜덤한 시간에 랜덤한 위치에 몬스터를 설정해 둔 수 사이로 스폰을 하고, 체력을 전부 깎아서 몬스터가 죽으면 디스폰을 하는 블루프린트를 만들 예정이다.

   우선 위에서 설명한 액터 컴포넌트를 TileMap 에 붙여준다.

 

스포닝 풀이 붙은 모습

 

 

스포닝 풀의 블루프린트

 

   블루프린트의 내용은 보면 알겠지만 단순히 랜덤 정수를 받아와 그 시간만큼 delay 후 몬스터를 스폰하는 것이다. 

 

Despawn Creature 함수

 

 

 

완성

 

 

 

이렇게 2D 게임 만들기 실습이 완료되었다. 바로 3D로 넘어갈지 툴에 익숙해지는 시간을 가질지는 고민해봐야 할 것 같다.

저작자표시 (새창열림)

'언리얼엔진5 > 블루프린트 Paper2D 로 게임 만들기' 카테고리의 다른 글

[Paper2D로 게임만들기 복습] 2. 구조체, 열거형 변수, 게임 모드, 캐릭터 이동  (0) 2023.08.06
[Paper2D로 게임만들기 복습] 1. 진행 계획  (0) 2023.08.04
[Paper2D로 게임 만들기 필기] 7-8. 타일 관련 작업, 몬스터 스폰 / AI 개선  (0) 2023.07.28
[Paper2D로 게임 만들기 필기] 6. Orthographic, 타일맵  (0) 2023.07.27
[Paper2D로 게임 만들기 필기] 4-5. DataTable, 피격 판정, Widget Blueprint, FSM, Controller  (0) 2023.07.25
'언리얼엔진5/블루프린트 Paper2D 로 게임 만들기' 카테고리의 다른 글
  • [Paper2D로 게임만들기 복습] 2. 구조체, 열거형 변수, 게임 모드, 캐릭터 이동
  • [Paper2D로 게임만들기 복습] 1. 진행 계획
  • [Paper2D로 게임 만들기 필기] 7-8. 타일 관련 작업, 몬스터 스폰 / AI 개선
  • [Paper2D로 게임 만들기 필기] 6. Orthographic, 타일맵
Rocketbabydolls
Rocketbabydolls
Rocketbabydolls
  • Rocketbabydolls
    With The Lights Out
    Rocketbabydolls
  • 전체
    오늘
    어제
    • 전체글 (181)
      • 프로그래밍 공부 (117)
        • C (16)
        • Jumping into C++ (9)
        • MFC (C++) (1)
        • 자료구조 (1)
        • 알고리즘 (1)
        • 백준 (C++) (74)
        • 핸즈온 머신러닝 2판 (6)
        • Unseen 3기 준비 (4)
        • 원티드 포텐업 게임 개발자 양성과정 2기 (4)
      • 언리얼엔진5 (60)
        • [Part1] 이득우의 언리얼 프로그래밍 (12)
        • [Part2] 이득우의 언리얼 프로그래밍 (2)
        • [Part2 복습] 이득우의 언리얼 프로그래밍 (3)
        • [Part3] 이득우의 언리얼 프로그래밍 (14)
        • [Part4] 이득우의 언리얼 프로그래밍 (0)
        • FPS 게임 1인 프로젝트 (6)
        • 각종 지식 (9)
        • 블루프린트 Paper2D 로 게임 만들기 (14)
      • 일상 (1)
      • ETC (1)
        • 맥북 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      c++ 17298
      핸즈온 머신러닝 2판
      실전C프로그래밍 실습문제
      실전 C 프로그래밍
      실전 C프로그래밍 실습문제
      c++ 7576
      실전C프로그래밍
      티스토리챌린지
      c++ 16929
      C언어 실습문제
      핸즈온 머신러닝
      오블완
      실전 C프로그래밍 나중채
      실전 C프로그래밍
      실전C프로그래밍 나중채
      언리얼엔진
      언리얼엔진5 fps 프로젝트
      c언어
      c++ 2178
      언리얼엔진5
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    Rocketbabydolls
    [Paper2D로 게임 만들기 필기] 9. 게임 인스턴스, 컴포넌트, UI, 유지보수
    상단으로

    티스토리툴바