The first real limitation
- dglusak
- Oct 29, 2023
- 2 min read
So, I started building a little 3D spaceship shooter. This was meant to be reminiscent of the old X-Wing and Tie Fighter games. I have no ship, but a camera, lasers and a few spheres as targets. I built an acceleration and radar system.
This is the first real limitation of GDScript that I've reached. There are no interfaces/abstracts. I came across this with the radar system, which should have been easier to implement than it was. The idea would be to have a global collection of items that inherit from a single IDetectable interface or something similar. Then the radar would cycle the collection and draw a visible icon for each one.
But, instead of using an interface I was forced to build these off of a single base class. While this works great for just the radar, the conflict came into place when I wanted a second interface for laser hits. I could build this into another base class, on the assumption that anything appearing on radar would also be 'shootable', but I don't think that's a very safe assumption to make at this point.
With only two base classes in the system, I've already run into a conflict. What happens when I'm at 5 or 30 or more? I can think of quite a few work arounds for this, but they all have a number of potentially performance impacting downsides to them. What should be one of the most simple parts of the programming (describing individual function groupings) has now become a major obstacle that will require multiple work-arounds and standards that cannot be enforced throughout development.
I know I could switch to C# or C++ and have full capabilities on this, but a big part of these is web capability, which C# doesn't support at this point. I also don't want to start into my own branch of the engine, since I really don't know enough about it to do more than compound mistakes throughout the entire development cycle.
For the moment, I'm going to shelve this one and move on to something where I can stress test various options for this.
Anyway, here's the archive since there's no publish of this one up.
Comments