AI_RVO(회피 이동)
·
내배캠/Unreal Engine
📌 RVO란?RVO(Reciprocal Velocity Obstacles)는 움직이는 객체들이 서로의 속도와 방향을 고려하여 충돌을 피하는 기능이며, 서로를 장애물로 인식하고 충돌을 피하는 알고리즘이다.이전에 Pathfinding 경로 찾기 기능은 움직이지 않는 오브젝트를 우회하도록 디자인하는 것이었다.이와 달리 RVO는 "움직이는" 액터를 회피할 수 있고, 특히 경로 재계산 없이 속도와 방향만을 조절하여 실시간 회피가 가능하므로 다수의 액터가 있을 때 더욱 효율적이고 자연스러운 움직임을 제공하는게 장점이다. ✅ AI 캐릭터에 RVO 적용#pragma once#include "CoreMinimal.h"#include "GameFramework/Character.h"#include "RVO_Charact..
가장 큰 수 / 정렬
·
공부/Code Cata
https://school.programmers.co.kr/learn/courses/30/lessons/42746처음에 이 문제를 보고, 모든 경우의 수를 조합해야된다는 생각에 바로 브루트 포스로 문제를 해결하였다.코드 작성을 끝마치고 나서야 제한 사항이 눈에 들어왔고 10만이라는 숫자를 뒤늦게 확인하였다..당연히 시간 초과가 날 것이라고 판단하고 다시 문제를 어떻게 해결해야될지 고민이 되었다.입출력의 예를 살펴보니 앞자리의 숫자가 큰 숫자가 우선 순위가 높다는 것을 알게 되고, 각 숫자의 첫번째 자리 숫자를 비교해야되나 하는 생각이 들던 찰나에 3, 30, 34 와 같이 앞자리의 숫자가 같을 경우엔 비교를 할 수 없음을 깨달았다.아에 priority queue에서 비교 함수를 작성해 a + b 조합과 ..
다리를 지나는 트럭 / 큐
·
공부/Code Cata
https://school.programmers.co.kr/learn/courses/30/lessons/42583#qna#include #include using namespace std;int solution(int bridge_length, int weight, vector truck_weights) { queue bridge; int cur_weight = 0; int idx = 0; int time = 0; // bridge_length(다리에 최대 올라갈 수 있는 트럭 총량)만큼 무게가 0인 트럭 채우기 for (int i = 0; i bridge_length만큼 다리에 올라갈 수 있는 트럭의 총 개수가 제한되어있어 queue에 미리 무게가 0인 트럭을 채워 넣..
AI_NavMesh
·
내배캠/Unreal Engine
📌 NavMesh의 동적 변화NavMesh는 런타임에 동적으로 생성은 불가능하다.하지만 레벨이 런타임중에 변화되었을 때 동적으로 NavMesh의 계산을 동적으로 변경할 수 있다.그 세팅은 위와같이 Project Settings에서 Engine-> Navigation Mesh 카테고리에서 Runtime 섹션을 살펴보면 Runtime Generation 항목이 있는데 그것을 기본 Static 값에서 Dynamic 값으로 변경해주면된다.참고로 이 기능은 리소스를 많이 소모하게 된다는 점은 알고 있자. 🔹 좌(Dynamic 설정) / 우(Dynamic Modifiers Only 설정)Dynamic Modifers 경우엔 Static과 Dynamic 옵션을 섞은 것과 동일하지만, NavMesh 영역에서 "빼기..
Steam OSS로 멀티 플레이 세션 생성 및 관리
·
Project/Arena Fighters
📌 시작은 Null OSS였던 프로젝트🔎Null OSS란?Unreal Engine에서 기본적으로 제공하는 더미 OnlineSubsystem으로, 로컬 환경(Package / PIE)에서 멀티플레이 테스트를 가능하게 해준다.세션 생성 및 참여에 대한 테스트가 가능하지만 동일한 Lan 안에서 한정적인 테스트가 가능하다.즉, 외부 접속으로 타인과 다른 지역 Lan을 통해 접속해 같이 멀티플레이를 즐길 순 없는 상태였다.그래서 1차적으로 전체적인 게임 기능 구현을 완료한 뒤, 동일한 로컬에서 2개의 프로세스를 띄운 후 정상적으로 작동하는지 테스트하였고, 그 다음 Steam OSS로 전환을 시도하였다.Steam OSS 전환으로 기대한 점은 인터넷을 통해 같은 세션에 접속해 실질적인 멀티플레이 환경을 만드는 것..
숫자 변환(BFS)
·
공부/Code Cata
https://school.programmers.co.kr/learn/courses/30/lessons/154538처음에 문제를 읽고 브루트포스로 각 x마다 3가지 경우를 다 해봐야되나 생각했지만, x와 y의 최대 값이 백만으로 크기 때문에 비효율적이고 시간 초과가 발생할 것이라고 생각했다.최소 연산 횟수를 구하는 문제이고 이것은 최단거리 문제와 유사해보였다.각 수를 정점으로 보고, 연산을 간선으로 보며 너비 우선 탐색인 BFS로 문제를 해결하는 것이 가장 적합해보였다.✅ 구현 코드#include #include using namespace std;int solution(int x, int y, int n){ queue> q; vector visited(y + 1, false); q.pu..