728x90

TIL 259

24.10.22 VV, UE5

VV로그인 UI언리얼 엔진의 프로젝트를 본격적으로 포스팅 해보려고 한다.이번 목표는 로그인 UI를 만드는 것이다.Unity에서 쉽게 panel을 이용했던 것과는 다르게 좀 언리얼은 복잡해서 다른 여러 블로그를 참조하면서 진행했다.Ctrl+Space 를 통해 Content Browser를 열고, 빈 곳에서 우클릭을 통해 User Interface → Widget Blueprint를 눌러줘서 생성해주었다.User Widget을 눌러서 생성해주었다.이런 창이 열리게 되는데 화살표 버튼을 드래그 해보면 화면 영역이 나타나게 된다.여기서 만드려고 하는 화면 비율을 따라서 선택해주면 된다.나는 1920x1080으로 선택했다.옆의 Palette를 통해서 원하는 UI를 드래그 드롭시켜주었다.간단하게 만든 텍스트 박스와..

24.10.21 UE5

UE5언리얼 오브젝트 리플렉션언리얼 리플렉션 시스템프로그램이 실행시간에 자기 자신을 조사하는 기능이다.C++는 어떠한 형태의 리플렉션을 지원하지 않아, 언리얼에서 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수 , 열거형 관련 정보를 수집, 질의, 조작하는 별도의 시스템이 구축되어 있다. 전형적으로 이러한 리플렉션은 ‘프로퍼티 시스템’이라고 부른다.리플리케이션 시스템은 옵션이다. 리플렉션 시스템이 보이도록 했으면 하는 유형이나 프로퍼티에 주석을 달아주면, Unreal Header Tool(UHT)가 그 프로젝트를 컴파일 할 떄 해당 정보를 수집한다.리플렉션 데이터 사용하기대부분의 게임 코드는 실행 시간에 프로퍼티 시스템을, 그 장점을 십분 활용하여 무시할 수 있지만, 코드를 작성하거나 게임플레이 시..

24.10.18 UE5

