2026/02 15

[내일배움캠프 - 언리얼] DAY 55 - 팀 프로젝트 진행

게임 스테이트에서 wavedata를 프로퍼티로 가져왔었는데 소프트 레퍼런스로 가져와서 적용을 매번 해줘야했다.소프트가 아니라 하드로 바꾸니 해결되었다. 레벨을 만들었는데 몬스터 ai가 이동할 수 있도록하는 navmesh가 계단과 2층이 설정이 안되었다.레벨의 navmeshvolume의 z스케일을 늘려주고 계단의 콜리전을 설정해주어 해결하였다.

[내일배움캠프 - 언리얼] DAY 53 - 디커플링

Decoupling목표: 의존성 최소화, 독립성 최대화 완전독립이 목표가 아님-> 시스템의 요소들이 어느 정도 협력해야함 디커플링의 보편적 가치- 복잡도 관리- 유지보수성- 재사용성- 확장성- 병렬 개발 소프트웨어 공학의 디커플링변화의 속도 - 빠른 변화복잡도 - 높은 복잡도보이지 않는 구조 - 추상성 약결합1. 변경 격리2. 재사용 가능3. 테스트 쉬움4. 병렬 개발 디커플링 패턴1. 인터페이스- 다형성, 타입 안전, 컴파일 타임 체크2. 델리게이트- 언리얼 표준 방식, 블루프린트 지원, 타입 안전3. 옵저버 패턴- 고전적 디자인 패턴, 이해하기 쉬움4. 의존성 주입- 테스트 시 Mock 주입 가능, 구현 교체 쉬움5. 메시지 패턴- N:N 관계 지원, 완전한 디커플링, 런타임 확장 가능언리얼 엔진의 ..

[내일배움캠프 - 언리얼] DAY 52 - 팀 프로젝트 진행

몬스터 스폰게임 스테이트에서 스테이지에 몬스터를 소환하기위해 이전 과제에서 사용하였던 SpawnVolume을 재사용하여 맞게 변경하였다.MonsterSubsystem의 MonsterSpawn과 MonsterData로 몬스터를 볼륨에 정보를 넣고 스폰시켰다. Subsystem은 싱글톤 같은 역할인데 엔진의 라이프스타일에 맞춰 관리해준다.다른 파일에서 불러올때USomeSubsystem* MySubsystem = GetWorld()->GetSubsystem(); 추후 SpawnMonsterData와 MonsterData의 역할이 겹쳐 SpawnMonsterData에서 MosterID만 갖고 있는 것으로 수정이 필요하다

[내일배움캠프 - 언리얼] DAY 51 - 팀 프로젝트 진행

스탯과 버프 테스트캐릭터에 컴포넌트들을 넣고 잘 작동하는지 테스트 해보았다. 스탯에 SetBaseStat(StatData) 를 InitBaseStat으로 변경하여 data를 넘겨주면 해당 값으로 basestat과 currentstat을 초기화하도록 하였다. 게임스테이트레벨과 웨이브의 데이터를 다룰 데이터테이블 생성 대략적인 게임 진행 스테이지 시작 -> 플레이어 스폰 지점에 스폰 -> 웨이브 시작 -> 몬스터 스폰 지점에 스폰 -> 웨이브의 시간이 끝 or 웨이브의 몬스터 전부 처치 or 몬스터 일부 처치 -> 다음 웨이브 시작 -> 모든 웨이브 클리어 -> 포탈 생성 몬스터 처치시 점수 증가

[내일배움캠프 - 언리얼] DAY 50 - 팀 프로젝트 진행

Enum 스탯버프 매니저에서 스탯 참조를 위해 타입 파일을 생성하여 Data 를 옮겨주었다. 버프 매니저버프 타입으로 add, mul을 열거형으로 만든다.버프아이디, 해당 스탯, 버프 타입, 값, 지속 시간을 가진 버프데이터를 가진 구조체를 만들어준다. 함수- 버프 추가- 버프 제거- 버프 계산- 버프 적용 변수- 활성화 버프 배열 TickComponent에서 활성화 된 버프들의 지속 시간을 줄인다. 개선 사항배열에서 버프를 제거할 때 배열을 돌면서 지우지 않고 배열 순서가 상관이 없으므로 RemoveSwap을 사용