프로젝트 조직

소개

Godot는 프로젝트 구조나 파일 시스템 사용에 있어 제한을 두지 않기 때문에 엔진을 배울 때, 파일을 조직하는 것은 도전적인 것처럼 보일 수 있습니다. 이 튜토리얼에서는 좋은 출발점이 될만한 워크플로를 제안합니다. 그리고 Godot로 버전 제어를 사용하는 것도 다룰 것입니다.

구성

Godot는 본질적으로 씬 기반이고, 파일 시스템을 메타데이터나 애셋 데이터베이스가 아닌, 있는 그대로 사용합니다.

다른 엔진과 달리, 많은 리소스가 씬 자체에 내장되어 있기에, 파일 시스템에 있는 파일의 양은 상당히 적습니다.

그것을 고려해보면, 가장 일반적인 접근법은 애셋들을 씬과 가능한 밀접하게 묶어내는 것입니다; 프로젝트가 커지다 보면, 프로젝트를 더 유지할 수 있게 만듭니다.

예를 들어, 보통은 하나의 폴더에 기본 애셋을 넣습니다, 스프라이트 이미지나, 3D 모델 메시, 머티리얼, 그리고 음악 등이죠. 그런 다음 별도의 폴더를 만들어 그것들을 사용하는 레벨을 저장할 수 있습니다.

/project.godot
/docs/.gdignore  # See "Ignoring specific folders" below
/docs/learning.html
/models/town/house/house.dae
/models/town/house/window.png
/models/town/house/door.png
/characters/player/cubio.dae
/characters/player/cubio.png
/characters/enemies/goblin/goblin.dae
/characters/enemies/goblin/goblin.png
/characters/npcs/suzanne/suzanne.dae
/characters/npcs/suzanne/suzanne.png
/levels/riverdale/riverdale.scn

스타일 가이드

프로젝트 간의 일관성을 위해 아래의 가이드라인을 지켜주십시오:

  • 프로젝트를 Windows에서 내보낼 때 이름이 잘리는 문제를 피하기 위해 C# 스크립트를 제외한 폴더와 파일 이름에는 snake_case 를 사용해주십시오. 예외적으로 C# 스크립트는 PascalCase로 작성된 클래스와 동일한 파일 이름을 가져야 하므로 PascalCase로 작성되어야 합니다.

  • Use PascalCase for node names, as this matches built-in node casing.

  • 일반적인 경우, 서드파티 리소스는 에디터 플러그인이 아니더라도 최상위의 addons/ 폴더에 저장하십시오. 이렇게 하면 서드파티 파일을 찾아내는 것이 쉬워집니다. 몇 가지 예외로 서드파티 캐릭터 에셋같은 경우가 있는데, 이 경우는 캐릭터 씬과 스크립트가 위치한 폴더에 저장하는 것이 더 직관적입니다.

가져오기

3.0 버전 이전의 Godot에서는 프로젝트 밖에서 파일을 접근하는 것으로 가져오기를 실행했습니다. 이것이 큰 규모의 프로젝트에는 유용하지만, 대부분의 개발자들에게는 조직의 번거로움을 초래했습니다.

이 때문에, 애셋은 이제 프로젝트 폴더 내에서 투명하게 가져옵니다.

특정 폴더를 무시하기

Godot이 특정 폴더의 파일을 가져오는 것을 막으려면 .gdignore 라는 이름의 빈 파일을 폴더에 생성하면 됩니다(위와 같이 이름 앞에 . 이 들어가야 합니다). 이렇게 하면 프로젝트를 빠르게 가져올 수 있습니다.

참고

Windows에서 이름이 .으로 시작하는 파일을 만들려면 Notepad++같은 텍스트 에디터를 사용하거나 명령 프롬프트에서 다음의 명령을 사용하십시오:type nul > .gdignore

폴더가 무시된 상태라면 load() 혹은 preload() 메서드를 사용해서 리소스를 로딩하는 것이 불가능하며, 파일시스템 독에서 표시되지 않습니다. 불필요한 데이터를 줄이는데 유용합니다.

.gdignore 파일은 .gitignore 처럼 패턴을 지원하지 않고 그냥 내용이 무시되므로 파일의 내용은 비워두는게 좋습니다.

대소문자 구분

Windows와 최근 macOS 버전들은 Linux 배포판들과 반대로 대소문자 구분이 없는 파일시스템을 기본적으로 사용합니다. Godot의 PCK 파일시스템은 대소문자를 구분하므로 프로젝트를 내보낸 후 문제가 발생할 수 있는데, 프로젝트의 모든 파일 snake_case (와 소문자들)를 사용해 이런 문제를 예방하는 것을 권장합니다.

참고

C# 스타일 가이드라인처럼 스타일 가이드라인에 예외가 있다면 이 규칙을 깨도 됩니다. 하지만 실수하지 않도록 일관성을 유지하십시오.

Windows 10의 경우, 대소문자 구분과 관련된 실수를 방지하기 위해 프로젝트 폴더가 대소문자를 구분하도록 만들 수도 있습니다. Linux용 Windows 하위 시스템 기능을 활성화 한 후, PowerShell 창에 다음 명령을 입력하십시오:

# To enable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> enable

# To disable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> disable

Linux용 Windows 하위 시스템을 활성화하지 않았다면, Powershell에서 아래의 명령을 관리자 권한으로 실행 한 후 재부팅 알림이 나올 때 재부팅하는 방법도 있습니다:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux