자바스크립트를 활성화 해주세요

d053 Windows에서 Golang으로 게임 개발하기 최단설정

 ·  ☕ 4 min read

go 언어로 빌드해서 실행한 화면입니다.

d053_sdl2_ep7_running.png

https://youtube.com/results?search_query=making+game+with+golang 와 같은 youtube에서 golang으로 게임을 작성하는 예제를 보시고, ‘나도 해봐야지’ 하고 https://github.com/veandco/go-sdl2 에 들어가 설치하는 방법을 보면, 일단 할 마음이 접혀 버립니다. 윈도우즈에서 SDL2설치는 ‘알아서 하세요’식으로 진행하고 있고, 매뉴얼을 보면 매우 어렵게 설명되어 있으니까요.

맥에서의 설치는 간단합니다만, 윈도우즈에서 gcc를 돌려야 한다니, 경험이 없다면 현기증부터 날 수도 있습니다.

하지만, 간단하게 설치하는 방법이 있습니다. 가보실까요.

TL;TD;

요지는 다음과 같습니다.
go-sdl2를 사용합니다. windows에서 설정하는 것은 다른 OS에서 하는 것보다 좀 번거롭게 설명되어 있는 편인데, 원리만 알면 크게 어렵지 않습니다.

  • make, gcc 가 사용가능해야 합니다.
    • scoop으로 msys2를 설치하는 것으로 해결할 수 있습니다.
    • 일반 cmd창에서도 그냥 실행가능하도록 하려면, Path 환경변수를 손봐야 합니다.
  • sdl2 라이브러가 설치되어야 합니다.
    • scoop 으로 sdl2를 설치하는 것으로 해결할 수 있습니다.
  • go-sdl2/sdl 모듈이 설치되어야 합니다.
    • go get github.com/veandco/go-sdl2/sdl 하시면 되는데, 해보시면 #include <SDL2/SDL.h>에서 파일 읽기 에러가 나옵니다
    • msys2아래에는 mingw64 가 있고 include와 lib 디렉토리가 있는데, 그 안에 해당파일이 없어서 그렇습니다.
    • %userprofile%\scoop\apps\sdl2에 필요한 파일들이 있을겁니다. 그걸 mingw64의 해당 디렉토리로 복사하세요
    • 다시 go get github.com/veandco/go-sdl2/sdl를 실행하면 모듈이 설치가 됩니다.

gcc, make 설치

혹시 strawberry perl이라던지, 몇몇 gnu 패키지를 설치해서 사용중이시라면 mingw64등을 설치하는 경우가 있어서, 혹시 이미 설치되어 있는 지 확인해보고 진행해 주세요.

scoop으로 msys2를 설치해서 해결합니다. 이 패키지는 다운로드에 시간이 오래 걸릴 수도 있습니다.

scoop으로 설치하신 후에는 msys2를 한 번 실행하라는 메시지가 나옵니다.

scoop install msys2
msys2

d053_msys2_installation.png

네, msys2를 설치했습니다. 그런데, 디폴트로 설치한 msys2에는 gcc가 없습니다. 그래서 pacman으로 설치해줍니다. pacman은 아치리눅스 계열에서 사용하는 표준 패키지 관리 프로그램입니다. 확실히 MSys2는 애초에 소스컴파일 하는 방식의 설치인 FreeBSD보다, 필요한 패키지만 바이너리설치하는 Arch Linux와 가까워 보이긴 합니다.

pacman -S mingw-w64-x86_64-toolchain

d053_msys2_gcc_installation.png

저는 default로 all 을 선택했습니다. 후에 환경변수 잡을 때, 주의해야 하는 부분이, default로 all로 선택하면 여기에도 python이나 perl이 설치됩니다. 혹시 scoop으로 python이나 miniconda3를 설치하셨다면, path의 순서에 주의하셔야 합니다.

  • 시스템환경변수쪽이 유저환경변수보다 우선합니다.
    • 필요하다면 유저환경변수에 등록해주세요.

그 다음은 msys2를 실행하지 않아도 gcc, make등을 실행할 수 있도록 환경변수의 Path에 다음의 3개를 넣어줍니다.

  • C:\Users\Administrator\scoop\apps\msys2\current
    • msys2.exe나 mingw64.exe같은 프로그램이 있습니다.
  • C:\Users\Administrator\scoop\apps\msys2\current\usr\bin
    • pacman 같은 프로그램이 있습니다.
  • C:\Users\Administrator\scoop\apps\msys2\current\mingw64\bin
    • gcc나 make 같은 프로그램이 있습니다.
      를 넣어줍니다.

이렇게 해두면 그냥 cmd창 열어서 c 프로그램 코드를 빌드하는 것도 가능해져요.

팩맨 명령어의 옵션은 외우는 것을 포기하는 것이 편합니다만, 간단히 설명하면 다음과 같습니다.

  • pactree mingw-w64-x86_64-gdb
    • dependency 보기
  • pacman -R filezilla
    • 설치된 패키지 지우기
  • pacman -Rcns filezilla
    • 설치된 패키지와 dependency 지우기

d053_msys2_environment.png

혹시 입니다만, 혹시 나중에라도 다른 버전의 gcc나 make의 path가 엉키지 않도록 주의해 주세요.
다른 프로그램에서 설치한 make, gcc가 Path에 먼저 잡히게 되어 있어서, 참조하는 include나 lib에 문제가 생기면, go build가 실패할 수도 있습니다.

sdl2 라이브러리 설치

scoop install sdl2

또는 http://libsdl.org/download-2.0.php 에서 직접 다운로드 받을 수도 있습니다.

그리고 sdl2에 있는 include와 lib의 내용을 msys2의 mingw64 아래의 같은 이름의 폴더에 복사해줍니다.

go-sdl2/sdl 모듈 설치

D:\go-sdl>go get github.com/veandco/go-sdl2/sdl
go: found github.com/veandco/go-sdl2/sdl in github.com/veandco/go-sdl2 v0.4.5

Optional sdl2 패키지

여기에서 library를 다운받으실 수 있습니다.

그리고 go module 설치 코드는 다음과 같습니다.

  • go get -v github.com/veandco/go-sdl2/img
  • go get -v github.com/veandco/go-sdl2/mix
  • go get -v github.com/veandco/go-sdl2/ttf
  • go get -v github.com/veandco/go-sdl2/gfx

테스트 게임 프로젝트

D:\>git clone https://github.com/velovix/gaming-in-go
Cloning into 'gaming-in-go'...
remote: Enumerating objects: 98, done.
remote: Total 98 (delta 0), reused 0 (delta 0), pack-reused 98
Receiving objects: 100% (98/98), 1.00 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (40/40), done.

D:\>cd gaming-in-go

D:\gaming-in-go>go mod vendor
go: downloading github.com/veandco/go-sdl2 v0.3.3

vscode로 열어본 테스트코드입니다. intellisense도 잘 나옵니다.
d053_sdl2_vscode_intellisense.png

자 go build 해서 실행해 보세요.

아. 런터임인 dll이 같은 디렉토리에 있어야 합니다.

d053_sdl2_ep7_running.png

Ref

공유하기

tkim
글쓴이
tkim
Software Engineer