背景與開發環境
因為手邊目前僅有一台老舊的 Acer 筆電,為了在硬體資源受限的情況下維持高效的開發節奏,我採用了「在 WSL (Linux) 環境中撰寫程式碼,並編譯為 Windows 原生執行檔」的開發策略。
這種方式讓我既能享受 Linux 強大且靈活的終端機與開發工具鏈(如 Git, Docker),又能直接在 Windows 主機上測試最終產物。
以下是我建立第一個 Go 語言 2D 遊戲(使用 Ebitengine)的環境建置與測試過程記錄。
Step 1: 在 WSL 安裝 Golang 環境
首先,在 WSL 的終端機中下載並安裝 Go 1.22.2 版本,並設定環境變數。
# 下載 Go 安裝包
wget [https://go.dev/dl/go1.22.2.linux-amd64.tar.gz](https://go.dev/dl/go1.22.2.linux-amd64.tar.gz)
# 移除舊版本並解壓縮新版本至 /usr/local
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
# 清理安裝包
rm go1.22.2.linux-amd64.tar.gz
# 將 Go 路徑加入環境變數
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
# 重新載入設定
source ~/.bashrc
# 驗證安裝結果
go version
# 預期輸出: go version go1.22.2 linux/amd64
Step 2: 建立專案與初始化模組
建立遊戲專案目錄,初始化 Git 數據庫與 Go Modules,並下載開源的 2D 遊戲引擎 Ebitengine。
# 建立並進入專案資料夾
mkdir -p ~/game_projects/test_game
cd ~/game_projects/test_game
# 初始化 Git 與 Go Mod
git init
go mod init test_game
# 取得 ebiten 遊戲引擎套件
go get [github.com/hajimehoshi/ebiten/v2](https://github.com/hajimehoshi/ebiten/v2)
Step 3: 撰寫遊戲主程式架構
建立 main.go 檔案。這是一個非常基礎的 Ebiten 遊戲迴圈(Game Loop)架構,會在畫面上填滿深綠色背景,並印出測試文字。
package main
import (
"image/color"
"log"
"[github.com/hajimehoshi/ebiten/v2](https://github.com/hajimehoshi/ebiten/v2)"
"[github.com/hajimehoshi/ebiten/v2/ebitenutil](https://github.com/hajimehoshi/ebiten/v2/ebitenutil)"
)
// Game 實作 ebiten.Game 介面
type Game struct{}
// Update 處理遊戲邏輯更新
func (g *Game) Update() error {
return nil
}
// Draw 處理畫面渲染
func (g *Game) Draw(screen *ebiten.Image) {
// 填滿背景顏色
screen.Fill(color.RGBA{0, 100, 0, 255})
// 在畫面上印出 Debug 資訊
ebitenutil.DebugPrint(screen, "Simulation Ready!\nEngine: Ebitengine\nRunning on Native Windows!")
}
// Layout 定義遊戲視窗尺寸
func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {
return 640, 480
}
func main() {
// 設定視窗大小與標題
ebiten.SetWindowSize(640, 480)
ebiten.SetWindowTitle("My Go Game")
// 啟動遊戲
if err := ebiten.RunGame(&Game{}); err != nil {
log.Fatal(err)
}
}
Step 4: 撰寫 Makefile 自動化編譯
為了方便後續開發,我寫了一個 Makefile。其中最關鍵的是 build 指令裡的 GOOS=windows 參數,這能讓 Go 編譯器在 Linux 環境下直接打包出 Windows 可執行的 .exe 檔案。
建立 Makefile 檔案:
.PHONY: run build clean
run: build
./game.exe
build:
# 進行交叉編譯,關閉 CGO,指定目標作業系統為 Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o game.exe main.go
clean:
rm -f game.exe
Step 5: 編譯與執行
最後,只需要在終端機輸入一行指令,即可完成編譯並直接在 Windows 中呼叫執行檔彈出遊戲視窗!
make run