728x90

TIL 259

24.11.15 Unity

UnityUnity Addressables는 Unity에서 리소스(assets)를 더 효율적으로 관리하고 로드하기 위한 강력한 시스템이다. Addressables을 사용하면 동적 콘텐츠 관리, 메모리 최적화, 게임의 로딩 시간 감소와 같은 기능을 쉽게 구현할 수 있다.1. Addressables이란?Unity Addressables 시스템은 게임 리소스(텍스처, 사운드, 모델, 애니메이션 등)를 어드레서블(Addressable)하게 만드는 기능을 제공한다.리소스에 주소를 부여하고, 이 주소를 사용하여 해당 리소스를 필요할 때 로드하거나 언로드할 수 있다. 이 방식은 리소스를 다루는 전통적인 Unity의 Resources 폴더 및 Asset Bundles의 한계를 극복하기 위해 설계되었다.2. Addres..

24.11.14 CS

CS인터럽트(Interrupt)프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것이다.지금 수행 중인 일보다 더 중요한 일이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속한다.외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해서 발생한다.소프트웨어 인터럽트는 명령어의 수행에 의해 발생한다.외부 인터럽트입출력 장치, 타이밍, 장치, 전원 등 외부적인 요인으로 발생한다.전원 이상, 기계 착오, 외부 신호, 입출력내부 인터럽트Trap이라고도 부르며, 잘못된 명령이나 데이터를 사용할 때 발생한다.소프트웨어 인터럽트프로그램 처리 중 명령의 요청에 의해 발생한 것(SVC 인터럽트)과정주 프로그램 실행..

24.11.13 CS

CS이것이 컴퓨터 과학이다.CPU 성능클럭이란 컴퓨터의 부품을 일사불란하게 움직일 수 있게 하는 시간의 단위이다. 클럭속도는 헤르츠 단위로 측정되는데, 이는 클럭이 1초에 몇 번 반복되는지를 나타낸다. 이런 점에서 클럭 속도는 CPU의 속도 단위로 간주되기도 한다.코어란 CPU내에서 명령어를 읽어들이고, 해석하고, 실행하는 부품을 의미한다스레드란 하드웨어적인 스레드와 소프트웨어적인 스레드로 나누어 기억하면 좋다. 하드웨어 스레드는 하나의 코어가 동시에 처리하는 명령어의 단위를 의미한다. 같은 의미로 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서, 혹은 멀티스레드 CPU라고 한다. 하드웨어 스레드를 논리 프로세서 라고 부르기도 한다.소프트웨어 스레드란 하나의 프로그램에서 독립적으..

24.11.12 CS, C++

CSTCP/UDPTCP연결 지향형 서비스(reliable service)와 신뢰적 데이터 전송 서비스(data integrity)를 포함한다.Reliable ServiceTCP는 메시지 전송 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 한다. 즉, 패킷이 전송될것을 미리 알려준다.Data integrityTCP는 데이터를 오류 없이 올바른 순서로 전달하는 것을 보장한다.Congestion control(혼잡제어)TCP의 congestion control은 네트워크가 혼잡상태에 이르면 프로세스의 속도를 낮춘다.즉, 프로세스가 우선이 아니라 네트워크의 안정성 향상을 우선한다.Flow control(흐름제어)TCP는 receiver의 buffer가 꽉 차서 데이터가 손실되지 않도록 sender의..

24.11.11 CS

CS이것이 컴퓨터 과학이다.컴퓨터가 이해하는 정보CPU는 기본적으로 0과 1만을 이해할 수 있다. 이것을 비트라고 한다. N 비트는 2^N개의 정보를 표현할 수 있다.워드란 CPU가 한 번에 처리할 수 있는 데이터의 크기를 의미한다. CPU는 프로그램을 워드 단위로 읽어 들이고 처리한다. 워드의 크기는 CPU마다 다르지만, 현대컴퓨터 대부분의 워드 크기는 32비트, 혹인 64비트이다.컴퓨터 내부에서는 소수점을 나타내기 위해 대표적으로 부동소수점 표현 방식을 이용한다. 하지만 이 방식은 정밀도에 한계가 있다. 부동소수점은 소수점이 고정되어 있지 않은 소수 표현 방식으로, 필요에 따라 소수점의 위치가 이동할 수 있고 유동적이라는 의미에서 부동소수점이라는 이름이 붙었다. 오늘날 컴퓨터는 2진수의 지수와 가수를..

