
클라이언트 / 서버 게임 클라이언트: 서버와 통신하여 게임 플레이 할 수 있도록 하는 exe 프로그램 게임 서버: 실시간 상호작용, 복잡한 데이터를 다룸. 게임을 관리 게임은 클라이언트-서버 관계를 통해 게임을 실행, 관리 네트워크 프로토콜 프로토콜: 네트워크

Gizmo Gizmo: 좌표 표현 빨간화살표(x축), 초록화살표(y축), 파란화살표(z축) 레벨, 컨트롤러, UI, 액터 등 개발의 요소 레벨 레벨: 게임이 진행되는 맵, 장면 또는 무대 하나의 Persistent Level(메인 레벨)을 두고, Sub-Leve

액터(Actor)의 종류와 액터 배치 레벨(맵) 내에 존재하는 모든 오브젝트의 기반 클래스 건물, 캐릭터, 라이트, 카메라 등 눈에 보이는 오브젝트뿐 아니라 트리거(Trigger)나 볼륨(Volume)처럼 눈에 보이지 않는 것도 모두 액터의 일종 액터마다 고유한

게임 속 물체액터는 최소 하나 이상의 컴포넌트(기능)들을 가짐클래스는 설계도설계도의 실제 구현체를 인스턴스상속: 부모 클래스를 물려 받고 자식만의 기능과 특성을 추가 가능

조종 가능한 특성을 가진 Pawn에서 기본인 Player0으로 설정Input 설정Input을 처리할 Input Action과 Input Mapping Context를 생성Input Action에서는 키보드 움직임(WASD)과 마우스 움직임(위/아래)는
그래픽(시각적 요소): 캐릭터, 배경, UI사운드(청각적 요소): 배경 음악, 효과음인터랙션(상호 작용): 플레이어와 게임과의 상호 작용이 요소들을 게임 엔진이라는 작업대 속에서 게임을 만들 수 있다캐릭터 고정한 채로 카메라만 움직이게
오늘 학습 키워드 게임 개발 종합반 수강 1-11 블루프린트 연산 (2) 총알 발사 / 재장전 초기에 총알 30발이 제공 마우스 좌클릭 시, 총알 발사 R 누르면 30발로 재장전 구구단을 외자 총알 발사 / 재장전 과제 총알이 남아있을 경우에만 발사 가

text기반 총게임 만들기게임 개발 종합반 수강Rifle, ShotGun, Pistol 총을 각 1, 2, 3번에 배정하여 마우스 좌클릭시 발사총알이 다 떨어지거나, 총의 온도가 100도가 넘어가면 발사 불가능R을 눌러 재장전하거나, T를 눌러 온도를 10도씩 낮추며

플랫포머 간단한 게임 만들기게임 개발 종합반 수강캐릭터의 movement component에서 air를 검색하면 아래와 같은 속성이 뜬다이 속성들로 공중에서의 캐릭터의 움직임을 설정할 수 있다Air Control평지에서의 움직임에 비교한 공중에서의 캐릭터의 움직임 정도

vector vs rotatorInteractive World 만들어보기게임 개발 종합반 수강기하와 벡터에서 배웠던 vector와 동일방향, 크기를 가지며 (x, y, z) 값으로 표현Actor의 location을 표현하기 위해 vector가 사용되는데, 월드 좌표계에
오늘 학습 키워드 이름 충돌 Alien Temple 게임 개발 종합반 수강 이름 충돌 A라는 이름의 블루프린트를 만들고 제거하거나 다른 이름으로 바꾸었어도, 다시 A라는 이름의 블루프린트를 만들 수 없는 상황이 발생 해당 폴더에 같은 이름의 파일이 없음에도
오늘 학습 키워드 이어서 LandScape 만들기 Material 이어서 LandScape 만들기 저번 TIL에 이어서 LandScape를 완성한다 Material 여러 texture를 모아 하나의 material로 만들고 이렇게 만들어진 여러 materia

오늘 학습 키워드 이어서 LandScape 만들기 Material 지금 주신 코드 에서 에러가 나는 이유는, 포인터 타입과 대입하려는 값의 타입이 맞지 않기 때문입니다. 본질적 문제 int (*ptr)는 "3개의 int로 이루어진 배열을 가리키는 포인터"입니

