기본 콘텐츠로 건너뛰기

godot-rust-vscode 확장 프로그램 설정

godot-rust-vscode 확장 프로그램 설정

이제 VSCode에서 Rust Project를 어떻게 열어야 할지 살펴보자. 어느 폴더에서 프로젝트를 열어야 할지는 개발자 마음대로 해도 된다. 하지만, 이미 앞에서 godot-rust-vscode 확장 프로그램을 설치 했으니 이 확장 프로그램을 이용하기 편한 상태로 프로젝트를 여는 것이 좋을 것 이다.

godot-rust-vscode 확장 프로그램은 사용자가 루트 폴더에서 VSCode를 실행시키는 것이 아닌 root아래에있는 rust폴더에서 VSCode를 실행시키는 것을 가정하고 있으므로, rust 폴더로 이동 후 VSCode를 실행 시킨다.

godot-rust-vscode 환경 설정

VSCode가 열리면 확장 프로그램의 환경 설정이 필요하다. 우선, ctl+. 를 눌러서 설정 화면으로 진입한 후, 설정 검색란에 godot-rust 라고 입력하여 관련 설정만 나타나게 한다. 그러면, 아래 그림처럼 다섯가지 설정만 나타나게 되는데 각각 자신의 시스템에 맞게 설정하면 된다.

godot-rust-vscode 확장 프로그램의 설정화면
하나씩 살펴보자.
  • Target Platform
    이 프로젝트가 어떤 타겟을 대상으로 빌드될지 선택하면 된다. 나는 개발중엔 컴퓨터에서 로컬 빌드를 하면서 진행 할 것 이기 때문에 x86_64-unknown-linux-gnu를 선택 했다. 각자 자신이 원하는 타겟을 설정하면 된다.
  • Target Platform Custom
    위의 옵션에서 custom을 선택했을 경우 여기에 custom target을 적으면 된다.
  • Godot Editor Path
    내 컴퓨터에 설치되어 있는 godot 엔진의 실행파일의 위치와 실행파일명까지 적으면 된다. 내 경우는 환경변수 GODOT_HOME에 godot실행파일의 위치가 들어 있어서, 환경변수를 이용해서 설정했다. 각자 자신이 어느 폴더에 godot파일을 저장해 놓고 사용하는지에 따라 적절하게 설정하면 된다.
  • Godot Project Path
    현재 열려있는 rust 프로젝트와 나란히 있는 godot 프로젝트 파일이 위치한 폴더다. workspaceFolder 에서 상위로 이동 후 godot 폴더를 가리키고 있는 것을 볼 수 있다.
  • Makefile Path
    makefile이 있는 프로젝트 템플릿 루트 폴더를 가르키면 된다. workspaceFolder에서 한단계 상위로 이동한 폴더가 지정되어 있은 것을 볼 수 있다.

Project file 생성

이제 환경설정이 됐으니 관련 프로젝트 파일을 생성해야 한다. ctl+shift+p 를 눌러 VSCode의 명령어 입력창을 연 후 godot-rust 라고 입력해 보자.
godot-rust-vscde 확장 프로그램에서 제공하는 프로젝트 파일 생성 명령
위의 그림처럼 godot-rust: Generate Project Files 라는 메뉴가 나타난다. 이 메뉴를 실행하면 자동으로 launch.json, tasks.json을 적절하게 만들어 준다. 잘 만들어 졌는지 확인하려면, ctl+p 를 누른 후, launch.json 혹은 tasks.json 이라고 입력해서 해당 파일을 열어 보자.
다음과 같이 파일이 작성된 것이 보인다면 정상적으로 프로젝트 파일이 생성 된 것 이다.
위 파일은 launch.json이다. "Debug Game", "Release Game", "Attach to Game" 에 대한 설정이 잘 들어가 있는 것을 확인 할 수 있다. 각각 디버깅, 배포 빌드, 다른 프로세스에 attach 하는 용도로 사용하면 된다.
위 파일은 tasks.json이다. VSCode에서 Run Tasks를 통해 직접 실행시키거나, 다른 task에서 실행 할 수 있는 작업모음이다. 위에 있는 launch.json에서도 이 task에 있는 "godot-rust: Build Debug"를 먼저 실행 시키고 lldb를 이용해 디버깅을 시작하는 것을 볼 수 있다. "godot-rust:"로 시작되는 다섯가지 task가 잘 생성 된 것을 확인 할 수 있다.

실행 및 디버깅

이제 실행 할 준비가 다 됐으니 실행만 해 보면 된다. 디버그 메뉴를 열고 "실행 및 디버그" 선택창에서 "Debug Game"을 선택 한 후 실행 시켜보자. 간단하게 F5를 눌러도 된다. 잘 실행이 된다면, 마지막으로 브레이크 포인트가 잘 설정되는지 확인해 보자.
game.rs 파일을 열고, _process 함수의 내부에서 게속 메세지를 찍고 있는 44라인 godot_print! 문에 브레이크 포인트를 설정해 보자. 브레이크 포인트를 설정하는 방법은, 에디터의 라인넘버 왼쪽에 마우스를 가져다 대면 작은 점이 생기는데, 이때 클릭 하면 된다. 붉은 점이 생겼으면 이제 다시 F5를 눌러 디버깅을 시작 해 보자. 게임 실행창이 생겼다가 브레이크 포인트에 멈추면서 VSCode가 포그라운드로 나오면서 아까 브레이크 포인트를 설정한 44라인에 멈춰 있고, 왼쪽 파일탐색기가 있던 곳에 변수, call stack등이 보인다면 브레이크 포인트까지 잘 설정 된 것 이다.
debugger 화면

