Git Product home page Git Product logo

prowl's Introduction

Github top languages GitHub version GitHub license GitHub issues GitHub stars Discord

๐ŸŽฎ An Open Source Unity-like Engine! ๐ŸŽฎ

  1. About The Project
  2. Features
  3. Getting Started
  4. Roadmap
  5. Contributing
  6. Acknowledgments
  7. License
  8. Dependencies
  9. Screenshots

๐Ÿ“ About The Project ๐Ÿ“

Prowl is an open-source, MIT-licensed game engine developed in pure C# in .NET 8, (which surprisingly has no runtime fees believe it or not! ๐Ÿ˜ฎ). It aims to provide a seamless transition for developers familiar with Unity by maintaining a similar API while also following KISS and staying as small and customizable as possible. This engine is intended to be customized to your needs, everything is written to be a "Minimal" Production-Ready Implementation. Ideally, there will be plenty of Modules/Packages to expand on functionality for those who don't want (or are unable) to expand the base engine.

Showcase

โœจ Features โœจ

  • General:

    • Unity-like Editor & Scripting API
    • C# Scripting
    • Gameobject & Component structure
    • .NET 8
    • Dear ImGUI Editor, including ImGuizmo, ImPlot, ImNodes
    • Editor with support for Editor Scripts and Custom Editors
    • Physics (Bepu Physics 2)
      • Colliders: Box, Sphere, Capsule, Cylinder, Mesh Collider
      • Rigidbody-based Character Controller
    • Unity-like Coroutines
    • Playtest directly in Editor
    • ScriptableObjects
    • Projects & Project Settings
    • Unity-like Serializer to create In-Memory Graphs
      • Graph -> Text (System.Text.Json)
      • Graph -> Binary
    • Full 64-bit using Doubles
    • Large World Coordinates Support
      • Camera Relative Rendering
    • Scene System
    • Modular Audio Backend
      • OpenAL
      • Currently only supports .wav files
    • Prefabs
    • Build System - Build to Standalone Application
      • Packed Asset files
    • Node System (A Port of xNode from Unity)
    • CSG (Constructive Solid Geometry) API (No CSG Level Editor Yet)
  • Graphics Rendering:

    • Modular Graphics Backend
      • OpenGL
    • PBR (Physically Based Rendering) using Cook-Torrance BRDF
      • Albedo Map
      • Normal Map
      • Roughness Map
      • Metallic Map
      • Ambient Occclusion Map
      • Emission Map
    • Node-Based Customizable Render Pipelines
    • Deferred Renderer
    • Point, Spot, and Directional Lights
    • Shadow Mapping + Contact Hardening (Variable Penumbra)
    • Post Processing
      • HDR with Tonemapping (Melon, Aces, Reinhard, Uncharted, Filmic)
      • Bokeh Depth of Field
      • Screen Space Reflections
      • Kawase Multi-Pass Bloom
      • Temporal Anti-Aliasing
    • Stochastic Transparency
    • Adjustable Render Resolutions per camera
    • Dedicated Shadow Pass for Shaders
    • Procedural Skybox with Skybox-Blended Fog
    • GPU Skinned Mesh Rendering
    • Skeletal Animations
  • Asset Pipeline:

    • A Powerful Asset Pipeline with a very similar structure to unity
    • Meta Files & Reference by GUID
    • Import Caching
    • Support for Custom Importers
    • Supports many major file formats via ImageMagick, Assimp, etc
    • Sub-Assets, Assets stored inside other assets
    • Dependency Tracking

(back to top)

๐Ÿš€ Getting Started ๐Ÿš€

Getting Prowl up and running is super easy!

Note: There are no official releases yet so you need to download this repository to use Prowl!

Prerequisites

Installation

  1. Clone the repo
  2. Open .sln file with Visual Studio Version 17.8.0+
  3. That's it! ๐Ÿ˜„ ๐ŸŽ‰

(back to top)

๐Ÿ—บ๏ธ Roadmap ๐Ÿ—บ๏ธ

