기본 콘텐츠로 건너뛰기

하프라이프2의 훌륭한 튜토리얼 레벨 디자인

    목차




▲이 글의 대부분은 Game Maker's Toolkit의 Half-Life 2's Invisible Tutorial 영상에서 인용하였습니다.


요즘 쏟아져 나오는 게임들의 튜토리얼은 대부분 책 읽듯 글로 설명해주고, 한번 따라해보는 것이 대부분입니다.
이런 튜토리얼은 조금 더 적은 개발비용이 들고, 직관적이라는 장점이 있습니다.

하지만 이런 튜토리얼들은 게임의 몰입도를 떨어트리고, 게임안에 자연스럽게 녹여들 수 없습니다.


데드 스페이스의 적인 네크로모프는 팔이나 다리를 잘라서 죽이는 편이 효율적입니다.
그것을 이 게임에선 플레이어에게 이렇게 알려주었습니다.
시체 오브젝트와 피로 적은 'cut off their limbs'를 보여주고,

팝업 메세지로 보여주고,

음성으로도 알려줍니다.

플레이어들은 당연히 잘 알아듣고 튜토리얼대로 행동할겁니다.
튜토리얼로써의 기능은 완벽하네요. 하지만 플레이어들은 성인을 대상으로 만든 게임에서 애 취급을 받는 기분이 들 수도 있습니다..


하프라이프2도 적의 몸을 자르면 쉽게 죽일 수 있습니다.
하프라이프2에선 어떻게 이렇게 알려주었습니다.

하프라이프2의 Ravenholm챕터입니다.
이 챕터에 들어오면 가장 먼저 플레이어들은 톱날에 잘려 죽은 좀비의 시체를 보게 됩니다.

그리고 다음 지역으로 넘어가는 길에 톱날이 꼽혀있어서 지나갈 수가 없습니다.
플레이어는 중력건으로 이 톱날을 제거합니다.
(물론 게임 내에선 아무런 글로된 튜토리얼은 없습니다.)

그 톱날을 뽑아 든 순간, 옆에 있는 공간에서 좀비가 걸어 나옵니다. 그럼 플레이어는 자연스럽게 그 뽑아든 톱날을 좀비에게 발사하고 톱날이 효과적인 무기라는 사실을 알게됩니다.


분명 데드 스페이스와 하프라이프2의 의도는 비슷했습니다. '적의 사지를 잘라라'
하지만 제 생각엔 하프라이프2의 튜토리얼이 조금 더 자연스럽게 게임에 녹아들었고, 성취감 또한 느끼게 해주었습니다.


이런 방식의 튜토리얼을 하프라이프2 게임 안에서 많이 찾아볼 수 있습니다.

Benry의 집에서 탈출할 때 배웠던 물건을 잡고 던지는 것을 배운 플레이어에게
이런 방식으로 시험도 합니다.

또한 바나클이라는 적을 처음 만났을 때에는 이 괴물이 어떻게 작동하는지 알려주기 위해 밸브는 까마귀를 사용했습니다.
플레이어가 가까이 다가오자 까마귀 오브젝트가 날아들면서 바나클에게 먹히는 것을 보여줍니다.

이런 방식의 튜토리얼은 이 게임의 세계를 더 생동감 있고 자연스러운 세계로 만들어주는 기능도 합니다.


그리고 바나클을 또 만날땐 드럼통으로 막힌 곳과 경사를 만들어 놓았습니다.
그리고 바나클이 드럼통을 잡아 당기는 모습을 볼 수 있고, 플레이어는 이것을 어떻게 활용하는 지 생각하게 됩니다.

그리고 수 많은 바나클과 폭발할 수 있는 드럼통을 플레이어에게 줍니다.

플레이어는 이런 방식의 튜토리얼을 수행하면서 퍼즐을 직접 푸는 듯한 기분을 느낄 수 있습니다.


그리고 밸브는 이런 메커닉을 처음 보여줄 때, 항상 플레이어들을 안전한 곳에 있을 수 있게 합니다.

좀비를 처음 대면했을 때, 좀비가 던진 드럼통을 피할 수 있는 공간을 만들어 놓고,
굴러다니는 지뢰를 만나기 전에, Dog와 놀아주는 시간을 만들고 Dog의 장난감을 지뢰와 같은 모양으로 만들어 미리 대비할 수 있게했습니다.


밸브의 이런 자연스러운 튜토리얼은 하프라이프1이나 포탈에서도 훌륭하게 잘 만들어 놨습니다.
이런 방식의 자연스러운 튜토리얼은 게임을 좀 더 몰입감 있게 만들어주고, 플레이어에게 성취감을 줍니다.


이런 방식의 튜토리얼의 시초격인 슈퍼 마리오 브라더스1의 예시
보러가기 -> 1 2



댓글

  1. 와,,, 저도 하프라이프2를 플레이 해봤는데 튜토리얼을
    저렇게 자연스럽게 녹였다는 걸 처음알았습니다.
    아니, 어떻게 보면 자연스럽게 녹였으니 지금까지 모르고
    있었다는게 더 맞는 쪽 같네요 ㅋㅋㅋㅋ
    지금 생각해보니 게임에서 막혔던 부분이 딱히 있었던 것도
    아니고 게임에 이질적인 부분이 느껴지지 않고 전부 자연스럽게
    흘러간 것 같네요. 좋은 글 보고갑니다

    답글삭제

댓글 쓰기

이 글도 관심 있으실 것 같아요!

놀이의 4대 요소 (Agon(아곤), Mimicry(미미크리), Ilinx(일링크스), Alea(알레아))

