We're trying to pack a bunch of games together!
This repo is a starting point, project structure, and the destination for all games merged into one megagame.
📐 Finding Poetry in Geometry
This is for the UFO 50 fan jam or Jamuary as @docky has so aptly dubbed it. We voted and selected this theme. More details on the Jam Page.
- Fork this repo so you have the same project structure.
- Install Godot 3.5 .NET so you can run the mega project with both .NET and gdscript games.
- Create your game in res://games/your-name-here That way all our games are isolated, so it should be easier to merge them back together.
- Create a GameDef as res://games/your-name-here/game_yourname.tres
- Add your GameDef to res://games/eggplant_games.tres
Once you complete your game, rebase onto latest and submit a PR. Make sure not to include any commits that remove files from the template or change project settings since these will cause conflicts. You can accept yours for eggplant_games.tres conflicts since we'll just re-add everyone's GameDefs before.
We have an easy to setup pause screen that shows your inputs:
- Open your game scene
- Create a CanvasLayer node
- This makes the PauseMenu layout to the screen instead of the world.
- Drag
res://shared/menu_pause/PauseMenu.tscn
under it. Seeres://games/movement2/World/World.tscn
for an example.- The PauseMenu automatically detects when the pause button is hit.
- It will not show inputs if you launch your game scene directly. There's some necessary hookup in the main menu, so don't worry about it.
- (Optional) Fill in the "Help" fields on the PauseMenu you added to your scene.
- This will add a Help button to pause to explain to players how to play.
- Update the GameDef you created above (
res://games/your-name-here/game_yourname.tres
) with the correct input labels (input_primary_action
, etc). Clear any input labels that don't apply to your game and they'll be hidden. - Launch your game from the main scene
res://mainmenu/mainmenu.tscn
and see your inputs appear on the loading screen and in the pause screen (press Enter or Start to pause)!
There are two example games:
- games/movement2/ - a gdscript game with a decent tunable player controller
- games/CodyMace/ - a C# game with sound that uses movement2's Player.gd player controller
Feel free to delete these and work in your own folder. If you want to use them as a starting point, make sure you duplicate and delete the original so godot drops any connections between files when we put the projects together.
Use the move_
inputs for movement:
# Using get_vector will have a circular deadzone.
var move := Input.get_vector("move_left", "move_right", "move_up", "move_down")
print(move.x, move.y)
# Using get_axis will have a cross deadzone.
var move_x := Input.get_axis("move_left", "move_right")
var move_y := Input.get_axis("move_up", "move_down")
Use action1
and action2
for actions:
var jumped = Input.is_action_just_pressed("action1")
var grabbing = Input.is_action_pressed("action2")
The input mapping is modelled after pico-8:
- primary action: Z,C,N,Space keys or A,Y buttons
- secondary action: X,V,M keys or X,B buttons
- pause: Enter,p keys or Start,Select buttons
Add games/movement2/ui/GameMenu.tscn to your scene for a pause menu that includes options to 'Restart' and 'Quit to Menu'. If you want to customize this menu, be sure to duplicate it into your game.
To return to main menu from code, call:
Eggplant.return_to_menu()
You should ensure your game works in a web build. The template includes a script to simplify build creation and itch.io upload.
- Create an itch.io project called
eggplant50
. Make sure to enable SharedArrayBuffer. - To auto-upload to itch.io:
- Edit
ci/pushbuild.py
and change "idbrii" to your itch.io name. - Install and setup butler
- Edit
- To manually upload to itch.io:
- Edit
ci/pushbuild.py
and setitch_project = False
export_path
will be where to find your files to upload to itch.io.
- Edit
- Run pushbuild:
pip install -r ci/requirements.txt
python ci/pushbuild.py
Godot has some great example projects for Godot 3.5 to help get you started on different features/genres (use the 3.5 branch and not master). Download them all as a zip: 3.5.zip It's often helpful just see a working example.
You're probably not using the .NET version of godot, so any games with .cs will fail to load. We are using Godot v3.5.3.stable.mono.official [6c814135b]
You can either:
- Download Godot 3 for Windows click on Godot Engine - .NET
- Remove other games from the
eggplant_games.tres
resource