chickensoft-games / GameDemo

The Chickensoft Game Demo โ€” a fully tested, third-person 3D game built with Godot and C#. Now with saving and loading!
https://chickensoft.games
MIT License
322 stars 20 forks source link
csharp gamedev godot

๐Ÿ•น GameDemo

Chickensoft Badge Discord Read the docs branch coverage

The Chickensoft Game Demo โ€” a fully tested, third-person 3D game built with Godot and C#. Now with saving and loading, including full game state preservation!

[!IMPORTANT] Be sure to run git lfs pull to resolve the binary files.


Cardboard Box with Chickensoft Logo

โฏ๏ธ Gameplay

https://github.com/chickensoft-games/GameDemo/assets/16472250/44012436-bec2-4bdf-b2c1-faa2ced0f3ca

Most 3D assets are from the fine folks at GDQuest โ€” go check out their stuff and support them! You'll notice that this project is loosely inspired by GDQuest's ThirdPersonController, but completely rewritten using Chickensoft's best practice recommendations in C# (and with state machines)!

Music from FreePD โ€” go check them out, too! Other sound effects are licensed under CC0.

๐Ÿ’พ Saving and Loading

https://github.com/user-attachments/assets/e49f96d7-b899-44ff-9c14-ee5657d8721c

๐ŸŽฎ How to Play

You'll need to setup your Godot C# development environment. This should work with .NET 8 and Godot 4.3.

Use WASD to move around. Bounce with spacebar. Hold down spacebar while falling to bounce as soon as you hit the ground. Jump on the mushrooms, collect all the coins, and don't fall off the world!

๐Ÿ† Game Architecture

Chickensoft's packages are designed to make building games easier while following an opinionated architecture that takes a lot of work out of the decision-making. Following a highly opinionated architecture has a few advantages: mainly, the code is easier to learn, fully testable, more consistent, and other people can learn the architecture rules and get up to speed fairly quickly.

On the other hand, it does result in a little bit of boilerplate, but that's going to be true whenever you make code modular enough to be fully unit-tested. Personally, I believe the benefits outweigh the little bit of additional boilerplate, especially for studios that have more than one person contributing to the codebase.

This project is a result of two and a half years of learning, the other dozen or so open source Chickensoft packages, and a ton of help and support I've received from the Godot community.

I've written an entire treatise about the architecture behind this demo. You can read about it over at Enjoyable Game Architecture.

๐Ÿ’ Getting Help

Found something wrong or need help? Please join us in the Chickensoft Discord server to let us know!

๐Ÿ’ก This game was generated from the Chickensoft GodotGame Template. The Godot Game Template README contains documentation about how how the tests, code coverage, CI/CD, app entrypoint, debug profiles, and versioning work.


๐Ÿ“State Diagrams

Since we're using LogicBlocks, here's some of the more interesting state diagrams in the project, generated from the code.

Application State

Application State Diagram

Game State

Game State Diagram

Player State

Player State Diagram

Coin State

Coin State Diagram

Jumpshroom State

Jumpshroom State Diagram


๐Ÿฃ Package generated from a ๐Ÿค Chickensoft Template โ€” https://chickensoft.games