Apologies for the now almost four-month silence. Suchaaver and I have been busy graduating from college, moving out of our apartments to back home, and taking a vacation. In fact, I write this article from our hotel room overlooking the beach in Waikiki, Hawaii. But we have an update that I’m glad I’ve gotten through, as it opens up the door for a lot of feature development. Behold, moving rockets as obstacles!
Near miss with that second rocket.
Suchaaver modeled a nice prototype rocket for use in our game, and it is now our game’s first moving obstacle. The design of the rocket pays homage to old school spaceships (think Pizza Planet from Toy Story). It’s fun, a bit nostalgic, and most importantly, fits the feel of our game by having a low-poly style to match the player vehicle.
Good ol' Pizza Planet providing some inspiration for that rocket.
What took so long?
It took a lot longer than I anticipated to put the obstacle movement system in place. From the outset of this game, I knew I wanted to create a universal obstacle system that allowed for complex obstacle behaviors. In jMonkeyEngine, behaviors for spatials are manipulated via "controls." In order to enable this complexity without having to give each obstacle unique code, I planned to build the "controls" so they could be swapped or stacked with ease. That way, I can create future behaviors like my hand-drawn diagram below illustrates:
Possible obstacle movement patterns (and thinking of new obstacles). Under "Circular Moving," that obstacle is a saw, not an eye.
"Static", "Forward Moving", and "Circular Moving" are unique patterns, but "Helical Moving" is a stacking of "Circular Moving" and "Forward Moving", and "Sinusoid Moving" is a combination of "Forward Moving" and I guess a "Static Sinusoid Moving" obstacle I didn't draw. As of right now, we have the first two covered in a way that I’m pleased with, since it allows for the evolution of the other obstacles in a Lego-like manner.
We will have another update coming next week. Suchaaver didn’t push his code changes to our repository before we left for vacation, so we can’t quite show them yet. Yeah, that’s right. Our resident artist is writing code. Surprising? Well, it shouldn’t be, since he just graduated from UC Berkeley with a degree in Electrical Engineering and Computer Science. But that explanation can wait till next week!