Godex is a Godot Engine ECS library.

Overview

Godex

Godex logo

🐧 Linux Builds 🏁 Windows Builds

Godex is a Godot Engine ecs library.

Disclaimer: this module is still in development, open an issues to report any problem or a new discussion if you need any help. Any form of contribution is welcome.

Note: The tested Godot version is master ae6b2d6edc76de347ccb11c4608b6e8174e1884f, please open an issue if the current master is not working or doesn't compile.

What is ECS

Shortened as ECS, the Entity Component System is an architectural design pattern that allow to organize the data in a way so that the workload can be split into small and easy programs.

Wiki

The wiki is available; useful links:

Examples

Check the Unit tests to see some examples or the Bench Test

Community

If you want to chat about Godex, you can join the community on Discord.

Contributing

Open an issue to give a feedback, propose a new feature, or signal a bug is really welcome and will help this project grow! If you want to help with coding instead, those two links may turn useful:

Issues
  • Patch cannot be applied in a Windows build

    Patch cannot be applied in a Windows build

    When applying the patch in a windows build, the git throws errors that the patch does not apply: git apply modules/godex/patches/add_custom_iterator.patch error: patch failed: SConstruct:543 error: SConstruct: patch does not apply error: patch failed: core/config/engine.h:88 error: core/config/engine.h: patch does not apply error: patch failed: main/main.cpp:1284 error: main/main.cpp: patch does not apply error: patch failed: main/main.h:54 error: main/main.h: patch does not apply

    I think this might due to linespacing formatting issues between unix and windows systems. The following command successfully applied the patch with no errors: git apply --ignore-space-change --ignore-whitespace modules/godex/patches/add_custom_iterator.patch

    BUT will not allow it to build successfully:

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\iterators\../storage/storage.h(206): error C2663: 'MeshComponent::set': 2 overloads have no legal conversion for 'this' pointer

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\iterators\../storage/storage.h(201): note: while compiling class template member function 'void Storage<const C>::insert_dynamic(EntityID,const Dictionary &)' with [ C=MeshComponent ]

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(201): note: see reference to class template instantiation 'Storage<const C>' being compiled with [ C=MeshComponent ]

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(195): note: while compiling class template member function 'bool QueryStorage<const MeshComponent,const TransformComponent>::has_data(EntityID) const'

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(263): note: see reference to function template instantiation 'bool QueryStorage<const MeshComponent,const TransformComponent>::has_data(EntityID) const' being compiled

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(230): note: see reference to class template instantiation 'QueryStorage<const MeshComponent,const TransformComponent>' being compiled

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems/system_builder.h(87): note: see reference to class template instantiation 'Query<const MeshComponent,const TransformComponent>' being compiled

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\system_exe_funcs.gen.h(12): note: see reference to class template instantiation 'SystemBuilder::DataFetcher<P1>' being compiled with [ P1=Query<const MeshComponent,const TransformComponent> & ] modules\godex\register_types.cpp(113): note: see reference to function template instantiation 'void SystemBuilder::system_exec_func<RenderingServerDatabag*,Query<const MeshComponent,const TransformComponent>&>(World *,void (__cdecl *)(P0,P1))' being compiled with [ P0=RenderingServerDatabag *, P1=Query<const MeshComponent,const TransformComponent> & ]

    scons: *** [modules\godex\register_types.windows.tools.64.obj] Error 2

    scons: building terminated because of errors.

    bug topic:build os:windows 
    opened by carlos-ramos-73 10
  • LLVM Compilation Error

    LLVM Compilation Error

    I am getting the following compilation error message:

    modules/godex/components/../systems/../iterators/query.h: In member function 'std::tuple<Batch<typename remove_filter::type>...> QueryStorage::get(EntityID, Space) const': modules/godex/components/../systems/../iterators/query.h:39:103: error: cannot deduce template arguments for 'tuple' from () std::tuple<Batch<remove_filter_t>...> get(EntityID p_id, Space p_mode) const { return std::tuple(); } ^ scons: *** [modules/godex/components/child.linuxbsd.tools.64.o] Error 1 scons: building terminated because of errors.

    I am using latest stable Godot and Godex versions and compiling as described in the wiki.

    Any idea to fix it? Thanks.

    bug topic:build 
    opened by jcarlosrc 9
  • Godex does not compile with float=64

    Godex does not compile with float=64

    It's a new master branch feature. error given:

    godex\modules\bullet_physics\overlap_check.cpp(27): error C2664: 'void btConvexShape::project(const btTransform &,const btVector3 &,btScalar &,btScalar &,btVector3 &,btVector3 &) const': cannot convert argument 3 from 'real_t' to 'btScalar &'
    godot\thirdparty\bullet\BulletCollision\CollisionShapes\btConvexShape.h(53): note: see declaration of 'btConvexShape::project'
    godex\modules\bullet_physics\overlap_check.cpp(758): error C2259: 'overlap_check_polyhedron_polyhedron::NoRes': cannot instantiate abstract class
    godex\modules\bullet_physics\overlap_check.cpp(754): note: see declaration of 'overlap_check_polyhedron_polyhedron::NoRes'
    godex\modules\bullet_physics\overlap_check.cpp(758): note: due to following members:
    godex\modules\bullet_physics\overlap_check.cpp(758): note: 'void btDiscreteCollisionDetectorInterface::Result::addContactPoint(const btVector3 &,const btVector3 &,btScalar)': is abstract
    godot\thirdparty\bullet\BulletCollision\NarrowPhaseCollision\btDiscreteCollisionDetectorInterface.h(36): note: see declaration of 'btDiscreteCollisionDetectorInterface::Result::addContactPoint'
    systems_base.cpp
    
    bug topic:build 
    opened by RicardRC 8
  • In-editor UX enhancements for systems and resources

    In-editor UX enhancements for systems and resources

    I'm proposing three features:

    1. A way to remove specific resources added to a world.
    2. A way to remove specific systems added to a pipeline.
    3. A way to rearrange systems in a pipeline (new to Godex, but I'm assuming the system order is strictly enforced, hence the indexing).

    @AndreaCatania, would you prefer a PR, or would you rather implement these yourself? Please let me know if I'm missing something.

    good first issue Junior Job topic:editor 
    opened by reeseschultz 7
  • Renames to get up to speed with master 1acc76f

    Renames to get up to speed with master 1acc76f

    Rename Transform to Transform3D Rename transform.h to transform_3d.h Rename .instance() to .instantiate() Rename set_translation( to set_position( Rename Reference to RefCounted Rename Variant::QUAT to Variant::QUATERNION Rename Variant::TRANSFORM to Variant::TRANSFORM3D

    good first issue topic:build topic:godot_integration 
    opened by RicardRC 5
  • Crashes when running test project

    Crashes when running test project

    Running test project https://github.com/qarmin/RegressionTestProject/archive/refs/heads/4.0.zip crashes with this backtraces(I use Godot with address sanitizer)

    WorldECS.get_entity_component_by_name
    Parameters [100, ]
    ERROR: The passed component_name is not valid.
       at: has_entity_component (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:516)
    /mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:502:86: runtime error: member access within null pointer of type 'struct StorageBase'
    handle_crash: Program crashed with signal 11
    Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
    [1] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s() [0x2045552] (/mnt/Miecz/godot/platform/linuxbsd/crash_handler_linuxbsd.cpp:54)
    [2] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f7d6e067210] (??:0)
    [3] WorldECS::get_entity_component(unsigned int, unsigned int) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:502)
    [4] WorldECS::get_entity_component_by_name(unsigned int, StringName const&) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:493 (discriminator 2))
    [5] void call_with_variant_args_ret_helper<__UnexistingClass, Object*, unsigned int, StringName const&, 0ul, 1ul>(__UnexistingClass*, Object* (__UnexistingClass::*)(unsigned int, StringName const&), Variant const**, Variant&, Callable::CallError&, IndexSequence<0ul, 1ul>) (/mnt/Miecz/godot/./core/variant/binder_common.h:603 (discriminator 6))
    [6] void call_with_variant_args_ret_dv<__UnexistingClass, Object*, unsigned int, StringName const&>(__UnexistingClass*, Object* (__UnexistingClass::*)(unsigned int, StringName const&), Variant const**, int, Variant&, Callable::CallError&, Vector<Variant> const&) (/mnt/Miecz/godot/./core/variant/binder_common.h:389)
    [7] MethodBindTR<Object*, unsigned int, StringName const&>::call(Object*, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./core/object/method_bind.h:452)
    [8] Object::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/core/object/object.cpp:784 (discriminator 1))
    [9] Object::callv(StringName const&, Array const&) (/mnt/Miecz/godot/core/object/object.cpp:709 (discriminator 1))
    [10] void call_with_variant_args_ret_helper<__UnexistingClass, Variant, StringName const&, Array const&, 0ul, 1ul>(__UnexistingClass*, Variant (__UnexistingClass::*)(StringName const&, Array const&), Variant const**, Variant&, Callable::CallError&, IndexSequence<0ul, 1ul>) (/mnt/Miecz/godot/./core/variant/binder_common.h:603 (discriminator 8))
    [11] void call_with_variant_args_ret_dv<__UnexistingClass, Variant, StringName const&, Array const&>(__UnexistingClass*, Variant (__UnexistingClass::*)(StringName const&, Array const&), Variant const**, int, Variant&, Callable::CallError&, Vector<Variant> const&) (/mnt/Miecz/godot/./core/variant/binder_common.h:389)
    [12] MethodBindTR<Variant, StringName const&, Array const&>::call(Object*, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./core/object/method_bind.h:452)
    [13] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (/mnt/Miecz/godot/modules/gdscript/gdscript_vm.cpp:1496 (discriminator 1))
    [14] GDScriptInstance::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./modules/gdscript/gdscript.cpp:1552)
    [15] Object::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/core/object/object.cpp:765 (discriminator 1))
    [16] Variant::call(StringName const&, Variant const**, int, Variant&, Callable::CallError&) (/mnt/Miecz/godot/core/variant/variant_call.cpp:713)
    [17] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (/mnt/Miecz/godot/modules/gdscript/gdscript_vm.cpp:1394)
    [18] GDScriptInstance::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./modules/gdscript/gdscript.cpp:1552)
    [19] ScriptInstance::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/mnt/Miecz/godot/core/object/script_language.cpp:311)
    [20] Node::_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:147)
    [21] Node::_notificationv(int, bool) (/mnt/Miecz/godot/./scene/main/node.h:45 (discriminator 14))
    [22] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [23] Node::_propagate_ready() (/mnt/Miecz/godot/scene/main/node.cpp:189)
    [24] Node::_propagate_ready() (/mnt/Miecz/godot/scene/main/node.cpp:179 (discriminator 2))
    [25] Node::_set_tree(SceneTree*) (/mnt/Miecz/godot/scene/main/node.cpp:2525)
    [26] SceneTree::initialize() (/mnt/Miecz/godot/scene/main/scene_tree.cpp:395)
    [27] OS_LinuxBSD::run() (/mnt/Miecz/godot/platform/linuxbsd/os_linuxbsd.cpp:256)
    [28] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(main+0x3fc) [0x2043032] (/mnt/Miecz/godot/platform/linuxbsd/godot_linuxbsd.cpp:60)
    [29] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f7d6e0480b3] (??:0)
    [30] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(_start+0x2e) [0x2042b7e] (??:?)
    

    There is also memory leak

    Direct leak of 24 byte(s) in 1 object(s) allocated from:
        #0 0x7ff340b29f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
        #1 0x3ca43d9 in void WorldCommands::add_method<WorldCommands, EntityID>(StringName const&, void (WorldCommands::*)(EntityID)) /mnt/Miecz/modules/godex/world/world.h:59
        #2 0x3c9b1b5 in WorldCommands::_bind_methods() /mnt/Miecz/modules/godex/world/world.cpp:23
        #3 0x3ce7f0f in void ECS::register_databag<WorldCommands>() /mnt/Miecz/modules/godex/components/../ecs.h:430
        #4 0x3cdfb44 in register_godex_types() /mnt/Miecz/modules/godex/register_types.cpp:30
        #5 0x2e60ff3 in register_module_types() modules/register_module_types.gen.cpp:483
        #6 0x218cf52 in Main::setup2(unsigned long) main/main.cpp:1764
        #7 0x218030e in Main::setup(char const*, int, char**, bool) main/main.cpp:1387
        #8 0x2042f36 in main platform/linuxbsd/godot_linuxbsd.cpp:51
        #9 0x7ff33fc430b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
    Direct leak of 24 byte(s) in 1 object(s) allocated from:
        #0 0x7ff340b29f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
        #1 0x3ca3d5b in void WorldCommands::add_method<EntityID, WorldCommands>(StringName const&, EntityID (WorldCommands::*)()) /mnt/Miecz/modules/godex/world/world.h:59
        #2 0x3c9b10e in WorldCommands::_bind_methods() /mnt/Miecz/modules/godex/world/world.cpp:22
        #3 0x3ce7f0f in void ECS::register_databag<WorldCommands>() /mnt/Miecz/modules/godex/components/../ecs.h:430
        #4 0x3cdfb44 in register_godex_types() /mnt/Miecz/modules/godex/register_types.cpp:30
        #5 0x2e60ff3 in register_module_types() modules/register_module_types.gen.cpp:483
        #6 0x218cf52 in Main::setup2(unsigned long) main/main.cpp:1764
        #7 0x218030e in Main::setup(char const*, int, char**, bool) main/main.cpp:1387
        #8 0x2042f36 in main platform/linuxbsd/godot_linuxbsd.cpp:51
        #9 0x7ff33fc430b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
    Changed scene to res://ReparentingDeleting/ReparentingDeleting.tscn
    DisplayServer::_create_window 3 want rect: 0, 0, 100, 100 got rect 0, 0, 100, 100
    ERROR: Only one WorldECS is allowed at a time.
       at: active_world (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:441)
    ERROR: Condition "!data.grouped.has(p_identifier)" is true.
       at: remove_from_group (scene/main/node.cpp:1746)
    ERROR: Condition "!data.tree" is true. Returning: nullptr
       at: get_tree (./scene/main/node.h:280)
    /mnt/Miecz/modules/godex/ecs.cpp:425:42: runtime error: member call on null pointer of type 'struct SceneTree'
    /mnt/Miecz/modules/godex/ecs.cpp:425:42: runtime error: member access within null pointer of type 'struct SceneTree'
    handle_crash: Program crashed with signal 11
    Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
    [1] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s() [0x2045552] (/mnt/Miecz/godot/platform/linuxbsd/crash_handler_linuxbsd.cpp:54)
    [2] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f2226302210] (??:0)
    [3] ECS::set_active_world(World*, WorldECS*) (/mnt/Miecz/modules/godex/ecs.cpp:425)
    [4] WorldECS::active_world() (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:429 (discriminator 1))
    [5] WorldECS::_notification(int) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:294)
    [6] WorldECS::_notificationv(int, bool) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.h:78 (discriminator 14))
    [7] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [8] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849)
    [9] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849 (discriminator 2))
    [10] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849 (discriminator 2))
    [11] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849 (discriminator 2))
    [12] ECS::set_active_world(World*, WorldECS*) (/mnt/Miecz/modules/godex/ecs.cpp:432)
    [13] WorldECS::unactive_world() (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:451)
    [14] WorldECS::_notification(int) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:299)
    [15] WorldECS::_notificationv(int, bool) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.h:78 (discriminator 14))
    [16] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [17] Node::_propagate_exit_tree() (/mnt/Miecz/godot/scene/main/node.cpp:270)
    [18] Node::_propagate_exit_tree() (/mnt/Miecz/godot/scene/main/node.cpp:258 (discriminator 2))
    [19] Node::_set_tree(SceneTree*) (/mnt/Miecz/godot/scene/main/node.cpp:2514)
    [20] Node::remove_child(Node*) (/mnt/Miecz/godot/scene/main/node.cpp:1318)
    [21] Node::_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:166)
    [22] Node::_notificationv(int, bool) (/mnt/Miecz/godot/./scene/main/node.h:45 (discriminator 14))
    [23] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [24] Object::_predelete() (/mnt/Miecz/godot/core/object/object.cpp:355)
    [25] predelete_handler(Object*) (/mnt/Miecz/godot/core/object/object.cpp:1815)
    [26] void memdelete<Object>(Object*) (/mnt/Miecz/godot/./core/os/memory.h:111)
    [27] SceneTree::_flush_delete_queue() (/mnt/Miecz/godot/scene/main/scene_tree.cpp:996)
    [28] SceneTree::process(float) (/mnt/Miecz/godot/scene/main/scene_tree.cpp:456 (discriminator 5))
    [29] Main::iteration() (/mnt/Miecz/godot/main/main.cpp:2505 (discriminator 2))
    [30] OS_LinuxBSD::run() (/mnt/Miecz/godot/platform/linuxbsd/os_linuxbsd.cpp:261)
    [31] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(main+0x3fc) [0x2043032] (/mnt/Miecz/godot/platform/linuxbsd/godot_linuxbsd.cpp:60)
    [32] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f22262e30b3] (??:0)
    [33] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(_start+0x2e) [0x2042b7e] (??:?)
    
    bug good first issue high priority 
    opened by qarmin 5
  • Godex does not compile with the latest Godot master

    Godex does not compile with the latest Godot master

    I am on this commit of Godot: https://github.com/godotengine/godot/commit/0e77dc6e924cdf68175f56cb67756bf217e6c4ea

    I am on Windows and this is the command I ran:

    scons -j8 p=windows tools=yes target=release_debug

    Here are the errors I get:

    PS F:\godot> scons -j8 p=windows tools=yes target=release_debug
    scons: Reading SConscript files ...
    Configuring for Windows: target=release_debug, bits=default
    Found MSVC version 14.2, arch amd64, bits=64
    YASM is necessary for WebM SIMD optimizations.
    WebM SIMD optimizations are disabled. Check if your CPU architecture, CPU bits or platform are supported!
    Checking for C header file mntent.h... (cached) no
    scons: done reading SConscript files.
    scons: Building targets ...
    [  2%] Compiling ==> platform\windows\os_windows.cpp
    [  3%] os_windows.cpp
    [  3%] rc /DDEBUG_ENABLED /DWINDOWS_SUBSYSTEM_CONSOLE /DWINDOWS_ENABLED /DWASAPI_ENABLED /DWINMIDI_ENABLED /DTYPED_METHOD_BIND /DWIN32 /DMSVC /DWINVER=0x0601 /D_WIN32_WINNT=0x0601 /DNOMINMAX /D_WIN64 /DVULKAN_ENABLED /DCUSTOM_ITERATOR /DCUSTOM_PHYSICS_ITERATOR /DTOOLS_ENABLED /DMINIZIP_ENABLED /DZSTD_STATIC_LINKING_ONLY /Ithirdparty\freetype\include /Ithirdparty\libpng /Ithirdparty\vulkan /Ithirdparty\vulkan\include /Ithirdparty\vulkan\loader /Ithirdparty\zstd /Ithirdparty\zlib /Iplatform\windows /I. /nologo /foplatform\windows\godot_res.windows.opt.tools.64.obj platform\windows\godot_res.rc
    [  3%] Generating enabled modules header.
    [ 15%] Compiling ==> thirdparty\miniupnpc\miniupnpc\miniwget.c
    [ 15%] Compiling ==> thirdparty\miniupnpc\miniupnpc\minisoap.c
    [ 15%] miniwget.c
    [ 16%] minisoap.c
    [ 40%] Compiling ==> modules\godex\register_types.cpp
    [ 40%] register_types.cpp
    [ 40%] Compiling ==> modules\godex\godot\editor_plugins\components_gizmo_3d.cpp
    [ 40%] Compiling ==> modules\godex\godot\editor_plugins\editor_world_ecs.cpp
    components_gizmo_3d.cpp
    [ 40%] Compiling ==> modules\upnp\upnp_device.cpp
    editor_world_ecs.cpp
    [ 40%] Compiling ==> modules\upnp\upnp.cpp
    [ 40%] Compiling ==> modules\upnp\register_types.cpp
    upnp_device.cpp
    [ 40%] upnp.cpp
    Compiling ==> main\main.cpp
    register_types.cpp
    main.cpp
    [ 40%] Compiling ==> modules\text_server_adv\text_server_adv.cpp
    text_server_adv.cpp
    [ 40%] Compiling ==> modules\register_module_types.gen.cpp
    register_module_types.gen.cpp
    [ 40%] Linking Static Library ==> modules\modules.windows.opt.tools.64.lib
    [ 40%] Compiling ==> modules\text_server_adv\dynamic_font_adv.cpp
    dynamic_font_adv.cpp
    [ 40%] Compiling ==> modules\godex\godot\editor_plugins\entity_editor_plugin.cpp
    entity_editor_plugin.cpp
    [ 40%] Linking Static Library ==> modules\module_upnp.windows.opt.tools.64.lib
    [ 40%] Compiling ==> modules\godex\godot\nodes\ecs_world.cpp
    F:\godot\modules\godex\godot\editor_plugins\editor_world_ecs.h(169): error C3668: 'EditorWorldECS::_changed_callback': method with override specifier 'override' did not override any base class methods
    ecs_world.cpp
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(694): error C2039: 'remove_change_receptor': is not a member of 'WorldECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(79): note: see declaration of 'WorldECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(707): error C2039: 'add_change_receptor': is not a member of 'WorldECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(79): note: see declaration of 'WorldECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(719): error C2039: 'remove_change_receptor': is not a member of 'PipelineECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(18): note: see declaration of 'PipelineECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(725): error C2039: 'add_change_receptor': is not a member of 'PipelineECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(18): note: see declaration of 'PipelineECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(1094): error C2039: '_change_notify': is not a member of 'WorldECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(79): note: see declaration of 'WorldECS'
    scons: *** [modules\godex\godot\editor_plugins\editor_world_ecs.windows.opt.tools.64.obj] Error 2
    F:\godot\modules\godex\godot/editor_plugins/editor_world_ecs.h(169): error C3668: 'EditorWorldECS::_changed_callback': method with override specifier 'override' did not override any base class methods
    F:\godot\modules\godex\godot/editor_plugins/entity_editor_plugin.h(42): error C3668: 'EntityEditor::_changed_callback': method with override specifier 'override' did not override any base class methods
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(745): error C2039: '_change_notify': is not a member of 'Entity3D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(94): note: see declaration of 'Entity3D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(744): note: while compiling class template member function 'void EntityInternal<Entity3D>::update_components_data(void)'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(202): note: see reference to function template instantiation 'void EntityInternal<Entity3D>::update_components_data(void)' being compiled
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(98): note: see reference to class template instantiation 'EntityInternal<Entity3D>' being compiled
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(745): error C2039: '_change_notify': is not a member of 'Entity2D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(221): note: see declaration of 'Entity2D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(744): note: while compiling class template member function 'void EntityInternal<Entity2D>::update_components_data(void)'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(293): note: see reference to function template instantiation 'void EntityInternal<Entity2D>::update_components_data(void)' being compiled
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(225): note: see reference to class template instantiation 'EntityInternal<Entity2D>' being compiled
    scons: *** [modules\godex\register_types.windows.opt.tools.64.obj] Error 2
    scons: *** [modules\godex\godot\editor_plugins\components_gizmo_3d.windows.opt.tools.64.obj] Error 2
    modules\godex\godot\nodes\ecs_world.cpp(40): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(49): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(69): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(74): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(354): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(359): error C3861: '_change_notify': identifier not found
    scons: *** [modules\godex\godot\nodes\ecs_world.windows.opt.tools.64.obj] Error 2
    F:\godot\modules\godex\godot\editor_plugins\entity_editor_plugin.h(42): error C3668: 'EntityEditor::_changed_callback': method with override specifier 'override' did not override any base class methods
    scons: *** [modules\godex\godot\editor_plugins\entity_editor_plugin.windows.opt.tools.64.obj] Error 2
    scons: building terminated because of errors.
    

    Here is a project that you should be able to clone/get submodules (for godex)

    https://github.com/sean-clayton/godot

    bug good first issue topic:build confirmed 
    opened by sean-clayton 5
  • Change PROPERTY_USAGE_NOEDITOR to PROPERTY_USAGE_NO_EDITOR

    Change PROPERTY_USAGE_NOEDITOR to PROPERTY_USAGE_NO_EDITOR

    PROPERTY_USAGE_NOEDITOR has been recently renamed to PROPERTY_USAGE_NO_EDITOR on master, for consistency with other constants.

    See: https://github.com/godotengine/godot/commit/c012fbc8b235b86ed70c501834825d91292f8811

    topic:build 
    opened by lewiji 4
  • Using Godot api in ECS systems

    Using Godot api in ECS systems

    Problem

    It is not clear how we can get the Godot api to work in the ECS context. As an example, using Godot physics api to detect collisions or make physics simulation in a ECS system. I can see there is a Shape3dComponent but It is not clear how it can be used to access the Godot physics api which relies on kinematic, static bodies and other classes. The same applies for other classes and features. Maybe it is about documentation.

    Proposal

    As an idea, I don't know how feasible it is to get Godot scenes registered as components to have the full Godot api available in ECS systems. While adding complex scenes as components is not what ECS is about it could integrate Godot in the ECS paradigm.

    has docs topic:godot_integration 
    opened by jcarlosrc 4
  • Linux build errors

    Linux build errors

    Impressive work, thanks for sharing it. I wanted to try it out before finding out that my card is probably too old, I create this issue only FYI, close it when you want.

    I tried to build master first then the branch mentioned in the wiki Setup page, without the godex module and without the patch I can build and run both, if I add the module and apply the patch I have errors with both:

    Debian/sid gcc-10

    branch master:

    [ 33%] Compiling ==> modules/godex/main.cpp
    [ 33%] Compiling ==> modules/godex/register_types.cpp
    In file included from modules/godex/register_types.cpp:17:
    modules/godex/godot/editor_plugins/editor_world_ecs.h:137:7: error: 'void EditorWorldECS::_changed_callback(Object*, const char*)' marked 'override', but does not override
      137 |  void _changed_callback(Object *p_changed, const char *p_prop) override;
          |       ^~~~~~~~~~~~~~~~~
    In file included from modules/godex/register_types.cpp:18:
    modules/godex/godot/editor_plugins/entity_editor_plugin.h:42:15: error: 'virtual void EntityEditor::_changed_callback(Object*, const char*)' marked 'override', but does not override
       42 |  virtual void _changed_callback(Object *p_changed, const char *p_prop) override;
          |               ^~~~~~~~~~~~~~~~~
    In file included from modules/godex/godot/editor_plugins/components_gizmo_3d.h:3,
                     from modules/godex/register_types.cpp:16:
    modules/godex/godot/editor_plugins/../nodes/entity.h: In instantiation of 'void EntityInternal<C>::update_components_data() [with C = Entity3D]':
    modules/godex/godot/editor_plugins/../nodes/entity.h:202:33:   required from here
    modules/godex/godot/editor_plugins/../nodes/entity.h:745:9: error: 'class Entity3D' has no member named '_change_notify'
      745 |  owner->_change_notify("components_data");
          |  ~~~~~~~^~~~~~~~~~~~~~
    modules/godex/godot/editor_plugins/../nodes/entity.h: In instantiation of 'void EntityInternal<C>::update_components_data() [with C = Entity2D]':
    modules/godex/godot/editor_plugins/../nodes/entity.h:293:33:   required from here
    modules/godex/godot/editor_plugins/../nodes/entity.h:745:9: error: 'class Entity2D' has no member named '_change_notify'
    scons: *** [modules/godex/register_types.linuxbsd.tools.64.o] Error 1
    scons: building terminated because of errors.
    

    detached branch over 36c943260ed40c6e31a6ecff7f6e1674714b4fcb:

    [ 30%] Linking Static Library ==> modules/libmodule_gridmap.linuxbsd.tools.64.a
    Ranlib Library         ==> modules/libmodule_gridmap.linuxbsd.tools.64.a
    [ 30%] Compiling ==> modules/godex/components/child.cpp
    In file included from modules/godex/components/../systems/../iterators/query.h:5,
                     from modules/godex/components/../systems/system_builder.h:7,
                     from modules/godex/components/../ecs.h:11,
                     from modules/godex/components/component.h:5,
                     from modules/godex/components/child.h:3,
                     from modules/godex/components/child.cpp:1:
    modules/godex/components/../systems/../iterators/../storage/storage.h: In member function 'void ChangeList::notify_updated(EntityID)':
    modules/godex/components/../systems/../iterators/../storage/storage.h:50:14: error: 'class LocalVector<EntityID>' has no member named 'remove_unordered'
       50 |      changed.remove_unordered(index);
          |              ^~~~~~~~~~~~~~~~
    modules/godex/components/../systems/../iterators/../storage/storage.h:55:13: error: 'class LocalVector<EntityID>' has no member named 'remove_unordered'
       55 |     changed.remove_unordered(index);
          |             ^~~~~~~~~~~~~~~~
    scons: *** [modules/godex/components/child.linuxbsd.tools.64.o] Error 1
    scons: building terminated because of errors.
    
    bug topic:build confirmed 
    opened by xenogenesi 4
  • Patch does not apply

    Patch does not apply

    Problem

    Following the Compiling wiki page with Godot at this commit and Godex at this commit, I ran git apply modules/godex/patches/add_custom_iterator.patch.

    That resulted in this error:

    error: patch failed: core/config/engine.h:88
    error: core/config/engine.h: patch does not apply
    error: patch failed: main/main.cpp:2497
    error: main/main.cpp: patch does not apply
    

    Workaround

    I can successfully apply the patch after checking out a previous—albeit recent—commit of Godot like so:

    git checkout 2e66e5d5992a521fe27dc88fee92c680f4adf98b
    

    Understandably Godot's master branch is hectic, so the patch will inevitably fall out of sync until this PR is merged. It's probably kind of annoying to maintain the patch. If it helps, I'd be happy to update Godex's wiki by mentioning that last-known compatible Godot commit.

    Edit: Actually, I had to make a some minor changes to Godex for Godot to compile with it. I'm wondering, which commit of Godot is safest to use with Godex? I want to avoid recompiling a bunch of times.

    bug topic:documentation 
    opened by reeseschultz 4
  • build error: `error: 'as_const' is not a member of 'std'`

    build error: `error: 'as_const' is not a member of 'std'`

    Getting this error when building godot with godex.

    godotECS/godex/modules/godot/nodes/ecs_world.cpp:744:65: error: 'as_const' is not a member of 'std'; did you mean 'is_const'? 744 | const Storage *storage = std::as_const(world)->get_storage();

    topic:build 
    opened by TCOR3987 4
  • Editor UI for godex not working

    Editor UI for godex not working

    • No ECS tab in editor from the latest master from previous version:
    • Unable to add systems or change their order in "Pipeline view"
    • Unable to find any custom system in "Add system" window, opened by the button "Use feature"
    • No input reaction for buttons "New component" and "Add variable" in "Component and Databag manager" window, opened by the "Use feature" button
    • Unable to find any custom component in the "Component and Databag manager" window
    opened by AlexCheero 0
  • Fails to compile on Arch Linux

    Fails to compile on Arch Linux

    g++/gcc version: 12.1.0 scons version: 4.3.0

    Following the instructions on the README, I've cloned both the godot and godex repositores and applied the patch.

    When using scons I get an error that it's not able to find initialize_godex_module and so forth:

     > scons -j$(nproc) platform=linuxbsd target=release_debug custom_modules="../godex"  
    
    scons: Reading SConscript files ...
    Warning: Speech Dispatcher development libraries not found. Disabling Text-to-Speech support.
    This file `./systems/system_structs.gen.h` is already generated.
    This file `./systems/system_exe_funcs.gen.h` is already generated.
    This file `./systems/system_dispatcher_exe_funcs.gen.h` is already generated.
    This file `./systems/temporary_system_exe_funcs.gen.h` is already generated.
    Checking for C header file mntent.h... (cached) yes
    scons: done reading SConscript files.
    scons: Building targets ...
    [Initial build] run(["core/object/gdvirtual.gen.inc"], ["core/object/make_virtuals.py"])
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/skeleton.glsl.gen.h"
    Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/particles.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/particles_copy.glsl.gen.h"
    [Initial build] Compiling platform/linuxbsd/joypad_linux.cpp ...
    [Initial build] Compiling platform/linuxbsd/freedesktop_screensaver.cpp ...
    [Initial build] Compiling platform/linuxbsd/detect_prime_x11.cpp ...
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/blit.glsl.gen.h"
    [Initial build] Compiling platform/linuxbsd/os_linuxbsd.cpp ...
    [Initial build] Compiling platform/linuxbsd/crash_handler_linuxbsd.cpp ...
    Compiling platform/linuxbsd/godot_linuxbsd.cpp ...
    [Initial build] Compiling platform/linuxbsd/gl_manager_x11.cpp ...
    [Initial build] Building GLES3 GLSL header: "drivers/gles3/shaders/canvas.glsl.gen.h"
    [Initial build] Building GLES3 GLSL header: "drivers/gles3/shaders/cubemap_filter.glsl.gen.h"
    [Initial build] Building GLES3 GLSL header: "drivers/gles3/shaders/scene.glsl.gen.h"
    [Initial build] Building GLES3 GLSL header: "drivers/gles3/shaders/copy.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/canvas.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/canvas_occlusion.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/voxel_gi_sdf.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/canvas_sdf.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/volumetric_fog.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/volumetric_fog_process.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cube_to_dp.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cubemap_downsampler_raster.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cubemap_filter.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cubemap_filter_raster.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cubemap_roughness_raster.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/fsr_upscale.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/luminance_reduce.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/resolve.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/roughness_limiter.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/screen_space_reflection.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/screen_space_reflection_filter.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/screen_space_reflection_scale.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sort.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/specular_merge.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/ssao.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/ssao_blur.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/ssao_importance_map.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/ssao_interleave.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/subsurface_scattering.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cluster_debug.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cluster_render.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/cluster_store.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/gi.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sdfgi_debug.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sdfgi_debug_probes.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/voxel_gi.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/voxel_gi_debug.glsl.gen.h"
    [Initial build] Building RD_GLSL header: "servers/rendering/renderer_rd/shaders/sky.glsl.gen.h"
    [Initial build] Compiling platform/linuxbsd/display_server_x11.cpp ...
    platform/linuxbsd/display_server_x11.cpp:1185:2: warning: #warning Need to get from proper window [-Wcpp]
     1185 | #warning Need to get from proper window
          |  ^~~~~~~
    [Initial build] Compiling platform/linuxbsd/key_mapping_x11.cpp ...
    [Initial build] Compiling platform/linuxbsd/vulkan_context_x11.cpp ...
    [Initial build] Compiling platform/linuxbsd/libudev-so_wrap.c ...
    [Initial build] Generating enabled modules header.
    [Initial build] Compiling main/main.cpp ...
    [Initial build] Compiling main/main_timer_sync.cpp ...
    [Initial build] Compiling main/performance.cpp ...
    [Initial build] Compiling modules/register_module_types.gen.cpp ...
    modules/register_module_types.gen.cpp: In function 'void initialize_modules(ModuleInitializationLevel)':
    modules/register_module_types.gen.cpp:198:9: error: 'initialize_godex_module' was not declared in this scope; did you mean 'initialize_regex_module'?
      198 |         initialize_godex_module(p_level);
          |         ^~~~~~~~~~~~~~~~~~~~~~~
          |         initialize_regex_module
    modules/register_module_types.gen.cpp:201:9: error: 'initialize_bullet_physics_module' was not declared in this scope; did you mean 'initialize_freetype_module'?
      201 |         initialize_bullet_physics_module(p_level);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |         initialize_freetype_module
    modules/register_module_types.gen.cpp:204:9: error: 'initialize_godot_module' was not declared in this scope; did you mean 'initialize_mono_module'?
      204 |         initialize_godot_module(p_level);
          |         ^~~~~~~~~~~~~~~~~~~~~~~
          |         initialize_mono_module
    modules/register_module_types.gen.cpp: In function 'void uninitialize_modules(ModuleInitializationLevel)':
    modules/register_module_types.gen.cpp:349:9: error: 'uninitialize_godex_module' was not declared in this scope; did you mean 'uninitialize_regex_module'?
      349 |         uninitialize_godex_module(p_level);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~
          |         uninitialize_regex_module
    modules/register_module_types.gen.cpp:352:9: error: 'uninitialize_bullet_physics_module' was not declared in this scope; did you mean 'uninitialize_freetype_module'?
      352 |         uninitialize_bullet_physics_module(p_level);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |         uninitialize_freetype_module
    modules/register_module_types.gen.cpp:355:9: error: 'uninitialize_godot_module' was not declared in this scope; did you mean 'uninitialize_mono_module'?
      355 |         uninitialize_godot_module(p_level);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~
          |         uninitialize_mono_module
    [Initial build] scons: *** [modules/register_module_types.gen.linuxbsd.opt.tools.64.o] Error 1
    

    According to issue https://github.com/GodotECS/godex/issues/284 it's only compatible with a certain commit, but that gives me different errors. I'm not sure if I'm missing a step or using the wrong commit.

    bug topic:build 
    opened by abramsba 3
  • Compiling with javascript (emscripten/clang) fails

    Compiling with javascript (emscripten/clang) fails

    When I try to compile with "platform=javascript", which uses emscripten, the compilations fails with multiple errors.

    The complete log can be found here, but the main problems are errors similar to the one at Line 417:

    /home/karsten/git/godex/modules/bullet_physics/systems_base.cpp:22:12: error: type 'QueryResultTuple<EntityID, Any<Changed<BtRigidBody>, Changed<const BtSpaceMarker> > >' decomposes into 2 elements, but 3 names were provided for (auto [entity, body, space_marker] : p_query) {

    bug topic:build 
    opened by Beliaar 1
  • Add scheduled task to generate automatically new artifacts to download

    Add scheduled task to generate automatically new artifacts to download

    In my one project, this task looks in this way

    name: 🐧 Godot 3.x Exported Debug
    on:
      push:
      pull_request:
      schedule:
        - cron: '0 0 * * *'
    
    jobs:
      linux-exported-debug:
        runs-on: "ubuntu-20.04"
        name: Editor and project
    

    This will run 1 time per day https://crontab.guru/ should help to find the most optimal settings

    topic:feature topic:CI 
    opened by qarmin 1
Owner
GodotECS
This organization is all about ECS in Godot.
GodotECS
Godot bindings for the Rapier3D physics engine

Godot bindings for the Rapier3D physics library How to use There are two parts: A Godot module which must be compiled with the engine.

David Hoppenbrouwers 23 Jun 20, 2022
Steam API for the Godot game engine

Steam API for the Godot game engine

GP Garcia 1.2k Jul 1, 2022
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more

EnTT is a header-only, tiny and easy to use library for game programming and much more written in modern C++. Among others, it's used in Minecraft by

Michele Caini 6.8k Jun 22, 2022
A fast entity component system (ECS) for C & C++

Flecs is a fast and lightweight Entity Component System with a focus on high performance game development (join the Discord!). Highlights of the frame

Sander Mertens 2.8k Jun 28, 2022
Simple tower defense game using C++ with Entity Component System (ECS)

CubbyTower CubbyTower is a simple tower defense game using C++ with Entity Component System (ECS). The code is built on C++17 and can be compiled with

Chris Ohk 33 Jun 26, 2022
This is an ECS archetecture in Game implemented by C++

ECS This is an implement of the ECS archetecture in Game by C++17 ⭐ Star us on GitHub — it helps! ECS Sun Entity-Component-System Compiler compatibili

yao tang 27 Jun 7, 2022
A lightweight but complete ECS implementation for modern C++.

ECS A lightweight but complete ECS implementation for modern C++. Features Cache friendly design implemented on top of an EnTT-like sparse set. Clean,

null 5 Jun 13, 2022
Gaming meets modern C++ - a fast and reliable entity-component system (ECS) and much more

EnTT is a header-only, tiny and easy to use entity-component system (and much more) written in modern C++. Among others, it's also used in Minecraft by Mojang and The Forge by Confetti.

Sean Middleditch 8 Feb 16, 2021
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World.

OpenXRay OpenXRay is an improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. S

null 2k Jun 29, 2022
Flax Engine – multi-platform 3D game engine

Flax Engine – multi-platform 3D game engine

Flax Engine 3.4k Jul 1, 2022
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 27 Jun 12, 2022
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Dmitriy Nosov 11 Jan 9, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 51 Jun 10, 2022
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 92 Jun 18, 2022
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.7k Jun 19, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 130 Jun 28, 2022
A high speed C++17 Vulkan game engine

Acid is an open-source, cross-platform game engine written in modern C++17 and structured to be fast, simple, and extremely modular. Vulkan is the sol

Equilibrium Games 1.3k Jun 22, 2022
Pure C Game Engine

Corange game engine Version 0.8.0 Written in Pure C, SDL and OpenGL. Running Corange is a library, but to take a quick look at some of the things it d

Daniel Holden 1.5k Jun 27, 2022
The flexible game engine.

The flexible game engine. Crown is a general purpose and data-driven game engine, written in orthodox C++ with a minimalistic and data-oriented design

Daniele Bartolini 1.6k Jun 27, 2022