728x90

Study 383

24.11.07 CS, VV

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

VV 6. 장애물, UI 구현, 점수 구현

VV움직임을 구현했으니 장애물을 만들 차례이다.두 가지 장애물을 만들어주고 collision을 주었다.장애물에 닿는 순간 게임오버되야 하기 때문에 Character에 Death 함수를 추가 시켜주었다.장애물들에게 Death함수를 추가시켜주어 overlap되었을 때 게임이 종료되도록 구현했다.BP_Floor에 랜덤으로 Spawn되는 함수를 구현해주었다.RandomSpawnPoint에 Obstacle이 생성되도록 구현을 해주었다.장애물에 닿으면 게임이 종료하게 되는데 그것을 위한 UI를 구현해줬다.게임오버 UI는 Restart 버튼과 Exit 버튼으로 구성하고, 화면은 블러처리가 되도록 했다.이제 게임을 플레이하면서 점수를 체크하도록 해야한다.게임 플레이시 점수를 띄워줄 UI를 만들어주었다. UI에는 Coi..

Study/Project 2024.11.04

24.11.04 VV. 장애물, UI 구현, 점수 구현

VV움직임을 구현했으니 장애물을 만들 차례이다.두 가지 장애물을 만들어주고 collision을 주었다.장애물에 닿는 순간 게임오버되야 하기 때문에 Character에 Death 함수를 추가 시켜주었다.장애물들에게 Death함수를 추가시켜주어 overlap되었을 때 게임이 종료되도록 구현했다.BP_Floor에 랜덤으로 Spawn되는 함수를 구현해주었다.RandomSpawnPoint에 Obstacle이 생성되도록 구현을 해주었다.장애물에 닿으면 게임이 종료하게 되는데 그것을 위한 UI를 구현해줬다.게임오버 UI는 Restart 버튼과 Exit 버튼으로 구성하고, 화면은 블러처리가 되도록 했다.이제 게임을 플레이하면서 점수를 체크하도록 해야한다.게임 플레이시 점수를 띄워줄 UI를 만들어주었다. UI에는 Coi..

VV 5. 움직임 구현 (Infinity Run), 점프, 슬라이드

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::..

Study/Project 2024.10.30

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::..

VV 4. 클라이언트 수신

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..

Study/Project 2024.10.29

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..

VV 3. 로그인 기능

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..

Study/Project 2024.10.29

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..

VV 트러블 슈팅 1. MSB3073 에러, NewObject with empty name can't be used to create default subobjects 에러

MSB3073 에러MSB3073에러가 발생해서 빌드가 안되는 문제를 겪었다.VS를 다시 켜보거나 Binaries를 삭제하고 리빌드 하는 과정을 거쳤지만 문제가 해결되지 않았다.해결 방법Build.cs 파일 수정FSocket 및 네트워킹 관련 기능을 사용하기 위해서는 프로젝트의 .Build.cs 파일에 필요한 모듈을 추가해야 했다.프로젝트 폴더에서 .Build.cs 파일을 열어서 PublicDependencyModuleNames에 필요한 모듈을 추가해주었다.나는 Sockets 와 Networking 모듈이 필요했기에 추가해주었다.PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "S..

Study/Project 2024.10.24
728x90