Giter Club home page Giter Club logo

qurobullet's Introduction

I'm Quinn, a full-stack web developer working primarily with Rails and React. I also develop games and game dev tools as a personal hobby. I hope you enjoy my work, and if you use any of my tools to help with your games, I'd love to see them!

qurobullet's People

Contributors

quinnvoker avatar remtaine avatar strauji 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

qurobullet's Issues

[Question] Current state, Godot 4.0?

Hey @quinnvoker,

I stumbled upon your old post on r/gamedev, I'm quite interested in this module since it could really help with a project I'm working on currently.
So I wanted to know 2 things:

  • Is the module up-to-date and ready for production? The last commit was 3 months ago so I'm worried maybe you've abandoned the project.
  • Do you have anything planned for Godot 4.0? Performance optimization? Pre-compiled version?

On a side note, I really like the simplicity it has for the "end-user", great work overall.

If anything is planned, I'll try to help, I'll just need to get my C++ back together.

Replay system: Change bullet and spawner _Process to _Physics_process

I created a replay system using _Physics_process, all character movements are recorded frame by frame, but the bullet in this module does not change speed from changing fps, and i think a delta is used which breaks the replay system
Spawner changes speed, but I don’t understand if it works correctly.
Is there a way to change this in godot without changing source code

Consistent error while building

Hi! I'm not really experienced with building things from source, but I've been trying to give it a go to get qurobullet working. However, every time I try to build Godot with qurobullet in the modules folder, I get the same error:

scons: Reading SConscript files ...
Platform "x11" has been renamed to "linuxbsd" in Godot 4.0. Building for platform "linuxbsd".
Enabling ALSA
Enabling PulseAudio
Enabling udev support
Checking for C header file mntent.h... (cached) yes
scons: done reading SConscript files.
scons: Building targets ...
[Initial build] Compiling ==> main/main.cpp
[Initial build] Compiling ==> modules/register_module_types.gen.cpp
[Initial build] Compiling ==> modules/qurobullet/register_types.cpp
[Initial build] In file included from modules/qurobullet/register_types.cpp:5:0:
modules/qurobullet/bullet.h:4:10: fatal error: core/object.h: No such file or directory
 #include "core/object.h"
          ^~~~~~~~~~~~~~~
compilation terminated.
[Initial build] Compiling ==> modules/qurobullet/bullet_type.cpp
[Initial build] Compiling ==> modules/qurobullet/bullet.cpp
In file included from modules/qurobullet/bullet_type.cpp:1:0:
modules/qurobullet/bullet_type.h:4:10: fatal error: core/resource.h: No such file or directory
 #include "core/resource.h"
          ^~~~~~~~~~~~~~~~~
compilation terminated.
[Initial build] Compiling ==> modules/qurobullet/bullet_server.cpp
In file included from modules/qurobullet/bullet.cpp:1:0:
modules/qurobullet/bullet.h:4:10: fatal error: core/object.h: No such file or directory
 #include "core/object.h"
          ^~~~~~~~~~~~~~~
compilation terminated.
[Initial build] Compiling ==> modules/qurobullet/bullet_server_relay.cpp
[Initial build] Compiling ==> modules/qurobullet/bullet_spawner.cpp
scons: *** [modules/qurobullet/register_types.linuxbsd.tools.64.o] Error 1
scons: *** [modules/qurobullet/bullet_type.linuxbsd.tools.64.o] Error 1
scons: *** [modules/qurobullet/bullet.linuxbsd.tools.64.o] Error 1
In file included from modules/qurobullet/bullet_server_relay.h:4:0,
                 from modules/qurobullet/bullet_server_relay.cpp:1:
modules/quarobullet/bullet_type.h:4:10: fatal error: core/resource.h: No such file or directory
 #include "core/resource.h"
          ^~~~~~~~~~~~~~~~~
compilation terminated.
scons: *** [modules/qurobullet/bullet_server_relay.linuxbsd.tools.64.o] Error 1
In file included from modules/qurobullet/bullet_spawner.cpp:1:0:
modules/qurobullet/bullet_spawner.h:4:10: fatal error: core/engine.h: No such file or directory
 #include "core/engine.h"
          ^~~~~~~~~~~~~~~
compilation terminated.
scons: *** [modules/qurobullet/bullet_spawner.linuxbsd.tools.64.o] Error 1
In file included from modules/qurobullet/bullet_server.h:5:0,
                 from modules/qurobullet/bullet_server.cpp:1:
