Git Product home page Git Product logo

wolfsource / wolfengine Goto Github PK

View Code? Open in Web Editor NEW
23.0 2.0 8.0 6.64 GB

Wolf is a set of modules for real-time rendering, real-time streaming and game developing

Home Page: https://wolfsource.github.io/

License: Apache License 2.0

CMake 3.79% Batchfile 0.02% Dockerfile 0.08% C++ 69.41% C 3.94% HTML 0.17% Shell 0.04% Python 0.02% JavaScript 22.55%
vulkan vulkan-game-engine metal macos osx ios linux android windows graphics-engine

wolfengine's Introduction

Wolf Engine Apache licensed codecov CodeQL Microsoft C++ Code Analysis

WolfEngine

Welcome to the Wolf Engine source code.

The Wolf Engine is the next generation of Persian Game Engine which is a cross-platform open source game engine created by Pooya Eimandar. The Wolf is a comprehensive set of C++ open source libraries for realtime rendering, realtime streaming and game developing, which is support Lua and WASM as an embedded scripting languages.

Build

  • Prerequisites - For windows, make sure install the latest Windows 11/10 SDK

then make sure get the main branch git clone https://github.com/WolfEngine/WolfEngine.git --branch main --depth 1

CMakePresets

To list configure presets: cmake . --list-presets To list build presets: cmake --build --list-presets To install wolf: cmake --install <build-dir> --prefix <prefix>

For example for building wolf for android:

cmake . --preset android-arm64-release
cmake --build --preset android-arm64-release

For example for building wolf for windows:

cmake . --preset win-x64-release
cmake --build --preset win-x64-release
cmake --install C:/WolfEngine/build/win-x64-release --prefix C:/wolf

Recent Sample

Dynamic LOD Generation using Simplygon

Dynamic LOD Generation gif

Supported platforms

Not Supported Planned In Progress Done
📝 🚧

Supported platforms and APIs for render module

API Windows Linux macOS iOS Android Wasm
GPU Vulkan/OpenGL ES 🚧 Vulkan/OpenGL ES 📝 MoltenVK 📝 MoltenVK 📝 Vulkan/OpenGL ES 📝 WebGL/WebGPU 📝

Supported platforms and APIs for media module

API Windows Linux macOS iOS Android Wasm
Bitmap 📝 📝 📝
FFmpeg 📝 📝 📝
JPEG 📝 📝 📝
OpenAL 📝 📝 📝
PNG 📝 📝 📝
WebP 📝 📝 📝 📝 📝

Supported platforms and APIs for stream module

API Windows Linux macOS iOS Android Wasm
gRPC 📝
Janus 🚧
QUIC 📝 📝 📝 📝
RIST 📝 📝 📝
RTMP 📝
RTSP 📝 📝 📝 📝
SRT 📝 📝 📝 📝
webRTC 📝 📝 📝 📝 📝 📝
WebSocket 📝 📝 📝 📝

Supported platforms and APIs for system module

API Windows Linux macOS iOS Android Wasm
Coroutine 📝
GameTime 📝 📝 📝
Gamepad 📝 📝 📝
Virtual Gamepad
Log 🚧 🚧 🚧 🚧
LuaJit 📝 📝 📝 📝 📝
LZ4 📝 📝 📝
LZMA 📝
OpenTelemetry 📝 📝 📝
RAFT 📝 📝 📝 📝 📝 📝
Screen Capture 📝 🚧 🚧
Signal Slot 🚧
Stacktrace 🚧 🚧 🚧
Sycl 📝 📝 📝
TCP 📝 📝 📝
Trace 📝 📝 📝
UDP 🚧 📝 📝 📝 📝
Wasm3 📝 📝 📝 📝 📝 📝

Projects using Wolf

  • Wolf.Playout, a playout automation software
  • Falcon, a real time 3D monitoring system
  • PlayPod, the first cloud gaming platform launched in Middle East
  • RivalArium, play and rival other users via our leagues and duels from any device, any location and let your skills generate income

Wolf Engine © 2014-2023 Pooya Eimandar

wolfengine's People

Contributors

pooyaeimandar 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

Watchers

 avatar  avatar

wolfengine's Issues

Implement heap-less architecture

Wolf is the base framework for many projects, included but not limited to sib , barf and other real time frameworks.
In order to reduce generated assembly codes, memory issues, bugs and achieve better performance, we need to design it heap-less which means mostly use the stack memory.
The following crate will be tested for benchmarking.

Complete Chrono

