Giter VIP home page Giter VIP logo

radixengine's Introduction

Build Status Coverage Status RadixEngine subreddit Chat on Gitter Join Chat

zlib License Language: C++14 Documentation Status

RadixEngine

Radix is a modern, free and open-source 3D game engine, featuring, among other things, physics simulation. It runs on all modern operating systems including GNU/Linux, Mac and Windows.

The Team

Henry Hirsch, Julian Thijssen, Céleste Wouters, Geert Custers all contributors

Compile the source

For instructions on how to compile the game engine please read COMPILE.md.

Issues

Report Issues to github.

Donate

Donate Bitcoin to 1JxrwJZgV9qBeEPH7BDF9qLJPSDcp6fqxz to help us pay for hosting and domain names.

radixengine's People

Contributors

alextalker avatar alyssais avatar amiruqdah avatar amwoods3 avatar atkurtul avatar babyccino avatar carrotstrip avatar codercodi avatar elementw avatar entropian avatar feliwir avatar flu avatar geertiebear avatar gitter-badger avatar hhirsch avatar julianthijssen avatar kungfooman avatar matthewharvey avatar nalinwadhwa02 avatar nilspin avatar pcodex avatar realdantheman avatar robotboyfriend avatar sakerdot avatar sgorava avatar simonlarsen avatar tmaffia avatar turlututututu avatar wow2006 avatar xantares 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

radixengine's Issues

Moving objects

Add moving objects/platforms. This might depend on scripting support.

Demo Game - FPS - Tresspaser

This is based on the FPS demo but instead of a fixed weapon this has a physics based arm that can grab a gun.

glxinfo-like debugging

There needs to be an easy way to dump important system data for debugging.

  • GPU
  • OS Version
  • OpenGL Version
  • Shader Version

Add scripting support to maps and screens

This is a pre-requisite to #65

@GlPortal/technical-officers-engine This is an interesting issue to discuss and brainstorm on.
My first choice is JS. We've also talked about Squirrel 3 which has a very nice syntax.
Lua has been mentioned multiple times however I personally dislike the whole idea of not having braces. I used it for coding for minetest though and it was not a total deal breaker.

My values in the matter are:

  • A lot of people already know how to use it
  • The closer the Syntax is to C, C++, Java the more it feels at home
  • It should be easy to integrate

Questions we should answer

  • What is your favorite scripting language and why?
  • What engines are there?

I will edit this comment as more input comes in.

Possible scripting engines (no order):

Triggers' actions are executed as soon as Bullet reports contact

Triggers' actions are executed as soon as Bullet reports contact, which happens as soon as possible, i.e. even when creating the Trigger, therefore being a 1x1x1 trigger centered on 0,0,0 since that's how the Transform is initialized by default.

In turn, if the player spawns at this position, the trigger tries to load the next map while not having finished loading the previous one. This creates a crash where the Bullet and Radix state is being modified when it should not be.

To avoid all problems of the same kind, trigger actions should be queued and executed only once Bullet finished all processing, i.e. somewhere later in the game tick.

Player Movement Tasks vs. Player System

@GlPortal/technical-officers-engine I don't see a benefit in Player tasks. To me they look like they work around our ECS architecture.

In my understanding of our architecture the thing that takes user input and acts accordingly on the player should be a system or a bunch of plain old C++ classes used by a system.

Hope you guys can comment on what you think.

Build on Windows with MSYS

I tried to build on Windows using MSYS2 following the instructions in COMPILE.md, unfortunately I'm running into several issues grabbing the required dependencies.

First, CMake is unable to find the OPENGL_gl_LIBRARY so I grabbed the one from the Windows SDK and directed CMake towards it with -DOPENGL_gl_LIBRARY=C:\path\to\opengl32.lib which it seemed to be satisfied with. After that it complained about missing the assimp library. I tried searching for it in the msys64 directory but the library does not seem to exist at all. I'm guessing the story is similar for some of the other dependencies installed via pacman -S

Is there something more I should be doing that wasn't mentioned in the instructions or is it known that RadixEngine does not compile under this toolchain?

Mesh never frees its GL resources

MeshLoader generates a VAO and VBO in multiple methods, yet no matching call to glDeleteVertexArray or glDeleteBuffers is ever done, resulting in multiple GL resource leaks.

I suggest using refcounted mesh storage (either through a MeshCache class extenting on the current MeshLoader::meshCache use, or using std::shared_ptrs) as well as RAII object interfaces to GL's VAOs and VBOs. I might just "donate" VAO.hpp and VBO.{hpp,cpp} from my Diggler project to Radix to solve that if no other implementation is planned.

