게임엔진

    [Unreal] 디버깅용 드로워 이용 방법 (Draw Debug)

    Debug Draw Unreal engine 개발 과정에서 화면상에 원하는 도형을 그려서, 디버깅을 수월하게 도와주는 함수들에 대한 예제이다. DrawDebugHelpers.h 헤더파일 내에 구현 되어있다. Draw Debug #include "DrawDebugHelpers.h" ... void Examples::DebugDrawExample(UWorld* World) { FVector StartOffset = FVector(0, 0, 200); FVector LocationOne = FVector(0, 0, 600) + StartOffset; FVector LocationTwo = FVector(0, -600, 600) + StartOffset; FVector LocationThree = FVector..

    [Unreal] UI(위젯)에서 메인 캐릭터 가져오기

    UUserWidget 클래스 내에 연관된 플레이어 캐릭터를 가져오는 함수가 존재한다. T같은 경우엔 미리 캐스팅해서 반환해준다는 점이 다르다. FLocalPlayerContext 구조체 변수에 의해 가져오게 된다. // 템플릿 함수 캐스팅해서 반환한다 template T* GetOwningPlayerPawn() const { return Cast(GetOwningPlayerPawn()); } // 플레이어 폰을 가져오는 함수 APawn* UUserWidget::GetOwningPlayerPawn() const { if (APlayerController* PC = GetOwningPlayer()) { return PC->GetPawn(); } return nullptr; } // 플레..

    [Cocos] 이미지 삽입하는 방법

    Resources 폴더 아래에 사용하고자 하는 리소스들을 추가해야한다. CreateScene.h #pragma once #include "cocos2d.h" class GraphicsScene : public cocos2d::Layer { // 레이어 생성 시 필수 CREATE_FUNC(GraphicsScene); public: // 씬 생성 static cocos2d::Scene* createScene(); // 이미지 초기화 virtual bool init(); }; CreateScene.cpp #include "GraphicsScene.h" USING_NS_CC; cocos2d::Scene* GraphicsScene::createScene() { auto scene = Scene::create();..

    [Cocos] 설치 방법

    Cocos2D-x를 다운로드. CMake를 다운로드. 파이썬을 다운로드 (2 버전) NDK 다운로드 SDK 다운로드 1. Cocos2d-x 폴더에서 setup.py 실행해서 NDK와 SDK 경로 지정 후 재부팅. 2. CMake와 Python 2버전을 설치한다. 항상 msi 파일 아래와 같이 나와야한다. 파이썬은 내려가다보면 X마크가 있을텐데 이를 클릭하고 첫번째 버튼 클릭해서 위에것들이랑 동일하게 적용. 아래와 같이 나와야한다. 3. 폴더 생성 후 cmd에서 아래와 같이 커멘드를 입력한다. // 아래는 생성할 폴더의 경로 cd /d E:\0_Projects\Cocos\2DRogueLike // 프로젝트 생성하는 커멘드 cocos new Test -p com.{ShovelingLife}.2DRogueLi..

    [Unity] 셰이더 Shader

    정의 Unity 자체 쉐이더 언어인 ShaderLab과 CG(C for Graphics)를 함께 사용 하는 방식의 쉐이더이다. 기본적인 라이트, 버텍스 쉐이더의 복잡한 부분은 자동으로 처리된다. 즉 Matrix연산이 필요 없다. 스크립트 방식의 쉐이더지만 비주얼 쉐이더 에디터와 비슷한 개념을 가지고 있어 쉽다. Surface Shader 만들기 Project창에서 Create->Shader->Standard Surface Shader를 선택하여 쉐이더 파일 1개를 생성한다. Unity에서 Shader파일을 만드는 메커니즘은 맨 좌측 사진처럼 최초 Shader파일을 만들때 설정한 이름이 중앙 사진처럼 Shader의 기본 이름으로 설정된다.(스크립트 수정으로 이름 바꾸기 가능) 그리고 우측에 실제 마테리얼에..

    Cocos2d-x에 대하여

    Cocos2d-x는 2010년 7월에 시작된 프로젝트로 멀티 플랫폼을 지원하는 게임 엔진이다. Zynga, Glu, GREE, DeNA, Konami, TinyCo, Gamevil, HandyGames, Renren Games, 4399, HappyElements, SDO, Kingsoft 등 모바일 업계에서 이미 많이 사용하고 있다. Cocos2d-x는 무료 라이선스로 제공되며 하나의 소스를 다양한 플랫폼에 맞추어 퍼블리싱할 수 있다는 장점이 있다. 즉 오브젝티브-C와 자바를 몰라도 아이폰과 안드로이드 플랫폼에 퍼블리싱할 수 있다. 처음에 Cocos2d는 파이썬을 이용하는 엔진으로 개발되었다. 이것을 Cocos2d-iPhone 엔진으로 개발하면서 오브젝티브-C 언어를 이용해 아이폰 게임을 개발할 수 있..

    [Unity] DOTS란 무엇인가? Unity ECS 시스템 요약

    Unity DOTS DOTS는 Data-Oriented Technology Stack의 약자. 기존의 Object-Oriented 디자인이었던 유니티의 전통적인 방식이 아닌 데이터에 초점을 맞춘 아키텍처. Unity DOTS 설명 링크 ECS - entity, component, system 으로 구성된 data-oriented 프로그래밍 디자인 C# Job System - 멀티 스레딩을 안전한 환경에서 사용하며, 멀티 코어를 활용할 수 있는 시스템 Burst compiler -새로운 LLVM 기반 백엔드 컴파일러 기술을 통해 C# 잡을 수행하고 고도로 최적화된 머신 코드를 생성 ECS Entity Component System의 약자. 기본 세 가지 요소는 Entity, Component(data)와 ..

    [Unreal] 포인터 널 체크는 조심히 하도록 하자

    UStaticMeshComponent* StaticMeshComp; // 아래 널 체크는 예기치않은 크래시를 초래할 수 가 있음. if(StaticMeshComp) 또는 if(StaticMeshComp != nullptr) // 아래 함수를 이용하도록 하자. 삭제 대기중인지, 개비지컬렉터가 수집을 안했는지까지 확인해준다. if(IsValid(StaticMeshComp))

    [Unreal] 리깅 및 리타겟터 (각기 다른 메시 애니메이션 연동 Mixamo)

    MIXAMO 사이트에서 제공해주는 애니메이션은 언리얼에서 제공해주는 메시와 스켈레톤이 맞지가 않는다 따라서 연동을 해줘야한다 (IK Rigging,IK Retargeter) 우선 변경된 블렌더 버전을 다운로드한다. [FREE] Custom Blender Version for Easy Mixamo Retargeting in UE5 (gumroad.com) 그 담 아래와 같이 생성될텐데 다운로드한 Mixamo fbx 파일을 In에다 넣어준다. n키 누르고 Mixamo 선택 후 Batch Convert 버튼을 눌러준다. 해당 옵션이 없을 시 아래 참고 Edit > Preferences > Add-ons에서 플러그인을 선택해준다. Anims Out에서 생성됐다면 정상적으로 실행된거다 Animation 부분에서 ..

    [Unreal] 애니메이션 이벤트 관련 / Notify 및 NotifyState

    두 가지의 Notify 즉 메시지가 존재하는데, 이건 애니메이션 내에서 설정이 가능하다 이 둘의 가장 큰 차이점은 AnimNotify는 일회성이고 AnimNotifyState는 시작 (Begin), 진행 중일 때 (Tick) 그리고 끝날 때 (End) 각각 다른 이벤트를 처리하도록 설정할 수 있다는 점이다. UAnimNotify / Super:: 해서 부모 클래스 오버라이딩 함수 호출 생략 UE_DEPRECATED(5.0, "Please use the other Notify function instead") virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation); virtual void Notify(USkele..