[Godot Engine] 우분투 유니티 런처에서 앱 아이콘이 보이지 않을 때

이미지
운영체제가 리눅스 기반인 우분투에서는 고도 엔진이 유니티 런처에서 아래와 같이 고도 엔진 자체 앱 아이콘이 보이지 않고 ? 로만 보이는 이슈가 있었습니다. 물론 실행에는 문제가 없었구요. 그래도 뭔가 찝찝한 마음에 해결했던 과정을 정리해봅니다.


먼저 우분투에는 윈도우의 바로가기 단축 아이콘 같은 기능을 하는데 필요한 desktop 라는 파일이 있네요. 이 파일을 만들어서 유니티 런처에서 확인이 되도록 등록을 위해 applications 폴더에 옮겨주어야 합니다.

godot.desktop 파일을 아래와 같은 내용으로 만들어줍니다. 붉은색 Exec와 Icon 부분은 각자 환경에 따라 다를 것 입니다. 고도 엔진 아이콘의 경우 프로젝트를 새로 만들어서 나오는 것을 사용하셔도 되고 고도 엔진 깃헙에 있는 것을 사용하셔도 됩니다.

[Desktop Entry]
Name=Godot Engine
Comment=Free and Open Source 2D and 3D Game Engine
Terminal=false
Type=Application
Categories=Development;IDE;
Keywords=game;engine;ide;
Exec=/home/wwforever/Godot/Godot_v2.1.4-stable_x11.64
Icon=/home/wwforever/Godot/icon.png


그리고 해당 파일을 /usr/share/applications 또는 /usr/local/share/applications에 옮겨줘야 합니다. 로컬쪽에 옮길때는 최초로 작업하는 부분이라면 applications 폴더 자체가 없으므로 /usr/local/share디렉토리에 폴더를 생성해줍니다.

sudo mkdir applications


그리고 만든 파일이 있는 곳에서 applications로 desktop 파일을 복사 해줍니다.

sudo cp godot.desktop /usr/local/share/applications



이제 유니티 런처에서 키워드로 등록했던 godot나 ide를 입력…

[Godot Engine] 안드로이드 기기 실행 시 스플래쉬 이미지만 깜빡이거나 검은 화면이 나올 때

이미지
고도 엔진을 2.1.2를 사용하다가 2.1.4로 마이그레이션 한 후 안드로이드 실 기기에서 실행시에 아래와 같은 스플래쉬 이미지만 깜빡이거나, 검은 화면이 나오는 이슈가 있었습니다. PC에서 에디터 테스트 환경에서는 이상 없었습니다.



마이그레이션의 경우는 단순히 빌드된 엔진 바이너리 압축본을 풀어서 실행하면 되는 것이기 때문에 딱히 이쪽 문제는 아니었고, 단순히 제가 한가지를 놓친 실수에서 이슈가 발생했네요.


고도의 경우 엔진 바이너리 따로 익스포트(내보내기) 템플릿이 따로 있습니다. 내보내기 템플릿을 설치해줘야 각 플랫폼으로 내보내기를 제대로 할 수 있는데, 2.1.2에서 잘 사용을 하다가 2.1.4에서 아무 생각없이 폰에 넣었더니 이슈가 발생했던거죠.



스샷과 같이 설정 - 내보내기 템플릿 설치에서 다운받은 템플릿, 저의 경우는 Godot_v2.1.4-stable_export_templates.tpz 를 선택해서 설치해주면 됩니다.

[Godot Engine] Unable to write to file xxx.tscn, file in use, locked or lacking permissions.

이미지
고도엔진에서 스크립트 수정 후 저장하는데 아래와 같은 에러가 발생했습니다.

Unable to write to file xxx.tscn, file in use, locked or lacking permissions.


제 경우 재현 상황은 아래와 같습니다.

1. 스크립트가 에러가 발생 될 상황이었음(extends Node2Dt로 인해)
2. F5를 눌러 프로젝트를 실행해서 Parse Error: unknown class: 'Node2Dt' 가 발생
3. 소스를 수정 후 Ctrl + S를 눌러 저장을 시도 했을 때 로드 에러가 발생
4. 씬 실행을 정지(F8) 한 후 파일을 저장하면 이상 없음

이렇습니다. 조금씩 적응중인 고도 엔진이네요.

[Godot Engine] Parser Error: expected string constant as 'preload' argument.

고도 엔진으로 스크립트를 작성중 아래와 같은 에러가 발생했습니다.

expected string constant as 'preload' argument.

for i in range(ImageCount):
var spr = Sprite.new()
var imageName = "image" + str(i)
var resName = "res://image/" + imageName + ".png"
spr.set_texture(preload(resName))

스프라이트 객체를 생성하고 텍스처를 설정해주는 부분에서 preload관련 에러였습니다. 프로젝트 시작할 때 스크립트 컴파일 타임에 preload가 실행이 되서 인수로 문자열 상수를 사용해야하는 것 같네요. preload 대신 load를 사용해주면 됩니다.

https://github.com/godotengine/godot/issues/1758
https://godotengine.org/qa/6142/preload-with-variable-argument
https://godotdevelopers.org/forum/discussion/14486/solved-expected-string-constant-as-preload-argument-am-i-doing-this-right

[Godot Engine] Invalid operands 'String' and 'int' in operator '+'.

Invalid operands 'String' and 'int' in operator '+'.

고도엔진 디버깅중 위와같이 에러가 발생했습니다. 소스를 보면

for i in range(ImageCount):
var spr = Sprite.new()
var imageName = "image" + i

단순히 for 문을 돌면서 imageName을 동적으로 만들어주려고 했던 부분에서 발생했습니다. c#처럼 스트링에 + 연산자로 바로 int형을 지원해주지는 않는 것 같습니다.

var imageName = "image" + str(i)

이렇게 GDScript가 지원하는 str함수를 사용해주면 잘 되네요. GDScript를 정식으로 공부하지 않고 막 짜다보니 이런 에러도 발생하네요.

String str( Variant what, Variant ... )
Convert one or more arguments to strings in the best way possible.

[Godot Engine] 만들어 놓고 방치하고 있던 게임 샘플로 공개합니다.

이미지
약 2년전에 고도 엔진으로 틈틈히 만들어본 짱깽뽀 게임입니다. 리소스를 당시에 어디서 구했는지 기억이 안나네요. 다 만들면 리소스 바꿔서 출시하려고 했는데 출시는 저 멀리 안드로메다로 가버렸네요. 아무튼 사운드는 정말 추억의 짱깽뽀더군요.

아래는 플레이 영상입니다.

허접한 소스이지만 공유합니다. 아래 링크에 있습니다.
https://github.com/WestwoodForever/Rock_Paper_Scissors

고도 엔진 쇼케이스에도 등록이 되었습니다.