Engine

  • ๐Ÿ› ๏ธ Cross Platform
    • โœ”๏ธ Windows - Fully functional
    • โœ”๏ธ MacOS - ImGUI asserts cause crashes occasionally
    • ๐Ÿ› ๏ธ Linux
    • โŒ Andriod
    • โŒ iOS
    • โŒ Web
  • โŒ UI Engine
  • โŒ VR Support
  • โŒ Navmesh and AI Agents
  • โŒ Networking Solution

Rendering

  • โŒ SSAO, Screen-Space Decals, etc.
  • โŒ Realtime GI
  • โŒ Lightmaps and Light Probes
  • โŒ Cascaded shadow mapping
  • โŒ Particle System
  • โŒ Terrain Engine

Editor

  • โŒ Package Manager (Packages partially implemented)
  • โŒ Animation Tools
  • โŒ Live Collaborative Tools
  • โŒ Visual Scripting
  • โŒ Material Node Editor
  • โŒ 2D Support

See the open issues for a full list of proposed features (and known issues).

(back to top)

๐Ÿค Contributing ๐Ÿค

๐Ÿš€ Welcome to the Prowl community! We're thrilled that you're interested in contributing.

We're not too proud to admit it โ€“ we need your help. ๐Ÿ†˜

Developing a game engine is a colossal task, and we can't do it alone. We need passionate developers, designers, testers, and documentation enthusiasts, people like you to help make Prowl the best it can be. ๐Ÿ’ช

How You Can Contribute

Code Contributions ๐Ÿ’ป

Whether you're a seasoned developer or just getting started, your code contributions are invaluable. We have a list of open issues that you can tackle, or feel free to propose your own improvements.

Bug Reports ๐Ÿ›

Encountered a bug? We want to know! Submit detailed bug reports on our issue tracker to help us squash those pesky bugs.

Feature Requests ๐Ÿ’ก

Have a fantastic idea for a new feature? Share it with us! Open a feature request and let's discuss how we can make Prowl even better.

Spread the Word ๐Ÿ“ฃ

Not a developer? No problem! You can still contribute by spreading the word. Share your experiences with Prowl on social media, blogs, or forums. Let the world know about the exciting things happening here.

Contributor Recognition ๐Ÿ†

We're not just asking for contributors; we're asking for partners in this journey. Every small contribution is a step toward realizing Prowl.

All contributors will be acknowledged in our Acknowledgments section.

Thank you for considering contributing to Prowl. Together, let's build something amazing!

(back to top)

๐Ÿ™ Acknowledgments ๐Ÿ™

  • Hat tip to the creators of Raylib, While we are no longer based upon it, it has shaved off hours of development time getting the engine to a usable state.
  • Some ideas/code have been taken from the amazing 2D Engine Duality.

(back to top)

Contributors ๐ŸŒŸ

License ๐Ÿ“œ

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Dependencies ๐Ÿ“ฆ

Runtime

Editor

(back to top)

๐Ÿ“ธ Screenshots ๐Ÿ“ธ

image

image animations Bokeh Depth of Field Editor image Flight Model image image image

(back to top)

prowl's People

Contributors

10xjosh avatar isaacmarovitz avatar jaggerjo avatar jihadkhawaja avatar kuvrot avatar michaelsakharov avatar paperprototype avatar recore67 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

prowl's Issues

[Editor] Complete Window Overhauls

The windows in the editor are all reasonably hacked together and have kept being bandaged back together during development, they all need to be completely overhauled/rewritten.

  • Hierarchy
  • Inspector
  • Asset Browser
  • SceneView
  • #62
  • Console
  • Project Selection
  • Project Settings

[Rendering] Terrain Engine

Terrain is gonna be an interesting topic for Prowl.

We want Voxel support however regular voxels can be quite expensive, and we also want regular Quadtree terrain for maximum performance.

The idea I'm thinking of now is a Regular quadtree terrain, But with a VoxelSystem that can complement it.
Kinda like Digger PRO for unity, but that can also work independently.

So Essentially two Independent systems but that can work seamlessly together.

Ideally, both systems are flexible and can be rotated/scaled and altered in all the ways you might expect.
It should be possible to do Planets for example with just the Quadtree, Just voxels, or both together.

For now, I think the voxel side should be more Scripting than In Editor, the Terrain will have support built-in you can toggle on.