UE5FStringFName 이나 FText 와는 달리, FString 은 조작이 가능한 유일한 스트링 클래스이다. 대소문자 변환, 부분문자열 발췌, 역순 등 사용가능한 메서드는 많다.FString 은 검색, 변경에 다른 스트링과의 비교도 가능하다. 그러나 바로 그것이 FString 이 다른 불변의 스트링 클래스보다 비싸지는 이유이다.FString 만들기다음 구문으로 FString 을 선언할 수 있다.FString TestHUDString = FString(TEXT("This is my test FString."));숫자 및 기타 변수변수 유형 스트링에서 변환 스트링 포맷floatFString::SanitizeFloat(FloatVariable); intFString::FromInt(IntVariable..

24.10.17 CS, UE5

CS모던 객체 지향 설계 원칙유지보수와 유연함, 확장성 향상을 위한 객체 지향 프로그래밍 원칙(SOLID)Single responsibility principle하나의 클래스는 하나의 책임만 가져야 한다.Open/closed principle클래스 설계를 변경하지 않고 동작을 확장할 수 있어야 한다.Liskov subsititution principle작고 명확한 인터페이스들로 분리해 관리해야 한다.Dependency inversion principle구현을 배제시킨 상위 정책을 바라보며 설계해야 한다.상위 언어의 기능인터페이스(interface)객체 설계의 틀을 제공하는 추상 클래스리플렉선(Reflection)런타임에서 객체의 구조를 파악하고 객체에 메타데이터를 부여한다.델리게이트(Delegate)프로..

24.10.14 게임 서버

최흥배님의최흥배 C++ 네트워크 프로그래밍 분석&리팩토링 - GameProject3Re 를 보고 코드를 분석하고, 리팩토링을 진행한다.게임서버트러블 슈팅. 1실행을 시키는데 오류가 뜬다. ? load error servercfg.ini 를 못 읽어오는 것 같다.???파일이 존재한다.코드 관련 문제가 있을 것 같다.이곳에서 return false;경로를 절대 경로로 지정해주어서 문제를 해결했다.왜 문제가 발생했는지 상대경로를 확인해보아서 문제가 어디서 발생했는지 확인했다.파일의 경로는 …/…/EchoServer/파일.ini 이러했는데, 상대 경로가 …/…/EchoServer/x64/Debug 였다. 절대 경로에서 다시 상대경로로 바꿔주고 ServerCfg.ini 파일을 옮겨줘서 문제를 해결했다.INITma..

24.10.11 게임 서버

게임서버실시간 게임 최적화 전략수동적인 서버결과만 저장해주는 서버패킷 중계능동적인 서버 - 일반적인 게임서버생태를 서버의 메모리에 저장하고 있다.DB는 보조 수단이다.클라이언트의 시간 차 0을 목표로 한다.(불가능 하지만)게임 루프가 있다.서버가 하는 일 in Voxel Horizon유저로부터의 패킷에 의한 이벤트처리플레이어 or NPC에 대한 이동처리처리량과 응답성의 차이어느 부분이 문제인지 생각할 필요가 있다.응답성 향상을 위한 주요 기법비동기 처리특정 작업 때문에 전체 응답성이 떨어지는 상황을 방지멀티 스레드 - 별도의 worker thread가 처리싱글 스레드 - 작업을 쪼개서 원래의 작업 스레드에서 여러번에 걸쳐서 처리thread pool을 이용한 병렬처리서로 의존성을 가지지 않는 n개의 항목에..

24.10.10 게임서버

게임 서버게임 서버를 C++로 만들어보고 있다.저번에 만들어 본 서버를 토대로 만들다가 너무 지저분하게 코드를 쓰고 있어서 다시 자료를 찾고 재시작중이다. 어렵지만 해야디..해야디.. 게임 서버하고 언리얼, 언리얼 데디서버까지 봐야해서 쉽지는 않을것같다. 그래도 고다고C++로 게임 서버를 개발할 때는, 클라이언트와 서버 간의 네트워크 통신을 처리하고, 게임의 상태를 서버에서 관리한다. 서버는 클라이언트의 요청을 받고, 게임 로직을 처리한 후, 그 결과를 다시 클라이언트에 전달한다. 서버는 게임의 중요한 상태를 유지하고, 여러 클라이언트 간에 동기화를 책임진다.소켓(Socket)과 통신C++ 서버는 소켓(Socket)을 이용해 클라이언트와 통신한다. 소켓은 네트워크를 통해 데이터를 주고받을 수 있는 일종의..

24.10.08 UE5, CS

UE5언리얼 에디터 개요언리얼 엔진의 핵심 도구는 언리얼 에디터(Unreal Editor)이다. 에디터는 다음과 같은 주요 구성 요소로 이루어져 있다.뷰포트(Viewport)게임 세계를 실시간으로 볼 수 있는 창이다. 사용자는 이곳에서 오브젝트를 배치하고, 이동시키고, 회전하거나 크기를 조절할 수 있다.아웃라이너(Outliner)현재 레벨에 있는 모든 오브젝트의 계층 구조를 보여준다. 사용자는 오브젝트를 선택하거나 계층 구조를 변경할 수 있다.디테일 패턴(Details Panel)선택한 오브젝트의 속성(properties)을 수정할 수 있는 패널이다.콘텐츠 브라우저(Content Browser)프로젝트 내 모든 에섯(asset)을 관리할 수 있는 창이다. 여기에서 텍스처, 모델, 사운드, 블루프린트 등을..

24.10.02 UE5, 알고리즘

UE5언리얼 엔진의 기본타입boolboolean 값(bool 크기 추정 금지). BOOL은 컴파일되지 않는다.TCHARcharacter(TCHAR 크기 추정 금지)uint8unsigned byte(1 바이트)int8signed byte(1 바이트)uint16unsigned “short”(2 바이트)int16signed “short”(2 바이트)uint32unsigned int(4 바이트)int32signed int(4 바이트)uint64unsigned “quad word”(8 바이트)int64signed “quad word”(8 바이트)floatsingle precision floating point(4 바이트)doubledouble precision floating point(8 바이트)PTRINT포인..

24.09.30 UE5

UE5언리얼 c++ 코딩 표준코딩 표준(Coding Standard)프로그래밍을 작성하는데 지켜야 하는 프로그래밍 이름 규칙, 작성 방법등을 지정한 가이드라인코딩 스타일, 코딩 컨벤션이라고도 한다.클래스 체계클래스 체계는 작성하는 사람 보다는 읽는 사람을 염두에 두고 체계를 잡아야 한다. 읽는 사람 대부분은 클래스의 공용 인터페이스를 쓸 것이기에, public을 먼저 선언하고, 그 후 클래스의 private 구현이 뒤따른다.저작권 공지에픽이 배포용으로 제공한 (.h, .cpp, .xaml 등의) 소스 파일은 반드시 파일의 첫 줄에 저작권 공지를 포함시켜야 한다. 공지의 포맷은 반드시 다음과 같아야 한다.Copyright Epic Games, Inc. All Rights Reserved.이 줄이 없거나 포..

728x90