π
Palico Engine: Metal-Based Game Engine in Swift
Implement a game engine on macOS using Metal API. Still in development. Currently I am working on a more capable ECS :)
Name Selection:
- Palico - It is a cat-like combat companion in Monster Hunter!
- Moth in MothECS - It refers to new players in Sky. Explanation is here!
Palico Engine Sprint Board on Jira (need permission request). Currently there are 54 issues in total!
π§
Install & Usage
# Clone
git clone https://github.com/forkercat/PalicoEngine.git
cd PalicoEngine
# Compile
swift build
# Run
swift run Editor
π»
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/SwiftImGui.git", .branch("update-1.86-docking")), // by @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:
β
Features
To be added!
π₯Ί
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!
- Metal by Tutorial by Caroline Begbie & Marius Horga
- ImGui on GitHub: ocornut/imgui, cimgui/cimgui, ctreffs/SwiftImGui
- More to be added!