C++ 모딩

모드에서 C‍+‍+를 활용하면 게임 시스템과 기능에 훨씬 더 다양하게 접근할 수 있게 해 줍니다. 심지어 C‍+‍+ 코드는 동일한 블루프린트보다 더욱 성능 친화적으로 컴파일됩니다.

그러나, C‍+‍+ 시스템도 자체적인 단점은 있습니다. C‍+‍+로 모드를 작성한다고 해서 모든 블루프린트 애셋을 C‍+‍+ 코드로 바꾸는 것은 아닙니다. 최고의 모드는 C‍+‍+와 블루프린트 코드를 신중하게 조합하여 구현합니다.

블루프린트와 C++ 이해하기

Alex Forsythe는 언리얼 프로젝트에서 C‍+‍+와 청사진의 다양한 역할을 설명하는 훌륭한 글(및 해당 동영상)을 보유하고 있습니다. Alex의 기사 요약:

둘 중 하나만 선택해야 하는 것은 아닙니다. C++와 청사진의 차이점, 공통점, 그리고 이를 효과적으로 함께 사용하는 방법을 알아보십시오.

기사(및 영상 링크)는 여기에서 찾을 수 있습니다. 진행하기 전에 최소한 비디오를 시청해야 합니다. 기사를 읽는 것도 강력히 추천합니다.

요구사항

흠, 이 주제는 매우 심층적이므로, C‍+‍+ 및 언리얼 엔진을 위한 C‍+‍+를 먼저 배우고 오는 것을 추천합니다.

여기에 유용한 학습 자료 목록을 작성했지만, 직접 더 찾아보시는 것이 좋을 것 같습니다.

다음은 더 나아가기 전에 배워야 할 몇 가지 개념 목록입니다:

C‍+‍+ 세부:

  • 만일/아니면

  • 반복 구조

    • While

    • For

    • For Each

  • 람다 함수

  • 포인터

  • 참조

사용되지만 언리얼 엔진에서 구현 방식이 다른 C‍+‍+ 개념들:

  • std::string

  • std::vector

  • std::set (그리고 그것과 std::vector의 차이점)

  • 스마트 포인터

앞서 언급한 개념들의 언리얼 엔진 동의어(UE 구현):

  • std::string → FString

  • std::vector → TArray

  • std::set → TSet

  • std::(unordered_)set<T> → TSet<T>

  • std::(unordered_)map<K, V> → TMap<K, V>

  • 언리얼 스마트 포인터

UE 또는 일반 프로그래밍 개념으로만 추가되는 기타 항목:

  • UObject/UProperty/UFunction(반사 시스템)이란 무엇인지

  • AActor란 무엇인지

  • 가비지 컬렉션의 의미, 작동 방식, 사용 방법

이 개념들에 대한 이해가 충분하다면, 모딩을 시작할 수 있는 매우 탄탄한 기초를 갖추고 있는 것입니다. 그렇다면, 이 프로젝트나 모드 작업이 처음이 아닐 것이며, 어떤 내용을 건너뛰고 필요할 때 배우는지를 판단할 수 있을 것입니다.

우리는 실습을 통한 학습의 가치를 과소평가할 수 없습니다. 특히 이러한 개념을 처음 접하는 경우, 모드 작업을 즉시 시작하기보다는 테스트 및 연습을 위한 별도의 언리얼 C‍+‍+ 프로젝트를 만드는 시간을 가지는 것을 권장합니다. 위에서 언급한 개념들을 사용하기 전에 시도해 보십시오.

다음 자원은 C‍+‍+ 모드를 만드는 데 도움이 될 수 있습니다:

  • CSS는 새티스팩토리 C‍+‍+ 헤더를 제공해 주었습니다. 시작 프로젝트에 이미 포함되어 있지만, 원래 설치의 CommunityResources 폴더에서 가져왔습니다.

  • 게임의 .pdb 파일은 설치의 Binaries 폴더에서 찾을 수 있습니다.

Dll, pdb 그리고 더

C‍+‍+ 코드를 최종 바이너리(게임에서 실제로 사용되는 것)로 컴파일하면 동적 링크 라이브러리(.dll) 파일이 생성됩니다. 이 파일에는 프로그램 데이터베이스(.pdb) 파일이 함께 제공됩니다. 이 파일은 원본 소스 코드에 대한 추가 정보를 보유하고 있으며, 런타임에서 코드를 더 쉽게 디버깅할 수 있게 해줍니다. 알파킷 배포는 이러한 파일들에 대한 컴파일과 패키징을 다른 플랫폼에 대해 자동으로 처리해 줍니다. 업로드 과정 대한 자세한 내용은 SMR에 업로드 페이지에서 확인할 수 있습니다.

이 문서에서는 C‍+‍+의 일반적인 기술적 측면에 대해 자세히 설명하지 않을 것입니다. 더 많은 정보를 원하신다면, 인터넷에 좋은 자원이 많이 있습니다. C‍+‍+ 모드를 작성하려면 일반 C‍+‍+ 지식과 C‍+‍+가 언리얼 엔진 시스템에 어떻게 적용되는지에 대한 지식이 필요합니다.

언리얼 부분에 대한 빠른 가이드는 언리얼 문서에서 찾을 수 있습니다.

모딩 기능

새티스팩토리는 모듈식 빌드로 패키징되어 있으며 개발자들이 헤더와 pdb를 배포해 주기 때문에, 모드는 언리얼 플러그인으로 로드되므로, C‍+‍+ 모드가 수정할 수 없는 게임의 부분은 거의 없습니다. 보통은 어떻게 하는지를 알아내는 데 필요한 인내심의 문제입니다.

언리얼 엔진이나 새티스팩토리의 함수 사용 중 충돌이나 정의되지 않은 동작이 발생하면, 해당 함수에 추가된 문서 주석을 읽어보아야 합니다. 때때로 주석은 작동하지 않는다고 알려주고, 주석에 작성된 해결 방법을 사용하라고 제안할 수 있으며, 함수를 사용하는 방법에 대한 귀중한 맥락을 포함할 수 있습니다.

그래도 작동하지 않고, 절대적으로 올바르게 사용하고 있다고 확신하는 경우, 추가 조언을 위해 디스코드에서 SML 개발자에게 문의하십시오.