베이스캠프 1일차 ?!
베이스캠프 1일차 ?!
주저리주저리..
tistory.. velog.. 개인도메인페이지... 깃허브페이지.. 등 예전에 여기저기 왔다갔다하면서 글을 썼었는데 이제는 깃허브홈페이지로 정착을 해야겠다.
개발을 놓은 세월동안 깃허브페이지를 관리하는 파일이나 컴포넌트들 구조방식이 많이 바뀐탓일지 이전에 했던 것들이 더 이상 동작되지않아 많은 파일들을 가감히 버렸다. (삭제한건아니다!)
이틀 뒤 캠프가 본격적으로 시작하기 전, 베이스캠프라는 곳을 왔는데.. 시간이 얼마 없지만 조금이나마 기초의 기초라도 익혀서 본 캠프 시작을 해야겠다.
게임은 어떻게 재미를 만드는가
어떤 게임이든 재미의 근본에는 딱 하나의 구조가 있다.
버튼을 누르는 플레이어의 행동이, 캐릭터가 움직이고 소리가 나며 점수가 오르는 게임의 반응이라는 공통된 구조이다. 이를 상호작용 이라고 한다.
스페이스 키를 누르면 캐릭터가 점프하고 내려오는데, 여기에 점프 효과음 + 착지 시 먼지 파티클이 추가가 되는 것을 피드백 이라고 한다. 피드백이 풍부할수록 게임이 살아있다고 느낀다.
'피격' 이벤트에서 단순히 적에게 닿으면 HP가 줄어드는 것과, 화면이 빨개지고 캐릭터가 튕기며 피격음이 나고 HP 바가 줄어드는 애니메이션이 재생되는 것은 확연히 다르다. 같은 피격인데 느껴지는 강도가 다르다. 이것이 게임이 재밌다 없다를 가르는 중요한 요소 중 하나이다.
상호작용이 재미의 핵심이라면 그것을 설계할 때 고려해야 할 점이 있다.
- 입력 설계
- 플레이어가 게임 안에서 할 수 있는 모든 행동을 정의
- 입력이 너무 많으면 초보자가 압도되고, 너무 없으면 금방 지루해진다.
- 좋은 게임은 점진적 복잡도를 통해 처음엔 단순하게, 점점 더 많은 행동을 가능하게 만든다.
- 피드백 루프
- 플레이어의 행동과 그 결과가 연결되는 고리
- 좋은 피드백은 즉시, 명확하게 결과를 알려준다.
- 형태
- 시각적: 화면 번쩍임, 파티클, HP 바 감소
- 청각적: 효과음, 경고음, 음악 변화
- 시스템적: 점수 상승, 레벨업, 새로운 지역 개방
- 피드백이 늦거나 불명확하면 플레이어는 혼란을 느끼게된다.
- 목표와 보상
- 플레이어가 무언가를 통해 나아가게 만드는 구조
- 세 단계 목표
- 단기 목표: 지금 당장 할 수 있는 것 (적 처치, 아이템 줍기)
- 중기 목표: 몇 분 ~ 몇 판 안에 달성 (스테이지 클리어, 레벨업)
- 장기 목표: 게임 전체를 관통 (최종 보스 처치, 모든 아이템 수집)
- 잘 설계된 게임은 이 목표들이 동시에 존재하며, 단기 목표 달성이 중장기 목표로 이어지는 느낌을 주어 플레이어는 더 하게 된다.
- 난이도 곡선
- 처음부터 너무 어렵다면 시작도 전에 포기하고 끝까지 너무 쉽다면 금방 지루해진다.
- 좋은 게임은 초반엔 쉽게 시작하고, 익숙해질 무렵 도전 요소를 추가한다.
- 개발자들이 가장 공들이는 설계 중 하나이다.
중요
개발자는 항상 기술적으로 코드를 짬과 동시에 이 기술이 플레이어에게 어떤 경험을 만들어내는가 를 항상 생각해야 한다.
언리얼 엔진은 무엇일까?
게임 엔진은 게임 개발을 위한 핵심 소프트웨어로 그래픽 렌더링, 물리 엔진, 사운드, AI, 네트워크 등의 복잡한 기능을 통합해 개발 과정을 단축시켜준다.
대표적으로 유니티, 언리얼 엔진, 고도엔진이 있다. 그중 내가 배울 언리얼 엔진(Unreal Engine)은 게임을 좋아하는 사람들이라면 많이 들어봤을 '에픽게임즈' 라는 곳에서 개발한 세계적으로 널리 사용되는 실시간 3D 제작 툴이다. 게임에서만 사용되는게 아니라 애니메이션, 영화나 시뮬레이션(건축,자동차) 등에서도 활용된다.
언리얼 엔진의 장점
- 고품질 그래픽
나나이트, 루멘 같은 최신 렌더링 기술로 사실적인 광원, 섀도우, 반사 구현이 가능하여 AAA급 콘솔, PC 게임에서 탁월한 비주얼을 제공한다. - 강력한 물리 시뮬레이션
NVIDIA PhysX 기반으로 충돌, 중력, 환경 상호작용을 사실적으로 표현한다. - 비주얼 스크립팅 (블루프린트)
프로그래밍 지식이 없어도 시각적으로 게임 로직 구현이 가능하게 해줘 빠른 프로토타이핑과 아이디어 테스트에 도움이 된다. - 멀티플랫폼 지원
PC, 콘솔, 모바일, VR/AR까지 폭넓게 배포가 가능하다. - 무료
누구나 무료로 사용할 수 있다. 상업적 출시 단계에서 일정 수익 이상에서만 로열티가 부과된다.
언리얼 엔진의 단점
- 학습 곡선
C++ 기반이라 초보자에게 진입 장벽이 높다.
블루프린트로 시작할 수 있지만 고급 기능을 쓰려면 C++ 학습이 필요하다. - 높은 하드웨어 요구사항
사실적인 그래픽과 물리 엔진 때문에 고사양 PC가 필요하다.
최적화 난이도가 높아 인디 개발자에게는 부담이다. - 초기 설정 복잡성
프로젝트 구조와 빌드 환경이 다른 엔진보다 무겁고 복잡하다.
게임별 언리얼 엔진의 역할
PUBG: 배틀그라운드 (크래프톤)
PUBG는 언리얼 엔진으로 사실적인 총기 물리와 대규모 맵을 구현할 수 있었다. 엔진의 물리 시스템이 총알 궤적과 반동을 사실적으로 표현했고, 네트워킹 기능이 수많은 플레이어가 동시에 접속하는 환경을 안정적으로 뒷받침하여 총격전의 긴장감과 몰입감이 살아나게 해주었다.리니지2M / 리니지W (NC)
모바일 MMORPG임에도 불구하고 PC급 그래픽을 선보일 수 있었던 건 언리얼 엔진의 렌더링 기술 덕분이다. 수백 명이 동시에 참여하는 공성전 같은 대규모 전투를 모바일 환경에서 구현하게 해주었고, 방대한 월드와 캐릭터 애니메이션을 사실적으로 표현해 모바일에서도 대작 같은 경험을 가능하게 했다.스텔라 블레이드 (시프트업)
PS5 전용 액션 게임으로 개발된 스텔라 블레이드는 언리얼 엔진의 시네마틱 연출과 캐릭터 애니메이션 기능을 활용해 콘솔 AAA급 게임으로 자리매김하였다. 화려한 액션과 사실적인 캐릭터 표현이 가능했던 것도 언리얼 엔진의 강력한 그래픽, 애니메이션 툴 덕분이다.퍼스트 디센던트 (넥슨게임즈)
최신 언리얼 엔진5를 기반으로 제작된 루트슈터 장르 게임으로, 나나이트와 루멘 같은 최신 기술을 활용해 사실적인 오픈월드와 광원 효과를 구현했다. 덕분에 플레이어는 몰입감 높은 전투와 환경을 경험하고, 언리얼 엔진5의 성능이 게임의 핵심 매력으로 작용했다.
AAA가 뭔데?
기본적으로 게임은 AAA, AA, 인디 이렇게 크게 세 가지로 나눈다.
Triple-A는 게임 업계에서 대규모 자본, 인력, 시간이 투입된 블록버스터급 게임을 지칭한다. 한국에서는 엔씨, 크래프톤, 넥슨과 같은 대형 게임사가 제작하며, 수백 명의 개발자가 수년간 작업한다.
Double-A는 AAA보다는 작고 인디보다는 큰 작은 준대작이다.
인디는 소규모 팀이나 개인이 만든 창의적인 게임이다.
누군가가 급을 정해주는 것이 아니라 업계와 게이머들이 공감하는 관행적 분류라고 보면 된다.
게임 레벨은 무엇인가?
게임 레벨(Level)은 플레이어가 실제로 경험하는 게임 공간을 의미하며, 환경 오브젝트, 캐릭터, 사운드 등 모든 요소가 모여 하나의 무대를 구성한다. 언리얼 엔진에서는 레벨이 곧 게임 월드의 단위이며, 다양한 구성 요소들이 모여 플레이어가 보고, 듣고, 상호작용하는 경험을 만들어낸다. 흔히 레벨업했다 레벨업! 에서의 레벨이 아니다..
게임 레벨의 역할
- 게임의 무대: 플레이어가 탐험하고 상호작용하는 공간
- 진행 단위: 스테이지나 챕터처럼 게임의 흐름을 구분하는 단위
- 몰입 요소: 그래픽, 사운드, 조명, 이벤트가 결합되어 플레이어에게 몰입감을 제공
언리얼 엔진에서의 레벨 주요 구성 요소
- World
- 레벨 전체를 담는 컨테이너 역할
- 환경, 오브젝트, 캐릭터 등 모든 요소가 포함
.umap파일로 저장되며, 흔히맵(Map)이라고도 불린다.
- Actor
- 레벨 안에 배치되는 모든 오브젝트의 기본 단위
- 플레이어가 직접 조작하거나 상호작용할 수 있는 대상
e.g. 나무, 바위 같은 Static Mesh Actor, 캐릭터 같은 Skeletal Mesh Actor
- Light
- 조명 효과를 담당, 분위기와 몰입감을 결정
e.g. 태양광, 점광원, 스포트라이트 등 다양한 라이트 타입 제공
- 조명 효과를 담당, 분위기와 몰입감을 결정
- Camera
- 플레이어가 보는 시점을 결정
- 1인칭, 3인칭, 시네마틱 카메라 등 다양한 방식으로 설정 가능
- Sound
- 배경음악, 효과음, 앰비언트 사운드 등 플레이어의 몰입도를 높이고 상황을 전달
- Particle Effects
- 폭발, 불꽃, 연기 같은 시각적 효과
- 레벨의 생동감을 강화
- Level Streaming
- 대규모 맵을 효율적으로 불러오기 위해 부분적으로 로딩
- 오픈월드 게임에서 성능 최적화에 필수
