본문 바로가기

레퍼런스/고도엔진

고도엔진 튜토리얼 #16 커맨드라인 튜토리얼(Command line tutorial)

몇몇 개발자는 널리 커맨드라인을 이용하는 것을 좋아합니다. 고도는 이들에게 친화적으로 설계되었습니다. 그래서 완전히 커맨드라인을 이용해 작업하는방법을 단계적으로 보여드리죠. 엔진이 외부 라이브러리에 거의 의존하지 않는 경우 초기화 시간이 매우 빠르므로 이 워크플로우에 적합합니다.



경로


고도 바이너리는 결로 설정 환경 변수에 포함 시키는 것이 좋으며, 그러면 godot을 입력해 어디에서나 쉽게 실행할 수 있습니다. 리눅스에서는 /usr/usr/local/bin에 고도 이진파일을 넣고 godot이라고 불리는 것을 확인해 그렇게 할 수 있습니다.



프로젝트 만들기


커맨드라인으로 프로젝트를 만드는 것은 간단합니다. 쉘을 다니다가 원하는 곳에 만약 비어있다면 engine.cfg 파일을 만드세요.


user@host:~$ mkdir newgame
user@host:~$ cd newgame
user@host:~/newgame$ touch engine.cfg


그것만으로도 고도 프로젝트는 텅 빈 상태로 만들어집니다.



에디터 실행하기


고도를 -e 플래그와 함께 실행하면 에디터가 실행됩니다. 프로젝트 폴더 안이나 하위 폴더 안에서 해야만 합니다, 그렇지 않으면 커맨드는 무시되고 프로젝트 매니저가 나타날 겁니다.


user@host:~/newgame$ godot -e


씬이 생성되고 저장되면, 나중에 해당 씬에서 인수(argument)와 동일한 코드를 실행하여 편집할 수 있습니다.


user@host:~/newgame$ godot -e scene.xml



씬을 지우기


고도는 여러분의 파일시스템 친화적이며 추가적인 메타데이터 파일을 생성하지 않으므로 간단하게 rm 명령어를 사용해 파일을 지울 수 있습니다. 씬을 참조하는 것이 아무것도 없게 하지 않으고 삭제하면 나중에 열 때 오류가 발생합니다.


user@host:~/newgame$ rm scene.xml



게임을 실행하기


게임을 실행하기 위해, 간단하게 프로젝트 디렉토리나 하위 디렉토리에서 고도를 실행하세요.


user@host:~/newgame$ godot


특정 씬이 테스트 되어야하면 그 씬을 커맨드라인에 주세요.


user@host:~/newgame$ godot scene.xml



디버깅


커맨드라인에서 에러를 잡는 것은 너무나 빠르게 지나가 버리기 때문에 어려울 수 있습니다. 이를 위해 디버거는 -d를 추가하여 디버거로 제공합니다. 이는 게임이나 간단한 씬을 작동하게 합니다.

user@host:~/newgame$ godot -d


user@host:~/newgame$ godot -d scene.xml



출력(실행)


커맨드라인에서 프로젝트를 출력하는 것도 지원됩니다. 계속적으로 완성된 설정에서 특별히 유용합니다. 헤드리스 (서버 빌드, 비디오 없음) 버전의 고도가 이에 이상적입니다. (The version of Godot that is headless (server build, no video) is ideal for this.)

user@host:~/newgame$ godot -export "Linux X11" /var/builds/project
user@host:~/newgame$ godot -export Android /var/builds/project.apk


-export 스위치로 인식되는 플랫폼 이름은 편집기의 출력 마법사에 표시되는 것과 동일합니다. 커맨드라인에서 지원되는 플랫폼 목록을 가져오려면 인식할 수 없는 플랫폼으로 내보내기만 시도하면 구성에서 지원하는 플랫폼의 전체 목록이 표시됩니다.


디버그 버전의 게임을 출력하기 위해서 -export_debug 스위치를 -export 대신 사용하세요. 매개 변수 사용은 똑같습니다.



스크립트 실행


커맨드라인에서 간단한 .gd 스크립트를 실행할 수 있습니다. 이 특징은 큰 프로젝트에서 에셋의 배치 변환 또는 사용자 가져오기/내보내기에 유용합니다.


스크립트는 씬 트리나 메인루프에서 상속되어야 합니다.


어떻게 작동하는 지에 대해 간단한 예입니다 :


#sayhello.gd
extends SceneTree

func _init():
    print("Hello!")
    quit()


그리고 어떻게 실행하는 지에 대한 예입니다 :


user@host:~/newgame$ godot -s sayhello.gd
Hello!


만약 engine.cfg가 경로에 없다면, 현재 경로가 현재 작업 경로로 가정될 것입니다(-path가 지정되지 않은 경우).