Wowie Jam! Project Objectives

With so little time (and so little Godot programming knowledge), I want to make a solid list of doable project objectives for Uncontrollable Spaceship.

Gameplay

I have a lot of ideas for Uncontrollable Spaceship and my original intent was that it would have many or all of these as game modes – it could be a:

  1. puzzle game
  2. “precision” flying game
  3. fight the aliens game
  4. destroy stuff game
  5. 2 player racing game

The demo I did was with two players with the idea it could be a racing game. I think that works best and is most doable – I don’t have to invent puzzles or come up with any kind of AI logic.

So the first scope decision is to limit the game to a two player racing game.

Scope decisions based on what I can do:

The game needs to have different screens

It needs a title screen and each game level needs to have its own screen. I have not done this yet in Godot and my guess is that I do it by making each screen its own scene and then have some game logic that instances whichever scene is appropriate. I will have to find some reference on this because I don’t understand exactly where a Godot program “starts”. At least to me, it isn’t as straightforward as say “Line 10” in a BASIC program.

I think this might be reference I need:
Godot 101 – Part 4: Instancing Scenes
http://kidscancode.org/blog/2017/02/godot_101_04/

The game will not have any scrolling

I had found a great tutorial on making a multi-camera game (so each player has their own independently scrolling screen showing the area around their spaceship). However, that seems like more than I’m going to get working in a weekend – especially since it will take more time to design an even larger gameworld.

However, this would be my go-to reference for split-screen scrolling:
Godot 3.0: Splitscreen Demo (Using Viewports)
http://kidscancode.org/blog/2018/07/godot3_splitscreen/

Screen resolution

I’ve had some difficulties with figuring out how to set up multiple screen resolutions for the same project in Godot. This comes up when I’m trying to make a browser playable version of something and also make it compile to a stand-alone. I think a stand-alone end product is better as a final product (and my laptop is not powerful enough to run browser based games well). However, I’d like to be able to post web-playable updates as I make progress.

The current demo is set up as 600×600 for playing in the browser. My laptop has a screen resolution of 1600×900 so this works for playing in-browser.

I think for this game jam I’m going to make it 800×450 for playing in the browser and 1600×900 for playing as a stand-alone. I’m hoping that by making it a simple multiply-by-2 that I’ll be able to get that to work.

Graphics

The space ships in the current demo are actually SVG graphics I drew in CorelDraw and then imported into Godot. I couldn’t set the color in CorelDraw, it just imports as black. And I couldn’t change the color in Godot.

I don’t know why. In the post I made about the Blob generator, it exports SVG files in color that Godot imports just fine.

What I like about the SVG spaceships is that they rotate nicely and don’t show any weird pixel artifacts when they rotate. I don’t know how well that will work with bitmap graphics, but I think I’m going to have to try.

For the other objects, I’m going to need to find something better than colored rectangles.

Gamification

I need to create zones and some way to inform the player where the zones are and which one they have to race to next. I also need to figure out collision detection so that the game knows when the player has reached a zone.

So far I haven’t dealt with collision detection at all — the physics system handles all the collisions and bouncing automagically.

I know there are flags for all kinds of collision detection that are built in.

I’ll need to have a “start your engines” and countdown timer that appears in the beginning of each race before any action happens.

I’ll need a way for players to get out of a “stuck” situation. For example, if a player falls to the ground with the ship lying on its side then it is usually impossible to get the ship back off the ground. There are too many ways a player can get stuck — caught on the ground, with objects fallen on them, stuck between objects, or even stuck under the other player’s ship. My solution for now will be a self-destruct button that the player can press to blow up their ship and restart at the starting grid. If this were a scrolling game that involved travelling over a larger map, I’d need a better solution — but I think that the small maps dictated by the screen size make it OK to restart the player from the beginning. So players will now have 2 control buttons — a THRUST button and a SELF-DESTRUCT button.

Conclusion

I think I have a better grasp of the scope of what I’m trying to accomplish in a weekend. Now to get working.

Interesting note on Godot: I am very accustomed to programming in a language and not with game objects and scripts. I don’t have any idea how to copy useful pieces from one Godot project to another – I don’t even know if I can have 2 projects open simultaneously.

Sharing is caring 81766 style!