PlaydateKit Logo

PlaydateKit

PlaydateKit 为 Playdate C API 提供了易于使用的 Swift 绑定。PlaydateKit 旨在尽可能地“Swift 化”,用可抛出异常的函数替换错误指针,尽可能避免使用指针和内存管理,并为所有函数添加了文档注释(从 Playdate SDK 文档中复制)。

状态

PlaydateKit 提供了(几乎)完整的 Playdate C API 覆盖。 PlaydateKit 为某些值(Sprite、Bitmap、FileHandle 等)添加了包装类型,这些类型自动管理资源的分配/释放。 虽然我已尝试密切遵循 C API 规范,但其中大部分都未经测试,因此如果您遇到意外问题或无法使用 Swift API 执行某些操作,请打开一个 issue!

目前,以下 API 部分已实现

用法

有关如何开始使用 PlaydateKit 创建游戏的详细说明和文档,请参阅此处

概要

  1. 安装一个支持嵌入式实验特性的最新 nightly Swift 工具链。
  2. 安装 Playdate SDK
  3. 使用 PlaydateKitTemplate 模板创建一个新的存储库。
  4. 使用 Xcode 在模拟器中直接构建和运行,或使用命令 swift package pdc 进行构建。 使用 swift package pdc 构建时,构建好的 pdx 游戏文件将位于 .build/plugins/PDCPlugin/outputs/PlaydateKitTemplate.pdx,并且可以在 Playdate 模拟器中打开。

您的 PlaydateGame 对象管理游戏生命周期,接收诸如 gameWillPausedeviceWillSleep 之类的事件。

import PlaydateKit

final class Game: PlaydateGame {
    init() {
        System.addCheckmarkMenuItem(title: "check me") { isChecked in
            print(isChecked ? "checked!" : "not checked")
        }
    }

    func update() -> Bool {
        System.drawFPS()
        return true
    }

    func gameWillPause() {
        print("Paused!")
    }
}

贡献

我很高兴接受对这个项目的贡献,无论是错误修复、实现缺失的功能还是打开一个 issue。 请尽量遵循项目中现有的约定/风格。

如果您使用 PlaydateKit 创建了一个游戏,并且希望在此处展示它,请打开一个 issue 或 pull request! 如果您想重制一个复古游戏或创建一个新的游戏来展示 PlaydateKit 的功能,请随时在 Examples/ 目录中添加一个示例游戏。

致谢

PlaydateKit 的灵感来自 @rauhulswift-playdate-examples 上所做的出色工作,没有他们的工作,PlaydateKit 是不可能实现的。 具体来说,PlaydateKit 的创建源于 swift-playdate-examples 仓库中的说明

它不打算成为一个全功能的 Playdate SDK,所以请不要提交 PR 来将 Playdate Swift 覆盖扩展到新的领域。