[AssetPipeline] Sub-Assets

Assets like a Model/Mesh can store Materials, Animations, and possibly more inside of them.
This is already supported, however, we also need a way to access these Sub-Assets.
They need to be treated like any other assets, so they need GUID's assigned and AssetRef needs to be able to Reference them.

[Editor] GPU Object Picking

Render Object Instance ID's to a buffer of 1x1 at the mouse click location.
Essentially a Object ray cast done visually on the GPU to select objects

[Editor] Multi Object Selection

We need to be able to select multiple objects, and Inspector needs a way to render common fields between the selected objects.

[Engine] Build to Standalone

Needs some work on the Asset Database side, specifically, we need Dependencies and Packages working.

Dependencies so when building we can specify the scene to load on startup, which using dependencies can build all the assets that matter and skip everything else. Then we can add a Resources folder to always include in builds.

Packages because those are ZipArchive's, while they are being used for sharing assets between projects could also be reused for a Standalone asset provider. We could support allowing Encryption on the assets to not be able to import them back into the editor, or open with like winrar/7zip.

Mac OS and VS Code while running Prowl.Editor and Prowl.Player

Describe the bug

Prowl.Player on MacOS through VS Code

note: vs code will cache the last "Run and Debug" so go to the sidebar to switch between Prowl.Editor and Prowl.Player before running again

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Prowl.Editor/Program.cs'
  2. Click 'F5' (on mac you hold the fn key then press F5)
    • If you are doing this for the second time you may get an error Build Failure this is because vs code ran Prowl.Editor instead of Prowl.Player '/Users/abdiellopez/Projects/Prowl/Prowl.Editor/Prowl.Editor.csproj' failed to build. Would you like to continue and run the last successful build? if this happens click 'No' -> To Reproduce (from debug menu)
  3. From the options select 'C#'
  4. From the subsequent options select Prowl.Player
  5. See error

To Reproduce (from run and debug menu)

  1. Click 'No' go to the Run and Debug sidebar
  2. Select Prowl.Player
  3. Go back to Program.cs and click 'F5' (on mac you hold the fn key then press F5)
  4. Select C# then Prowl.Player

here is the error

Exception has occurred: CLR/System.DllNotFoundException
An unhandled exception of type 'System.DllNotFoundException' occurred in Prowl.Runtime.dll: 'Unable to load shared library 'cimguizmo' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: 
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo.dylib, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo.dylib' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo.dylib' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo.dylib, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo.dylib' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo.dylib' (no such file)
dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo.dylib, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo.dylib' (no such file), '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo.dylib' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo.dylib, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo.dylib' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo.dylib' (no such file)
dlopen(cimguizmo.dylib, 0x0001): tried: 'cimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OScimguizmo.dylib' (no such file), '/usr/lib/cimguizmo.dylib' (no such file, not in dyld cache), 'cimguizmo.dylib' (no such file), '/usr/local/lib/cimguizmo.dylib' (no such file), '/usr/lib/cimguizmo.dylib' (no such file, not in dyld cache)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo.dylib, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo.dylib' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo.dylib' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo.dylib, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo.dylib' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo.dylib' (no such file)
dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo.dylib, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo.dylib' (no such file), '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo.dylib' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo.dylib, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo.dylib' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo.dylib' (no such file)
dlopen(libcimguizmo.dylib, 0x0001): tried: 'libcimguizmo.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibcimguizmo.dylib' (no such file), '/usr/lib/libcimguizmo.dylib' (no such file, not in dyld cache), 'libcimguizmo.dylib' (no such file), '/usr/local/lib/libcimguizmo.dylib' (no such file), '/usr/lib/libcimguizmo.dylib' (no such file, not in dyld cache)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/cimguizmo' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/cimguizmo' (no such file)
dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo' (no such file), '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/cimguizmo' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/cimguizmo' (no such file)
dlopen(cimguizmo, 0x0001): tried: 'cimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OScimguizmo' (no such file), '/usr/lib/cimguizmo' (no such file, not in dyld cache), 'cimguizmo' (no such file), '/usr/local/lib/cimguizmo' (no such file), '/usr/lib/cimguizmo' (no such file, not in dyld cache)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx/native/libcimguizmo' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/runtimes/osx-arm64/native/libcimguizmo' (no such file)
dlopen(/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo, 0x0001): tried: '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo' (no such file), '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/8.0.0/libcimguizmo' (no such file)
dlopen(/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo, 0x0001): tried: '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo' (no such file), '/Users/abdiellopez/Projects/Prowl/Prowl.Standalone/bin/Debug/net8.0/libcimguizmo' (no such file)
dlopen(libcimguizmo, 0x0001): tried: 'libcimguizmo' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibcimguizmo' (no such file), '/usr/lib/libcimguizmo' (no such file, not in dyld cache), 'libcimguizmo' (no such file), '/usr/local/lib/libcimguizmo' (no such file), '/usr/lib/libcimguizmo' (no such file, not in dyld cache)'
   at Prowl.Runtime.ImGUI.ImGuizmo.ImGuizmoNative.ImGuizmo_SetImGuiContext(IntPtr ctx)
   at Prowl.Runtime.ImGUI.ImGuizmo.ImGuizmo.SetImGuiContext(IntPtr ctx) in /Users/abdiellopez/Projects/Prowl/Prowl.Runtime/ImGUI/ImGuizmo/ImGuizmo.gen.cs:line 246
   at Prowl.Runtime.ImGUI.ImGUIController.Load(Int32 width, Int32 height) in /Users/abdiellopez/Projects/Prowl/Prowl.Runtime/ImGUI/ImGUIController.cs:line 62
   at Prowl.Runtime.Application.Initialize() in /Users/abdiellopez/Projects/Prowl/Prowl.Runtime/Application.cs:line 46
   at Prowl.Standalone.Program.Main(String[] args) in /Users/abdiellopez/Projects/Prowl/Prowl.Standalone/Program.cs:line 10