Flow ChartPlayer Status Management SystemEnemy Fight System게임 개발자를 위한 C++ 문법 수강SmartDraw 이 사이트를 통해 flow chart 작성소스코드-Github에 자료 upload소스코드-Githubstack
오늘 학습 키워드 Smart Pointer 예제 얕은 / 깊은 복사 언리얼 엔진 Garbage Collection 언리얼 엔진 Reflection System 게임 개발자를 위한 C++ 문법 수강 스마트 포인터 예제 Unique Pointer 객체 사용
오늘 학습 키워드 코드카타 템플릿 STL 코드카타 to_string() to_string은 문자열로 만들어 반환하지만 임시객체를 반환 즉, 해당 함수가 있는 code가 끝나면 임시객체가 사라짐 따라서 아래와 같이 사용할 경우 sv는 임시객체를 참조하고 있

Iteratorstring()객체지향적 코드 작성법컨테이너의 내부 구조는 서로 다르지만, Iterator를 통해 동일한 코드로 알고리즘 사용 가능반복자는 컨테이너의 요소에 대한 일관된 접근 방법을 제공하므로, 알고리즘이 특정 컨테이너의 내부 구현과 무관하게 동작할 수
디자인 패턴개발을 하다보면 반복적으로 직면하는 문제들이 있는데 이를 해결하기 위한 일반화된 솔루션새로운 것을 만들어내는 방법과 관련된 패턴싱글톤 패턴생성패턴 중의 하나로 게임에서 플레이어 캐릭터처럼 객체가 하나만 존재해야 할 때 객체를 생성, 사용하는 패턴객체들의 구조

string 관련 함수distance 함수Unreal C++문자열의 일부분을 잘라 반환token을 기준으로 문자열을 잘라 반환to_string()함수는 정수 또는 실수 타입을 문자열로 변환하도록 설계되어 있어, 'c'에 해당하는 아스키코드 99가 문자열로 변환됨문자열

오늘 학습 키워드 유용한 함수 예제 for문 반복자 vs 인덱스 1. 유용한 함수 예제 toupper, tolower 대문자 또는 소문자로 반환해주는 함수 c - 'a' + 'A'같이 직접해주는게 성능이 살짝 더 좋지만, 알파벳이 오지 않으면 의도치 않은 결

오늘 학습 키워드 클래스간의 관계 알아보기 1. 클래스간의 관계 알아보기 상속 연관 의존 composition 다음 학습 파일 입출력 공부 C++ 코딩테스트

파일 입출력stringstreamsystem("cls") / system("pause")전처리기stream: 데이터 스트림의 약자로 데이터가 흘러들어오는 물줄기를 말함데이터 스트림의 종류stdin stream: 키보드를 통해 들어오는 입력 데이터 스트림stdout st

언리얼-C++ 실습문자열 스트림컨테이너알고리즘GitHub공백 대신 문자로 구분하기 위해서는 getline 함수를 사용getline(입력 스트림, 토큰을 저장할 문자열 변수 , 구분자 문자)일반적으로 while 반복문과 함께 사용하여 문자열을 순차적으로 분리string

덱Unordered_map탐색시간재귀함수vector와 마찬가지로, begin()은 맨 앞의 원소를 가리키고, end()는 맨 뒤의 원소를 가리킴배열처럼 연속적인 메모리를 가지는 배열과 달리, 덱은 여러 개의 청크(chunk)라고 불리는 영역으로 쪼개져 있음벡터는 중간에
오늘 학습 키워드 언리얼 git 관리 힙(heap) 자료구조 배열 회전 1. 언리얼 git 관리 언리얼 프로젝트 역시 git으로 관리할 수 있다 대용량의 경우 LFS를 사용하기 프로젝트가 있는 폴더에서 git init하여 초기화하기 아래의 사진처럼 필수

