본문 바로가기

프로그래밍/TIL

(6)
자체 게임 엔진 개발하기 (HopStep Engine) - HeaderTool 만들기와 Property Get/Set 메서드 작성 요즘 너무 게임만 하는 것 같아서, POE를 좀 정리하고 자체엔진 만드는 취미를 다시 조금씩 하고 있다. 지난 번에 끝났던 상태는 리플렉션 구현인데, 그 상태에서 계속 이어서 진행해보았다. HeaderTool Unreal Header Tool의 역할을 해줄 프로젝트를 하나 만들었다. 언리얼은 BulidTool이 C#이고, HeaderTool은 C++로 구현되어있는데, 내 프로젝트에서는 그냥 편의를 위해 C#으로 구현했다. 당장에는 필요한 기능이 많지 않으므로, 유연해보이지 않더라도 최대한 가볍게 구현해보는 것이 목적이다. 내 HeaderTool의 목적은 결국 엔진, 컨텐츠단의 오브젝트들의 정보를 읽고, 이를 지원하는 리플렉션 정보를 생성하는 것이다. 위와 같은 헤더를 읽고, Finite State Mac..
자체 게임 엔진 개발하기 (HopStep Engine) - Reflection과 Property / 해야할 일 정리 (2) Metadata 언리얼에는 메타데이터라는 이름을 사용하는 여러가지 메서드들이 있다. 이는 언리얼 리플렉션 구조에서는 Field라는 클래스가 담당하고 있다. 그래서 이 녀석은 뭐지...? 하고 좀 살펴보니 UPROPERTY 한정자들을 저장해주는 것 같다. 정말 에디터에서 사용할 메타데이터라는 느낌? 당분간은 이 메타데이터에 신경쓰지 말자. 해야할 일 정리하기 게임을 하다왔더니 내가 뭘 하려고 했었는지 잘 생각이 나질 않아서 뭘 할지 좀 정리하기로 했다. 나는 뭘 하고 싶은걸까? 우선 선언되어있는 GameObject의 프로퍼티들을 알 수 있게 했으면 좋겠다. 더 구체적으로 말하면 GameObject의 Ctrl + C, V를 구현하면 어떨까? 언리얼에서는 액터를 선택한 채로 Ctrl + C를 누르면 이 액터의..
자체 게임 엔진 개발하기 (HopStep Engine) - Reflection과 Property 자체 엔진 만들기를 시작하면서 가장 먼저 목표로 삼았던 것은 리플렉션 시스템의 구현이다. 리플렉션이라는 개념은 C#을 사용하면서 어느 정도는 알고 있다고 생각했지만, 직접 구현을 하는 것은 그보다 더 깊은 이해도를 줄 것이라고 생각했다. 또 이 리플렉션 시스템이야 말로 UE4의 코어 시스템 중 하나라고 생각하기도 했고. 리플렉션(Reflection)이라는 것은 거울에 비친 자기 자신을 보듯이, 시스템의 어떤 타입이 자기 자신이 어떻게 생겼는지를 알 수 있는 시스템이라고 설명할 수 있을 것 같다. 어떤 타입이 어떤 프로퍼티와 어떤 메서드를 가지고 있는지를 확인하고, 한 발 더 나아가서 동적으로 이를 런타임에 수정할 수 있는 시스템 구축이 나의 목표이다. C#에서는 어떤 타입의 리플렉션 정보는 해당 타입이 ..
자체 게임 엔진 개발하기 (HopStep Engine) 게임 클라이언트 프로그래머로서, 자체 게임 엔진을 개발하는 것은 언제나 상상하던 일이 아닐까 싶다. 특히 언리얼 엔진을 사용하다보면 코드의 내부까지 모두 확인이 가능하다보니 "나도 해볼 수 있지 않을까?"하는 생각이 들게 된다. 물론 만들다보면 그리 긴 시간이 지나지 않아 그 생각이 틀렸다는 것은 알게 된다. 마침 POE 시즌도 끝냈고, 회사 내부의 세미나도 준비해두어야 할 것 같아서 쉬는 시간에 짬짬이 자체 게임 엔진을 개발중이다. 이름은 작은 규모의 개발을 경쾌하게 하자! 라는 의미로 HopStep 엔진이라고 지었다. https://github.com/highfence/HopStep GitHub - highfence/HopStep Contribute to highfence/HopStep develop..
11.30 friends function Friend Functions in C++ | Use of Friend Function in C++ with Examples (mygreatlearning.com) Friend Functions in C++ | Use of Friend Function in C++ with Examples Friend Functions in C++: A friend function in C++ is defined as a function that can access private, protected, and public members of a class. www.mygreatlearning.com 언리얼의 FArchive 쪽을 보다가 friend 키워드가 function에 붙는 것을 보았다. 훑어보니 friend clas..
JetBrains의 새로운 IDE : Fleet JetBrains Fleet: 차세대 JetBrains IDE JetBrains Fleet: 차세대 JetBrains IDE www.jetbrains.com JetBrains에서 가벼운 에디터를 목표로 새로운 IDE를 출시했다. VS Code와 같은 포지션이라고 생각할 수 있을 것 같다. 리모트 실행이나 실시간 피어 프로그래밍 지원 같은 피쳐에 힘을 싣고 있는 것 같다. 현재는 오픈되어있지 않고, 테스트 참여 지원만 가능한 상황이다.