modules/qurobullet/bullet.h:4:10: fatal error: core/object.h: No such file or directory
 #include "core/object.h"
          ^~~~~~~~~~~~~~~
compilation terminated.
scons: *** [modules/qurobullet/bullet_server.linuxbsd.tools.64.o] Error 1
scons: building terminated because of errors.

I've tried building without qurobullet and it works fine, I've redownloaded the source for both Godot and qurobullet multiple times, and I've made sure I have all dependencies installed, but all I can figure out is that it's trying to read a file that isn't in Godot's core folder. This may be an issue with Godot and not qurobullet, but I figured I'd ask just in case. Thanks!

Add method to return amount of active bullets

I'm trying out this module in Godot, and it's working really well. One thing I'd like this module to have however would be a function that outputs the number of bullets. It'll be an easy way to show how many bullets are active and the bullet number in-game can be managed more easily.

Support for atlas textures?

The BulletType resource supports all types of textures, but when I try to use the AtlasTexture and give it my bullet sprite sheet and configure it to show the bullet, it just displays the bullet as the whole sheet instead of just the bullet in-game.

In editor:
issue1

In game:
issue2

No method to get array of bullets

A lot of bullet hells clear their bullets if the player is hit. The current BulletServer has a clear_bullets() function for this, but it just leaves them all without a trace. I was thinking of putting particles where they were before clearing the bullets. Maybe it'd be good to add access to the bullets array, or at least an array of their positions?

play area manual property value from inspector ignored

Condition :
in bulletserver, I set play area mode = Manual
set Rect value to something
Play the scene and check the value again, the Rect value will be set to default (viewport size)

After I check multiple times, the Rect value in inspector are ignored when I play the scene
but if you set the value from a script, it will work

Allow users to define custom play area

Currently, BulletServer's play_area rect is purely based on the current viewport's position and size and a given margin.

Users should have the option to define a custom Rect2 to use as their play area, so it can fit the needs of any scene, independent from the current viewport.

Ensure bullet direction is always a normal

Try setting to local target aim mode in the bullet spawner, set the target to (0,0), and the radius to 0...
No bullet movement!

This can be fixed by ensuring the spawner is only adding directions to volleys as normals in create_volley.

rigid body bullets?

i like it when bullets collide with enemy bullets- it gives you a sense of control.

compiling

this happens:

In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
./core/os/rw_lock.h:41:22: error: 'shared_timed_mutex' in namespace 'std' does not name a type
   41 |         mutable std::shared_timed_mutex mutex;
      |                      ^~~~~~~~~~~~~~~~~~
./core/os/rw_lock.h:41:17: note: 'std::shared_timed_mutex' is only available from C++14 onwards
   41 |         mutable std::shared_timed_mutex mutex;
      |                 ^~~
./core/os/rw_lock.h: In member function 'void RWLock::read_lock() const':
./core/os/rw_lock.h:46:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   46 |                 mutex.lock_shared();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
./core/os/rw_lock.h: In member function 'void RWLock::read_unlock() const':
./core/os/rw_lock.h:51:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   51 |                 mutex.unlock_shared();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
./core/os/rw_lock.h: In member function 'Error RWLock::read_try_lock() const':
./core/os/rw_lock.h:56:24: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   56 |                 return mutex.try_lock_shared() ? OK : ERR_BUSY;
      |                        ^~~~~
      |                        std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
./core/os/rw_lock.h: In member function 'void RWLock::write_lock()':
./core/os/rw_lock.h:61:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   61 |                 mutex.lock();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
./core/os/rw_lock.h: In member function 'void RWLock::write_unlock()':
./core/os/rw_lock.h:66:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   66 |                 mutex.unlock();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
./core/os/rw_lock.h: In member function 'Error RWLock::write_try_lock()':
./core/os/rw_lock.h:71:24: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   71 |                 return mutex.try_lock() ? OK : ERR_BUSY;
      |                        ^~~~~
      |                        std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/register_types.cpp:5:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/pool_vector.h:36,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
./core/os/rw_lock.h:41:22: error: 'shared_timed_mutex' in namespace 'std' does not name a type
   41 |         mutable std::shared_timed_mutex mutex;
      |                      ^~~~~~~~~~~~~~~~~~
