본문 바로가기
💎 Project/Team Coco

[Team Coco TIL] 프로젝트 마감 후 추가작업

by 온묵

 (2023-10-28) ~ (2023-11-02)


🌿오늘 배운 내용

  • 세이브 시스템 재제작
 

[UE] 세이브 시스템 제작

1. Gameinstance 생성 2. 프로젝트 세팅 → 맵&모드 → 게임 인스턴스를 위에 생성한 파일로 변경

myu-lang.tistory.com


🌿 한 일 기록

  • 라이브 화면
    • 코드 리팩토링
  • 미니맵
    • 확대 축소 이미지 제작 
    • 확대 축소 기능 추가
  • 시네마틱
    • 5~6초 → 9초로 변경
    • ‘00 프롤로그’ 도입 시 맵 로딩이 덜 되어있는 현상을 시네마틱 Fade를 넣어 해결
    • ‘00 프롤로그’가 끝날 시 Fade Out이 천천히 되도록 변경
      파란 동그라미 부분 추가
  • 메인메뉴 사운드
    • 메인메뉴 종료 버튼-돌아가기 클릭 시의 사운드 추가
    • 메인메뉴 종료 버튼의 사운드를 다른 버튼과 동일하게 적용
  • 불필요한 파일 제거
  • Save 시스템_1(불완전했던 세이브 시스템 삭제 후 재제작)
    1. 게임인스턴스 3개(B,C,D), 항상 저장할 인스턴스 1개(A), 총 4가지의 인스턴스 필요
    2. 게임 시작 누르면 A가 초기화된 상태로 시작
    3. 저장하기 누르면 A인스턴스를 누른 인스턴스(B,C,D)에 데이터를 덮어씌우는 형식?
    4. 불러오기 → B,C,D 인스턴스 불러오기
    • 인스턴스에 저장할 데이터들
      • 퀘스트, 알림, 대화 내역
      • 진척도 시스템
      • 인벤토리 습득 내역
      • 레벨에 있던 각종 트리거 및 아이템 및 NPC 삭제 내역
      • 플레이어 체력
    • 일단 만들어둔 것들이 있으니 다 건드는 방안보단 데이터를 그대로 옮겨 인스턴스에 옮기는 방식으로 변경을 생각했으나 레벨 옮겨가면 초기화되므로 그냥 데이터 저장하던 곳 찾아서 하나씩 바꾸기
      • 알림, Dialog, Quest, 트리거 데이터 저장 방식 변경
        • BP_System: Alert Add, Quest Complete, Quest Item Count
        • 0_NPCMe, 1_NPCBoy, 2_NPCKitten, 3_NPCMan, 4_NPCOldMan, 5_NPCWoman
        • Altar, Boy_TriggerBox, BP_DeadZone, BP_Raft, Prologue_TriggerBox1, Prologue_TriggerBox2, Scarecrow, Streetlamp, WoodenClub
      • 진척도 시스템 리팩토링 및 데이터 저장 방식 변경
        • WB_Minimap
        • BP_System: Quest Progress UI
      • 레벨에 배치된 NPC 데이터 저장 방식 변경
        • 이미 퀘스트가 완료되어 사라진 NPC인 경우 레벨을 옮겼을 때 다시 생성이 안되도록 처리함
      • 플레이어 HP 데이터 저장 방식 변경
        • BP_TopDownCharacter, WB_minimap
      • 인벤토리 및 아이템 데이터 저장 방식 변경
  • Save 시스템_2(인스턴스 및 save 시스템 활용)
    1. 기본적으로 위에 했던 작업들 바탕으로 재구성 및 추가제작
    2. 인스턴스를 갈아끼는건 별로임, 언리얼 블루프린트에는 save라는 편한 함수가 있다,
    3. 기본적인 저장은 인스턴스를 활용하되 저장/불러오기는 save1~3에다가 하기
    4. 불러오기가 아닌 게임 시작을 누르면 인스턴스 목록은 초기화되는걸로
    • 레벨 이동 시 플레이어 스타트 지점으로 소환되는 문제 해결
  • 레벨 이동
    • 불필요한 코드가 많았음
    • 레벨 이동하는 함수 자체를 인스턴스에 저장해서 매번 캐릭터 통해서 안불러와도 되게 만듬
  • Save 시스템 UI
    • 저장하기 UI 이미지 추가
      • : 배경만 있는 파일이 나한테 없어서 다른 글씨 포함한 파일 익스포트 후 적당히 수정하고 같은 글씨체로 비슷하게 색감 맞춤
    • 불러오기 버튼 클릭 시 로딩 화면 출력
    • 저장하기 및 불러오기 화면에서 현재 플레이어가 선택한 파일이 어떤 것인지 표시되도록 함
  • 레벨 간 이동
    • 레벨 간 이동 방식 리팩토링
    • 레벨 이동 시 플레이어가 스타트 지점으로 소환되는 문제 해결
    +) 메모
    • 29373.187 -355855.259 992.111
    • 29116.763 -35598.25 1021.569
    • 플레이어가 맵에 소환될 경우 맵 로딩이 덜 되어있는 문제 해결
    • : 페이드아웃/인 효과 넣기