댓글

이 블로그의 인기 게시물

Godot-Rust 개발환경 설정

Godot-Rust 개발환경 설정 우선은 개발환경을 설치해 보면서 하나씩 배워보면 좋을 것 이다. 공식 홈페이지에 Godot 과 Rust 개발환경을 설정하는 방법이 자세히 나와있으니 각각 따라서 잘 설치하면 되지만, Godot과 Rust를 동시에 사용하기 위한 내용을 포함해 다시 정리해 본다. 앞선 게시물에서 Godot에서 C/C++ 바인딩을 위해 GDNative와 헤더를 제공한다고 적었는데, 이를 통해 Rust도 Godot과 바인딩해서 사용할 수 있다. 직접 GDNative와 바인딩 하는 것을 할 수도 있겠지만, 이미 godot-rust 오픈소스 프로젝트에서 안정적으로 바인딩된 상태이므로 이 프로젝트를 사용하면 다시 바인딩 할 필요없이 제공되는 gdnative crate를 사용함으로써 쉽게 Rust를 이용해 Godot 개발을 할 수 있다. Godot Engine Godot 공식 다운로드 페이지 에서 자신의 OS에 해당하는 이미지를 받아서 적절한 폴더(예들들어, ~/Godot/)를 만들고 집어 넣는다. 어느곳 에서도 실행 할 수 있도록, 환경변수에 path를 설정한다. The godot-rust Book  페이지에는 3.2.3-stable을 지원하고 있다고 되어 있는데, 이는 cargo의 dependency에 gdnative crate 버젼을 0.9.3 으로 명시했을때고, 그렇지 않고 github의 주소를 적으면, 3.4.2 (이 글을 작성하는 최신버전) 까지도 문제없이 동작한다. Rust rustup  을 방문하면, rust 에서 공식적으로 제공하는 설치 이미지를 통해 Rust toolcahin을 설치 할 수 있다. (Ubuntu인 경우 curl 을 통해 받아서 설치됨) 설치 후 다음과 같은 명령어를 통해 잘 설치 되었는지 확인할 수 있다. LLVM godot-rust 는 LLVM에 기반한 bindgen을 기반해 바인딩 되어 있기 때문에, LLVM 바이너리를 설치해야 한다. 설치 후 다음 명령을 통해 설치가 잘 되어 있는지 확인 할 수 있다....

Dodge The Creep - [2]

Dodge The Creep - [2] 템플릿 정리하기 Template 정리 본격적으로 tutorial 을 따라하기 전에 우선 프로젝트 설정을 위해 복사해 놓은 template code를 정리할 필요가 있다. 현재 이 template 코드에는 삼차원 큐브가 회전하고 있는 상태이고, rust code의 경우 이 글을 작성하고 있는 현재 시점에서는 에러를 포함하고 있기도 하다. Godot Project Godot 엔진 에디터를 시작해서, 만들어 놓은 프로젝트 폴더의 godot 폴더 안에 있는 project.godot 파일을 열어서 프로젝트를 로딩한다. 왼쪽 하단의 FileSystem 영역을 보면 폴더 구조로 resource들이 나열되어 있는데, res://scenes 아래에 Game.tscn과 SpinningCube.tscn 두개의 scene 파일이 들어 있는 것이 보일 것 이다.  여기서, SpinningCube.tscn은 불필요 하기 때문에 지운다. 그리고나서, Game.tscn 파일을 열어보면 왼쪽 상단 Scene 텝에 scene에 포함된 노드들이 보이는데, 루트노드는 Spatial 타입의 노드이고, 그 밑으로 Camera 와 SpinningCube 노드들이 붙어 있는 것이 보일 것 이다.  우선 Camera와 SpinningCube 노드들워준 후, Game 노드의 타입을 Node2D 타입으로 변경 해 준다. 이제 Godot project 의 정리는 완료 되었다. Rust project 이제 Rust project를 정리해 볼 차례다. 프로젝트 폴더 아래 rust 폴더를 VSCode로 열어보자. 왼쪽 파일 탐색기를 보면, src 폴더아래에 세개의 .rs 파일이 존재 하는 것을 볼 수 있다. 이 중, spinnig_cube.rs를 지우고, lib.rs 안에서 spinning_cube.rs 파일을 호출 하는 부분들을 지워주자. lib.rs 파일을 열면, spinnig_cube 모듈을 로딩 하는 부분과, Godot에 노출하는 클래스로 등록하는 부분...

[C#] 자동으로 특정 팝업창 닫기

[C#] 자동으로 특정 팝업창 닫기 Windows UI 테스트 혹은 자동화 작업을 할 때, 특정 윈도우창 혹은 팝업창이 뜨는 것을 인지 하고, 내용을 얻거나 버튼을 누르려면,  System.Windows.Automation 의 AddAutomationEventHandler 를 사용하면 된다. Hook 설정 4 번째 라인에서 WindowOpendEvent를 설정 함 으로써, 창이 열릴 때 hook이 걸린다. 7 번째 라인에서 event handler를 등록 한다. Event Handler 설정 8 번째 라인에서 element의 이름이 내가 찾는 이름인지 비교한다. 15번째 라인에서 팝업창의 내용을 출력 한다. 22번째 라인에서 팝업창의 자식 element중에 "N" 문자가 포함된 것 즉, 아니오 버튼을 찾는다. 24~25번째 라인에서 버튼을 누르는 동작을 수행 한다.