24.11.07 CS, VV

CS이것이 컴퓨터 과학이다.개발자에게 필요한 역량은 근거를 설명하는 능력이다.특정 코드 혹은 프로그램이 어떻게 작동하며, 왜 특정 성능을 내는지에 대한 근거를 제시하고 설명하는 능력이야 말로 AI 도구에 종속되지 않는 진짜 역량이다. 코드와 프로그램의 근거를 설명하는 능력은 상당 부분 컴퓨터 과학에서 찾을 수 있다.CHAPTER 01 기술 면접과 실무를 위한 컴퓨터 과학프로그램 개발의 목적은 일단 작동하게 만드는 것을 넘어 제대로 작동하게 만드는 것이다.프로그래밍 언어의 기초 문법이나 프레임워크/라이브러리의 기초 사용법은 단순한 프로그램을 개발하기에는 충분한 지식이지만, 그를 확장/유지보수 하거나 실행의 전 과정을 이해하는 데에는 충분하지 않은 경우가 많기 때문이다. 내가 작성한 코드의 실행 과정을 나조..

24.10.30 VV, UE5

VV첫번째 게임은 일단 템플런 같은 Infinity Runner형태의 게임을 만들 생각이다.로그인이 성공하면 게임에 접속해야 하기에 레벨 전환부터 만들어주었다.void UNetworkManager::ProcessResponse(const TArray& ReceiveData){ if (ReceiveData.Num() MsgID) { case EMessageID::LOGIN_RESPONSE_MSG_ID: { if (Header->Attribute == 0) { UE_LOG(LogTemp, Log, TEXT("Login successful!")); //TODO 로그인 성공 UGameplayStatics::..

24.10.29 VV, UE5, DB

VV서버에서 로그인 과정을 거쳤으니 그 결과를 다시 클라이언트에 보내줘야 한다. 나는 결과에 따라서 다른 프로토콜을 쓰는게 아니라 같은 프로토콜로 대신에 attribute에 다른 값으로 성공했는지 실패했는지 알아볼 수 있도록 구성했다.bool OnDataHandle(IDataBuffer* pDataBuffer, int32_t nConnID){ if (pDataBuffer == nullptr) { CLog::GetInstancePtr()->LogError("Received null data buffer in OnDataHandle."); return false; } PacketHeader* pHeader = (PacketHeader*)pDataBuffer->G..

24.10.28 VV

VV서버와의 연결이 성공했으므로 서로 정보를 전달할 수 있어야 한다.로그인 UI가 있으므로 ID, PW TextBox에 입력한 Text를 로그인 버튼을 누르면 서버로 전송해야 한다.// LoginWidget.hUCLASS()class VERSUSVILLAGE_API ULoginWidget : public UUserWidget{ GENERATED_BODY() public: virtual void NativeConstruct() override; UFUNCTION() void OnLoginButtonClicked();protected: UPROPERTY(meta = (BindWidget)) class UEditableTextBox* IDTextBox; UPROPER..

24.10.23 VV

24.10.23 VVVV서버와의 연결간단한 로그인 UI를 만들었고, 이번에는 C++서버와의 연결을 준비했다. C++ 서버의 경우 최흥배님의 깃헙을 참조해 사용했다.NetworkManagerNetworkManagerMyGameInstance에서 다 해결해주는 것이 아니라, 서버와의 연결을 담당해줄 클래스를 만들어 주었다.NetworkManager.h//NetworkManager.hUCLASS()class VERSUSVILLAGE_API UNetworkManager : public UObject{ GENERATED_BODY() public: bool ConnectToServer(FString ServerAddress, int32 Port); void SendData(FString DataToSend);pri..

728x90