목록분류 전체보기 (121)
하아찡

언리얼 버전 5.5.3서버언어 C++로 구성했습니다. 이전에 적어둔 문제점과 추가해야될점문제점1. 액터를 위치값을 건들다보니 애니메이션이 작동하지않음. -> 걷는 모션이 작동하지않음. 다른방법으로 수정해야함.2. 움직일때 마다 서버에 움직임 데이터를 보내다보니 너무 많은 데이터가 들어감. 약간의 보정처리를 해줘야할듯. 추가해야될점.1. 점프 처리를 아직하지않음. 구성은 어떻게 해야할지 고민중. 일단 생각한건 점프패킷을 하나 만들어서 점프할때 패킷을 보내도록 추가할듯함.2. 시선처리 -> 이것도 과도하게 데이터를 보낼거같으니 움직임 보정처리할때 비슷하게 처리하면 될듯함. 문제점 - 1원인기존 코드에서 SetActorLocation() 함수를 사용해서 캐릭터를 움직이게 처리를해둠. 해결해당 코드를 아래 코드..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다. 아래 코드는 캐릭터 코드 중 움직임 처리하는 부분입니다.기존애 존재하는 Move 함수에 SendMove를 추가하여 움직인 데이터를 서버에 전송합니다.void AlllllllllqqqCharacter::SendMove(){ // 움직인 후 값받아옴 const FVector Location = Controller->GetPawn()->GetActorLocation(); const FRotator MoveRotation = Controller->GetControlRotation(); float Yaw = MoveRotation.Yaw; if (auto* GameInstance = Cast(GWorld->GetGameInstance())) { // 움직..

C++ 11에서 메모리 모델에 대한 내용이 확립이 됐습니다.일단 바로 Memory Model 정책에 대한 옵션을 먼저 알아보겠습니다.1. Sequentially Consistent (seq_cst)2. Acquire-Release(acuire, release)3. Relaxed(relaxed) 차이점이 무엇이 있냐.1번은 엄격하게 처리를 하게됩니다. 엄격한게 무엇이냐? 컴파일러 최적화 여지를 적게줍니다. 즉 직관적으로 볼수 있습니다.2번은 보통3번은 자유롭습니다. 즉 컴파일러 최적화 여지가 많습니다.대신 여지가 많은 만큼 직관적이지 못합니다. 일반적으로 그냥 사용하게되면 1번으로 설정이 됐습니다. #include "pch.h"#include #include #include #include #include..
안녕하세요.이번에는 condition variable를 알아보겠습니다.이전에 알아봤던 Event에서 CreateEvent를 사용해서 커널단에 이벤트를 등록하는 방식으로 처리를 해봤습니다.해당방식은 다른 프로세스에게도 이벤트를 전달 할 수 있는데, 나는 내 프로그램 내부에서만 처리가능하면 될거같은데 너무 무겁게 작업하는거 아닌가? 라는 생각을 할 수 있습니다.그래서 있는게 condition variable입니다.condition variable는 유저 모드 이벤트를 생성 및 호출을 하게 가능하게 됩니다.사실 유저모드에서 이벤트가 발생하고 처리가 되는건 아닙니다. 실질적으로 이벤트가 발생했을때는 커널모드의 개입이 필요한데 그 외의 작업들이 유저모드에서 처리가 되기때문에 CreateEvent를 사용해서 이벤트..

안녕하세요이번에는 Event처리를 해볼건데요. 이전에 사용했던 코드를 먼저 봅시다.#include "pch.h"#include #include #include class AdaptiveLock {public: void lock() { int32 spinCount = 0; // Spin 횟수 const int32 maxSpinCount = 100; // Spin 횟수 제한 bool expected = false; bool desired = true; while (!_locked.compare_exchange_weak(expected, desired)) { expected = false; ..

이전에는 SpinLock을 살펴보았는데이번에는 SleepLock을 살펴보겠습니다. 사실 SpinLock에 반복문 내부에 "일정시간 대기해라" 코드 한줄만 추가해주면 바로 SleepLock으로 변경하여 사용할 수 있습니다.#include "pch.h"#include #include #include class SleepLock {public: void lock() { bool expected = false; bool desired = true; while (!_locked.compare_exchange_weak(expected, desired)) { expected = false; //기존 SpinLock에서 SleepLock..