일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- map
- stl
- 강참조
- UML관련
- enumasByue
- 약참조
- BFS
- UE_LOG
- 프로그래머스
- 정렬
- C++
- 선택정렬
- UELOG
- 람다
- 람다사용정렬
- 언리얼가비지컬렉터
- 정렬알고리즘
- 스마트포인터
- C++최적화
- 데이터애셋
- moreeffectiveC++
- UE4 커스텀로그
- dataasset
- 알고리즘
- 언리얼엔진구조체
- 애셋로드
- 크리티컬섹션
- 자료구조
- 델리게이트
- unorder_map
- Today
- Total
목록Note (423)
기억을 위한 기록들
1. 장점 - 가독성이 좋음. - 코드가 짧음. - 각 단계의 변수상태가 자동 저장됨. (함수의 스택프레임 덕분) - 코드 검증도 쉬움 2. 단점 - 재귀적 문제 분석 및 설계가 직관적X - 맹목적인 믿음이 필요 (수학적 귀납법 이해하면 믿음이 생김) - 스택 오버플로 발생가능(재귀 함수 호출이 너무 깊은 경우) - 함수 호출에 따른 과부하 * 읽기 좋은 코드 작성이 기본이다. 가독성이 좋고, 유지보수가 쉬운 코드가 더 중요하다. 다음과 같은 경우는 반복문으로 변경 - 스택 오버 플로가 날 가능성이 있는 경우 - 성능 문제가 일어날 가능성이 큰 경우 - 성능 문제가 확인 된 경우 * 모든 재귀 함수는 반복문으로 작성 가능하다.
이 책은 "소프트웨어 아키텍처 101"의 실무급 후속작이라고 한다. http://www.yes24.com/Product/Goods/104491433 소프트웨어 아키텍처 101 - YES24 막막했던 아키텍처가 쉬워지는 실무 지침서소프트웨어 아키텍트는 전 세계 연봉 10위 안에 드는 직업이지만, 지금까지 ‘개발자가 아키텍트’로 전향하는 데 실질적으로 도움이 될 만한 지침이 www.yes24.com 사실 난 해당 책을 먼저 선행으로 보지 못했지만 읽어보고 싶긴 했다. 그만큼 해당 책이 좀 더 난이도까진 아닌데, 순차적으로 읽어보면 좋을 듯싶다. 책에서 많이 쓰는 단어로 '트레이드오프 분석'이라는 단어를 쓰는데 해당 뜻은 트레이드오프(trade-off, tradeoff) 또는 상충 관계는 다른 측면에서 이득을..
https://google.github.io/styleguide/cppguide.html Google C++ Style Guide Google C++ Style Guide Background C++ is one of the main development languages used by many of Google's open-source projects. As every C++ programmer knows, the language has many powerful features, but this power brings with it complexity, which in turn ca google.github.io
// 헤더 파일에 다음을 추가합니다. #include "Engine/BlueprintGeneratedClass.h" // 액터 포인터를 받아들이는 함수를 만듭니다. bool IsActorBlueprint(AActor* Actor) { if (!Actor) return false; // UClass 개체를 가져옵니다. UClass* ActorClass = Actor->GetClass(); // UClass 개체가 BlueprintGeneratedClass인지 검사합니다. // BlueprintGeneratedClass는 블루프린트 클래스를 나타냅니다. if (ActorClass->IsChildOf(UBlueprintGeneratedClass::StaticClass())) { return true; // 블..
언리얼엔진 Game Ability System이란? 게임 내에서 캐릭터나 오브젝트의 능력을 정의하고 관리하는 시스템입니다. 이 시스템은 게임의 캐릭터나 아이템 등의 능력을 모델링하고 관리하며, 이들 능력을 조작하고 적용하는 방법을 제공합니다. Game Ability System은 일반적으로 세 가지 구성 요소로 구성됩니다. 첫째, 능력은 능력 구성 요소와 실행 구성 요소로 구성됩니다. 능력 구성 요소는 능력의 속성, 발동 조건, 지속 시간 등을 정의하고, 실행 구성 요소는 능력이 실행될 때 수행할 작업을 정의합니다. 둘째, 능력 시스템은 능력을 트리거하는 행위자와 대상을 식별하는 능력 시스템 트리거 구성 요소를 포함합니다. 마지막으로 능력 시스템은 능력이 적용될 때 발생하는 이벤트를 처리하는 능력 시스템..
난 게임을 좋아하고 지금까지 일생에 큰 부분을 차지하고 있고, 앞으로도 그럴것이고 그렬려고 노력중이다. 그런 와중에 어릴때 했던 여러가지 게임들도 있긴하지만 더 이전에 대한민국에서 만든 게임에는 다양한 게임들이 있다. 너무 유명해서 누구나 다 아는 그런 게임들을 알고 일부 해보기도 했지만, 내가 태어나고 유년기를 보낼때의 게임들에도 수많은 게임들이 있지만 하나하나 다 알지 못한다. 하지만, 이 책을 읽음으로써 자세한 수많은 게임 들을 알게 되었다. 1992년대 게임들부터 2004년까지 출시했었던 한국 게임들을 하나하나 알려주면서 특정년도들에는 특정 장르가 유행아닌 유행처럼 개발되기도 했던 부분들도 인상적이였고, 그 당시 게임들을 개발했던 게임개발자들에 대한 인터뷰 내용이 있어서 흥미롭게 읽었다. 그외에도..
A 라는 이름의 c++ 클래스를 사용하고 있을때, 이름을 B로 바꾸는건 코드에서는 크게 어렵지 않습니다…그런데 문제는 A 라는 클래스를 블루프린트에서 BP_A 라는 애셋이 상속받는 경우가 있는데, 코드에서 클래스 이름을 B로 바꿀 경우 BP_A가 깨져서 안열릴수도 있습니다. 그럴경우 Config/DefaultEngine.ini 파일에서 1[/Script/Engine.Engine] ActiveClassRedirects=(OldClassName="/Script/.",NewClassName="/Script/.") 위와 같은 양식으로 추가해주면되는데, 예를 들어 World 프로젝트에서 A클래스 이름을 B로 바꿀 경우, [/Script/Engine.Engine] ActiveClassRedirects=(OldCla..
"오직 한개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공합니다." (보통 '한개의 클래스 인스턴스'와 '전역접근' 중에서 보통은 '전역 접근'이 싱글턴 패턴을 선택하는 이유이다.) 싱글턴 패턴은 의도와는 달리 득보다는 실이 많다. 부적당한 곳에서 사용하면 쓸모가 없다. 싱글턴 패턴이란? 오직 한 개의 클래스 인스턴스만 갖도록 보장 클래스가 인스턴스를 하나만 가지도록 컴파일 단계에서 강제. 전역 접근점을 제공 로깅, 콘텐츠 로딩, 게임 저장 등 여러 내부 시스템에서 파일 시스템 래퍼 클래스를 사용할 것이다. ex)파일 시스템 클래스 인스턴스를 따로 생성 할 수 없다면, 파일 시스템에는 어떻게 접근해야할까? 여기에 대한 해결책도 제공한다. 하나의 인스턴스만 생성하는 것에 더해서,..
"객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다." GoF의 디자인 패턴 35쪽 간단한 횡스크롤 플랫포머게임을 만든다고 쳐보자. 사용자가 B 버튼을 누르면 점프를 해야 한다. 캐릭터 Heroine이라는 클래스가 있다고 가정한다. 하지만 위 코드엔 버그가 있다. 바로 '공중점프' 즉, 무한 점프가 가능하다. 이 버그는 점프 상태를 확인하는 불리언 변수를 추가해 간단히 고칠 수 있다. 다음으로, 주인공이 땅에 있을 때 아래 버튼을 누르면 엎드리고, 떼면 다시 일어서는 기능을 추가했다. 하지만 이번에도 이번에도 버그가 있다. 1. 엎드리기 위해 아래 버튼을 누른 뒤, 2. B 버튼을 눌러 엎드린 상태에서 점프하고 3...
"원형(Prototypical)이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다" 예를들어서.. 게임에 나오는 몬스터마다(Ghost, Demon, Sorcerer 같은...) 클래스를 만들어본다고 하자. 이제 몬스터롤 스폰하기 위해 Spawner 클래스를 만든다고 치면, 한 가지 스포너는 한 가지 몬스터 인스턴스만 만든다. 스포너 클래스 상속 구조가 몬스터 클래스 상속구조를 따라가게 된다. 영 별로다. 클래스도 많지, 행사코드도 많지, 반복 코드도 많지, 중복도 많지,,, 많지 많지... 이런 걸 프로토타입 패턴으로 해결할 수 있다. 핵심은 어떤 객체가 자기와 비슷한 객체를 스폰(Spawn)할 수 있다는 점이다.. 유령 객체 하나로 다른 유..
초안 : 2020-05-05수정 : 2023-02-02 의도 "한 개체가 여러 분야를 서로 커플링 없이 다룰 수 있게 한다." 3가지의 방식 1. 컨테이너 객체의 상태를 변경하는 방식 (ex 캐릭터(위치값)->(전달)->입력 컴포넌트 and 피직스 컴포넌트) - 컴포넌트들은 서로 디커플링 상태를 유지한다. 예를 들어 InputComponent에서 캐릭터의 속도를 변경하고, PhysicsComponent에서 그 값을 사용하면 이들 두 컴포넌트는 서로 몰라도 된다. 그저 캐릭터의 속도가 알 수 없는 무엇인가에 의해 변경되었다고 짐작만 할 수 있다. - 컴포넌트들이 공유하는 정보를 컨테이너 객체에 전부 넣어야한다. 예를 들어, 그래픽 관련 상태를 공유해야 하는데, 이런 상태를 다른 모든 컴포넌트가 접근 할 수..