[내일배움캠프 Day58] 채팅 따라하기
·
내일배움캠프/TIL
Listen Server를 이용해 RPC를 호출해서 채팅을 만드는 강의를 듣고 정리해보았습니다. 전체 Flow서버 사용자가 Host, 클라이언트 사용자는 Guest로 UserID를 할당한다.채널에 참가하면 사용자의 ID를 출력한다.메시지를 입력하면 서버 측에서 클라이언트 측으로 브로드캐스팅된다. 결과물 레벨 블루프린트시작이 되면 Widget_ChatWindow 를 Viewport에 할당한다.현재 실행 중인 인스턴스가 서버인지 확인. BP_Controller가 확인되면 OnLoginWithID 이벤트를 실행한다.서버일 경우: "Host"라는 ID를 전달한다.클라이언트일 경우: "Guest"라는 ID를 전달한다. Widget_ChatWindowUI 위젯이 생성될 때 BP_Controller로 캐스팅하고 On..
[내일배움캠프 Day56] 브루트포스 과제
·
내일배움캠프/TIL
브루트포스(Brute Force)는 말 그대로 무식하게 문제를 푸는 방법입니다. 가능한 모든 경우의 수를 전부 시도해 보는 것입니다. 과거 '프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략' 책에 나오는 브루트포스에 대해 정리한 글을 추가합니다.https://dev0404.tistory.com/24 완전 탐색(Brute Force)‘무식하게 푼다(brute-force)’ 는 컴퓨터의 빠른 계산 능력을 이용해 가능한 경우의 수를 일일이 나열하면서 답을 찾는 방법을 의미합니다.이렇게 가능한 방법을 전부 만들어 보는 알고리즘을 완dev0404.tistory.com 강의에서는 위와 같은 내용 이외에도 경우의 수를 ‘어떻게’ 만들어 낼지에 대해 여러 가지 전략을 알려주셨습니다.중첩 반복문을 활용한 직접 생성b..
[내일배움캠프 Day55] GGF 프로젝트 1주차 WIL
·
내일배움캠프/TIL
프로젝트가 끝나면서 3주간 코드 작업으로 너무 바빠 티스토리에 정리를 많이 못했다고 느껴 3주 간의 내용을 간단하게 정리하고자 글을 쓰게 되었습니다. 먼저 1주 차 때 작업한 내용을 크게 정리하자면 아래와 같습니다.게임모드 구현퀘스트 시스템 구현ai 기본적인 노드 구현health 시스템 구현전체 아웃게임 위젯 구현 1주 차 스프린트 내용은 아래와 같습니다. AI 작업을 다른 분과 함께 하게 되어서 그분이 밀렵꾼 AI, AIController 코드 작업(AI perception 시야, 청각)을 맡아 저는 그 외에 동물 AI와 게임 플레이를 하게 되어서 1주 차 때는 안 겹치는 작업 위주로 진행했습니다. 따로 팀원들 공유용으로 스프린트1가 끝난 후 AI 작업 정리한 내용도 첨부하면 아래와 같습니다. 하지만 ..
[내일배움캠프 Day46] AI 무리지어 이동 구현(Boids Algorithm)
·
내일배움캠프/TIL
팀플 기획 중에 동물들 중 사슴이 무리 지어 이동한다는 기획이 있어 관련 구현 내용을 정리해 보았습니다. 처음에 바로 떠오른 아이디어는 Boids Algorithm이었으나 구현이 어려울 것 같아 단순하게 리더 정해서 리더 아닌 사슴들은 리더를 타깃으로 이동하도록 구현했었습니다.다만 AI들이 각 AIController이 독립적으로 작동하면서 각 AI마다 새로운 BlackboardComponent가 생성되다보니, 각 사슴은 같은 Blackboard 데이터셋을 가져도 독립적인 BlackboardComponent를 사용해 데이터가 공유되지 않는 문제가 발생했습니다. 즉, AI가 같은 블랙 보드를 공유해야지 팔로워 사슴이 리더 사슴의 주소를 가져올 수 있으므로 현재 팔로워 사슴이 LeaderPosKey를 읽을 때..
[내일배움캠프 Day44] BlueprintImplementableEvent
·
내일배움캠프/TIL
아웃게임을 구현하는 와중 C++에서 함수의 선언만 하고, 블루프린트에서 해당 함수를 구현할 일이 생겨 검색하던 중 BlueprintImplementableEvent를 알게 되었습니다.BlueprintImplementableEvent는 C++에서 선언된 함수가 블루프린트에서 구현될 수 있도록 하는 UFUNCTION 속성으로 블루프린트에서 해당 이벤트를 재정의하면, C++에서 호출 시 블루프린트에서 정의한 내용이 실행됩니다. 마우스 커서 등 위젯 관련 코드는 블루프린트에서 하는 것이 더 직관적이고 간단해 GameOver이 되면 블루프린트에서 구현할 수 있도록 BlueprintImplementableEvent를 사용했습니다.참고로 이를 사용하면 CPP에서 함수의 정의부를 구현하면 에러가 발생하며 빌드가 되지 ..
[내일배움캠프 Day43] BT 애니메이션 실행
·
내일배움캠프/TIL
EBTNodeResult::Type UBTTask_DrinkWater::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory){ Super::ExecuteTask(OwnerComp, NodeMemory); AAIController* AIController = OwnerComp.GetAIOwner(); if (!AIController) return EBTNodeResult::Failed; AAnimal* AICharacter = Cast(AIController->GetPawn()); if (!AICharacter) return EBTNodeResult::Failed; if (AICharacter->DrinkMon..
[내일배움캠프 Day42] WIL
·
내일배움캠프/TIL
지난주 목요일부터 해외여행 일정으로 인해 TIL을 많이 못 적어 WIL을 작성합니다. 수요일까지 과제 제출로 인해 월, 화는 과제 진행을 했으며 수요일에는 과제 코드 정리 + 영상 편집을 했습니다.관련 내용은 아래 TIL에 정리했습니다.https://dev0404.tistory.com/58 [내일배움캠프 Day37] TWeakObjectPtr과제를 진행하면서 위와 같이 에러가 발생하였는데, 맵이 바뀌면서 기존의 파티클이 제거되었는데도 파티클을 없애려고 하는 것이 원인이었습니다. 아래 언리얼 공식 문서를 보면 자세하게 나dev0404.tistory.com https://dev0404.tistory.com/59 [내일배움캠프 Day38] 8주차 과제 진행내일배움캠프 CH3에서 진행한 강의를 바탕으로 추가 구..
[내일배움캠프 Day42] 알고리즘 수업 Wrap-Up
·
내일배움캠프/TIL
STL이란?STL은 C++에 내장된 템플릿 기반의 라이브러리이며, 크게 컨테이너, 반복자(Iterator), 그리고 알고리즘으로 구성되어 있다.컨테이너(Container): 데이터를 저장·관리하는 구조체(자료구조)들의 집합반복자(Iterator): 컨테이너 내 데이터를 순회(Navigation)할 수 있도록 도와주는 일종의 '포인터' 역할알고리즘(Algorithm): 정렬, 탐색, 삽입, 삭제 등과 같은 로직을 매우 효율적이고 제네릭하게 제공https://dev0404.tistory.com/5 [사전 캠프 Day4] STL요즘 기초가 부족하다고 느껴 프로그래밍 책들을 읽는 중입니다.최근에는 effective c++, 객체지향의 사실과 오해 책을 읽으면서 노션에 정리하고 있는데 effective c++는 ..
[내일배움캠프 Day41] 언리얼 AI 구현
·
내일배움캠프/TIL
지난주 목, 금 여행 일정으로 인해 TIL은 작성하지 못했습니다. 이번 팀 프로젝트에서 AI 구현을 맡게 되어서 과거 '이득우의 언리얼 C++ 게임 개발의 정석' 책을 읽고 정리한 내용을 작성해 보았습니다. AI 컨트롤러와 비헤이비어 트리AIController와 내비게이션 시스템NPC에 인공지능을 추가해 스스로 영역을 정찰하고 플레이어를 감지하면 쫓아가서 공격하도록 만들 수 있다.AIController을 부모클래스로 하는 ABAIController 클래스 생성하고ABCharacter.cpp#include "ABAIController.h"AABCharacter::AABCharacter(){ ... AIControllerClass = AABAIController::StaticClas..
[내일배움캠프 Day38] 8주차 과제 진행
·
내일배움캠프/TIL
내일배움캠프 CH3에서 진행한 강의를 바탕으로 추가 구현을 더해서 과제를 내주셨습니다.강의 목차는 위와 같으며 대략적으로 레벨마다 맵과 배치된 아이템이 바뀌면서 코인을 먹는 프로젝트입니다. 강의에서는 언리얼 프로젝트를 진행하면서 필요한 기초적인 내용들을 배웠습니다. 8번 과제를 하면서 어려운 점은 따로 없었으나 구현하면서 에러가 발생했던 점은 따로 블로그에 정리했습니다.https://dev0404.tistory.com/58 [내일배움캠프 Day37] TWeakObjectPtr과제를 진행하면서 위와 같이 에러가 발생하였는데, 맵이 바뀌면서 기존의 파티클이 제거되었는데도 파티클을 없애려고 하는 것이 원인이었습니다. 아래 언리얼 공식 문서를 보면 자세하게 나dev0404.tistory.com 시연 영상http..