일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- enumasByue
- 람다
- 데이터애셋
- UML관련
- map
- dataasset
- 크리티컬섹션
- 델리게이트
- moreeffectiveC++
- C++최적화
- 람다사용정렬
- 프로그래머스
- 애셋로드
- 자료구조
- 강참조
- BFS
- 알고리즘
- 약참조
- UE_LOG
- 언리얼가비지컬렉터
- stl
- 선택정렬
- 정렬알고리즘
- UELOG
- UE4 커스텀로그
- 언리얼엔진구조체
- 정렬
- 스마트포인터
- C++
- unorder_map
- Today
- Total
목록전체 글 (423)
기억을 위한 기록들
enum 선언 예 UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EItemGradeInfo { // 일반 아이템 Common , // 레어 아이템 Rare , // 레전드 라이템 Legend, }; ENUM_CLASS_FLAGS(EItemGradeInfo); 사용 할 곳 예 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Bitmask, BitmaskEnum = "EItemGradeInfo")) uint8ItemGradeInfo = 0; void DoSomething(const EItemGradeInfo info) { if(EItemGradeInfo::Comm..
어떤 소프트웨어 프로그램의 구조를 생각할 때는 고려해야 할 것이 많이 있다. 그래서 나도 여전히 초심자로써 이런저런 호기심의 연결고리에서 닿게 된 것들 중에 하나인 유연한 소프트웨어를 만드는 설계 원칙이라는 책을 접하게 되었다. 해당 책은 확실히 초급 중급 상급으로 난이도를 나눈다면... 절대로 초급은 아닌 책이긴 하다. 하지만 그만큼의 가치는 높지 않을까 하다. 첫 번째 챕터부터 살펴보면 1. 자연과 설계의 유연성 2. 영역 특화 언어 ( DSL ) 3. 산술 주제의 변형들 4. 패턴 부합 5. 평가 6. 계층화 7. 전파 이라는 각 장을 담고 있다. 그중에서 1장만 살펴보자면, 1장에서는 전체적인 책의 전반적인 내용에 대해 설명해주고 있으며 기억에 남는 내용으로 "이 책의 기법 중 다수는 새로운 것이..
엔진 구조에서의 모듈 모듈 타입 1. 개발자 타입 : 개발과정에서 필요한 모듈들의 종합 ( 디버깅 툴 등 ) 2. 에디터 타입 : 개발과정에서 에디터에서의 필요한 기능들의 조합 ( 에디터에서 새로운 버튼을 추가해 유용한 기능들을 위해) 3. 런타임 타입 : 프로젝트 실행 과정에서 필요한 기능들의 조합 (로딩관련 기능, 애셋 바이너리 콘텐츠 파일 등) (에디터와 관련될수도 있기도 하다.) 4. Third Party 타입 : 언리얼엔진에서 개발하지 않은 외부의 툴 프로젝트에 둘 수 있는 모듈의 한계는 없다고 한다. 언리얼엔진 내부에도 수백개의 모듈이 있고, 그중에서 필요한 모듈을 제작하고 있는 프로젝트에서 불러와 사용한다. 언리얼 빌드 툴(UBT)이 컴파일 할때마다 Build.cs에 있는 파일들을 컴파일 하..
UE4 에서 플러그인이란 에디터 안에서 프로젝트 단위로 개발자가 쉽게 켜고 끌 수 있는 코드 및 데이터 모음입니다. 플러그인은 런타임 게임플레이 기능을 추가하고, 내장된 엔진 기능을 수정( 또는 새 기능을 추가)하거나, 새 파일 유형을 만들고, 에디터 기존 기능에 새 메뉴, 툴바 명령, 하위 모드를 확장할 수도 있습니다. 여러 기존 UE4 서브시스템은 플러그인을 사용해서 확장 가능하도록 설계되었습니다. - 출처 : 언리얼엔진 공식 문서 중 일부 ( https://docs.unrealengine.com/5.0/ko/plugins-in-unreal-engine/) 플러그인은 게임플레이 기능을 추가하고, 내장된 엔진 기능을 수정, 추가하거나, 새 파일 포맷을 만들수도있고, 에디터 기존 기능에 새로운 메뉴 같은..
챗봇은 최근 스마트폰과 비대면 시대가 맞물리게 되면서 점점 더 부각되고 있는 기술 중 하나 같다. " 전 세계적으로도 챗봇시장은 계속해서 확대되고 있으며, 2024년에는 94억달러 규모로 시장이 형성 될것..." - 중 일부.. 챗봇은 책에서도 채터(Chatter)와 로봇(Robot)의 합성어로 대화하는 로봇이라고 정의하고 있다. 해당 내용은 책의 "챕터1 - 챗봇 입문하기" 중에 나오고 있는 내용으로 챗봇에 대한 전반적인 개념 설명을 해주고 있다. 그리고 챗봇은 주로 파이썬으로 대부분 구축이 되고 있는데, "챕터2 - 파이썬 시작하기"에서는 대한 간단한 설명과 파이썬에 대한 기본적인 개념을 설명 해주고 있다. 파이썬에 대한 깊은 이해을 하려면 이 챕터만으로 부족하고 별도의 책으로 공부를 더해보고 실습을..
...캐릭터가 방에 진입하려할 때 어느 방에 들어가야하는지에 대한 정보의 표현이 없다면 BT를 구성할 때 레벨 상에 존재하는 모든 방을 별도의 분기로 처리해야 할 것입니다. 이건 정말 말도 안되는 비효율적인 낭비겠죠? 아시다시피 BT의 Task들은 프로그래밍 언어로 치자면 서브루틴 또는 함수로 간주할 수 있습니다. 프로그래밍 언어에서 함수에 파라미터를 집어넣어 처리하듯 BT도 이런 식으로 접근한다면 분명 효율적일 겁니다. 함수의 효율성은 단지 파라미터를 사용할 수 있다는 것 뿐 아니라, 한번 만들어 놓으면 재사용이 가능하다는 큰 장점을 지닙니다. 우리가 BT를 만들때도 마찬가지로 이러한 재사용성의 고려가 분명히 필요합니다. 잘못된 Data의 사용은 직관적이고 단순하게 표현할 수 있는 BT의 큰 장점을..
서비스는 연결된 컴포짓이 활성화돼있는 한 계속해서 구동된다. 속성에서 설정한 간격에 따라 Tick이 일어난다. 서비스는 항상 호출되기 때문에 AI 상태를 변경하는데에 주로 사용 된다고 한다. - Action RPG 샘플 참고 주로 서비스에서는 특정 이벤트를 실행시켜 주기적으로 블랙보드 변수를 업데이트한다. 후에 하위 노드들에 그 변수에 따라 다양한 액션으로 실행시킨다.
데코레이터는 객체지향설계에서 자주 언급되는 디자인 패턴 중 하나인 Decorator Design pattern과 같은 의미의 단어입니다. 즉 기존에 존재하는 class를 수정하지 않고 기능을 변경하기 위해 기존 class를 감싸서(wrap한다고 하죠) 이 목적을 달성하는 패턴입니다. 사용자는 기존 class의 변경없이 부가적인 기능을 덧붙일 수 있는 장점을 지닙니다(이때 인터페이스는 동일해야 합니다.). BT에서 데코레이터가 하는 역할도 똑같습니다. 데코레이터는 오직 하나의 자식 노드(즉 Task)를 가지는데(즉 바로 아래의 자식노드를 감싸는 역할을 한다는 의미겠지요..), 이 노드의 행위에 데코레이터가 영향을 줍니다. 데코레이터는 정말 다양하게 쓰일 수 있는데 본 글에서는 대표적으로 쓸만한 간단한 데코..
보통 글을 잘쓰는것보다 잘쓰여져 있는글을 가져오는게 낫다고 생각 할 때가 있다. 인터넷은 너무나도 많은 정보들을 담고 있 해당 비헤이비어 트리에 관련되서, 2014년도에 글을 작성해주신 분이 계신데 내가 엉성하게 쓰는것보다 해당 글을 가져오는게 낫다고 생각했다. 컴포짓(Composites)이란? - 컴포짓은 상태들의 시작점이다. 상태가 복귀와 실행 플로우에서 어떻게 행동해야하는지 정의한다. 여기에는 Selector/Sequence/Simple Parallel 이렇게 세가지 종류가 있다. 1. Background BT는 AI 캐릭터를 만들기 위한 매우 유명한 도구 중 하나입니다. Halo2[Bungie Software, 2004]가 BT를 사용한 최초의 게임으로 알려져 있고, 그 후 많은 게임에서 BT를 ..
* 언리얼 엔진 4 공식문서 참고하여 정리했습니다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/Assets/ReferencingAssets/ 애셋 참조 docs.unrealengine.com 언리얼 엔진 4에서는 애셋이 참조되는 방법과 메모리에 로드되는 방법을 제어하는 수많은 메커니즘을 제어한다. 레퍼런스는 2가지 방식으로 Strong Reference(강 참조)와 Weak Reference(약 참조)가 있다. - 강 참조는 A오브젝트가 B오브젝트를 참조하여 A로드시 B가 로드되게 하는 방식이다. - 약 참조는 경로(Path)같은 문자열 형태의 간점 메커니즘을 통해 A오브젝트가 B오브젝트를 참조하게 만들..
개인적으로 언리얼 엔진과 C++를 위주로 공부해오고 있었는데, 좋은 기회가 생겨서 다시 입문한다는 생각으로 아래의 책을 접하게 되었다. 해당 책은 "개정판"으로 이전 본판은 2019년 2월 20일에 출판했었고, 외부 최근에 2022년 2월에 개정판으로 다시 출판하였다. 개정판 이전의 책을 읽어보진 않아서 큰 차이를 구분 나열할순 없지만, 아마도 게임 엔진의 특성상 1년1년이 지날때마다 엔진이 업데이트 되면서 달라지는 내용들에 대한 보완이 되어준것같다. 초판본(?) 이후 3년정도가 지났으니 크지 않더라도 꽤나 이전 책과 차이가 있을 수 있다. 책의 장점 중 하나로(?) 1000페이지 가량 되어있는데, 두권으로 나눠서 출간한다는 것이다. 1000페이지 가량의 서적을 가방에 넣고 다닐생각하면 아찔하다(?) 내..
Csv - 훨씬 더 가볍고, 용량이 작다. - 단순한 데이터에 대해 더 나은 가독성 제공 - 복잡도는 낮지만, 많은 정보를 포함하는 매우 큰 데이터는 잘작동 - 추가/삭제/수정이 엑셀로 할 수 있어서 쉬움 Json - 반대로 더 나은 다용성과 확장성 제공 - 중첩된 정보, 계층적 데이터를 사용하는 복잡한 데이터에서는 읽기 쉬움 ( 퀘스트 시스템/다이얼로그 시스템 같은) - 쉼표 하나 잘못해도 데이터가 제대로 읽히지 않을 수 있음.