사용자:Senouis/고도3 도큐먼트/시작

리버티게임, 모두가 만들어가는 자유로운 게임

소개[편집 | 원본 편집]

고도 엔진은 아르헨티나의 소규모 게임 개발사들이 사용하다가 2014년 처음 대중에게 발표된 이래로 10년 이상 개량된 게임 엔진입니다. 고도 엔진 3에 들어서 유니티에 근접한 품질을 내고 있으며, 2023년 10월 유니티 엔진 개발사의 요금제가 변경되면서 큰 논란을 부르자 대체품으로 주목받기 시작했습니다.

기본적으로 엔진의 내부 구조를 결정하는 소스 코드(Source Code)가 대중에게 공개되어 있기에, 돈에 대한 제약을 걱정할 필요 없이 무료로 사용 가능하다는 최고의 장점을 가지고 있습니다. 유니티나 게임메이커는 어느 정도 돈을 벌면 엔진 제작사에게 돈을 바쳐야 하지만, 고도 엔진에는 그런 일이 없습니다. 모든 기능은 고도 엔진 커뮤니티가 무료로 관리합니다!

리버티게임에서는 미디어위키 같은 위키 엔진의 한계로 지목되는 정적인 컨텐츠[1]만 만들 수 있다는 제약을 뛰어넘기 위해 PluginX 같은 자바스크립트(Javascript) 코드 실행 기능을 추가했지만, 다음 문제가 제기되었습니다.

  • 이런 코드(Code, 게임 내용을 진행하는 명령들)가 있는 게임을 만들려면 영어 단어들을 줄여 사용하면서 사람의 언어랑 많이 다른 프로그래밍 언어인 자바스크립트의 문법을 뛰어난 수준으로 알아야 합니다. 다만 프로그래밍 언어의 사용은 컴퓨터가 오랜 세월 동안 미국/유럽 쪽에서 개발되었기에 어쩔 수 없이 영어로 진행되는 측면이 있습니다. 하지만 리버티게임 사용자의 모국어인 한글로 되지 않은 줄글을 보면서 게임을 만들어야 하기 때문에 당신이 보는 대로 결과가 나온다[2]는 위키 엔진의 원칙에 어긋납니다.
    • 특히 문서의 특정한 글의 색깔을 바꾸기 위해 CSS 변경까지 동원할 경우, HTML 태그 작성법까지 익혀야 하기에, HTML/CSS/자바스크립트 3개 분량의 언어를 익혀야 합니다.
  • 게임에 사용할 그림과 음악 등을 따로 관리해야 하며, 그 파일의 특징을 기억했다가 게임 내로 적절하게 가져오기 쉽지 않습니다. 사진 크기 조절하는 데에도 미리 보기 버튼을 여러 번 눌러야 합니다.
  • 모든 가능한 게임 내 상황을 화면에 띄우지 않고 머릿속에 넣고 알아서 섞으면서 타자를 어마어마하게 쳐야 합니다. 기존의 문서 연결 웹 게임에서도 발생하는 문제이지만, 자바스크립트의 경우 게임 코드의 양에 비해 미리 보기 화면에 바로 드러나는 정보가 훨씬 적습니다.
    • 소도구로 자바스크립트를 적용한 틀은 더 다양한 기능을 구현할 수 있으나, 관리자가 아닌 이상 기능을 게임 제작자가 자유롭게 변경하기 어려워 게임 내 상황을 설계하고 구현하는 데에 제한이 걸리는 건 여전합니다.
  • 게임을 실시간으로 변경하고 실행하면서 결과물을 확인하기 어려워 미리 보기와 저장 기능을 반복해서 사용해야 합니다. 그리고 이전에 작성했던 내용을 확인한다고 웹 브라우저의 '뒤로 가기' 버튼을 누르면 그 대신 CACHE_MISS 오류와 함께 페이지가 통째로 보이지 않고, 적었던 내용이 없어지는 경우도 많습니다.

이런 '날코딩'은 게임 제작을 어렵게 합니다. 이 문제를 완전히 해결하려면 모든 게임 제작 과정을 하나로 합치면서 편의성을 가진 게임 엔진과 게임 에디터의 사용이 필수입니다. 따라서 모든 컨텐츠가 비영리로 제공되는 리버티게임에 맞는 최적의 게임 엔진이 필요했으며, 위와 같은 특성을 지닌 고도 엔진이 적합하다 판단하여 고도 엔진으로 직접 웹 게임을 만들어 배포하도록 하였습니다.

다만 고도 엔진은 버전 3.x과 버전 4.x의 차이가 존재하며, 4.x 버전은 국내에 도움말과 자료가 번역되며 응용이 활발하게 연구되고 있으나, 아직 공식 저장소에서 지원하는 레거시 템플릿은 고도 3이 더 많습니다. 따라서 리버티게임에서는 두 버전에 모두 대응하여 웹 게임을 위한 래퍼 틀을 제공하는 것을 목표로 하고 있으며, 3.x 버전에 한하여 튜토리얼을 제공하고 있습니다.

그리고 백괴게임/리버티게임 등의 웹 게임 위키에서 개발되었던 기존 게임들과 달리 게임 엔진을 사용하여 게임을 만들 때에는, 게임 제작에 필요한 배경 지식 없이 게임을 만드는 일은 아예 불가능하기도 합니다. 다음은 고도 엔진을 사용할 때 반드시 가져야 하는 지식을 다룹니다.