removestackqueuetree\`범위 내에서 지우고 싶은 키는 뒤로 옮기고 남아있는 요소는 앞쪽으로 이동(unique처럼 뒤로 옮겨진 키의 값은 undefined)"새 끝" 위치의 iterator를 반환 unique와 비슷그래서 보통 erase()와 함께 사용문

gitignorevisual studio나 언리얼 엔진이나 필요 없는 중간파일(dummy)들이 존재이런 파일을 하나하나 찾고 git에 올리지 않는것은 힘듦따라서 gitignore를 이용해 자동으로 중간파일은 빼고 필요한 파일들만 git으로 관리하도록 가능먼저 gitig
https://github.com/Soggeum/Console-Text-RPG-Game
size_t메모리 크기, 배열의 크기, 문자열 길이 등 음수가 될 수 없는 크기를 표현하기 위해 사용되는 부호 없는 정수형 데이터 타입str.find('char')의 반환값도 size_t인덱스나 크기, 또는 크기와 관련된 함수들의 매개변수나 반환 타입으로 사용32비트
객체지향적 설계자식 클래스 헤더가 부모 클래스 헤더를 포함main에서는 필요한 구체 클래스 헤더(자식 클래스)만 포함부모 클래스에서 자식 클래스 헤더를 포함하는 것은 지양 (순환 참조, 결합도 증가)권장 패턴여러 클래스(Store, Battle 등)의 활동을 LogMa

그래프unordered_set 해시간선이 있을 경우, 행렬에 값으로 가중치를 저장장점: 구현이 쉽고 간선 확인이 배열접근이라 아주 빠름단점: 간선이 적을 경우 메모리 낭비{Destination, Weight} 형식의 값을 vector로 표현장점: 메모리 효율적단점: 간

값에 의한 전달백트래킹C에서는 함수에 인자로 넘겨줄 때 값에 의한 전달이 일어남배열 역시 마찬가지로, 배열의 이름이 첫 번째 요소의 주소값이므로 값이 전달되는 것C++ 역시 거의 모든 인자는 기본적으로 값에 의한 전달이 일어나며, 이때 복사비용이 발생따라서 &를 이용하
오늘 학습 키워드 INF 구조 분해 선언 다익스트라 1. INF 양의 무한대나 음의 무한대를 표현하고 싶을 때 2. 구조 분해 선언 pair 값을 받을 때 값 두 개를 동시에 변수에 할당하는 방법 (C++17이상) 3. 다익스트라 어느 지점 A에서 Z까
오늘 학습 키워드 Kadane's 알고리즘 벨만-포드 알고리즘 우선순위 큐 1. Kadane's 알고리즘 배열 arr이 주어졌을 때, arr의 연속된 부분배열의 최대 합을 구하는 효율적인 방법 일반적인 Brute Force로 이중for문으로 한다면 O(N²)
오늘 학습 키워드 LIS 그리디 알고리즘 1. LIS 배열 arr이 주어졌을 때, arr의 요소들 간의 순서는 지키면서 요소가 증가하는 배열을 증가 부분 수열이라고 함 완전 증가여야하므로, {1, 1, 2}은 안 된다. 이 증가 부분 수열 중 가장 긴 길이를

오늘 학습 키워드 언리얼 디렉토리 구조 솔루션 디렉토리 구조 솔루션과 언리얼의 관계 1. 언리얼 디렉토리 구조 Source: C++로 작성한 코드가 저장되는 디렉토리 Content: 게임 에셋, 블루프린트, sound, material 등을 저장 및 관리하는

컴포넌트 구현Log 관리액터 라이프사이클객체 월드에 배치하기객체 회전시키기USceneComponent : SceneComponent에 해당하는 자료형CreateDefaultSubobject<T>("TEXT")서브 오브젝트(컴포넌트 등)를 생성자에서 생성할 때 사용

리플렉션 시스템 등록UCLASS() 매크로는 클래스를 리플렉션 시스템에 등록해줌옵션 안 넣어주면 UCLASS(BluePrintable, BluePrintType)과 동일블루프린트에서 이 클래스를 상속 가능하고, 또한 블루프린트내에서 이 클래스를 변수로 참조가 가능한 형

GameMode, Pawn, PlayerControllerEnhanced Input System코드게임에서의 입력 처리 시퀀스먼저 게임에 필수적인 3가지 구성요소에 대해 알아보자 (GameMode, Pawn, PlayerController)게임의 전반적인 규칙과 흐름을

캐릭터에 애니메이션 적용아이템 객체 생성해보기캐릭터의 움직임에 따른 애니메이션을 넣기 위해, Movement Component를 가져옴Event BlueprintInitializeAnimation : 애니메이션 블루프린트가 초기화될 때 실행되는 이벤트Get Owning

아이템 객체에 컴포넌트 생성Collision Preset (Custom)overlap이나 hit 이벤트를 발동시키기 위해 collision sphere/box를 추가해줌static mesh에서 할 수도 있지만, 그러면 static mesh에서 하는 계산이 무거워지기 때

오늘 학습 키워드 랜덤 스폰 Data Table 1. 랜덤 스폰을 위한 Box Collision 특정 범위 안에서 아이템을 랜덤으로 스폰하는 방법은 여러가지가 있지만, 간단하면서도 쉬운 방법으로 Box Collision을 이용함 Box Collision의 영역

오늘 학습 키워드 GameLoop 1. 구현 목표 3개의 각 레벨(Basic, Intermediate, Advanced)마다 40개의 랜덤 아이템 스폰 모든 코인을 먹거나, 30초의 시간이 지나면 다음 레벨로 이동 플레이어의 체력이 0이 되면 즉시 게임 오버

오늘 학습 키워드 HUD 1. 구현 목표 이전 프로젝트에 이어서, 아래의 정보를 HUD로 나타내보도록 함 획득 점수 스테이지 레벨 스테이지 잔여 시간 2. UMG (Unreal Motion Graphics) 언리얼 엔진의 Widget Blueprin

오늘 학습 키워드 메뉴 UI 만들기 1. 메뉴 UI 만들기 플레이 버튼을 누르면 Menu UI가 가장 먼저 뜨기 게임 시작 시 자동으로 HUD를 띄우기 메뉴에선, UI 입력 모드로 전환하여 입력이 UI에만 작동하도록 구현 게임이 종료되면 메뉴가 다시 뜨도록 만들기
오늘 학습 키워드 파티클, 사운드 효과 아이템 획득 시, 파티클과 함께 소리가 재생되도록 구현 1. Particle System 수많은 작은 입자(파티클)를 빠르게 생성하고 움직이며, 각 파티클의 위치, 크기, 색깔, 수명 등을 조절해주는 시스템 파티클 효과의
오늘 학습 키워드 파티클, 사운드 효과 아이템 획득 시, 파티클과 함께 소리가 재생되도록 구현 1. Particle System 1️⃣ 과제 소개 기존 프로젝트에는 이미 인터페이스 기반 아이템, 충돌 이벤트 (Overlap), 랜덤 스폰, 체력/점수, 웨이브/
리팩터링동작은 그대로 유지한 채, 내부 구조를 바꾸어 코드 자체의 품질을 향상시키는 과정하나의 이벤트로 묶을 수 있는 여러 과정은 하나의 함수로 추출하기수식으로만 표현하지말고, 변수로 수식의 의도 알려주기나중에 본인도 다시봤을 때, 이해하기 쉬움디버깅할때도 중간값 보기

언리얼 수학LineTrace, 감지 및 추적시스템GoF 디자인 패턴 - 생성 패턴1U = 1cmLocal->World->View->Clip Space로 좌표를 변환하기 위해 행렬 이용World Matrix, View Matrix, Projection Matrix언리얼에
GoF(구조/행동패턴)디자인 패턴 참고 자료객체를 어떻게 구조, 조합, 연결할 것인가서로 안 맞는, 호환되지 않는 인터페이스를 연결해주는 변환기예시 상황 : 언리얼의 벡터랑 외부 물리엔진의 벡터랑 같은 3D벡터인데, 둘이 호환이 안 됨. 그래서 같은 로직을 다르게 2번

오늘 학습 키워드 캐릭터 구현 디자인 패턴 참고 자료 1. Into The Paradox 팀플 하기로 했다 2. 캐릭터 구현 기본 캐릭터 클래스 상속받고 추가 구현 카메라와 스프링 암 닮 굳이 public할 필요 없을거 같아 protected로 함. 자손

오늘 학습 키워드 분할 정복 캐릭터 애니메이션 1. 분할 정복 큰 문제를 작은 문제로 나누고, 작은 문제가 해결되면 다시 합쳐서 큰 문제를 해결하는 방법 쪼갠 작은 문제가 원래 큰 문제의 문제상황과 동일해야함 작은 문제로 쪼갤 때, 쪼개진 문제들끼리 서로 독

오늘 학습 키워드 1. 컨트롤러 추가 언리얼 엔진에서 기본으로 제공하는 캐릭터 클래스 내부를 뜯어본 결과, Enhanced Input System 관련 처리를 캐릭터 내에서 다 하였기에 마찬가지로 플레이어 캐릭터도 이렇게 구현하였음 그러나, 나중에 멀티플레이어 게
오늘 학습 키워드 데미지 시스템은 총알이나 총에서해야하니 기믹에서 해야하는가? 1. 컨트롤러 추가
PlayerState플레이어의 주요 정보(체력, 경험치, 점수 등)를 모아 관리하는 데이터 구조플레이어 상태를 한 곳에 모으고, 상태를 변경하는 함수를 포함멀티플레이의 경우, 서버가 각 PlayerState를 관리하고 각 클라이언트는 복제하여 읽음레벨이 넘어가도 보통

오늘 학습 키워드 리타겟팅 총알 발사 로직 1. 리타켓팅 프로젝트에서 캐릭터에 사용할 스켈레톤 메시의 스켈레톤과, 애니메이션의 스켈레톤이 다름 애니메이션이 더 적합하게 움직이도록 스켈레톤 리타겟팅에 대해 알아보며 적용해보았음 IK_Rig 언리얼 에디터에서
오늘 학습 키워드 데이터 지향적 설계 ECS 최적화 가상메모리 1. 캐시 hit와 miss 코드를 구현할 때, 객체지향적 코드도 좋지만, 데이터 지향적인 코드도 고려하면서 짜면 좋음 컴퓨터 구조 전공에서 배웠듯이 캐시 hit가 높고 캐시 miss가 낮아야
오늘 학습 키워드 언리얼 엔진의 4대 Framework 1. 언리얼 엔진의 4대 Framework 객체지향적을 추구하는 언리얼 엔진은 크게 4가지의 Framework를 제공하여 우리가 객체들의 구조를 짜는데 도움을 줌 GameMode : 게임의 심판관 (규칙,

투포인터 알고리즘프로그래머스 "연속된 부분수열의 합"해당 문제를 Brute Force로 이중 for문을 돌린다면 O(N^2)의 시간복잡도를 가져 시간초과가 발생함O(N)의 시간복잡도를 가지는 투포인터 알고리즘을 이용하여 문제 해결 가능포인터로 구간을 나타낼 수 있을 때

매크로프로젝트 상대 경로 추가check vs ensureIsvalidCDOStaticClass vs GetClassUCLASS() : 클래스 매크로USTRUCT() : 구조체 매크로UENUM() : 열거형 매크로PROJECTNAME_API : 다른 모듈에서 해당 객체에

class vs structvector 메모리 구조리플렉션 매크로 metaTObjectPtr어제 언리얼에서 Class와 Strcut를 리플렉션하기 위한 매크로를 외우다 보니 문득, C++에서 둘의 차이가 궁금해짐기본적으로 둘의 기본 접근 제한자에 차이가 있다는 것은 알

프로세스 메모리 구조Fragmentation언리얼의 메모리 관리(심화)enum classUI 생성주기P2P/Listen/Dedicated Server작성한 코드는 어셈블리어로 번역되어 프로세스 메모리의 Code부분에 저장PC(Program Counter)는 이 기계어들

new vs malloc멀티 환경 설정간단히 테스트하기 위한 환경을 설정하기 위해, 플레이어수는 2명으로 설정하고, Dedicated Server이므로 Net Mode를 클라이언트로 설정위젯을 컨트롤러가 담당하여 화면에 띄었는데, 자기 컨트롤러가 자기 화면에만 띄워야
오늘 학습 키워드 memset 1. memset 이전 new, malloc에 대해 공부해보면서 메모리를 한 번에 초기화하는 방법은 없을까 찾아봄 memset은 해당 메모리를 원하는 값으로 한 번에 초기화 가능한 함수 단, 할당받은 메모리에만 한하며, 반환값은

NetModeNetDriver, NetConnectionOwnerShipNetRole로컬 컨트롤러, 로컬 플레이어PossessedBy게임 프로세스가 현재 네트워크 상에서 어떤 역할을 하고 있는지를 의미스킬 사용, 데미지로직 등 게임에서 중요한 로직들은 클라이언트가 아니

RPC가상함수테이블Remote Procedure Call의 줄임말로, 함수를 호출하는 PC와 호출받은 함수가 실행되는 PC가 달라도 되게끔 해주는 통신기법예를들어, 화면에 문자를 출력하는 함수를 서버에서 호출하면 해당 출력시키는 함수는 각 클라이언트들에서 실행되게끔도
레플리케이션숫자 야구 게임서버에서 액터를 스폰하고 클라로 복제할 때, 현재 서버에서의 값들을 클라에 보내주어 클라에서 이 값들을 초기값으로 인스턴스를 다시 만드는 것이었음그러므로 이 상태까지는 서버와 클라에서의 액터의 메모리 구조랑 값은 완전히 동일하지만, 멤버변수같이
오늘 학습 키워드 C++ 4대 캐스팅 1. complete/sub object 이러한 구조에서 C객체 안에는 A와 B라는 subobject를 가짐 반대로, C는 complete object임 complete object는 메모리상으로 클래스 전체(C)가 객체로
승패배 로직데이터 동기화 및 클라이언트에서의 UI처리 방법ReplicatedUsing 먼저 3 Strike를 맞춘 플레이어가 승리하게 되고, 만약 모든 플레이어가 3번의 기회 안에 다 맞추지 못 할 경우 무승부가 된다.승부판정은 GameMode에서 해주며, 승부결과는
승패배 로직게임시작하면 서버에서만 게임모드 및 스테이트생성되지만, 클라 접속은 없어서 컨트롤러는 없음. 근데 나같은 경우는 startgame에서 랜덤으로 컨트롤러를 가져와 그 컨트롤러부터 게임이 시작됨.그래서 컨트롤러 없는데 배열 접근하려니까 에러발생따라서 postlo
숫자야구게임 정리pragma region컨트롤러 회전값숫자야구게임 깃허브visual studio에서 해당 부분을 접을 수 있도록 해주는 코드비슷한거끼리 묶어서 접고 펴는 정리용 코드캐릭터의 생성자에서 위와 같이 회전값 처리를 해줄 수 있다bUseControllerRot
오늘 학습 키워드 전위/후위 연산자 1. 전위/후위 연산자 단항 연산자로, 전위는 먼저 1을 더해주고 l-value를 반환해주고, 후위는 먼저 r-value를 반환하고 식 계산이 끝난 후 1을 더해줌 그래서 ++a = 5;는 되지만, a++ = 5;는 안 됨
map키-값 쌍을 저장하는 연관 컨테이너 (키 중복 안 됨)내부적으로 Red-Black Tree를 사용해 키 기준으로 자동 정렬기본 오름차순이며, 정렬함수를 직접 정의해주어 정렬하기도 함.정렬되어 있기에 삽입, 탐색, 삭제에 O(log n) 시간 복잡도를 가짐 (평균,
오늘 학습 키워드 네트워크 데이터 관련 용어 클라 액터 BeginPlay flow OnPossess NetLocalOnClient OnRep함수 vs RepNotify 함수 NetUpdateFrequency 1. 네트워크 데이터 관련 용어 1.1. Net
오늘 학습 키워드 1. 클라에 모든 액터 동기화하거나 복제하지 않음 Relavancy로 판단하여 정함 기준은 owner, instigator, 거리 등 여러가지로 복제할건지, 동기화 해줄건지를 정해서 한다. SetNetCullDistanceSquared(Net
오늘 학습 키워드 UserWidget 생성자 객체 복사 막는 방법 UserWidget vs WidgetComponent AddDynamic vs AddUObject 기타 1. UserWidget 생성자 UserWidget의 생성자는 아래와 같이 해줘야함
오늘 학습 키워드 클라가 서버에 접속하기 클라 접속 막기 z-order 값 클라의 독자적 레벨 변경 1. 클라가 서버에 접속하기 지금까진, PIE가 As Client로 실행되었기에 자동으로 서버에 연결되었음. Standalone으로 하면 수동으로 서버에 연결
오늘 학습 키워드 프로젝트 패키징 스택 메모리 1. 프로젝트 패키징 다른 사람도 내 게임을 하려면, 패키징이 필요 게임 패키지 = 실행 파일 + 변환된 컨텐츠 에셋 아래 사진처럼, 실행파일과 엔진, 다른 파일들이 같이 있게 패키징해야함 패키징에 여유 저장공간
오늘 학습 키워드 Race Condition Critical Section 1. Race Condition 여러 개의 프로세스/스레드가 하나의 공유자원에 접근하여 값을 읽고 수정할 때 발생할 수 있는 문제상황 예를 들어, 프로세스 A, B가 money 값(10
오늘 학습 키워드 대각선 맵 스택오버플로우 해결 1. 대각선 맵 좀보이드는 맵이 대각선으로 기울어진 형태로 되어 있다. 건물, 차, 방의 구조 등 모두 대각선 형태 하지만, 맵에서 액터를 배치할 때 항상 대각선으로 돌려서 배치하기엔 너무 효율성이 떨어질 것 같
오늘 학습 키워드 달리기, Crouch 동기화 1. 달리기, Crouch 동기화 1.1. 문제상황 !youtube[L9QHew64Wyk] 일반적인 걷기는 동기화 잘 됨 (왼쪽이 내화면, 오른쪽은 상대화면) 그러나 달리면, 속도도 안 증가하고, 내 화면에서 부
오늘 학습 키워드 InputTrigger vs ETriggerEvent 1. 동일한 버튼에 짧은/긴 입력 바인딩 1.1. 문제 상황 마우스 우클릭을 짧게 클릭했을때와 길게 누르고 있을 때의 동작 차이를 두고 싶었음 그래서 먼저 Input Action에서 Tri
오늘 학습 키워드 화면 내 마우스 방향 회전 AI 기초 Nav Mesh 생성 AI Perception 1. 화면 내 마우스 방향 회전 앞서, 마우스 우클릭을 짧게 한 것과 길게 한 것을 구현하였음 좀보이드처럼 우클릭을 길게 하였을 때, 캐릭터가 화면 내 마
1. AI 블랙보드 AI Behavior Tree와 관련하여 칠판같이 정보를 저장하고 사용하는 곳 좌측의 키는 변수 같은것으로 원하는 키(변수)를 저장 각 키에 대해 우측 디테일 패널에서 설정 Entry Name : 이름 Category : 키들을 범주화
1. Context Swithcing CPU/코어에서 실행 중이던 프로세스/스레드를 다른 것으로 바꾸는 것 멀티프로세싱을 가능하게 해줌 1.1. 발생 조건 자신에게 주어진 timeslice를 다 사용하여 다른 프로세스/스레드에 넘길 때 I/O 작업을 기다려야해
0. 플러그인 사진의 2개의 플러그인이 있어야 함 (언리얼 엔진 5.7버젼에는 기본적으로 들어있었음) 1. State Tree 이전엔 Behavior Tree로 AI 행동로직을 구현하였지만, 트리 구조라 로직이 복잡해지면 엄청 구조가 깊어지게 되고, 디버깅도 어렵

0. 컴포넌트에 추가 State Tree는 캐릭터 컴포넌트로, State Tree AI는 대체로 컨트롤러에 컴포넌트로 추가 1. Transition Completed : 성공하든 실패하든 끝나면 전환을 Trigger Succeeded : 성공했을 때 Transi
1. AI Chasing 트러블 슈팅 1.1. 문제 상황 !youtube[Z_LaW5az-VI] 영상처럼 플레이어가 AI의 시야범위에 들어가면 AI는 캐릭터를 추격함 하지만 잘 추격하다가도 어느 순간 추격을 멈추는 상황이 발생하는 문제가 생겼음 1.2. 해결과

안개 render in main, depth 이런것들 뭐야 참고 velog 참고 유튜브 emplaceback 과 pushback 의 차이 액터 계층 재구조화 원래 적 AI를 기본적으로 서있는 상태로 만들었었음 근데, 기어다니는 좀비를 만드려다보니, 그에 맞
1. emplaceback vs pushback 1.1. emplace_back 객체를 직접 컨테이너 내에서 생성하여 임시 객체 생성을 피함 생성자 인자를 직접 받아 인플레이스(in-place)로 객체를 구성 emplace_back이 일반적으로 더 효율적 그러
1. 언리얼 엔진 입력 시스템 1.1. Input Action Input Action은 Data Asset을 상속받은 단순한 데이터 에셋 입력의 타입과 의미를 정의해주는 설정 파일 1.2. 입력 처리 파이프라인 키보드/마우스 등으로 입력을 넣음 Modifie