[UE5] 언리얼 첫수업

라멘커비·2024년 5월 28일
0

Unreal Engine

목록 보기
2/7

프로젝트 생성할 때 옵션 뭘 선택하든 나중에 다 다시 설정할 수 있어서 의미없음.

언리얼에서 서버역할 제공. 오브젝트들의 동기화 같은거다지원해줌. 코옵게임정도는 만들수있음. 이거로 MMORPG같은건 안됨.

언리얼에서도 서버면 어캐처리하고 클라면 어캐처리하는지 다르게하는건 필요함.

게임을 만들면서 지속적으로 내가 만든 기능이 네트워크에서도 연계되는지를 확인해야 한다.

sln파일 지우고

uproject 우클릭, 추가옵션에 보면 Generate Visual Studio project files 가 있음. 언리얼에서는 sln파일이 중요하지 않다. 이게 닷넷을 통해 만들어짐. 닷넷은 C#.

이런거 가능

Open으로 열면 DebugGame Editor로,

Launch Game으로 열면 DebugGame Client로 여는거랑 같음

언리얼 프로젝트 github에 올리기

언리얼은 sln파일 올릴필요없음. uproject파일 있으면 되기 때문.

우리는 언리얼 이그노어 설정으로 올리면 됨. 안올려야 하는 파일이 많음.

언리얼엔진 프로그래밍 기초 ?

블루프린트가 좋냐 C++로 하는 게 좋냐 ⇒ 이렇게 해도 되고 저렇게 해도 되고,,, 둘다 잘하고 제대로 이해하고 있으면 됨 스타일차이. 선생님의 스타일이 있긴 함. 블루프린트는 기본적으로 느리다. 대부분의 회사는 블루프린트로 만들고 최적화를 위해 블루프린트로 한 작업을 C++로 변경하는 경우가 많다. 그냥 시키는대로하면됨.

기본적으로 선생님 실행 방법은 비쥬얼스튜디오 프로젝트를 열고 빌드 설정을 DebugGame Editor로 변경,

언리얼은 Main을 철저하게 숨기기때문에

(UE5는 우리 여태 한걸로치면 엔진, Games필터아래에 있는애가 Contents인거임)

  • 오전 실습 : 빈프로젝트로 만들고 vs열고 F5눌러서 실행하면 에디터가 나오는지 실습해보기, 깃허브에 올리기

엔진에서 주시해야할 구조

  • 오브젝트 구조 (게임내에 존재하는 녀석들을 어떻게 표현하는가?)
    • 이니셜라이즈 구조 (사용자가 어떻게 시작에 관여할 수 있는가?) EngineCore
    • 업데이트구조(프레임이 어떻게 돌아가는가?
      • 물리구조
    • 충돌(상호작용)구조
    • 랜더링구조 (랜더링이 어떻게 되는가?)
    • 릴리즈구조 (삭제구조)
  • 데이터구조 (언리얼에서만 사용되는 파일입출력 방식) 내가 한 일을 파일로 다 저장한다.

레벨 만드는 방법

컨텐츠 브라우저에서 우클릭 > 레벨 로 바로 만들 수 있음.

파일 > 새 레벨로도 가능. 언리얼에서 제공하는 기본 예제 레벨들 만들 수 있음.

선생님은 기본 조명이랑 발판 제공하는 Basic 레벨로 만듦. 그상태로 컨트롤+S누르면 이 레벨 저장해서 정식으로 파일로 만들겠다는 것. 나중에 다시 불러올 수 있게.

월드세팅 에서 게임 모드 세부사항 열 수 있음.

게임 모드를 변경하면 내가 만든 게임모드를 이 레벨의 게임모드로 지정할 수 있다.

언리얼에서 말하는 레벨의 개념은

  1. 레벨은 주인공이 있어야 하고(주인공을 필수 지정해줘야함) - 폰 클래스
  2. UI 담당자가 있어야 한다. - HUD 클래스
  3. 그리고 입력담당자가 있어야 한다. - 플레이어 컨트롤러 클래스
  4. 그리고 클라이언트의 정보를 저장할 담당자가 있어야 한다. - 게임 스테이트 클래스

언리얼이 지정한 담당자를 싹다 무시해도 된다. 하지만 이런 복잡한 구조를 만든 이유는 네트워크때문임. 서버 동기화때문에 이런 구조를 만들어놨다. 서버를 아예 배제하겠다면 언리얼이 만들어둔거 다 무시해도됨. 언리얼 리플리케이트 기능.

  • 게임 모드 게임 전체의 룰을 정한다. 네트워크로 플레이시 클라이언트는 게임모드를 만들지 않는다. 게임의 룰을 정하는건 서버만 해야함. 게임모드에서는 어떤 코드를 치는게 좋을까? ⇒ 이 스테이지에서는 5초마다 몬스터를 만들어야 한다. 100마리 죽이면 넘어간다.
  • 블루프린트, 네이티브 C++ 코드의 차이 게임 모드 만들면서 차이 보기 블루프린트에 대해 정의하자면 C++ 네이티브 코드를 상속받기로 정해진 가상 클래스의 데이터이다. 블루프린트를 만들어보면 에디터가 실행되는 도중에 막 바꿈. 애초에 클래스도 뭐도 아니기 때문임. 그냥 데이터의 집합.
  • 블루프린트 블루프린트 만들 때 상속시키고 싶은 클래스의 이름을 치면 그 이름을 가진 클래스만 볼 수 있다. 언리얼도 GameMode를 제공해주고 그보다 상위 클래스인 GameModeBase도 있다.

GameMode ⇒ 네트워크 플레이지원기능 탑재
GameModeBase ⇒ 그 기능이 빠져있는 기본 클래스

  • CPP로 게임모드 만들기
    툴 > 새 C++ 클래스 만들기 

  • 언리얼 실행방식 및 디버깅 방식 언리얼 켜는 법 중 VS열고 F5눌러서 켜는 방법은 우리가 원래 알고있던 C++ 프로그램 실행방식과 동일함. 중간에 뭔가 추가하면 껐다 키기 중단점 볼 수 있는 방법 (근데 샘이 보여주기 실패하심)
    1. uproject파일 더블클릭해서 실행
    2. VS 열기, 컨트롤+알트+P 로 언리얼 에디터랑 연결
    3. 라이브코딩

새로 만든 파일 안뜨면 라이브코딩 버튼 눌러서 컴파일 다시 하면 됨.

블루프린트로 gamemode를 만들어서 지정해주면 캐릭터나 등등을 바꿀 수 있고

내가 만든 C++ 클래스로는 다른 요소들을 변경할 수 없다. 이유? C++은 당연히 중간에 못바꿈. 블루프린트는 클래스가아니고 데이터 덩어리라서 가능한 거임. 코드를 수정하는 게 아님. 코드를 바꿨다고 착각하게 만드는 느낌? 완전히 새로운 함수를 만드는건안됨.

private으로 만든 변수도 블루프린트에서 넣어주는 값으로 값을 바꿔줄 수 있음. 그건 어떻게 했는지는 우리가 알 건 아님.

블루프린트도 f9걸어서 중단점 확인할 수 있음. Super를 꼭 해야함. Super안에서 블루프린트 실행하고있었음.

profile
일단 시작해보자

0개의 댓글