vgmoose / space-game

Godot and web port of Wii U homebrew Space Game

Home Page:https://vgmoose.com/space-game/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Space Game

This is a Godot port of the Wii U homebrew app Space Game (and Space Game NX). The goal of this port is to more easily bring it to other devices, as running homebrew can be a complicated process.

Downloads

Linux, Mac, and Windows builds are available here. A video of the gameplay is here. It is also playable on the web here!

Screen Shot 2021-08-18 at 10 29 57 PM Screen Shot 2021-08-18 at 10 31 29 PM

Credits and License

This program is licensed under the MIT license, which grants anyone permission to do pretty much whatever they want as long as the copyright notice stays intact.*

*The song ~*cruise*~ is available under CC BY-NC-ND, and is excluded from the MIT licensing.

How it works

The space.gd file is a direct port of space.c from the original, with syntax and other changes made to simulate OSScreen behavior. The graphics specific stuff happens in draw.gd/draw.c. A lot of the OSScreen abstraction was also already done in Space NX's draw.c when it was ported to SDL, and the Godot requirements are similar.

Space Game NX uses a Bitmap font to get around the lack of an OSScreen font in SDL. In this version, a LabelController class keeps track of all requested strings to draw on-screen, and then renders it with Godot's own text engine and a TTF font. Labels are given a somewhat-unique ID based on their coordinates to allow them to be re-used, and are made visible when the frame is drawn. This allows the game to look more similarly to how it looked on the Wii U, where the in-game pixels were larger than the pixels in the font. The NX bitmap font can be toggled with the code 11111 on the Password screen.

All of the same bitmap compression/rendering/matrix logic is done as described in the original readme, which is incidentally not a great strategy for making a Godot game! This makes the code not very useful as a reference for Godot, although seeing how some pixel-effects (like the explosions) occur, or using a TextureRect to draw pixel sprites could be helpful.

Due to it using the same prng method, all old passwords should work from previous versions of Space Game!

Gameplay Differences

The big change is that now Space Game runs at 60fps when it can, and when it can't it maintains the same speed of objects in game. Godot will try to maintain 60fps, but may bump down to 30fps if 60 is too demanding. This difference means that regardless of the fps, the gameplay should "feel" the same speed (which is important, as later levels will make the enemies faster). In the previous homebrew versions the game would render each frame as fast as it could, which turned out to come in lower than 60fps or allow inconsistent slowing down depending on what was occurring on screen.

The code 22222 is also added to toggle the music playing within the code, and some other passwords also had their functionality change. For example, the code 24177 now enables a new double firing function from the ship, whereas before it would transform the player's sprite. Some passwords also now also open URLs as easter eggs. Like in the original, certain cheats will disable the score counter. The code 77777 to swap the red and blue channels from the NX port is also present!

Screen Shot 2021-08-19 at 12 02 03 AM Screen Shot 2021-08-19 at 12 01 31 AM

A final note

This is technically the fourth port of Space Game! The porting history is as follows:

Wii U Space Game (2016) -> JSpaceGame (2017) -> Space Game NX (2018) -> Space Game (2021) (You are here).

To hear more about the Java port, I wrote a blog post about it in 2017, and you can compare Space.java against the .gd and .c files 😃

Space Game NX (an SDL program) was intended to be the "final form" of this small game, but using a game engine like Godot allows for better control over the FPS issue as mentioned earlier, but also personally gives me greater confidence in the codebase being more accessible in the future in a way that SDL fell a little short. Trying to explain to others how to play Space Game always forces me to start off with a "Well..." as I picture the homebrewing paths, Java path, or trying to get SDL working with their setup (aka Controllers, framerate, OS concerns, etc). Now it can be easily brought to computers, phones, consoles, or other Godot projects!

That is also the reasoning behind just naming this "Space Game"– I want this version to be "the thing" I'm referring to when I picture the original game, in the absense of a nearby Wii U of course!

About

Godot and web port of Wii U homebrew Space Game

https://vgmoose.com/space-game/


Languages

Language:GDScript 100.0%