Chrono needs the following features:

  • sleep , which should be used instead of std::thread::sleep
  • timeout for futures
  • timer with cancelation
  • timer oneshot

w_hash:callback in w_hash_make_custom doesn't work

I used w_hash_make_custom function as following,but compiler didn't go to the callback.

w_mem_pool Pool_memory = w_mem_pool_get_default();

unsigned int w_hash_custom(const char* pKey, size_t* pLen)
{
printf("%s","ok");
return 0;

}
w_hash_custom_fn pHashCustomFunc= &w_hash_custom;
w_hash _hash_make_custom = w_hash_make_custom(Pool_memory, pHashCustomFunc);

Please tell me where is the problem.

integrate cmake with build.rs

In order to improve safety of wolf, version 3 is going to rewrite with Rust.
We still need some old C libraries such as lz4 and etc. , so we need to integrate cmake with build.rs in order to reuse C projects in wolf

encode frames by av1

We need to migrate to AV1, the latest royalty-free video coding format for video transmissions over the Internet.
For streamer we can use rav1e.

add devcontainer

Apply dev container to the project for a safe coding environment.

Sending RTSP stream over WebRTC

We've used WebRTC for RTSP transmissions over Turn/Stun servers. This was implemented by cpp in the last version of Wolf.streamer. In the new version of Wolf, this feature should be smarter and safer and also should be integrate with RedPanda for better management.

link live555 via build rust file

We need to link live555 libraries via build.rs
The following steps should be implemented

Check whether local source code & libraries are available in ./deps folder or not
If libs are already available then link them
if repo or libs are not available, clone the source and build it via CMAKE, MAKE or Shell script

add vscode configuration

Add vscode configuration to the workspace to improve control over the development environment.

AV1 Receiver

In regards to #161 , we need AV1 receiver which will be implemented by FFmpeg ( #153 )

Issue with AVX2 flag & masked occlusion culling

Hi Pooya,

Glad you managed to solve the coordinate system issue with the occlusion culling library.

I took a quick peak at your latest commit and just wanted to mention an issue with the project configuration so it doesn't come back and haunt you later. Basically, you want to set the project default instruction set to your lowest target platform (for example SSE2) and then manually change only the MaskedOcclusionCullingAVX2.cpp file to compile with AVX2.

The reason for this is pretty contrived, and has to do with the new VEX instruction encoding for SSE instructions (https://software.intel.com/en-us/articles/avoiding-avx-sse-transition-penalties) which gives best performance when mixing AVX2 and SSE. As you've configured the project now, the SSE fallback in MaskedOcclusionCulling.cpp will also use the VEX encoding, and ironically this will cause it to crash on SSE machines. This wasn't documented in the library, so I've asked to add an extra #error pragma and some comments to ensure that the project is correctly configured.

Happy coding,
/Jon

Support Build CC in build.rs

For those projects which do not support CMake, we need to build C codes directly in the build time.
Right now our best solution is CC

Some changes in branch 2.0

In branch 2.0 , json and xml files are in the form of c++ API.
Please provide c API if it is possible.

GUI for wolf

In the first version of Wolf, I wrote a GUI based on DirectX11 on Windows, later I decided to switch ImGUI and later our main issue was integrating GUIs controls with Designers.
I've been thinking about Integrating Wolf with Adobe Animate CC for a while, we can use WebKit for reading display lists and draw them with GPU, same as what ultralight and CoherentLabs have done.
Then we don't need to write any UI-UX flow controls, all we need is to export webGL draw functions from Adobe Animate CC to the Wolf.
Another agile solution is egui.

create a github action

We need a Github action to make our project easy to automate.
We have build.rs which runs some CMAKE and Make files for C/C++ dependencies.

Bug in resize window

If the Screen view of "wolfengine" "3dmax" plugin resize by user , the plugin will crash and "3dmax" unexpectly close ,

bindings for Python3

Wolf needs a binding for Python, including ways for creating native Python modules and running and interacting with Python codes.
PyO3 is a good option.

implement basic architecture of w_render

The first render engine of wolf was implemented based on DirectX 11 & Windows.
In the second major update of wolf, the render engine was implemented with Vulkan and it was cross platform.
For wolf 3, we have to focus on cross platform solutions such as gfx-rs

link ffmpeg via build rust file

We need to link FFMPEG libraries via build.rs
The following steps should be implemented

  1. Check whether local source code & libraries are available in wolf/wolf/deps folder or not
  2. If libs are already available then link wolf to them
  3. if repo or libs are not available, clone the source and build it via CMAKE or MAKE and then finally link wolf to them

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.