./core/os/rw_lock.h:41:17: note: 'std::shared_timed_mutex' is only available from C++14 onwards
   41 |         mutable std::shared_timed_mutex mutex;
      |                 ^~~
./core/os/rw_lock.h: In member function 'void RWLock::read_lock() const':
./core/os/rw_lock.h:46:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   46 |                 mutex.lock_shared();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/pool_vector.h:35,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/pool_vector.h:36,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
./core/os/rw_lock.h: In member function 'void RWLock::read_unlock() const':
./core/os/rw_lock.h:51:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   51 |                 mutex.unlock_shared();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/pool_vector.h:35,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/pool_vector.h:36,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
./core/os/rw_lock.h: In member function 'Error RWLock::read_try_lock() const':
./core/os/rw_lock.h:56:24: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   56 |                 return mutex.try_lock_shared() ? OK : ERR_BUSY;
      |                        ^~~~~
      |                        std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/pool_vector.h:35,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/pool_vector.h:36,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
./core/os/rw_lock.h: In member function 'void RWLock::write_lock()':
./core/os/rw_lock.h:61:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   61 |                 mutex.lock();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/pool_vector.h:35,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/pool_vector.h:36,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
./core/os/rw_lock.h: In member function 'void RWLock::write_unlock()':
./core/os/rw_lock.h:66:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   66 |                 mutex.unlock();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/pool_vector.h:35,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/pool_vector.h:36,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
./core/os/rw_lock.h: In member function 'Error RWLock::write_try_lock()':
./core/os/rw_lock.h:71:24: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   71 |                 return mutex.try_lock() ? OK : ERR_BUSY;
      |                        ^~~~~
      |                        std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/pool_vector.h:35,
                 from ./core/math/transform_2d.h:35,
                 from ./core/method_ptrcall.h:34,
                 from ./core/method_bind.h:35,
                 from ./core/class_db.h:34,
                 from ./core/resource.h:34,
                 from modules/qurobullet/bullet_type.h:4,
                 from modules/qurobullet/bullet_type.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
[Initial build] Compiling ==> modules/qurobullet/bullet.cpp
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
./core/os/rw_lock.h:41:22: error: 'shared_timed_mutex' in namespace 'std' does not name a type
   41 |         mutable std::shared_timed_mutex mutex;
      |                      ^~~~~~~~~~~~~~~~~~
./core/os/rw_lock.h:41:17: note: 'std::shared_timed_mutex' is only available from C++14 onwards
   41 |         mutable std::shared_timed_mutex mutex;
      |                 ^~~
./core/os/rw_lock.h: In member function 'void RWLock::read_lock() const':
./core/os/rw_lock.h:46:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   46 |                 mutex.lock_shared();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
./core/os/rw_lock.h: In member function 'void RWLock::read_unlock() const':
./core/os/rw_lock.h:51:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   51 |                 mutex.unlock_shared();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
./core/os/rw_lock.h: In member function 'Error RWLock::read_try_lock() const':
./core/os/rw_lock.h:56:24: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   56 |                 return mutex.try_lock_shared() ? OK : ERR_BUSY;
      |                        ^~~~~
      |                        std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
./core/os/rw_lock.h: In member function 'void RWLock::write_lock()':
./core/os/rw_lock.h:61:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   61 |                 mutex.lock();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
./core/os/rw_lock.h: In member function 'void RWLock::write_unlock()':
./core/os/rw_lock.h:66:17: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   66 |                 mutex.unlock();
      |                 ^~~~~
      |                 std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
In file included from ./core/object.h:38,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
./core/os/rw_lock.h: In member function 'Error RWLock::write_try_lock()':
./core/os/rw_lock.h:71:24: error: 'mutex' was not declared in this scope; did you mean 'std::mutex'?
   71 |                 return mutex.try_lock() ? OK : ERR_BUSY;
      |                        ^~~~~
      |                        std::mutex
In file included from /usr/include/c++/11.2.0/mutex:43,
                 from ./core/os/mutex.h:39,
                 from ./core/string_name.h:34,
                 from ./core/node_path.h:34,
                 from ./core/hashfuncs.h:36,
                 from ./core/hash_map.h:35,
                 from ./core/object.h:34,
                 from modules/qurobullet/bullet.h:4,
                 from modules/qurobullet/bullet.cpp:1:
/usr/include/c++/11.2.0/bits/std_mutex.h:83:9: note: 'std::mutex' declared here
   83 |   class mutex : private __mutex_base
      |         ^~~~~
