Git Product home page Git Product logo

spatial.engine's Introduction


Spatial Engine

DocumentationKey FeaturesRoad MapLicense

Spatial is a cross-platform C++ game engine created on top off google's filament rendering engine.
This projects uses C++17 and modern cmake features.

Buy Me A Coffee donate fileButton

spatial_engine_demonstration_V137.mp4

Getting Started

Take a look at the Spatial Engine Documentation.

Key Features

  • [WIP] Cross-platform
    • Windows, macOS and Linux support.
  • Easy installation
    • All dependencies are resolved by Conan
  • Google Filament Rendering Engine Support
  • Full Entity-Component-System
  • Serialization System
    • Open and Save XML/JSON/binary scene files built in the editor.
  • [WIP] Javascript/WASM Scripting (With the V8 Engine)
    • Write logic scripts with Javascript or Web Assembly. V8 implements ECMAScript as specified in ECMA-262.
  • Docking UI
    • Integrated ImGui interface
  • Beautiful Code and Modern C++
    • Do you like reading beautiful code? I do too.

Inspiration

This project was heavily inspired by the Game Engine Series - by The Cherno and I encourage you to take a look at his amazing YouTube channel.

Bibliography

Support

Buy Me A Coffee

License

Apache 2.0

spatial.engine's People

Contributors

leoalvs avatar luizgabriel 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spatial.engine's Issues

[BUG - HOW TO] Build on macOS prior to 10.15

Thanks, I'm learning a lot from this project!
This is more a note for people trying to build this project under Mojave

Here is the stack trace for reference and google search:

Linking Error Details
undef: _objc_opt_respondsToSelector
undef: _objc_opt_class
undef: _objc_opt_isKindOfClass
Undefined symbols for architecture x86_64:
  "_objc_opt_respondsToSelector", referenced from:
      -[Cocoa_WindowListener handleTouches:withEvent:] in libSDL2.a(SDL_cocoawindow.m.o)
      _Cocoa_CreateWindow in libSDL2.a(SDL_cocoawindow.m.o)
      _Cocoa_SetWindowFullscreen in libSDL2.a(SDL_cocoawindow.m.o)
      -[SDLMessageBoxPresenter showAlert:] in libSDL2.a(SDL_cocoamessagebox.m.o)
      _Cocoa_GL_GetDrawableSize in libSDL2.a(SDL_cocoaopengl.m.o)
      _Cocoa_GetDisplayDPI in libSDL2.a(SDL_cocoamodes.m.o)
      _Cocoa_HandleMouseWheel in libSDL2.a(SDL_cocoamouse.m.o)
      ...
  "_objc_opt_class", referenced from:
      -[SDLWindow sendEvent:] in libSDL2.a(SDL_cocoawindow.m.o)
      -[Cocoa_WindowListener windowWillMove:] in libSDL2.a(SDL_cocoawindow.m.o)
      -[SDLTranslatorResponder insertText:replacementRange:] in libSDL2.a(SDL_cocoakeyboard.m.o)
      -[SDLTranslatorResponder setMarkedText:selectedRange:replacementRange:] in libSDL2.a(SDL_cocoakeyboard.m.o)
  "_objc_opt_isKindOfClass", referenced from:
      -[SDLWindow sendEvent:] in libSDL2.a(SDL_cocoawindow.m.o)
      -[Cocoa_WindowListener windowWillMove:] in libSDL2.a(SDL_cocoawindow.m.o)
      -[SDLTranslatorResponder insertText:replacementRange:] in libSDL2.a(SDL_cocoakeyboard.m.o)
      -[SDLTranslatorResponder setMarkedText:selectedRange:replacementRange:] in libSDL2.a(SDL_cocoakeyboard.m.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [Spatial.Editor/CMakeFiles/Spatial.Editor.dir/build.make:169: Spatial.Editor/Spatial.Editor] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:231: Spatial.Editor/CMakeFiles/Spatial.Editor.dir/all] Error 2
gmake: *** [Makefile:149: all] Error 2

