Reef is a 0-dependency, renderer-agnostic IMGUI library that supports dynamic and flexible layout rules comparable to typical retained-mode GUIs. This is an alpha API under development as a replacement for Swordfish's currently implemented Dear ImGui-based UI implementation.
Shoal is a modular, and mod-friendly, application host that powers Swordfish. This provides Dependency Injection, containerization, C# scripting, and a standardized module system which implicitly provides modding support to applications. Applications are built from one or more modules themselves, and so are effectively "mods" of Shoal themselves.
This is a package that provides msbuild logic for building and publishing Shoal projects, allowing them to pull in projects and packages as modules in their build outputs. This helps to centralize and simplify the process of getting modules bundled into apps.
This is the Shoal module for the engine itself. This implements all engine-specific and visual functionality such as rendering, ECS systems, input, physics, and UI.
This is an API for compilation tooling that provides types for lexing, linting, and parsing. This will eventually provide implementations for C# scripting used by Shoal and Swordfish.
This is a module for Swordfish which is used for experimenting and showcasing some engine capabilities. It is considered to be a sandbox more than a tech demo at this time. This changes often, can be messy, and regularly includes in-preview engine capabilities.
This is a 0-dependency, engine-agnostic API for a struct-based Entity-Component-System implementation which is used by Swordfish.
This is a module for Swordfish which provides a visual editor and tooling for developing with Swordfish. This is a strong use-case and showcase of Swordfish and Shoal's modularity; this module can be dropped into any Swordfish-based application to get access to developer tooling. At this time it is fairly simple and acts more as a viewer of what is going on within the engine.
This is a light API that provides utilities for working with specific tools, libraries, or resources, such as SQL and FontAwesome.
This is a simple application for launching Swordfish modules. By default, building the solution bundles the Engine, Demo, and Editor into the launcher. This is used for developer and testing, and acts as a simple example of building an application entry-point for Swordfish.
This is an engine-agnostic API for various types, services, and utilities used by Swordfish and some adjacent projects. This is where shared, or generally useful, APIs are placed which are not specific to the engine itself. This is useful for anything being integrated into Swordfish which does not want to take in a dependency on the engine or its own dependencies.
Needlefish (My binary serializer & format) https://github.com/ChaseHuegel/needlefish
Currents / CRNT (My UDP protocol) https://github.com/ChaseHuegel/Currents
Silk.NET (OpenGL and ImGui wrappers) https://github.com/dotnet/Silk.NET
ImageSharp (Image loading) https://github.com/SixLabors/ImageSharp
glTF2Loader (GLTF parsing) https://github.com/KhronosGroup/glTF-CSharp-Loader
DryIoc (DI) https://github.com/dadhi/DryIoc
Tomlet (TOML files) https://github.com/SamboyCoding/Tomlet
JoltPhysicsSharp (Jolt Physics C# bindings) https://github.com/amerkoleci/JoltPhysicsSharp/tree/main
msdf-atlas-gen (font atlases) https://github.com/Chlumsky/msdf-atlas-gen
Swordfish is on V3 and underwent a full rewrite from V2 to better support modularity and extensibility, as well as decouple from tight dependencies on specific frameworks and APIs. This new version is an ongoing effort and the progress is tracked here.
- Upgrade to NET 8.0
- Multithreaded focus
- Dependency injection focus
- Localization support
- Strong file parsing and import support
- Command/CLI APIs
- Entity Component System (ECS)
- Physics
- 3D
- 2D
- UI
- 2D
- 3D
- File support
- Visual editor
- Renderer
- Particles
- Lighting
- Shadows
- Ambient
- Directional
- Point
- Spot
- 3D
- OpenGL
- Vulkan
- 2D
- OpenGL
- Vulkan
- Shaders
- Shader lang
- Parser
- Lexer
- Linter
- Compiler
- Built-in PBR
- Built-in diffuse
- OpenGL support
- Vulkan support
- Shader lang
- Serialization via Needlefish format
- Compressed binary format
- Schema definition lang
- Code generator
- UDP support via Currents (CRNT) protocol
- RUDP support via Currents (CRNT) protocol
- TCP support
- ECS integration
- DLL modules
- Module manifests & configuration
- Virtual File System
- Scripting
- Parser
- Lexer
- Linter
- Compiler
- Project generation
- Project management
- Visual scripting
- File Browser
- Hierarchy
- Gizmos
- VFX editor
- Inspector
- Read
- Write
- Profiler
- Data collection & logging
- Viewer
- Logging
- Log files
- Developer console
- Command support