[Chapter1, Day3] 블루프린트를 이용한 비주얼 스크립팅

2024. 12. 18. 12:20·스파르타 코딩 언리얼 1기

오늘의 주요 목표

"과제에서 제시된 것을 넘어 게임처럼 보일 수 있도록 만들어 보자!" 가 오늘의 내 목표였다

그러한 목적으로 제작된 3개의 레벨, 각각 레벨 블루프린트에 로직을 작성했다.

과제 1 : 세션에서 제시된 텍스트 총 게임에 존재하는 버그를 수정할 것

 

하지만, 버그 수정 정도로 끝내기 아쉬워서 로직 수정과 리소스를 적용했다.

수정한 부분

    1. 키 입력을 받되, Set Timer by Function Name 노드를 적극적으로 활용했다. 자세한 사항은 접은 글에 정리했다.
더보기

전체 로직 중 BeginPlay

초기화의 영역이 2개라 생각되어 Sequence 노드를 이용, 두 개로 나눠주었다.

영역 1 : 플레이어 초기화

Reload : 총알을 재장전하는 부분, 함수로 되어 있기 때문에 R키로도 호출되는 함수이다. Sound 효과가 포함되어 있다. 자세한 사항은 아래 후술

 

나머지 두 부분은 플레이어의 Status인 HP와 MP를 설정된 MaxHP, MaxMP로 초기화 해 준다. 토이프로젝트지만 혹시 최대 HP와 MP를 변경할 수 있을 수 있다 판단해 변수를 통해 Current 변수들을 설정하도록 의도했다.

영역 2 : 타이머 설정

Set Timer by Function Name : 처음에는 Tick을 사용하는 것을 고려했으나, UDN이나 구글링을 통해 조사해 본 결과, Tick은 매 프레임 당 호출되지만 Timer는 그것보다 느린(정확하진 않지만 10Hz로 동작한다는 언급을 확인했다.) 주기를 갖기 때문에 더 낫다는 것을 확인했다. 그리고, Timer Handle과 Set Timer 노드, Clear 노드를 이용해 타이머와 관련한 숙련도를 쌓고 싶기에 이러한 노드를 이용한 구현을 하고 싶었다.

 

Using Tick or timers?

Many times, yes tick is unnecessary. Even worse, some people use a node like GetAllActorsFromClass and then put it in a tick… wow… Use the tick judiciously that is all. And many times, you do not need that many updates anyway, so just put it inside tim

forums.unrealengine.com

 추가적으로, Tick과 Timer에 관한 내용은 아래에 별도로 포스팅했다.

 

Event Tick VS Timer Handle 정리

Event TickTimer Handle

hjmag1120.tistory.com

  1. 버그를 수정?(사실 로직 전체를 새로 만들었기 때문에 수정이라 부르기 애매하다)했다. 자세한 사항은 마찬가지로 접은 글에 작성했다.
더보기

전체 로직 중 Input Event 부분

Event Graph가 복잡하게 보이지 않는 것과 재사용의 가능성이 있으므로 함수로 동작을 정리했다.

Fire : 플레이어의 총 발사와 관련한 로직을 담았다. 현재 탄환과 이와 관련된 발사 로직, 적이 존재하는 지에 따라 동작이 달라진다. 분기에 따라 호출되는 Hit Enemy 함수는 설정된 공격력, 적의 체력을 이용한 데미지 처리와 후술할 Random Encounter 관련 이벤트 타이머를 재설정하는 로직이 담겨있다.

적이 존재하는 경우 마지막에 Hit Enemy 함수를 호출하여 공격이 적용되도록 했다.

 

Reload : 재장전과 관련된 부분으로 현재 탄환 수에 따라 재장전이 가능/불가능으로 나뉘게 구현했다. 버그가 수정된 부분이 이 부분으로 탄환이 최대 탄환 수와 일치하면 더 이상 장전이 동작하지 않도록 수정되었다.

언급한 대로, 현재 탄환과 최대 탄환 갯수의 비교 연산에 따라 분기된다.

Healing : 현재 MP에 따라 HP를 회복하는 로직을 구현했다. 불가능하면 Sound로 알 수 있게 구현했다. 

Text And Sound Part와 Failed Skill에 들어가는 Format Text와 Play Sound 2D가 달라 재활용 가능한 로직으로 만들지 못했던 것이 아쉽다.
  1. 추가적으로 구현한 기능은 Random Encounter와 Game Over 시 점수가 출력되도록 점수 기능이다.
더보기

추가 구현인 Random Encounter와 Game Over 시 Score 출력

'스파르타 코딩 언리얼 1기' 카테고리의 다른 글

CH 2. TEXT RPG 팀 프로젝트[태어난 김에 보스까지] KPT 회고  (1) 2025.01.17
[Chapter1, Day2] 게임 개발 과정에 대해 알아보고 언리얼 엔진과 놀아보기!  (0) 2024.12.17
[사전 캠프 퀘스트] 언리얼 엔진 5와의 첫 시간  (1) 2024.12.09
[사전 캠프 퀘스트] 언리얼 엔진 에디터 기본  (1) 2024.12.09
[사전캠프 퀘스트] 내가 생각한 게임 개발자는?  (1) 2024.12.06
'스파르타 코딩 언리얼 1기' 카테고리의 다른 글
  • CH 2. TEXT RPG 팀 프로젝트[태어난 김에 보스까지] KPT 회고
  • [Chapter1, Day2] 게임 개발 과정에 대해 알아보고 언리얼 엔진과 놀아보기!
  • [사전 캠프 퀘스트] 언리얼 엔진 5와의 첫 시간
  • [사전 캠프 퀘스트] 언리얼 엔진 에디터 기본
DevJoo1120
DevJoo1120
  • DevJoo1120
    Jin's Programming
    DevJoo1120
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 포트폴리오 (7)
        • Castlevania: Aria of Sorrow.. (7)
        • [UE5] KILL Everything (0)
      • C++ (0)
      • 라이브러리 (1)
      • 다이렉트X11 (0)
      • Unreal Engine (11)
        • Unreal Document (1)
        • 이것 저것 (8)
        • UI (1)
      • 자료구조 및 알고리즘 (0)
      • 책 정리 (3)
        • 코딩 테스트 합격자 되기 C++ 편 (10)
      • 코딩 테스트 (32)
        • 프로그래머스 (32)
      • 스파르타 코딩 언리얼 1기 (9)
        • 특강 (0)
        • C++와 Unreal Engine으로 3D .. (2)
      • TIL(Today I Learned) (63)
      • 영어 공부 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정리
    프로그래머스
    정렬
    Til
    Study
    코딩 테스트
    스파르타 코딩 클럽
    과제
    코딩테스트
    C++
    코딩 테스트 합격자 되기 c++ 편
    문자열
    배열
    Unreal Engine 5
    반복문
    책 정리
    팀 프로젝트
    이중 반복문
    WINAPI
    map
  • hELLO· Designed By정상우.v4.10.5
DevJoo1120
[Chapter1, Day3] 블루프린트를 이용한 비주얼 스크립팅
상단으로

티스토리툴바