scons: *** [modules/qurobullet/register_types.x11.opt.tools.64.o] Error 1
scons: *** [modules/qurobullet/bullet_type.x11.opt.tools.64.o] Error 1
scons: *** [modules/qurobullet/bullet.x11.opt.tools.64.o] Error 1
scons: building terminated because of errors.
[Time elapsed: 00:06:08.359]

when compiling with:

scons target=release_debug tools=yes module_bmp_enabled=no module_bullet_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_etc_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_mbedtls_enabled=no module_mobile_vr_enabled=no module_opus_enabled=no module_pvr_enabled=no module_recast_enabled=no module_webm_enabled=no optimize=speed use_lto=yes -j6

what module am i missing?

Have Z-index for Bullets created by BulletSpawner

Hello! When making bullet hell's, I noticed that the important bullets get covered by the less important. An example is here, where the enemy's bullets cover the player's. Ideally, the player's bullets are seen more.

image

This can be solved if BulletSpawner or BulletType had an attached Z-index for the bullets. That way, it's easy to emphasize the more important bullets.

I think there's a way to do this through having multiple BulletServers then arranging them there, but I think each BulletSpawner having their own Z-index attached to their bullets would be better 😁

What do you think?

Edit: taking a quick look at the code, would adding z to this line work? I'll probably try it out later:

VS::get_singleton()->canvas_item_set_draw_index(bullet->get_ci_rid(), i + (z * 10000));

Bullets spawn elsewhere when root node is moved

Whenever I attach the BulletServer & BulletSpawner to a CharacterBody2D (or a node attached to a CharacterBody2D), then place the CharacterBody2D node on a different scene I noticed that the bullets do not spawn at the point given within the radius

Screenshot of the CharacterBody2D node the spawner is attached to the right of the object a few pixels away
Screenshot from 2023-11-02 21-02-24

Now attached to a different node with the CharacterBody2D as a child, moved the node into the middle of the screen. Radius is still shown right next to the CharacterBody2D node but the bullets appear in a different position
Screenshot from 2023-11-02 21-02-54

Godot 4.x

The readme says that this currently doesn't work with godot 4.x- are there any plans to update in the future to support 4.x, and what's missing for 4.x support?

It does works... πŸ‘

I just recently compiled godot3.44 and then i added the qurobullet.... module as ur docs says, then i receive an error, i think your module is not updated to 3.44 version :/ lot of errors

cannot get Classes ?

After exporting, i tried to run my game with the debugger on I get these errors.
ERROR: Cannot get class type 'BulletSpawner'
ERROR: Cannot get class type 'BulletServer'
and when i add a Bullet type to the spawner it gives me the error shown in the png and force closes the game immediatly

Untitled

i dont know how to fix it , any help would be appreciated :)

Add Way to Create Special Properties/Custom Behavior for Bullets

Hello! I was thinking of ways to replicate special properties from BulletML (the most well-known bullet pattern generator) in Qurobullet. Things like vanishing bullets, bullets pausing movement or changing direction every few frames, homing bullets, etc.

I think the best way would be to:

  1. Add custom data to the bullets (maybe it inherits from its BulletSpawner) to mark that it has a special property (Edit: just realized that the BulletType's custom data is accessible in the Bullet object through get_type(), so maybe this # isn't needed anymore)
  2. Emit a signal from BulletServer's spawn_bullet() (and hence spawn_volley() as well) whenever a bullet is spawned that includes that bullet, then the developer can connect it to another script to make custom behavior. The functions will also return the bullet spawned instead of just void. This way the developer doesn't have to check the entire array of active bullets (through get_live_bullets()) per frame, and can just add the bullets with custom behaviors in another array.

What do you think? If you think this is a good idea, I think I can make edits to those functions 😁

PS. I'm writing an article on how to create bullet-hell patterns in Godot using the Qurobullet module. Would that be okay with you? I'll show you the article before publishing on my website πŸ˜„

Default values of BulletType rotation and rotation_degrees aren't simplified

One thing I've noticed with the BulletType object is that its default value for rotation and rotation_degrees are these strange values. Is there a particular reason for this? Around 5% of the time that I run my build, the bullet rotation screws up without me changing anything. I'm thinking it has something to do with this

image

I'll try making a pull request for this later, I'll make their default values 0

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.