게임 엔진이란?

정재훈·2024년 12월 3일
0

unreal engine

목록 보기
1/45

Unreal Engine

1. 게임 엔진이란?

게임 제작을 위해 필요한 다양한 기능(그래픽 렌더링, 물리 엔진, UI, 시뮬레이션, AI, 오디오, 네트워킹 등)을 제공하는 게임 개발 소프트웨어

2. 주요 기능들

  1. 그래픽 렌더링 : 화면에 2D 및 3D로 게임 내 객체들의 그래픽 데이터를 출력하는 기능. 즉, 플레이어가 화면으로 보는 게임의 이미지를 생성

    • 배틀그라운드에서 맵에 있는 나무, 풀, 건물, 총, 총알, 시점에 따른 캐릭터 모습과 그림자 등 실시간으로 장면을 화면에 보여줌
  2. 물리 엔진 : 현실의 물리 법칙을 게임 내에서 자동으로 적용, 처리해주는 기능. 즉 게임이 현실감을 가질 수 있도록 함

    • 최근 배틀그라운드에서는 수류탄이 땅에서 터질 때 주위 땅이 파괴되는 기능을 개발 중
  3. 애니메이션 시스템 : 게임 내 객체들의 움직임과 변화를 자연스럽게 보이도록 하는 기능. + 자연스럽게 보이기 위해 실제 사람의 표정, 움직임, 물리법칙 등을 이용하여 애니메이션을 만들고 이를 게임 엔진에 가져와 구현

    • 배틀그라운드의 이모트를 만들 때 모션 캡처 방식을 사용해서 만듦
  4. 오디오 엔진 : 배경음악, 효과음, 대화, 환경 사운드 등 다양한 오디오 요소를 생성, 처리, 재생하는 기능. 즉, 플레이어의 위치에 따라 어떤 소리가 어떻게 들릴지를

    • 배틀그라운드에서 중요한 사운드를 거리에 따라 크기를 다르게 하고, 투척류의 이명 등을 관리
  5. 스크립팅 시스템 : 캐릭터의 특정 행동, 이벤트 또는 게임의 로직을 제어하고 관리하는 데 사용되는 기능. 즉, 게임의 큰 틀을 구현할 수 있도록 해줌

	- 이벤트 처리
		• 특정 조건(플레이어가 문을 열었을 때, 적이 발견되었을 때 등)에 따라 행동을 실행.
		• 예: 적이 발견되면 경고 소리를 재생하고, 공격 모드로 전환 
	
    - 캐릭터 제어
		• 캐릭터의 움직임, 행동, 애니메이션을 제어.
		• 예: 플레이어가 키보드 입력을 하면 캐릭터가 점프.
	
    - AI 구현
		• NPC의 인공지능 행동을 정의.
		• 예: NPC가 일정 경로를 따라 순찰하거나, 플레이어를 추격.
	
    - UI 동작
		• 버튼 클릭, 메뉴 열기/닫기, 게임 HUD 업데이트 등의 동작을 스크립팅.
		• 예: 체력이 줄어들면 화면에 경고 표시를 띄움.
	
    - 게임플레이 로직
		• 게임의 규칙, 점수 계산, 승리/패배 조건 등을 정의.
		• 예: 특정 퀘스트가 완료되면 보상을 지급.
	
    - 오브젝트 제어 및 스폰
		• 오브젝트 생성, 삭제, 이동, 충돌 처리 등.
		• 예: 특정 위치에 몬스터를 소환하거나, 물체를 플레이어가 밀 수 있도록 구현.
- 각 주요 기능들은 어느정도 예상으로 ‘이건 이렇겠다’라는 것이 느껴지는데 스크립팅 시스템은 좀 와닿지 않았었다. 일단 언리얼을 공부하면 c++을 공부하는데 왜 c++인가 그리고 c++을 어떻게 언리얼과 쓰는가에 의문이 있었고 머리에서 정리를 못했는데 스크립팅 시스템이란 것을 통해 c++ 또는 블루프린트를 가지고 게임의 큰 틀을 잡고 거기에 그래픽, 사운드, 애니메이션 등을 추가해서 게임을 풍성하게 만든다는 것을 알게 되었다.
  1. 비주얼 스크립트(블루프린트) : 코드를 작성할 필요 없이 노드를 끌어다 놓는것으로 스크립팅 로직을 만들 수 있도록 지원

  2. AI 시스템 : 게임 내 NPC가 사람처럼 반응하고 상호작용하게 해주는 기능. + 언리얼에서 제공하는 도구들로 AI 시스템을 구축할 수도 있지만 복잡한 AI 로직을 만들 때는 스크립트를 이용할 수도 있음

    • 배틀그라운드에도 ai가 있는데 주변에 적이 있거나 소리가 들리면 엄폐를 하고 발소리를 안내기도 하고 총을 쏘거나 투척류를 던지기도 함
  3. 네트워킹 : 여러 사용자가 상호작용할 수 있도록 클라이언트-서버 모델을 기반으로 네트워크 상의 데이터 전송 및 동기화를 처리


3. 장/단점

  • 장 : 높은 3D그래픽 기능 지원, 대규모 프로젝트에 적합, 엔진 오픈소스
  • 단 : 2D기능 지원이 3D에 비해 미흡
- 언리얼의 장단점을 이야기하기 위해서는 유니티와의 비교를 통해 할 수 있을 것으로 생각하는데 유니티는 다양한 플랫폼에서 좋은 성능을 발휘하고 언리얼은 고사양 pc 게임에 유리하다고 하는 것과 스크립팅 언어인 C#과 C++의 차이 정도만이 현재 내가 느끼는 차이점이고 유니티가 더 많은 플랫폼을 지원한다고 하는데 언리얼도 버전을 거듭할수록 여러 플랫폼을 지원한다고 하니 직접 사용해보지 않으면 잘 모를 것 같다
profile
드가자

0개의 댓글