Space Rocks 3D!

Here’s a sneak peek showing the upgraded 3D rendering:

ship-d

It can now handle overlapping surfaces by using a BSP tree to draw them in the correct order. On hardware, it’s getting about 25fps which still seems tolerable.

12 Likes

tie fighters
:crazy_face:

Even though it’s tempting, I’d prefer to avoid antagonizing Disney’s fearsome team of intellectual property lawyers. They are much more scary than Titan squadron or Sith lords…

(Yes, I know they are unlikely to care about a tiny project like this, but I kind of like making my own ship designs anyway. That also avoids having to resolve the infamous 22.5 degree cockpit angle inconsistency for TIE fighters.)

1 Like

Gus is cute sixty four

1 Like

Okay thanks.

Can you make it where we need it press the up arrow then the plane will look up and do one of the down arrow and press than the plane will look down

1 Like

Sure, here you go:

Changes:

  • Added a “Joystick Y: inverted / normal” option. (I think non-inverted feels weird for a spaceship, but I guess opinions differ here, and I’m grumpy myself if FPS games don’t include an “invert Y” option.)
  • Updated the starting wave choice. That now applies immediately for a new game, or to the next game if trying to skip backwards from a game in progress. (You can use “Reset game” to start over at any point.)

This release also includes various performance improvements from renderer changes I’ve been working on recently. It’s only lightly tested as far as gameplay is concerned, so let me know in case of any regressions.

Dithered shading is now roughly as fast as flat shading, so I removed the setting for that. Wave 20 now runs at ~20fps on a PyGamer, up from ~10fps in the previous release. This involved tracking down a bunch of performance-eating floating point calculations, logic errors and other bottlenecks. I left the performance tracing option I used for this in the menu for anyone curious, but it’s unlikely to be useful unless you’re studying the internals. It’s similar in spirit to https://makecode.com/js/profiling, but works on hardware also without needing special debugging tools.

6 Likes

I really like this game can you make a fps game thats not with planes

It doesn’t have to be right now but this is the only fps game right now

Here’s v0.16:

It now includes analog joystick control on compatible hardware such as the PyGamer. This is on by default but can be disabled in the menu in case it’s causing issues, please let me know if it’s misbehaving. It uses Button::pressureLevel() which is new to me, but it seems to be working well on my device.

@Purp13 - I don’t have any current plans for a non-spaceship 3D game, sorry. I’ve started early work for a sequel to Space Rocks 3D which will likely keep me busy for a while.

9 Likes

I found a bug/hack, If you turn around right before collision, the asteroid will go through you and you will not receive damage.

2 Likes

Yeah, it’s currently checking for collisions based on ship/asteroid distance at the time of each update. If the asteroid is moving fast, and especially if the frame rate is low, it’s possible that the asteroid moves far enough from one update to the next to jump across the ship position without triggering a collision. I don’t think it’s specifically related to turning around, you should also be able to get this effect by boosting straight towards a fast oncoming asteroid.

3 Likes

dunno if you intended it, but this reminds me of a 3D version of [asteroids]!(https://www.youtube.com/watch?v=WYSupJ5r2zo)

2 Likes

Yes, Asteroids was an inspiration, and I also use the gameplay mechanic where asteroids leaving the visible area reappear on the opposite side. In this case it’s a sphere centered on the player’s ship instead of the screen edges.

2 Likes

I didn’t even know that this was possible, I looked through the code and all I saw were giant blcks that made no sense to me.
Amazing Job, man! I’m surprised that you even got the rocks to look 3D, let alone the fact that you can fly around and blow them up!

1 Like

Those blocks are typescript blocks

1 Like

i think you should make the controls easier

1 Like

Easier in what way? You can choose from various control methods in the menu, including tilt controls on Arcade hardware such as the Pygamer. For the emulator, you can use a gamepad if that’s supported via the Web Gamepad API.

1 Like

so i just found this post (btw nice work!)

and id suggest making a setting to turn off and on shadows, since i find this annoying when i am in level 20 and the asteroids go away and i cant see them

The asteroids are currently forced to stay in a fairly small sphere surrounding the player ship for gameplay reasons. If they leave that sphere they are teleported to the opposite side. This effectively causes them to appear and disappear from view, and the distance based fade-to-black effect is intended to make that less jarring.

If it bothers you, try increasing the world size which allows asteroids to move further away, and that also reduces the intensity of the fade-to-black effect. It’s not the default since it changes the game - the risk of collisions is lower since the rocks are spread out more, and you’ll have to cover larger distances to hunt down stray rocks. (Boost helps here.)

2 Likes