네덜란드의 고전 학자인 '요한 하위징아'의 저서인 「호모 루덴스 」에서 인간을 '유희의 인간'이라고 칭했습니다. 프랑스의 '로제 카유아'라는 학자는 「호모 루덴스 」의 이론을 발전시켜 그의 저서인 「놀이와 인간」 (원제 「 Man, plays and games 」) 에서 ‘놀이의 4대 요소’를 말했습니다. 저자는 그것을 아곤, 미미크리, 알레아, 일링크스로 소개했습니다. 이 네 가지 놀이의 요소는 인간의 모든 유희, 놀이에서 발전되어 현대의 비디오 게임에서도 매우 중요한 이론으로 알려져있습니다. 먼저, 아곤(Agon), 경쟁 아곤은 놀이의 주체와 객체간의 경쟁을 의미합니다. 사람들은 경쟁에서 승리함으로써 성취감을 얻고, 우월감을 느끼게 합니다. 이 아곤을 현대의 게임에 대입 시켜보면 경쟁은 최근 가장 많이 플레이 하는 게임 중 하나인 ‘배틀 그라운드’나 ‘리그 오브 레전드’같은 게임들도 경쟁에 기반이 되어있고, 혼자 플레이 하는 게임에서도 자기 자신과의 경쟁, AI와의 경쟁 등이 포함되어있습니다. 예를 들어, 슈퍼 마리오 같은 게임에서도 플레이어들은 어떻게 이 게임을 더 빨리 클리어하기 위해 경쟁하고, 더 많은 점수를 받기 위해 노력합니다. 또한 비교적 MMR시스템이 잘 짜여져있는 '리그 오브 레전드'같은 AOS게임에서도 플레이어의 등급을 결정하는 랭크 게임 시스템이 중점적으로 돌아가고 있고, '오버워치'의 경쟁전 등 많은 게임에서 이런 경쟁을 유도하는 시스템을 만들어 놓았습니다. 게임을 계속 플레이하게 만드는 가장 큰 요소가 아곤입니다. 많은 게임에서 플레이어의 경쟁을 어떻게 잘 이끌어 나갔느냐에 따라서 그 게임의 성공이 나뉠 수도 있습니다. 미미크리(Mimicry), 역할 미미크리는 역할을 의미합니다. 사람들은 실제 세계에서 하지 못하는 일들을 놀이에서 느끼면서 큰 기쁨을 느낄 수 있습니다. 이 역할은 롤플레...

FastAPI 실시간 영상 스트리밍 OpenCV

  FastAPI와 OpenCV를 활용한 실시간 영상 스트리밍 Permalink 실시간 영상을 스트리밍 하는 방법을 찾던 중 파이썬 FastAPI를 활용한 방법을 시도 해보았다. 필수 라이브러리 Permalink 필요한 것은 Python3.9버전 (애플 M1칩셋 맥북에어에서 3.8 버전으로 시도 해보니 OpenCV라이브러리 설치에서 문제가 발생했었다) FastAPI uvicorn OpenCV 정도면 될 것 같다. 라이브러리들은 모두 설치 되었다고 가정 하고, 예제 코드 Permalink # main.py # 라이브러리 import # StreamingResponse를 가져와야함 from fastapi import FastAPI from fastapi.responses import StreamingResponse # cv2 모듈 import from cv2 import get_stream_video # FastAPI객체 생성 app = FastAPI () # openCV에서 이미지 불러오는 함수 def video_streaming (): return get_stream_video () # 스트리밍 경로를 /video 경로로 설정. @ app . get ( "/video" ) def main (): # StringResponse함수를 return하고, # 인자로 OpenCV에서 가져온 "바이트"이미지와 type을 명시 return StreamingResponse ( video_streaming (), media_type = "multipart/x-mixed-replace; boundary=frame" ) # cv2.py import cv2 def get_stream_video (): # camera 정의 cam = cv2 . VideoCapture ( 0 ) while True : ...

Python FastAPI 알아보고 설치하고 초기 설정 해보기

  Python FastAPI, 설치하고 초기 설정 해보기 Permalink 파이썬 웹 서버를 만들어야 하는 일이 생겼늗데, 최대한 빠르고 안정적인 서버를 선택 해야했다. 그래서 기존에 사용하던 Flask보다 훨씬 빠르다고 하는 FastAP를 사용해보기로 했다. ❓ FastAPI란? Permalink 👉 FastAPI 공식 한국어 페이지  https://fastapi.tiangolo.com/ko/ FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다. FastAPI는 파이썬에서 사용 가능한 웹 프레임워크 중 하나인데, Flask나 Django보가 훨씬 빠른 속도를 보여준다고 하고, 확인 해봐야 하겠지만 Go언어와도 비슷한 속도를 보여준다고 한다. 또, 쉽고 간결한 코드, 200% ~ 300% 까지 증가하는 개발 속도를 기대할 수 있다고 하는데, 시작 해보자! 👏 Permalink FastAPI 설치 Permalink 먼저 공식 사이트에선 pip를 이용해 설치 하라고 나와있는데, 나는 anaconda를 이용해서 설치를 했다. bash $ pip install fastapi anaconda 사용 시 $ conda install fastapi 그리고 ASGI서버도 필요해서 같이 설치하라고 하는데, Univorn을 설치 해보자. bash $ pip install uvicorn[standard] anaconda 사용 시 $ conda install uvicorn FastAPI 예제 Permalink 설치가 완료되면 이렇게 vscode에서 FastAPI() 클래스가 자동 완성 되는걸 확인할 수 있다. 그리고 정말 간단히 API를 만들 수 있는데, main.py 파일을 만든 후에 from typing import Optional from fastapi import FastAPI app = FastAPI () @ app . get ( "/"...