Expected behavior
I'm not really sure.

Screenshots
If applicable, add screenshots to help explain your problem.
Screenshot 2023-11-23 at 10 29 49โ€ฏAM

Describe the bug

Prowl.Editor on MacOS through VS Code

To Reproduce
Steps to reproduce the behavior:

note: vs code will cache the last "Run and Debug" so go to the sidebar to switch between Prowl.Editor and Prowl.Player before running again

  1. Go to 'Prowl.Editor/Program.cs'
  2. Click 'F5' (on mac you hold the fn key then press F5)
    • vs code may automatically run Prowl.Player. To switch open the Run and Debug sidebar as mentioned above
    • if this is the case just go open the sidebar and switch, then run Program.cs again and it should run Prowl.Editor
    • see error
  3. From the options select 'C#'
  4. From the subsequent options select Prowl.Editor
  5. See error

here is the error

CSC : error CS1566: Error reading resource 'Prowl.Editor.EmbeddedResources.DefaultAssets.Cube.obj' -- 'Could not find file '/Users/abdiellopez/Projects/Prowl/Prowl.Editor/EmbeddedResources/DefaultAssets/Cube.obj'.' [/Users/abdiellopez/Projects/Prowl/Prowl.Editor/Prowl.Editor.csproj]

Expected behavior
I'm not really sure.

Desktop (please complete the following information):

  • OS: Mac OS Sonoma 14.1 running Apple M2 Pro chip
  • Browser why am I being asked this? I use Chrome
  • Version Chrome 119.0.6045.159 (Official Build) (arm64)? XD not sure but ok

Additional context
Add any other context about the problem here.

[Editor] Rewrite PropertyDrawers to be more useful

PropertyDrawers in the Editor as of now require a Reflection MemerInfo, which makes them a little weird to use.
A Better API like

bool changed = PropertyDrawers.Draw(ref value);

Or something along those lines might be a lot nicer and easier to use

[Editor] Crash on Recompiling project scripts

Describe the bug
The Editor crashes when recompiling project scripts after a Custom component has been added to a GameObject

To Reproduce

  1. Create .cs MonoBehvaiour script file in your project
  2. Add the MonoBehaviour to a gameobject
  3. Modify the script again or press Recompile Scripts
  4. Crash

[AssetPipeline] Prefabs/Scenes