Describe the bug
I had to make a few changes to make it work, reasons:

  • Part of the C++17 library are only available in 10.15+
  • SDL2 was building against 10.15

Additional context

  • I replaced the references to std::filesystem by https://github.com/gulrak/filesystem (very straightforward)
  • Run MACOSX_DEPLOYMENT_TARGET=10.14 conan install .. --build=sdl2 -> This rebuilds sdl using the right SDK
  • Then following the official build instructions worked (just had to use cmake --build . --target all instead of ALL_BUILD)

References

build on Ubuntu 20.04

$ python3.10 cli.py run-editor

conan export /home/xxxxx/Spatial.Engine/vendor/filament.py filament/1.25.6@spatial/stable

usage: conan export [-h] [-v [V]] [-f FORMAT] [--name NAME] [--version VERSION] [--user USER] [--channel CHANNEL] [-r REMOTE | -nr]
[-l LOCKFILE] [--lockfile-out LOCKFILE_OUT] [--lockfile-partial] [--build-require]
path
conan export: error: unrecognized arguments: filament/1.25.6@spatial/stable
ERROR: Exiting with code: 2

-- [SPATIAL-CLI] The command returned a non-zero response.
There was an error configuring the project.
Make sure you have all system requirements installed.
See the README for more information.

Not known for this CXX compiler

Hi,
This is compiler error:
CMake Error in Spatial.Editor/CMakeLists.txt:
MSVC_RUNTIME_LIBRARY value
'MultiThreadedDebug;VS_DEBUGGER_WORKING_DIRECTORY;D:/OpenSource/Spatial.Engine/out/build/Windows-Release/Spatial.Editor/Debug;VS_DEBUGGER_COMMAND;D:/OpenSource/Spatial.Engine/out/build/Windows-Release/Spatial.Editor/Debug/Spatial.Editor.exe'
not known for this CXX compiler.

My config :

[settings]
os=Windows
os_build=Windows
arch=x86_64
arch_build=x86_64
compiler=msvc
compiler.cppstd=20
compiler.runtime=dynamic
compiler.version=193
build_type=Debug
[options]
[build_requires]
[env]

help me, thanks!

[BUG] run python ./setup.py no thing occur

run python ./setup.py none vs projects was generated, output follow:

conan export F:\OpenSource\Spatial.Engine\vendor\filament.py filament/1.8.1@google/stable

Exporting package recipe
filament/1.8.1@google/stable: The stored package has not changed
filament/1.8.1@google/stable: Exported revision: 504c7aa8c909a5befe7cf44dd624389d

conan export F:\OpenSource\Spatial.Engine\vendor\imgui.py imgui/docking@ocornut/stable

Exporting package recipe
imgui/docking@ocornut/stable: The stored package has not changed
imgui/docking@ocornut/stable: Exported revision: 6df0c59d7c39fa46b2c64dd9000a9a04

  • OS: window 10
  • vs 2019

build on macOS platform

.conan/data/v8/10.1.69/spatial/stable/source/depot_tools/.cipd_bin/vpython3: cannot execute: No such file or directory
ERROR: v8/10.1.69@spatial/stable: Error in source() method, line 105
self.run("fetch v8")
ConanException: Error 126 while executing fetch v8
CMake Error at out/build/MacOS-Release/conan.cmake:540 (message):
Conan install failed='1'
Call Stack (most recent call first):
out/build/MacOS-Release/conan.cmake:882 (old_conan_cmake_install)
CMake/SetupConan.cmake:22 (conan_cmake_run)
CMakeLists.txt:8 (include)

-- Configuring incomplete, errors occurred!
See also "/Spatial.Engine/out/build/MacOS-Release/CMakeFiles/CMakeOutput.log".
See also "/Spatial.Engine/out/build/MacOS-Release/CMakeFiles/CMakeError.log".
The command returned a non-zero response

Camera View Controllers

As an user, I'd like to ZOOM with mouse middle button scroll and PAN with middle button pressed.

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.