Swift 中基于 Metal 的游戏引擎

Palico 引擎:Swift 中基于金属的游戏引擎?

苹果操作系统
许可证

平台兼容性
快速版本兼容性

使用 Metal API 在 macOS 上实现游戏引擎。仍在开发中。目前,我正在研究功能更强大的实体-组件-系统MothECS

帕利科引擎截图

Palico – It is a cat-like combat companion in Monster Hunter!

This is Palico! Credits: Francesco

Palico Engine’s Sprint Board on Jira (need permission request). Currently there are 65 issues in total!

? Install & Run

# Clone
git clone https://github.com/forkercat/PalicoEngine.git
cd PalicoEngine

# Compile
swift build

# Run
swift run Editor

? User Guide

Mouse Controls:

  • Command + Left: Rotate camera
  • Right: Look around
  • Middle: Pan
  • Scroll: Zoom in/out

Keyboard Controls:

  • Tab: Select next in-scene object
  • F: Focus on object
  • Q: No action
  • W: Translate
  • E: Rotate
  • R: Scale

Create GameObject:

Palico Engine Screenshot

? Dependencies

dependencies: [
    .package(url: "https://github.com/forkercat/OhMyLog.git", .branch("main")),
    .package(url: "https://github.com/forkercat/MathLib.git", .branch("main")),
    .package(url: "https://github.com/forkercat/MothECS.git", .branch("main")),
    .package(url: "https://github.com/forkercat/SwiftImGui.git", .branch("update-1.86-docking")),  // forked from @ctreffs
    .package(url: "https://github.com/forkercat/SwiftImGuizmo.git", .branch("master")),            // forked from @ctreffs
],

Thanks to SwiftImGui by @ctreffs I am able to use ImGui in this application.

I forked the repository and wrapped ImGui v1.86 and added new OSX backend file. Related PRs:

? Future Development

Rendering:

  • Add skybox
  • Add shadow
  • Support PBR
  • Support deferred rendering (render pass has already been setup)

Model:

  • Load 3D models
  • Load textures in models
  • Load animation

Other:

  • Improve MothECS
  • Integrate ImGuizmo
  • Property/Inspector panel
  • Game object selection
  • Scene loading (yaml)
  • Content browser (Asset Panel)

? Reference

Started by following game engine turotial series by TheCherno and wrote implementation in C++. Also check out Hazel Engine repository. It is a great learning resource!

GitHub

点击跳转