跳至主要內容

GBDK 环境搭建

Lazy_V原创游戏开发游戏开发复古GameBoyGBDK大约 4 分钟

GBDK 是开源工具,我们可以在 GitHub 上直接下载最新的 Release 版本。

我最近习惯使用 MacOS,这里我首先介绍如何在 MacOS 上搭建 GBDK 环境,并成功编译 Hello world 程序。Linux 和 MacOS 是一样的步骤。Windows 也是类似的步骤,如果有问题,欢迎随时在评论区留言。

下载 GBDK

撰写本文时,GBDK 的稳定版本为 v4.1.1,点击直接下载open in new window

你也可以访问这里open in new window下载最新的版本。

文件结构介绍

解压下载得到的压缩包后,我们得到一个名为 gbdk 的文件夹,其中的文件结构如下:

  • bin/ (包含所有预编译好的可执行程序)
  • include/ (包含相关头文件)
  • lib/ (包含相关库文件)
  • examples/ (包含提供的样例)
  • licenses/ (包含所有许可证)
  • gbdk_manual.pdf (gbdk手册)
  • sdccman.pdf (sdcc手册)
  • ChangeLog (更新日志)
  • README (自述文件)

接下来我们需要把 gbdk 文件夹移动到一个合适的位置,并添加环境变量。

移动 gbdk 文件夹,并添加相关的环境变量

可以把该文件夹拷贝到 /opt/gbdk

sudo cp -r gbdk /opt/gbdk

然后设置相关的环境变量。

提示

为了永久生效,可以编辑 /etc/profile 或者你所使用的 shell 配置文件:

/etc/profile
echo "export GBDKDIR=/opt/gbdk/" | sudo tee -a /etc/profile

相关信息

GBDKDIR 系统环境变量是必须设置的内容,除此之外,你可以选择将 bin 目录设置到 PATH 变量中,这样我们可以更方便的使用一些预编译的可执行程序。

准备好为 GBDK 而修正的 GBTD 与 GBMB

GBTD (GameBoy Tile Designer) 和 GBMB (GameBoy Map Builder) 分别用于瓦块设计与地图编辑。前者可以绘制精灵和瓦块,后者使用前者已绘制好的瓦块进行地图的编辑。

我们后续会用到这两个工具,这里我们先下载准备好。点击下载open in new window

最新版本在这个页面open in new window

下载好并解压后,我们会得到 GBTD_GBMB_release 文件夹,里面包括 GBTD 文件夹和 GBMB 文件夹。

我们在 gbdk 文件夹下新建 tools 目录,然后将解压后得到的 GBTD 目录和 GBMB 目录拷贝到 tools 目录。

MacOS 和 Linux 用户可以使用 shell 来快速操作:

sudo mkdir -p $GBDKDIR/tools
cd GBTD_GBMB_release
sudo cp -r GBTD $GBDKDIR/tools/
sudo cp -r GBMB $GBDKDIR/tools/

重点注意

此时可能部分 ini 配置文件不具备相应的权限,我们直接设置这些文件的权限掩码为 777:

sudo chmod 777 $GBDKDIR/tools/**/*.ini

提示

MacOS 和 Linux 需要准备 Wine 环境:

Wine (Wine is not an emulator, 递归式命名),可以在 MacOS 和 Linux 上,通过本地库,链接 DLL 的形式,运行 Windows 应用。

MacOS

如果没有安装 Homebrew 的话,需要先安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

然后使用 brew 命令,安装 Wine-CrossOver:

brew install --formula gcenx/wine/winetricks
brew install --cask --no-quarantine gcenx/wine/wine-crossover

此时 Wine-CrossOver 准备就绪,后面会用到它。

MacOS 和 Linux 使用 Wine 运行 GBTD 和 GBMB 的后续流程

上面这些都配置好后,我们就可以这样运行 GBTD 和 GBMB:

wine $GBDKDIR/tools/GBTD/gbtd.exe
wine $GBDKDIR/tools/GBMB/gbmb.exe

觉得麻烦,建议使用 alias 命令创建别名,建议写入到 /etc/profile,当然也可以跟上面配置环境变量一样,写入到 shell 的配置文件中:

# 添加到 /etc/profile
echo "alias gbtd='wine $GBDKDIR/tools/GBTD/gbtd.exe'" | sudo tee -a /etc/profile
echo "alias gbmb='wine $GBDKDIR/tools/GBMB/gbmb.exe'" | sudo tee -a /etc/profile

# 添加到 ~/.zshrc
echo "alias gbtd='wine $GBDKDIR/tools/GBTD/gbtd.exe'" | sudo tee -a ~/.zshrc
echo "alias gbmb='wine $GBDKDIR/tools/GBMB/gbmb.exe'" | sudo tee -a ~/.zshrc

# 添加到 ~/.bashrc
echo "alias gbtd='wine $GBDKDIR/tools/GBTD/gbtd.exe'" | sudo tee -a ~/.bashrc
echo "alias gbmb='wine $GBDKDIR/tools/GBMB/gbmb.exe'" | sudo tee -a ~/.bashrc

准备好模拟器 - SameBoy

由于我使用 MacOS,我考虑使用开源、跨平台的模拟器:SameBoyopen in new window,它功能丰富,支持调试,方便我们开发。

打开它的下载页面,下载对应的版本即可:https://sameboy.github.io/downloads/

这里我下载 MacOS 最新 v0.15.8 版open in new window

解压后是一个 app,拖到 应用程序 (英文系统中是 Applications) 中即可完成安装。

Hello, world!

接下来编写我们第一个程序:在 GameBoy 的屏幕里打印一行 "Hello,world!"

编写源码

helloworld.c:

#include <gb/gb.h>
#include <stdio.h>

void main()
{
    printf("HELLO, WORLD!");
}

命令行编译

helloworld.c 的同级目录打开命令行,并执行:

$GBDKDIR/bin/lcc -Wa-l -Wl-m -Wl-j -o helloworld.gb helloworld.c

执行结束后,会发现目录下编译得到了 helloworld.gb,也就是我们熟悉的 ROM 文件啦,放到模拟器可以直接运行。

用 SameBoy 打开,看看效果吧

Hello, world!
Hello, world!

提示

可以将 SameBoy 也使用 alias 取个别名:

# 添加到 /etc/profile
echo "alias sameboy=/Applications/SameBoy.app/Contents/MacOS/SameBoy" | sudo tee -a /etc/profile

# 添加到 ~/.zshrc
echo "alias sameboy=/Applications/SameBoy.app/Contents/MacOS/SameBoy" | sudo tee -a ~/.zshrc

# 添加到 ~/.bashrc
echo "alias sameboy=/Applications/SameBoy.app/Contents/MacOS/SameBoy" | sudo tee -a ~/.bashrc

然后我们就可以使用

sameboy helloworld.gb

这种形式直接运行游戏了。

恭喜,到这里,你已经入门了!🎉🎉🎉