You can sign up to get a daily email of our articles, see the Mailing List page!
Support us on Patreon to keep GamingOnLinux alive. This ensures we have no timed articles and no paywalls. Just good, fresh content! Alternatively, you can donate through Paypal, Flattr and Liberapay!

Tiny Chopper Raceway - An Example Godot Game With Sources

Posted by , | Views: 10,991
Earlier this month, I released sources for an example 2D racing/drifting game made with the Godot engine called Tiny Chopper Raceway. I initially made this game in 2 hours as part of a Tasmanian Linux User Group talk on making games in a hurry, looking at strategies for increasing efficiency of design and development process as well as how to avoid common pitfalls (on a related note, see here for my game jam survival guide).

image

I continued on with it for another week or so to flesh it out into something that might be useful for anybody looking to take their first steps, as well as something that's fun to play in its own right. I've released the source code under LGPLv3 and released the assets I'd created under the Creative Commons 0 public domain dedication.

Playable builds can be found on Itch.io and the sources (along with the original "2 hour" build and a slideshow) can be found on GitHub!

image

Editing The Game In Godot

If you have downloaded the game's source to experiment with yourself, you can select the godot folder from the Godot Project Manager and click the Edit button on the right to open Tiny Chopper Raceway in the Godot editor. There are very few code comments (this may change in the future!), but here are some notes to help you navigate the codebase and resources.

  • The godot/fonts folder contains the font used by the game
  • The godot/levels folder contains Godot scenes that represent a playable level (a root node plus a TileMap)
  • The godot/menus folder contains Godot scenes that represent each of the game's GUI menus
  • The godot/music folder contains music used by the game in OGG format
  • The godot/objects folder contains Godot scenes that represent individual game objects (checkpoints obstacles, pickups, the player's chopper) as well as the in-game HUD
  • The godot/scripts folder contains all of the gdscript code files
  • The godot/sounds folder contains all of the sound samples used by the game in WAV or OGG format as well as an XML file containing the Godot sample library used by the game
  • The godot/sprites folder contains all the 2D sprites used by the game in PNG format
  • The godot/tilemaps folder contains a Godot scene used as a template for the TileMap, the TileMap, and all of the tile images used by the TileMap


image

The game's code is stored in the godot/scripts folder and consists of the following scripts:

  • checkpoint.gd includes a checkpoint_id variable and collision handler that calls the advance_checkpoint() function in player_chopper.gd
  • level_loader.gd includes code to programmatically instantiate and unload levels, as well as code to replace TileMap tiles with more complex objects
  • menu.gd contains the list of available levels, shows/hides submenus, has code to handle interactions between menus and the level_loader and has code to toggle the windowed/fullscreen state
  • menu_credits.gd consists of code to load text data from credits.txt
  • menu_level_chooser.gd includes code to populate a list with the names of available levels and launch the desired one
  • menu_level_end.gd contains code for formatting and displaying end-of-level data (play time, fastest lap, deaths, etc.)
  • menu_options.gd contains code to interact with the rest of the game based on the player's selections
  • pickup.gd includes code for randomly selecting a pickup type and colouring it accordingly, as wel as a collision handler that calls the apply_pickup() function in player_chopper.gd
  • player_chopper.gd includes code for handling user input, managing chopper state, keeping track of statistics and displaying checkpoint indicators
  • player_hud.gd includes code for formatting and displaying current data (play time, laps, health, fuel and current pickup effect)


image

For more inspiration, an official Godot engine showcase video was also released earlier this month, which shows off footage from Brave Bran, The Interactive Adventures of Dog Mendonça and Pizzaboy, Steam Quest, Dolphin Island 2, Gravity Wars, Tanks of Freedom and LeftWay.

YouTube videos require cookies, you must accept their cookies to view. View cookie preferences.
Show & Accept Cookies   Direct Link

Have you made or are you planning to make anything with the Godot engine? If so, share your work/plans!
0 Likes
We do often include affiliate links to earn us some pennies. We are currently affiliated with GOG and Humble Store. See more information here.
The comments on this article are closed.
fagnerln 29 April 2016 at 8:08 pm UTC
Godot is impressive, I've been doing some tests on it...
I don't know about those licenses and I have a question: can commercial games be developed in Godot?
Cheeseness 29 April 2016 at 8:19 pm UTC
fagnerlnGodot is impressive, I've been doing some tests on it...
I don't know about those licenses and I have a question: can commercial games be developed in Godot?

The Godot engine itself is MIT licenced. You can do whatever you like, so long as your respect its minimal terms.
dean36963 29 April 2016 at 9:04 pm UTC
I was thinking of trying to learn to use a proper game engine. Previously I've made some (admittedly fairly rubbish) games, but always with C++ and SDL2, which is fine, but it's a lot of work!

Perhaps I'll checkout the Godot engine! The pythonic language looks easy to pickup as well.
Cheeseness 29 April 2016 at 11:04 pm UTC
dean36963I was thinking of trying to learn to use a proper game engine. Previously I've made some (admittedly fairly rubbish) games, but always with C++ and SDL2, which is fine, but it's a lot of work!
I'm making two games at the moment (Winter's Wake and Hidden Star) with SDL2 and C++, and I'm constantly surprised at how much easier it gets with practice. It takes a bit longer to get to the point where you can have stuff running and inform your design decisions with actual gameplay, but I still feel like it's far less effort than I assumed back when I felt like I was a game developer who didn't have time to also be an engine developer.

dean36963Perhaps I'll checkout the Godot engine! The pythonic language looks easy to pickup as well.
The scripting language is fairly solid and pretty easy to learn (if you don't mind python style syntax - I hate it, myself ). The [url=docs.godotengine.org/]documentation[/url] is patchy in some places, but is getting better with time.

You can also work with Godot at the C++ level if you want. I haven't yet, but at some point I'm sure I will.
DePingus 30 April 2016 at 9:48 pm UTC
This is great! There's not a lot of info out there that covers gamedev on/for linux.
Cheeseness 2 May 2016 at 12:40 pm UTC
DePingusThis is great! There's not a lot of info out there that covers gamedev on/for linux.

Thanks! If you're looking for more that sort of stuff, you might also appreciate some of my other example projects and game dev related stuff:

* Hover Drive (an example OpenGL/SDL game)
* Robin's Rescue (an example point and click game made with SLUDGE, along with an accompanying article about the engine)
* Hidden Star (an in-development open source 2D space exploration/trading/combat game that I'm making with SDL2)
* My game development YouTube playlist (which includes dev streams for my in-development first person/text adventure hybrid Winter's Wake)

I also post a bunch of development related stuff on my Patreon page, although there's a lot to sift through. My 2015 recap post is probably a good summary.
While you're here, please consider supporting GamingOnLinux on Patreon, Liberapay or Paypal. We have no adverts, no paywalls, no timed exclusive articles. Just good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Livestreams & Videos
Community Livestreams
  • Story Time: „Syberia“ (via Wine)
  • Date:
See more!
Popular this week
View by Category
Contact
Latest Comments
Latest Forum Posts