Gravity Ace

Classic controls and more!


Hey everybody and welcome back to another Gravity Ace devlog.

I started off this week by building a new theme for the website. The previous theme was functional but it wasn’t super flashy or attractive… kind of boring. So I basically JUICED the website by doing a few things:

  1. I made everything bigger. It’s still centered on the screen but the content area is much wider and uses a much bigger font size. I also increased the size of videos and images so that they’re full width. And I added a very large hero image at the top of the home page.

  2. I removed the pixel font from most of the text and now I’m only using it for headings. The rest of the text uses the Google Font Share and Share Tech Mono.

  3. I added About, Media, and Contact sections to the home page.

  4. I added some very large call to action buttons to WISHLIST ON STEAM and FOLLOW ON ITCH to every screen. Later I can easily change them to BUY buttons.

  5. I added an animated background showing the nebula and stars from the game. It’s a looping video playing in the background.

Pretty simple changes but I think it’s night and day compared to the old site.

NEXT I added a CLASSIC controls option. The default control scheme is MODERN twin-stick controls or WASD + mouse aim. But you can now also activate CLASSIC controls for retro purists who want an experience more like the original Thrust.

CLASSIC controls are tank-style rotate and move. Aiming is fixed so you can only shoot in the same direction the ship is pointing. Gamepad aim and mouse aim are turned off. So in this mode you need to rotate the ship to thrust and aim. It’s more difficult but also gives a more retro vibe.

I’d actually had both control schemes already in the game mapped to different inputs. WASD used MODERN controls and the ARROW keys were CLASSIC. On the gamepad, the analog sticks were MODERN and the DPAD was CLASSIC. I’ve consolidated the controls and made the choice explicit in the options menu. That should make it more discoverable and won’t appear like a BUG.

I ALSO worked on input mapping. It’s been on my list for a long time but removing hard-coded device IDs from the game needed to be done. I added code to detect controllers being plugged and unplugged and dynamically assign the controllers to PLAYER 1 or PLAYER 2. And I replaced all of the old gamepad axis code with the new get_action_strength API.

While I was doing that I modified the Input Map to include a second controller. Basically, if you’ve got two gamepads plugged into your machine you can use either one to control the game. They’re both active at the same time so it doesn’t matter which one you pick up.

This lays the groundwork for local multiplayer. I’m not implementing it right now but at some point during Early Access I’d like to add two local multiplayer modes. One mode is a Spacewar style 1v1 battle mode where two players can face off.

The other mode will be a co-op mode where two people can control one ship through the single player levels. This actually works right now as a side-effect of how I redid the input mapping. Since both controllers and the keyboard and mouse are all active at all times two (or more!) people can decide how they want to split up duties. Maybe PLAYER 1 will fly while PLAYER 2 shoots and beams.

Making co-op mode explicit will mean locking certain actions to certain inputs. And maybe even doing something wild like randomizing which inputs work on different controllers. Could be interesting… BUT I’m not doing it RIGHT NOW because it’s not on my TODO list for Early Access launch.

Speaking of launch… I need TESTERS so I’m transitioning Gravity Ace distribution to a closed beta. Please join the DISCORD server if you’d like to try out the game, help test it, and provide feedback. I’d love to hear your suggestions. All DISCORD users will also receive a launch discount so come join today. The DISCORD link is on this video and at GRAVITY ACE DOT COM.

That’s it for now. Let me know if you have any questions or comments.

Thanks and see you next time!

Published January 5, 2020

More devlogs...

Game jams for beginners

3 methods for screen shake in Godot Engine

Creating a custom Fixed Joint in Godot Engine