고도 엔진으로 게임을 만들기 위해 필요한 지식[편집 | 원본 편집]

  • 영어 지식: 고도 엔진은 전세계 사람들을 대상으로 개발되기 때문에, 모든 설명은 영어로 먼저 배포된 후 번역을 거칩니다. 현재 고도 엔진 3의 경우 모든 기능에 대해 영어 설명만 제공하기 때문에 고도 엔진을 매우 정확하게 이해하려면 대학입학수학능력평가(수능) 영어 시험에서 90점 이상의 평가를 받을 수 있는 영어 실력이 필요합니다. 다만 모든 기능을 전부 다 알면서 엔진을 수정하거나 추가 기능을 제작하는 실력을 필수로 요구하는 것은 아니기 때문에, 중학교 졸업 시점에 괜찮은 영어 실력을 보유하고 있다면 어느 정도 이해 가능합니다.
  • 수학 지식: 고도 엔진은 기본적으로 화면으로 보이는 내용이 끊임없이 바뀌는 종류의 게임을 만드는 데에 적합합니다. 적어도 게임 화면에서 많은 물건들이 이리저리 움직이거나, 색을 바꾸거나, 서로 부딪혀서 반대로 날아가거나 파괴되는 기능이 없으면 좋은 평가를 받지 못합니다. 그리고 그런 기능을 구현하려면 게임 내 모든 것들을 숫자로 표현하고, 그 숫자를 자유롭게 바꾸는 수학 지식이 필수입니다. 특히 고등학교에서 배우는 호도법[3]을 사용하는 기능도 있고, 색깔 표시에 16진수[4]를 사용하며, 중학교 3학년 이상이 되어야 교과서에 언급되는 삼각함수[5]를 사용하는 부분도 있어, 적어도 초등학생 게임 제작자는 고도 엔진 사용이 아예 불가능하다고 할 수 있습니다. 그리고, 이건 2D 게임을 만들 때의 이야기고...
    • 컴퓨터 그래픽스 지식: 3D 게임 제작으로 넘어가는 시점에서 컴퓨터 그래픽스 지식을 추가로 요구합니다. 그래픽스 파이프라인[6]을 이해하지 못하면 3차원 공간에 놓인 물체가 왜 화면에 저렇게 보이는지 이해할 수 없습니다. 다만 고등학교를 졸업한 시점에서 여러 수학 교과서들을 전부 완벽하게 익혀 수학과 진학 혹은 공학대학 입학을 노릴 정도면 3D 게임 제작에 필요한 지식은 거의 다 쌓은 것이나 다름 없습니다.
  • 과학, 특히 물리학 지식: 평면에 놓은 공이 중력 같은 힘을 어떻게 받아 움직이는지 재현하려면 물리학 지식이 필수입니다. 이런 물리적 법칙을 구현한 코드를 '물리 엔진'이라고 합니다. 보통 고등학교 물리 II 교과서에 나오는 2차원 물체 운동 원리 및 물리 I 교과서의 돌림힘 구현, 기초적인 유체역학을 마스터한 시점에서 간단한 2D 물리 엔진 구현이 가능합니다. 중학교 3학년 정도 되면 물리 I까지는 얕게나마 볼 수 있으며, 사실 2차원 물체 운동은 물리 I에 나오는 1차원 물체 운동의 응용이라 습득이 그리 어렵지 않습니다. 다른 분야 과학 지식도 특정 게임 장르에서 게임 기획 과정에 사용할 수 있기 때문에, 가지고 있으면 고도 엔진에 적합한 동적인 게임 제작 소재로 쓸 수 있습니다.

이에 따라 고도 엔진 3의 권장 사용 연령은 대략 만 15세 이상이며, 리버티게임의 고도 엔진 관련 문서는 기본적으로 만 15세를 넘어선 사용자가 읽을 수 있도록 설명합니다. 또, 리버티게임:특수 함수에 있는 각종 연산(특히 #expr 파서와 #ifexpr 파서)들을 읽고 이해할 수 있는 사람을 기준으로 작성합니다.


  1. 움직임이 없는 글자와 링크들로 된 문서들을 가리킵니다.
  2. What you see is what you get, 또는 WYSIWIG(위지윅) 원칙이라고도 합니다.
  3. 간단하게 설명하면, 180도를 π라는 기호로 나타낸 다음 그걸로 각도를 표현하는 방법입니다. 가령 90도 각도는 π를 2로 나눈 π/2, 30도 각도는 6으로 나눈 π/6입니다.
  4. 10부터 15까지의 숫자를 A, B, C, D, E, F로 나타내고, 16을 10으로 표시하는 숫자 체계입니다. 참고로 사람이 기본적으로 사용하는 숫자는 10진수(0~9까지의 숫자 기호를 사용)라고 합니다.
  5. 직각삼각형의 빗변과 다른 변 사이의 관계인 삼각법에서 사용하는 sin과 cos, tan를 일반적인 함수 모양으로 넓힌 것입니다.
  6. 3D 모델의 크기, 색상, 밝기를 결정하면서 평면의 컴퓨터 화면에 보이도록 평면 그림으로 바꾸는 과정(래스터라이징)입니다.