Taking from Godot, Prefabs and Scenes will be the same thing, just a GameObject with its children.
So we need to support Prefabs as well as supporting Nested Prefabs.

[Engine] Physics Engine

  • Basic Integration with Rigidbody + Collider Component Structure
  • Collider Gizmos
  • Support for Adding/Removing Colliders in realtime
  • Support Kinematic/Static bodies
  • Physics.Raycast
  • Raycast based Wheels
  • Physical Character Controller
  • Constraints
    • DistanceLimit
    • BallSocket
    • Hinge
    • PointOnLine
    • PointOnPlane
    • AngularMotor
    • ConeLimit
    • FixedAngle
    • LinearMotor
    • TwistAngle

[Rendering] Overhaul rendering, Use RenderPipeline ScriptableObjects per camera

As of now, rendering is mostly hardcoded and partially components.

We should completely redo it so that each camera can have a RenderPipeline ScriptableObject assigned, with a default one if non-assigned.

Multiple RenderPipelines should be able to exist and multiple cameras can share a single one, RenderPipelines describe how to render, and would have a list of RenderPasses. Cameras would still be the main Renderer, the RenderPipeline solely describes how to render, it should not be the actual Renderer.

I like the idea of using Nodes and creating something like a Visually scripted Render Pipeline system like Cocos Customizable Render Pipeline:

https://discuss.cocos2d-x.org/t/tutorial-use-custom-render-pipeline-to-enhance-your-game-graphics-guide-to-cocos-cyberpunk-source-code/58712

The SceneView should use the Main Cameras render pipeline or default if non-assigned.

[Rendering] Gizmo Rendering

We have ImGuizmo but we need something for things like Debug.DrawLine(), Ideally whatever we implement also works in the game not just in the editor.

[Editor] ImNodes Support

For Visual scripting and other Node related stuff we can use ImNodes, but we need bindings for it.

[Rendering] Replace Raylib

Raylib has been a huge help getting off the ground, but it's also limiting us in a lot of areas. We need to drop it in exchange for a custom ideally API Agnostic backend.

I've already started working on something based on Silk.NET.

[Rendering] Shader Uniform Buffers?

I've seen uniform buffers before? Can they improve performance and enable less Uniform assignment? Would be good for Built-In common uniforms like Resolution, Time, MVP and so on.

[Editor] Basic 2D Support

  • Ensure Orthographic Camera's work correctly in all areas
  • Scene view Orthographic view
  • 2D Sprite
    • Single & Multi Sprites
    • Origin/Center Offset
  • Sprite Renderer & Texture Renderer

[Rendering] Stochastic Tranparency

Taking advantage of TAA I think stochastic transparency may be somewhat viable.

It comes with a lot of benefits, like free transparent shadows, and full lighting integration, is free to render, handles ordering properly, and best of all it's almost no code is required. But the con is it may make transparency noisy, but with a good enough TAA that might not be an issue. We could probably do other things to reduce noise as well, like offload the transparency to its own buffer and apply some denoiser, probably something temporally to better keep edges intact.

[AssetPipeline] Packages

Exporting/Importing Packages between projects is important for Prowl since this is intended to be a Modular engine, we need a way to easily import "Modules" or Packages

.obj Files Are Missing In "Default Assets" Folder; Includes File Is Missing As Well

Describe the bug
I forked the repository and cloned it to my computer using Visual Studio. When I ran it I got an error that said the cube.obj object couldn't be found.

When I look in the solution explorer I see a few .obj files that are outlined with a red X.

To Reproduce
Steps to reproduce the behavior:

  1. Fork repository
  2. Open Visual Studio, Clone repo to computer
  3. Run project

Expected behavior
Should load the editor without issue

Screenshots
2023-11-23 10_07_35-Prowl - Microsoft Visual Studio

2023-11-23 10_03_56-

Desktop (please complete the following information):

  • OS: Windows 10
  • Visual Studio Version 17.8.0

Additional context
Looking at the files on Github, I noticed they were missing as well. No .obj can be found nor "Includes" folder: https://github.com/michaelsakharov/Prowl/tree/main/Prowl.Editor/EmbeddedResources/DefaultAssets

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.