Abstract access to windowing/input library

Currently the engine uses SDL2.
Depending on the platform, other similar libraries like GLFW3 might support more up-to-date features like better controller input, multi-screen handling, clipboard interaction, graphics context creation (be it OpenGL/Vulkan) or newer/better display server backends.
Additionally, having raw SDL code sprinkled everywhere makes it harder to maintain if there is an API change/breakage between versions.

Add view frame renderer

Surfaces like video screens, mirrors or portals

  • Create view frame renderer and test map containing mirror- and video screen- like surfaces

Add showcase demo games and demo data

Add some very basic demo games and demo data to radix as well as a target to build them.

  • Decide on where to put these in the file system and what repositories to create
  • Create repositories
  • Create FPS demo #67

Continuous System

@ElementW Can I create a system that does not use the update method but has one loop running throughout? With the current system if I have a while loop in the systems constructor, it seems to hang.

Compile Issue

Hello There,

I am interested in your project, and I was wondering if you could point me in the right direction for compiling your engine?

I have all of the dependencies required, but I am attempting to compile it on MacOS. I would like to contribute to this project in some way, and I will continue to search for how to compile it with MacOS.

The error I am getting is the following:

CMake Error at cmake/FindGWEN.cmake:6 (add_subdirectory):
The source directory

 ~/RadixEngine/RadixEngine/external/gwen

does not contain a CMakeLists.txt file.

Call Stack (most recent call first):
CMakeLists.txt:85 (find_package)

CMake Error at cmake/FindVHACD.cmake:9 (add_subdirectory):
The source directory

  ~/RadixEngine/RadixEngine/external/vhacd-lib

does not contain a CMakeLists.txt file.

Call Stack (most recent call first):
CMakeLists.txt:99 (find_package)

 Found FreeImage: headers at /usr/local/include, libraries at  :: /usr/local/lib/libfreeimage.dylib

CMake Error at cmake/FindRadixEntity.cmake:7 (add_subdirectory):
The source directory

  ~/RadixEngine/RadixEngine/external/RadixEntity

does not contain a CMakeLists.txt file.

Call Stack (most recent call first):
CMakeLists.txt:117 (find_package)

--

To me it looks like a missing file CMakeLists might be necessary, when I check the directory, I found that there was nothing at all in the directory.

Thanks

Add gamepad support

Create support for gamepads (like XBox 360 or PlayStation ones) as an alternative input method.

Unable to compile on Windows

Tried solving this error but doesn't seem to find a solution. If someone can take a look and provide a solution that will be great.. thanks!

[ 55%] Building CXX object CMakeFiles/RadixEngine.dir/source/env/Util.cpp.obj
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp: In function 'void radix::SetThreadName(uint32_t, const char*)':
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:66:3: error: expected 'catch' before '__except'
__except(EXCEPTION_EXECUTE_HANDLER)
^~~~~~~~
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:66:3: error: expected '(' before '__except'
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:66:3: error: expected type-specifier before '__except'
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:66:11: error: expected ')' before '(' token
__except(EXCEPTION_EXECUTE_HANDLER)
^
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:66:11: error: expected '{' before '(' token
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:67:3: error: expected ';' before '{' token
{
^
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:68:3: warning: statement has no effect [-Wunused-value]
}
^
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp: In static member function 'static void radix::Util::SetThreadName(std::thread&, const char*)':
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:72:60: error: base operand of '->' has non-pointer type 'std::thread'
DWORD threadId = ::GetThreadId(static_cast(thread->native_handle()));
^~
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:73:26: error: 'threadName' was not declared in this scope
SetThreadName(threadId,threadName);
^~~~~~~~~~
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp: At global scope:
C:/msys64/home/Cleverboy/RadixEngine/source/env/Util.cpp:56:13: warning: 'void radix::SetThreadName(uint32_t, const char*)' defined but not used [-Wunused-function]
static void SetThreadName(uint32_t dwThreadID, const char *threadName) {
^~~~~~~~~~~~~
CMakeFiles/RadixEngine.dir/build.make:782: recipe for target 'CMakeFiles/RadixEngine.dir/source/env/Util.cpp.obj' failed
mingw32-make[2]: *** [CMakeFiles/RadixEngine.dir/source/env/Util.cpp.obj] Error 1
CMakeFiles/Makefile2:69: recipe for target 'CMakeFiles/RadixEngine.dir/all' failed
mingw32-make[1]: *** [CMakeFiles/RadixEngine.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

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.