An interactive Git learning game!
Find a file
2022-10-05 11:33:21 +02:00
.github/workflows Use current tag as version on itch.io 2021-02-05 20:35:03 +01:00
cards Created the .pot and babelrc files and make it.po file with italian traductions and some modification to reset all english text 2022-08-18 12:19:13 +02:00
fonts Make all fonts pretty by activating filtering 2021-01-21 18:17:29 +01:00
images Created the .pot and babelrc files and make it.po file with italian traductions and some modification to reset all english text 2022-08-18 12:19:13 +02:00
levels first commit for the new structure of directories of levels like as @schokotets suggestion 2022-10-05 11:33:21 +02:00
locale deleted the .po level files and added dir italian levels in dir levels and made some changes to the scripts 2022-09-13 14:40:40 +02:00
music Longer background music - thanks, @winniehell :) 2021-02-09 15:51:09 +01:00
nodes Created the .pot and babelrc files and make it.po file with italian traductions and some modification to reset all english text 2022-08-18 12:19:13 +02:00
resources Merge branch 'git-learning-game:main' into i18n 2022-08-21 09:03:58 +02:00
scenes first commit for the new structure of directories of levels like as @schokotets suggestion 2022-10-05 11:33:21 +02:00
scripts Merge pull request #59 from mundifex/stash-deadlock-fix 2021-04-12 16:48:31 +02:00
sounds Card particles and more sound effects 2020-10-22 16:19:22 +02:00
styles improved the name of language variables and moved the languages management script in the ButtonMenu 2022-08-17 20:19:42 +02:00
.gitignore Add *.mo files to gitignore 2022-08-19 16:18:17 +02:00
CODE_OF_CONDUCT.md Add Contributor Covenant v2.0 2020-10-12 20:00:59 +02:00
default_bus_layout.tres Add first background music, always move focus back to the command line 2021-02-04 16:11:56 +01:00
export_presets.cfg Presets upgrade 2022-08-31 08:44:55 +02:00
LICENSE.md Add Blue Oak Model License 1.0.0 2020-10-14 17:11:00 +02:00
Makefile Try on another name: Oh My Git! 2021-02-05 15:00:13 +01:00
project.godot Some adjustaments 2022-09-13 17:44:51 +02:00
README.md Update README.md 2022-08-16 08:32:21 +02:00

Oh My Git! is an open-source game about learning Git!

Play the game!

You can download binaries for Linux, macOS, and Windows from itch.io!

Report bugs!

If something doesn't work or looks broken, please let us know! You can describe the issue you're having in our issue tracker.

If you have ideas for new features, we'd be excited to hear them! Also in that case, we invite you to open an issue!

Build your own level!

Wanna build your own level? Great! Here's how to do it:

  1. Download the latest version of the Godot game engine.
  2. Clone this repository.
  3. Run the game the easiest way to do so is to run godot scenes/main.tscn from the project directory.
  4. Get a bit familiar with the levels which are currently there.
  5. Take a look into the levels directory. It's split into chapters, and each level is a file.
  6. Make a copy of an existing level or start writing your own. See the documention of the format below.
  7. Write and test your level. If you're happy with it, feel free to send it to us in a pull request! <3

Level format

title = This is the level's title

[description]

This text will be shown when the level starts.

It describes the task or puzzle the player can solve.

[cli]

(optional) This text will be shown below the level description in a darker color.

It should give hints to the player about command line usage and also maybe some neat tricks.

[congrats]

This text will be shown after the player has solved the level.

Can contain additional information, or bonus exercises.

[setup]

# Bash commands that set up the initial state of the level. An initial
# `git init` is always done automatically. The default branch is called `main`.

echo You > people_who_are_awesome
git add .
git commit -m "Initial commit"

[win]

# Bash commands that check whether the level is solved. Write these as if you're
# writing the body of a Bash function. Make the function return 0 if it's
# solved, and a non-zero value otherwise. You can use `return`, and also, Bash
# functions return the exit code of the last statement, which sometimes allows
# very succinct checks. The comment above the win check will be shown in the game
# as win condition text.

# Check whether the file has at least two lines in the latest commit:
test "$(git show HEAD:people_who_are_awesome | wc -l)" -ge 2

A level can consist of multiple repositories. To have more than one, you can use sections like [setup <name>] and [win <name>], where <name> is the name of the remote. The default name is "yours". All repositories will add each other as remotes. Refer to the remote levels examples.

Level guidelines

At this stage, we're still exploring ourselves which kind of levels would be fun! So feel free to try new things: basic introductions with a little story? Really hard puzzles? Levels where you have to find information? Levels where you need to fix a problem? Levels with three remotes?

Add localizations

  1. Add the localization text into the section "description" in the file ./resource/cards.json
Example:
"description": {
   "en_EN": "Drag this card into the empty space above to initialize the time machine!",
   "it_IT": "Trascina questa carta nell'area vuota sopra per inizializzare la macchina del tempo",
   "es_ES": "Arrastre esta tarjeta al área en blanco de arriba para inicializar la máquina del tiempo"
}
  1. Add, into the directory levels, the directory with the levels do you want to adding (es. ./levels/fr_FR/LIVELLI )
  2. Add, the localization into the dictionary game.langs (es. var langs = {0: "en_EN", 1: "it_IT", 2: "es_ES"} the first and default localization it must be en_EN
  3. Add column of specific locale and relative traductions for avery keys in the file ./resource/localization.csv
Example:

keys,en,it,es
LEVELS,Levels,Livelli,niveles
QUIT,Quit,Esci,Salir
BACK,Back,Indietro,Espalda

If one or more localizations in the descriptions of cards are missing and levels require that card, the game crashes!

Contribute code!

To open the game in the Godot editor, run godot project.godot. You can then run the game using F5.

Feel free to make improvements to the code and send pull requests! There is one exception: because merge conflicts in Godot's scene files tends to be hard to resolve, before working on an existing *.tscn file, please get in touch with us.

To build your own binaries, you'll need Godot's export templates, and zip, wget, and 7z. Then, run make. On Debian/Ubuntu, the Godot binary is called godot3, you might need to adjust the paths in the Makefile.

Code of Conduct

We have a Code of Conduct in place that applies to all project contributions, including issues and pull requests.

Funded by

Logo of the German Ministry for Education and Research            Logo of the Prototype Fund            Logo of the Open Knowledge Foundation Germany

Thanks

License

Blue Oak Model License 1.0.0 a modern alternative to the MIT license. It's a a pleasant read! :)