🌿느낀점

세이브 시스템

기획할 때부터 저장할것들을 정해놨어야했다. (레벨 넘어가도 초기화 되지 않을것들/ 한번 발동하면 다신 발동하지 않을것들) 세이브를 가장 처음에 작업하고 차곡차곡 쌓았어야했는데 그러질 않아서 처음부터 끝까지 전부 코드 붙여서 건들여야하는 사태 발생..

지난번 프로젝트 때는 세이브가 하나라서 인스턴스 사용을 안했었는데 뒤늦게 방법을 알아버려서 으아아악.. 그래도 퀘스트랑 알림쪽은 진짜진짜진짜 다행인게 내가 데이터를 따로 모아뒀다는점… cast캐릭터 함수로 저장하던 걸 인스턴스로만 슈슉 옮기고 바꾸면 되는데.. 문제는 저장하던 포인트가 많았다는점.. 퀘스트도 많고 대화도 많았고 알림도 꽤 있었고…

인벤토리쪽은.. 물어봐야겠다 데이터 관리 어떻게 하셨는지🫠 일단 인스턴스 설정하려고 보니까 기본이랑 내꺼밖에 안뜨는걸로 봐서 이걸로 안만드셨다는건 확실한데, 이쪽도 데이터관리 새로 만들어야겠지 제발 한곳으로 모아서 코드 짜주셨었으면 좋겠다 제발.. 저장은 함수로 처리되어있으나 빼오는건 바로 빼오는 형식으로 따로 함수처리가 안되어있었다.. 이거 하려면 인벤토리 연관된 코드를 다 갈아야해서… 일단 완성했는데…🥲 다음부턴 꼭꼭꼭 세이브시스템 먼저 만들어야겠다.

인스턴스로 하려니 너무 파일이 더럽다고 해야하나? 불편해서 다른 방법 찾기 시도! 레벨 이동에도 데이터가 저장되면서 save까지 되야해서 인스턴스를 기본주체로 하되 세이브에다 추가 저장하는 방식으로 제작했다! 간단한 Test도 성공!🫠

드디어 세이브 시스템 제대로 다 만들었다..! 뿌듯하다🫡


🌿참고자료

 

자동 리임포트

이 문서는 UE4 의 자동 리임포트 기능의 작동방식과 최대한의 활용을 위한 구성법입니다.

docs.unrealengine.com

 

블루프린트로 게임 저장하기

블루프린트를 사용하여 게임을 저장하고 로드하는 방법입니다.

docs.unrealengine.com

 

30. 브러쉬유: 게임 인스턴스(Game Instance)와 데이터 저장

# 이번 장에서는 게임 인스턴스(Game Instance) 클래스의 등장 이번 장에서는 게임 인스턴스(Game Instance)라는 것을 만들거예요. 게임 인스턴스는 게임이 시작할 때 만들어져서 게임이 종료될 때 까지

poppeople.tistory.com

 

velog

 

velog.io

 

[UE4] Save Game

Unreal에서 제공하는 SaveGame을 블루프린트로 사용하는 방법에 대해 알아보겠다. C++에도 포스트했지만 블루프린트에서는 그보다 간단하게 사용할 수 있다. 먼저 데이터를 정의할 SaveGame을 상속받

daru-daru.tistory.com

https://ansohxxn.github.io/ue4 lesson 1/ch6-5/

 

Save Game - what User Index is for?

This documentation page says: UserIndex For some platforms, master user index to identify the user doing the saving. So it’s probably like how on Xbox 360 each user has a separate account and separate save files. Sometimes only the “primary” user cou

forums.unrealengine.com

 

게임 모드와 게임 스테이트

Game Mode, 게임 모드와 Game State, 게임 스테이트에 대한 개요입니다.

docs.unrealengine.com

 

Getting "Accessed None trying to read property Name".

Did you watch any tutorials on how the List Entry works? when you construct entries, expose variables to pipe data in directly, so you do not to drag wires around too much: when the entry instantiates a widget, you must use the actual interface functionali

forums.unrealengine.com

 

728x90

'💎 Project > Team Coco' 카테고리의 다른 글

[Project] Soul Catcher  (0) 2024.02.18
[Team Coco TIL] 24일차  (0) 2024.02.14
[Team Coco TIL] 23일차  (0) 2024.02.14
[Team Coco TIL] 22.5일차  (0) 2024.02.14
[Team Coco TIL] 22일차  (0) 2024.02.14
[Team Coco TIL] 21일차  (0) 2024.02.14
[Team Coco TIL] 20일차  (0) 2024.02.14
[Team Coco TIL] 19일차  (0) 2024.02.14

서울특별시