MarkoDM / GodotInGameBuildingSystem

This project is a comprehensive starter kit designed for creating building simulation games(or just games with building mechanic) in Godot 4.
MIT License
31 stars 3 forks source link

In Game Building System for Godot

Supporting this project helps me continue to work on it and improve it. If you find it useful, consider contributing through the following methods:

PayPal Ko-fi

Please consider donating if you think this project has helped you or that it has potential.

Description

Welcome to the Godot In Game Building System! This project is a comprehensive starter kit designed for creating building simulation games(or just games with building mechanic) in Godot 4. It includes both grid-based and free-form building features, making it versatile for different types of building gameplay. The system is equipped with a save/load functionality, basic UI for menus and building controls, and is ready to be expanded or customized for your own unique game.

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

Features

Getting Started

To get started with Building System:

  1. Clone this repository: git clone https://github.com/yourusername/godot-house-building-system.git
  2. Open Godot 4 and import the project.
  3. Open the demo_scene.tscn from BuildingSystem folder
  4. Run the project to see it in action and start building!

Basic Concept

Adding New Objects:

  1. Import the asset.
  2. Create a BuildableResource.
  3. Set the asset as the Object3DModel and configure other properties.
  4. Add it to an existing or new BuildableResourceLibrary.
  5. Assign the library to the BuildingSystem.

The BuildingSystem considers objects to have a pivot point at the center.

The best approach to importing assets is to create a scene for each imported model and create a Node3D parent. This way, you can easily position the object, adjust the scale, etc., without affecting the system.

Bonus! There is an import script import_objects.gd that will do just that and also create a resource for it.

For more detailed information about the classes and methods in the system, refer to the GodotInGameBuildingSystem.xml documentation file.

Q&A

Why these features and where is that one? (and similar questions)

One of the most challenging aspects was determining the scope. I aimed to establish a common foundation applicable across multiple game types. Given that features would significantly diverge depending on the game type, I decided to stop at a point that I believe serves as a common ground.

Did you use AI (such as Copilot, ChatGPT, etc.)?

Yes, I utilized AI to correct grammar and spelling errors, as I am not a native English speaker. Additionally, I used it to generate an icon for the Asset Store. That's all.

Are there plans for a GDScript version?

Yes, I am currently working on developing a GDScript version.

Contributing

Contributions are what make the open-source community such a fantastic place to learn, inspire, and create. Any contributions you make are greatly appreciated.

To debug the project use included .vscode config files, set GODOT4 environment varable to point to godot.exe or just add its path to launch.json.

To contribute to code:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Don't be afraid! Contribution is not only code, but documentation, tutorials, issue discovery and anything useful.

License

Distributed under the MIT License. See LICENSE for more information.

Support

If you have any questions or run into issues, please open an issue on this repository and I will try to address it as soon as possible.

For full transparency, this is a hobby project, I will try to give it as much attention as I can, but I have a full-time job and a full house, so please be patient if I do not respond immediately.

Author

Marko Dmitrovic - MarkoDM

Acknowledgements