awesome-godot Documentation

A curated list of free/libre plugins, scripts and add-ons for Godot

10,222 stars null 1 file · ~16,235 tokens #awesome#awesome-list#game-development#godot#godot-engine
RAW Doc

1. Project Overview & Quickstart (godotengine/awesome-godot)

Awesome Godot [](https://awesome.re)

A curated list of free/libre games, plugins, add-ons and scripts for Godot.

Looking for third-party programming language support in Godot?
See Vivraan/godot-lang-support.

Contents

Games

Open Source Games that use Godot.

2D

Godot 4

Godot 3

  • Blipshift - Simple top-down moving platforms game.
  • Breakable - A breakout-like game.
  • Circle Jump - Mobile arcade game, addicting and enjoyable. How-to-made tutorial is available, so you can recreate it yourself and learn Godot.
  • Everplast - Unique 2D platforming experience filled with rage, rush, speed, and spray.
  • Falling Square - A simple mobile game to test your reflex.
  • Flappy Race - A 2D online multiplayer game inspired by Flappy Bird and Mario Kart for desktop and HTML5.
  • Haldric - Official work-in-progress reimplementation of Battle for Wesnoth.
  • Memory Game - Simple Memory game.
  • Pocket Broomball - The world's first broomball game, available for iOS, Android and html5.
  • Portal 2D - 2D remake of the Portal games.
  • ROTA - Gravity-bending puzzle platformer game.
  • spindle of serendipity - Word guessing game with customizable entries.
  • Starship Olympics - Fast-paced local party game with starships that battle in a top-down arena.
  • TuxBuilder - Work-in-progress reimplementation of SuperTux.

Godot 2

  • BlockPop - A simple Breakout clone.
  • Bombs - Simple mobile game. You need to touch bombs to defuse them.
  • Captain Holetooth - Explorative platformer in a detailed world. Geared towards younger players.
  • Dolphin Island 2 - Platformer game made for the A Game By It's Cover 2015 Game Jam.
  • DynaDungeons - Bomberman clone in a fantasy universe.
  • Kraken-Rampage - Ludum Dare 33 entry made in 48 hours.
  • Minehunter - A Minesweeper clone.
  • Minilens - Free puzzle platform game.
  • Mountain of Hope - Game made on Theater Game Jam (PGA 2015).
  • Ninja-Training - Small running game done as 1 hour challenge.
  • No hope - Ludum Dare 33 entry made in 48 hours.
  • Planet Rider - 2D physics parkour game in an alien environment.
  • Platshoot - A 2D shooter game.
  • Ringed - Top-down shooter with extensive usage of light effects.
  • Tanks of Freedom - Free turn-based isometric strategy game.
  • Three Hungry Mice - Breakout game with mice made for the Godot Engine Jam of March 2016.

3D

Godot 4

  • Hurry Curry! - Free & open-source cooperative multiplayer cooking game.
  • LibreAim - Libre FPS aim trainer made with Godot.
  • OpenLiberty - An open-source reimplementation of Grand Theft Auto III on the Godot Engine.
  • Reia - A free game that's an action adventure RPG for Desktop and Mobile with multiplayer, MMO, and offline support.
  • Sunder - An open-source, fast-paced multiplayer shooter game inspired by Tribes, with jetpacks, skis and vehicles.
  • Super Tux Party - A free/libre and open-source party game that is meant to replicate the feel of games such as Mario Party.
  • Tanks of Freedom II - Free turn-based isometric strategy game in voxel art.
  • Thrive - A free, open-source game about the evolution of life (Mono).
  • VitaVehicle - An open-source raycast-based car simulator that simulates engine, transmission, and slip algorithm.

Godot 3

  • Ball2Box - Shoot the ball into the box, available for iOS, Android and html5.
  • Boom - A very simple, old fashion FPS, work-in-progress but playable.
  • Broken Seals - A work-in-progress third person action RPG with multiplayer support (needs custom engine modules).
  • Meteorite - A lowres metroidvania FPS, inspired by Metroid Prime, made for LOWREZJAM 2018.
  • Rapid Rescue - Rapid Rescue is a local multiplayer strategy game inspired by Labyrinth.

Godot 2

XR

Godot 4

  • Piggy Rescue - Fun little example game where you chase and rescue little pigs.

Godot 3

Projects

Non-game Open source projects made with Godot (tools/utilities).

Godot 4

  • Arrow - A tool to design game narratives with nodes.
  • Clipboard Narrator - Turn any web page into an audiobook, works in the background on desktop!
  • GodSVG - Tool to create optimized Scalable Vector Graphics files.
  • Lorien - Infinite-canvas drawing/whiteboarding app for Windows, Linux and macOS. Supports drawing tablets and pressure sensitivity.
  • Material Maker - Create PBR materials procedurally (similar to Substance Designer).
  • Pixelorama - 2D pixel art editor.
  • ProtonGraph - Node-based tool for procedural content creation. Like visual scripting, but for 3D model generation (needs custom engine modules).

Godot 3

  • Godello - A Trello-like kanban board application made with Godot. A proof of concept for complex non-game applications with Godot, as well real-time online interactions between multiple users. Includes backend code.
  • SimulaVR - A VR window manager for Linux, built on top of Godot engine.
  • vpuppr - A cross-platform VTuber application with mulitple tracking backends.

Templates

Projects to use as a base for your own games.

Godot 4

  • COGITO - First Person Immersive Sim Template Project, providing a framework for creating interactable objects, various items to use and mechanics to influence the player and game environment.
  • Crystal Bit Godot Game Template - Opinionated game template. It includes continuous integration, scene loading with graphic transitions and game pause handling.
  • Godot C# Template - Template for C# projects with UI scenes, visual debugging tools, simplified tweens, utility scripts and an ENet multiplayer framework.
  • First Person Starter - Template with First Person Controller, easily adjustable from the Inspector.
  • Godot-GameTemplate - Template with all necessary stuff taken care of. Designed for pixel art games.
  • Godot 4 Custom Gravity - Template for a 3D project with planetary gravity (Super Mario Galaxy-like). Supports any planet shapes using signed distance fields. Includes a character controller and various sample setups.
  • Godot XR Template - Template for a multi-level XR game.
  • Maaack's Game Template - Template with a main menu, options menus, pause menu, credits, scene loader, extra tools, and an example game scene.
  • MechanicalFlower Godot Template - Template with code formatting, license tracking, addons management and CI/CD.
  • Takin Godot Template - Template with a save file system, localization, UI (main menu, save files, options, credits), example game scene, plugins (scene and audio managers, logger, linter, resource viewer), placeholders (music, sfx), github workflows and various utility scripts.

Godot 3

Demos

Demos to learn GDScript, its concepts, and various game features.

Godot 4

Godot 3

Godot 2

Tutorials

Note

The list of tutorials has moved to the Godot documentation.

Plugins and scripts

Scripts that let you do new stuff, or enhance Godot functionality.

Godot 4

  • 2dog - Run and control Godot in .NET, create unit tests, custom developer and CI workflows using your existing .NET tools and IDEs.
  • 3D Auto Collision Generator - Generate collision for multiple 3D objects in one click.
  • AgonesSDK - Plugin to add Agones SDK functionality to Godot.
  • AnimatedShape2D - Animate a CollisionShape2D along with the frames of an AnimatedSprite2D.
  • AnimSheet - Automatically generate AnimationPlayer or AnimatedSprite2D nodes directly from spritesheets within the Godot editor.
  • AntialiasedLine2D - Higher-quality antialiased Line2D and Polygon2D drawing compared to the default Godot implementation (all rendering methods, all platforms).
  • Aseprite Wizard - Plugin for importing animations from Aseprite as SpriteFrames.
  • Beehave - Enables you to create robust NPC AI systems using behavior trees.
  • CReverter (Composite Reverter) - Memento-based undo/redo utility that supports composition.
  • CSConnector (Contextual Signal/Setup Connector) - Provides a clean interface to dynamically find, setup, and connect to descendant nodes through the scene tree.
  • CSLocator (Contextual Service Locator) - Provides a clean interface to register and find objects through the scene tree like localized singletons.
  • Cyclops Level Builder - A level builder for quick prototypes and proof-of-concepts.
  • Dialogic - Create dialogs, characters and scenes to display conversations.
  • Dialogue Engine - Minimalistic dialogue engine that fits into your GUI nodes and automatically graphs the branching dialogues for easy debugging.
  • Dialogue Manager - A simple but powerful text based branching dialogue editor and runtime. (Godot 3 and 4)
  • DotnetQuestSystem - A simple implementation of a quest system on .NET with an interface for Godot.
  • Event Audio - A simple event-based "fire and forget" audio triggering system.
  • Fast Fourier Transform (FFT) - Fast Fourier Transform in GDScript.
  • FMOD GDNative - Plugin to use the FMOD audio engine in GDScript.
  • friflo ECS - High-performance C# ECS with simple API. Supports .NET, WASM/WebAssembly, Native AOT, Godot, Unity, MonoGame, ... (Godot 3 and 4)
  • func_godot - Import maps using the Quake MAP file format, commonly made using an editor such as TrenchBroom.
  • GATO: Godot Accessibility Toolkit - A collection of demos and addons to promote accessibility in Godot games.
  • GDGIFExporter - GIF exporter made entirely in GDScript.
  • GdUnit4 - Godot Unit Testing Framework.
  • Gedis - In-memory, Redis-like key-value store for Godot.
  • GedisQueue - A comprehensive job queue system for Godot, backed by Gedis.
  • Goblend - Export Blender scenes to Godot with one click, including materials, collisions and nested scenes.
  • Godot Doctor - A powerful validation plugin for Godot that catches errors in scenes and resources before they reach runtime. Also supports type validation for PackedScenes.
  • Godot Google Play Game Services - Integrate Google Play Games Services in your Godot game.
  • godot-ink - A C# (Mono) plugin to integrate stories writen in ink, a scripting language for writing interactive narrative.
  • Godot NDI - Integrates the NDI® SDK with Godot.
  • godot-playfab - Use PlayFab as your game's cross-platform backend, with easy analytics.
  • Godot Polygon 2D Fracture - Two simple scripts for fracturing and cutting polygons.
  • Godot Radial Menu - A radial menu written in shader code for performance.
  • Godot Shader Warmup - Extension for pre-warming shaders at startup to prevent runtime stuttering caused by shader compilation (works well also integrated with engine shader baker; see report.pdf in the repository to view results).
  • Godot Spin Button - Horizontal Selector with extended options.
  • Godot SQLite - GDNative wrapper for SQLite, making it possible to use SQLite databases as data storage in your project.
  • Godot Torrent - A comprehensive BitTorrent GDExtension for Godot 4, providing full protocol functionality with native C++ performance.
  • Godot XR Tools - Basic components for XR development.
  • GodotSx - Rx-like extensions for Godot's built-in signals.
  • GodotVMF - A VMF/MDL/VTF/VMT importer for Godot Engine (Valve map format from Hammer editor).
  • GUT - Utility for writing unit tests in GDScript.
  • HCoroutines - Powerful C# coroutine library for Godot.
  • Health, HitBoxes, HurtBoxes, and HitScans - 2D and 3D Components to manage health, damage, and healing.
  • HTerrain - Heightmap-based terrain. Supports texture painting, colouring, holes, level of detail and grass. (Godot 3 and 4)
  • Icon Explorer - Browse and save icons from popular icon collections.
  • Importality - raster graphics and animations importers: Aseprite, Krita, Pencil2D, Piskel, Pixelorama and others.
  • Input Helper - A helper for detecting input devices and remapping controls. (Godot 3 and 4)
  • Inventory Manager - Minimalistic inventory manager for easily adding and removing items with variable stack sizes and stack count limits.
  • Juicee - game-feel effects (screen shake, hit stop, camera effects and more) with a visual graph editor, inspector UI, and one-liner API. Inspired by Unity's FEEL.
  • Konado - A dialogue creation toolkit with templates to help you quickly build Visual Novels, Gal Games, RPGs and other story‑driven projects.
  • License Manager - Manage license and copyright for third party graphics, software or libraries. Group them into categories, add descriptions or web links.
  • LimboAI - Behavior trees and state machines. Comes with editor, visual debugger, comprehensive demo and tutorial.
  • Maaack's Game Template Plugin - Template with a main menu, options menus, pause menu, credits, scene loader, extra tools, and an example game scene.
  • Maaack's Menus Template - Template with a main menu, options menus, credits, and a scene loader.
  • Maaack's Scene Loader - Scene loader that includes a loading screen, progress bar, and error handling.
  • Netfox - Multiplayer timing, rollback and other multiplayer features.
  • NobodyWho - Local large language models (LLMs) for "AI-powered" NPC dialogue.
  • Nodot - Node composition library for Godot 4.
  • obs-websocket-gd - Script and editor plugin to control Open Broadcaster Software from Godot via obs-websocket.
  • Orchestrator - Dialog and visual-scripting subsystem for 2D and 3D games.
  • Phantom Camera - Designed to provide and simplify common behaviors for the built-in Camera2D and Camera3D nodes.
  • PixelPen - Pixel art drawing and animation: Common drawing tools such as selection, shape creation, mirroring, tiling, and animation features within the Godot editor.
  • PlayerConnect - Bug/feedback reporting system for your Godot game. It uses a Discord webhook as a medium to send reports to your desired Discord channel.
  • PowerKey - Easy-to-use dynamic translation of text & other variables. Also offers GDScript execution on Nodes, without needing to attach a script.
  • ProtonScatter - Automates the positioning of assets in a scene.
  • QR Code - QR Code generation either with the included QRCodeRect node or use the encoding result of the QRCode class.
  • Quest Manager - Minimalistic quest manager able to track quest state at runtime for easier debugging.
  • Questify - A graph-based quest editor and manager.
  • QuestSystem - A simple and extensible quest manager and creator.
  • Quill-IDE - Modified and beautified version of the default Godot Script Editor for 4.4+.
  • Ridiculous Coding - Makes your coding experience in Godot 1000× more ridiculous.
  • Roommate - 3D level builder tool with focus on creating indoors environment and automation.
  • Scene Library - A tool for organizing Godot scenes with efficiency.
  • Scene Manager - Make nice and customizable scene transitions in one line of code. (Godot 3 and 4)
  • Script-IDE - Transforms the script editor into an IDE-like UI. Multiline tabs, improved outline, quick open and override, enhanced keyboard navigation.
  • Shaker - Plugin that adds shaking and emitters for cameras, nodes or any property in 2D and 3D.
  • Signal Lens - Visual debugger for signals. Click on a node in the remote scene tree and instantly view all its signals' connections and emissions in real-time.
  • SignalVisualizer - Displays the current scene's signals and connections in a easy to read graph and tree dock.
  • Simplified Flight Simulation library - A library that helps you create a simple airplane/helicopter/spaceship flight simulator. (Godot 3 and 4)
  • SimpleGodotCRTShader - A simple Godot shader that simulates CRT Displays.
  • SmartShape2D - A 2D terrain tool. (Godot 3 and 4)
  • Sprouty Dialogs - A graph-based visual dialogue system, to create dialogues in your games incredibly easy! 🌱
  • Subtitles Importer - A comprehensive subtitle parser supporting 15+ subtitle formats (SRT, VTT, SSA/ASS, SBV, and more) with runtime parsing, time-based queries, and AnimationPlayer integration.
  • System Bar Color Changer - An Android plugin that enables you to dynamically change the colors of the status bar and navigation bar, and also supports enabling translucent system bars for a modern, immersive UI experience.
  • Talo - A self-hostable game backend for managing players, leaderboards, stats, saving/loading data and more.
  • TerraBrush - Minimal Terrain heightmap editor that features sculpting, painting textures, LOD, and MultiZones.
  • Terrain3D - A high performance, editable 3D terrain system.
  • ThemeGen - Easily create themes using GDScript code, allowing you to reuse styles, recombine them, and effortlessly reuse and share colours between components.
  • UI Design Tool - Intuitive design workflow for UIs in the editor.
  • Vest - A unit testing addon for Godot.
  • Virtual Joystick - A virtual joystick for touchscreens. Simple to use and with useful options. (Godot 3 and 4)
  • Wwise - Wwise audio middleware integration.
  • YATI (Yet Another Tiled Importer - This is an addon for importing files (.tmx, .tmj) created by the Tiled Map Editor.
  • Your Buil - A plugin that makes it as easy as possible to use build data like git commit hashes in your build.

Godot 3

  • 2D Day/Night Cycle - A ☀️ Day / 🌔 Night cycle for 2D.
  • 2D Destructible Objects - A script that takes a sprite, divides it into blocks and makes them explode💥.
  • Anima - Run sequential and parallel animations with less code compared to Tween.
  • AutoColliders - Allows the automatic generation of colliders for Sprites, with planned expansion to handle 3D meshes in the future.
  • BoxCam2D - Simplest way to implement grid-based 2D camera movement.
  • Cartographer - Heightmap-based 3D terrain editor.
  • Code Snapshot - A plugin which lets you take beautified screenshots of your code within the editor.
  • CRT Shader - A Godot shader that simulates CRT Displays with many shader parameters.
  • CSG Mesh Exporter (.OBJ) - Export CSG nodes to OBJ meshes to improve editing performance.
  • Debanding Material Shader - Simple material shader with added debanding noise, for use with the GLES2 renderer as it doesn't support full-screen debanding.
  • Delaunator GDScript - A GDScript library for Delaunay triangulation of 2D points.
  • Dijkstra map for Godot - A GDNative project for Godot game engine, that introduces Dijktra Map pathfinding node.
  • Discord.gd - Discord bot API wrapper. Make bots in 100% GDScript.
  • DungeonTemplateLibrary-Godot - Godot Dungeon Template Library (terrain & roguelike generation).
  • EffekseerForGodot3 - Import Effekseer particle effects.
  • Escoria - Point & click adventure game framework. (Godot 2 and 3)
  • Funexpected Flash Tools - Adobe Animate (Flash) plugin that allows you to export a project for a Godot Engine.
  • gdstats - A library of pseudorandom number generators for common statistical distributions.
  • GitHub integration - Interact with GitHub without opening your browser.
  • godotccd - Fast 3D collision checks in Godot using libccd.
  • godotdetour - A GDNative implementation of the detour/detourcrowd library.
  • Godot GamePad - Allows players to use their mobile devices as controllers.
  • Godot Gif Getter - An in-game utility for recording and saving GIFs (written in GDNative Rust).
  • Godot Google Play Games Services - Integrate Google Play Games Services in your Godot game.
  • Godot Mixing Desk - Make procedural sound and adaptive/procedural music with a few nodes and a couple lines of code.
  • Godot NExt - A set of basic node extensions.
  • GodotNotificationCenter - A notification center.
  • GodotOnReady - A C# (Mono) alternative to the GDScript-only onready keyword, without reflection.
  • GodotPhoenixChannels - A GDScript and Godot Engine implementation for the Channels API of the Phoenix Framework.
  • godot-ply - In-editor box modelling for gray boxing or prototyping 3D levels.
  • GodotRx - Reactive extensions for Godot C# (Mono).
  • GodotTIE - Text Interface Engine to control text output (like in a RPG dialogue). (Godot 2 and 3)
  • Godot-Trail-System - Advanced 2D/3D trail system.
  • Godot VirtualJoystick - A simple vitual joystick for mobile devices.
  • InGrid - Infinite scrolling grid.
  • Kehom's Godot Addon Pack - A collection of addons for debugging, networking, UI, and more.
  • Level of Detail (LOD) - Level of detail add-on for meshes, lights and particles. Can improve performance in large scenes.
  • Line Collider 2D - A script which adds colliders that follow an array of Line2Ds (useful for prototypes).
  • NativeLib - Plugin management system designed to easily operate with native libraries for iOS/Android. It also takes care about plugin dependencies and provides hassle-free native libs updating. Attribution and analytics: Adjust, Amplitude, AppsFlyer, Flurry, GameAnalytics, Tenjin. Ads networks and mediation: AdColony, AppLovin, TapDaq. GDPR and privacy: App Tracking Transparency, Ogury. Social: Facebook. Universal backend solution: Firebase.
  • NI mate Motion Capture - Animate Skeletons with a Microsoft Kinect sensor.
  • Scrolling Background - A scrolling background node. (Godot 2 and 3)
  • Shell Fur - 3D fur node for Godot.
  • StoryTeller Engine - Dialog and interactive fiction engine.
  • Tiled importer - Import maps from Tiled.
  • TileSet Builder - Quickly build tilesets with style.
  • Tree generator - Tool for generating trees.
  • Volumetrics - Voxel-based volumetric lighting and fog plugin.
  • Voxel-Core - GDScript voxel plugin for creating, importing and editing voxel content in-engine and in-game.
  • VPainter - 3D vertex painting plugin.
  • Waterways - Tool to generate river meshes with flow and foam maps based on Bézier curves.
  • XSM - A fully-featured hierarchical State Machine with parallel states, easy animation, random states and more.
  • Yume Visual Novel Editor - An integrated editor for creating visual novel games.

Godot 2

  • Auto Tile Layer - Allows automatic 2D tiling using RPG Maker's Autotile format.
  • Grass Plugin - A plugin to handle huge amounts of grass, foliages and other vegetations.
  • gterm - GUI control that draws something similar to *nix terminal emulators.
  • SUTjoystick - Easy gamepad support for GNU/Linux and Windows.

Godot version unknown

Modules

Stuff integrated into Godot core (C++).

Godot 4

  • Entity Spell System - An entity and spell system for complex (optionally multiplayer) RPGs. (Godot 3 and 4)
  • FMOD GD4 - FMOD Studio API integration.
  • Godex - An entity component system library.
  • GodotHook - A lite custom event system for Godot Engine. (Godot 3 and 4)
  • godot-jolt - Allows you to use the Jolt Physics Engine.
  • godot-luaAPI - Module for creating sandboxed modding APIs with Lua. (Godot 3 and 4)
  • godot-rapier-2d - A 2D Rapier physics server for Godot.
  • GodotSteam - Steam API library binding for Godot. Supports Windows, macOS and Linux.
  • godot-voxel - Module for creating volumetric worlds.
  • Keyring - Utility to interact with the OS keyring to store credentials.
  • spout-gd - Share OpenGL textures across Windows applications through your GPU using Spout.
  • Texture Packer - Tools to layer, pack, and merge textures at runtime. (Godot 3 and 4)
  • Tree3D - A plugin for procedural generation of 3D trees in real time for gaming projects.
  • Voxelman - A voxel engine with more focus on editor integration, gameplay-related features, and extendability. (Godot 3 and 4)

Godot 3

Godot version unknown

GDScript/C# editor support

Add-ons for text editors that implement GDScript or C# support.

  • Emacs - Syntax highlighting, code folding, indentation and autocompletion.
  • Geany - Syntax highlighting.
  • Gedit - Syntax highlighting.
  • IntelliJ IDEA - Syntax highlighting and autocompletion.
  • JetBrains Rider (C#) - Syntax highlighting, autocompletion and run configurations.
  • Kakoune - Syntax highlighting.
  • GNU Nano - Syntax highlighting.
  • Neovim - A batteries-included Neovim plugin for Godot 4.x game development. Use Neovim as a fully featured external editor for Godot, with minimal setup.
  • Sublime Text - Syntax highlighting.
  • Vim - Syntax highlighting, autocompletion and linting using the LSP server provided by the Godot editor. Also supports the Godot shader language.
  • Visual Studio Code
  • Zed - Syntax highlighting, autocompletion, LSP (jump-to-definition, hover, references, linting), code formatting, and debugging. Supports 3.x and 4.x.

Themes

Engine themes

Alternative themes for the entire Godot engine editor.

  • Catppuccin Theme - A soothing pastel theme offered in four different flavors.
  • Godot Minimal Theme - A theme that aims to correct odd spacing and formatting in the default Godot theme without changing the overall look and feel.

Syntax themes

Alternative themes for the built-in script editor.

External editor themes

Alternative themes with the trusted Godot editor's colors for external tools.

Unofficial Godot builds

Those builds will let you use recent versions of Godot Git, but they may be less stable than official ones – use at your own risk.

Bash scripts

Bash scripts can be placed in ~/.local/bin.

  • build-godot - (and build-godot-mono) Scripts that compile and run Godot, attempting to install dependencies if needed.
  • godot.sh - Script that automatically downloads and launches latest version of Godot, or compiles and launches the Git master branch.
  • godot-wrapper - Script that helps Debian and Ubuntu users install and use Godot.
  • replicate-file.sh - Script to update copies of a file with one master file.

Websites

  • Godot Asset Library - Official Godot Asset Library. Includes user-created games, projects, templates, demos, tutorials, plugins, and scripts.
  • Godot Asset Store - Official Godot Asset Store. A modern replacement for the Godot Asset Library.
  • Godot Shaders - A community-driven shader library for the Godot game engine.

Other

Other stuff.

  • asdf-godot - Godot plugin for the asdf version manager.
  • codetranslator - Translates GDScript to C# (WIP).
  • gd2cs.py - Python script that converts GDScript code to C# (WIP).
  • gdvm (GitHub) - Command-line version manager for Godot Engine, allowing you to easily install and switch between different Godot versions on Windows, macOS, and Linux (x86, x86_64, and ARM64).
  • godot-actions - Composite actions for exporting, setting up, and pushing Godot projects to itch.io through Github Actions.
  • godot-ci - Docker image to export Godot games through CI. Includes GitLab CI script example.
  • godot-gdscript-toolkit - Independent set of command line tools for working with GDScript - parser, linter and formatter.
  • godot-launcher - A desktop application built with Python that simplifies the Godot Engine development environment management.
  • Godot Awesome Scientific - Community-curated list of Godot software that provides methods for scientific methods, machine learning, and hyperoptimized computation.
  • Godot Package Manager - Package manager for Godot using npm.
  • gd-com npm package - Communicate with Godot clients using Node.js.
  • RetroPie Godot Game Engine "Emulator" - A scriptmodule to install a Godot "emulator" for RetroPie.
  • ShipThis - CLI to build and publish Godot mobile games to the App Store and Google Play.
  • strip-to-frames.pl - Perl script to split a grid spritesheet image into numbered individual frame files.
  • zfoo - Java game server framework for Godot, including GDScript serialization and deserialization.

2. Official Technical Reference & Guides (godotengine/website)

Godot Engine Website

Welcome to the source code for the Godot Engine website. This is a static website, generated offline using
Jekyll.

Table of Contents


Contributing

Contributions^1 are always welcome! Godot's website is open source, just like Godot Engine.

However, when contributing to the website, it is important to keep in mind that it acts as a public face of the Godot
organization and community. Thus, substantial changes must be discussed ahead of time. You don't necessarily need to
open a formal Godot improvement proposal like you do with engine features, but starting an issue on this repository
or joining the discussion on the Godot Contributors Chat is a good
idea.

Browser Support

When working on new features^2, keep in mind this website only supports evergreen browsers:

  • Chrome (latest version and N-1 version)
  • Edge (latest version and N-1 version)
  • Firefox (latest version, N-1 version, and latest ESR version)
  • Opera (latest version and N-1 version)
  • Safari (latest version and N-1 version)

[!IMPORTANT]
Internet Explorer isn't supported.

Development

Building

Pre-requisites

  • For Local Server One of the following is required:
    • Jekyll - Jekyll Website (with jekyll serve command)
    • Python 3.x Python
    • Docker - If you run on Docker, also you can use the Jekyll Docker image to serve the site.

[!CAUTION]
If you use latest versions of Ruby, you may encounter issues on building process.
Use the specific version of Ruby that is mentioned above.

Building the website locally

To build the website locally, follow these steps:

  1. Install Ruby 3.2 or later and Jekyll.
  • If you don't have access to Ruby 3.2 or later in your distribution's repositories,
    install a compatible version of Ruby using rbenv as well as Ruby's build-time dependencies:
    • Install in Ubuntu:
      • sudo apt install rbenv build-essential libffi-dev libreadline-dev libyaml-dev zlib1g-dev
    • Install in Fedora:
      • Install rbenv with dnf
  • Set up rbenv running the following:
    • rbenv install 3.2.5
    • rbenv global 3.2.5
    • echo 'eval "$(rbenv init -)"' >> ~/.bashrc to add the rbenv init to .bashrc (or .bash_profile)
  1. Install Minify.
    • Make sure either minify or gominify is available from the command line.
  2. Clone this repository.
  3. Install the necessary dependencies: bundle install.
  4. Build the site: bundle exec jekyll build.
    • Append --config _config.yml,_config.development.yml to use the development config with your build.

For simplicity, these two commands are also available as a build.sh script in this repository.

Building the website using Docker

Alternatively, you can also use the official Docker container for Jekyll. This container is designed to be run once
to perform the build, so you don't need to compose and permanently store it in your Docker setup. If you're on Linux,
execute the following command:

shell
docker run --rm --volume="$PWD:/srv/jekyll" -it jekyll/jekyll:stable ./build.sh

On Windows (from CMD.exe):

shell
docker run --rm --volume="%CD%:/srv/jekyll" -it jekyll/jekyll:stable ./build.sh

Building may take several minutes to finish.

Local server

As this is a static website, it can be served locally using any server stack you want.

  • It is possible to use Jekyll and bundle to immediately serve the pages upon building it. To do this, replace the final build
    step with bundle exec jekyll serve.
    • When using Docker, you need to add a new argument to the docker run command, -p 4000:4000, and change
      the shell script to build-and-serve.sh.

      shell
      docker run --rm --volume="$PWD:/srv/jekyll" -p 4000:4000 -it jekyll/jekyll:stable ./build-and-serve.sh

      or

      shell
      docker run --rm --volume="%CD%:/srv/jekyll" -p 4000:4000 -it jekyll/jekyll:stable ./build-and-serve.sh
  • You can also use Python, which is likely pre-installed on your system. To serve the pages with its local server, run
    python -m http.server 4000 -d ./_site.

After following either one of these steps the site will be available at http://localhost:4000.

Deployment

The project is built automatically by GitHub Actions whenever the master branch receives a new commit. The master branch
itself should not be deployed, as it only contains the source files. The built version of the website is available as the
published branch instead.

Note that this is not relevant for local development. Locally you would build the website in place and then serve the _site
folder. See the detailed instructions above.

Project structure

Content data and metadata

The following folders contain data files, used for generating more dynamic parts of the website, such as the blog,
the showcase, and the downloads page. These pages are written in Markdown and contain a metadata header used by the
generator. Markdown files form Jekyll collections with the same name as their containing folder. To create a new
Markdown document, you can start by copying an existing one and then change its content.

  • collections/_article contains articles for the blog. Each article is written in Markdown with a metadata header located at
    the top of the file. The following metadata fields are required for the article to be correctly displayed throughout
    the website: title, excerpt, categories, author, image, and date. The name of the file acts as a slug in
    the generated URL.

  • collections/_download contains the download instructions for Godot builds per platform. Each document is written in Markdown
    with a metadata header located at the top of the file. Download links are generated from the downloads field in the
    metadata. When adding a new platform, make sure to create a new tab for it in the /_layouts/download.html template.

  • collections/_showcase contains entries for the showcase. Each article is written in Markdown with a metadata header located at
    the top of the file. Showcase entries can be featured on the home page by setting the featured_in_home field to
    true. The image used is the one from the image field.

Some information is also stored in YAML files, acting as a file-based database for several meta properties.

  • _data contains various metadata files for the website:
    • authors.yml contains a list of authors used for the blog articles;
    • categories.yml contains a list of categories for the blog articles;
    • communities.yml contains a list of user communities for the /community/user-groups page.

Content pages and templates

The following folders contain entry points for almost every website page, as well as shared templates and assets. The
templating language used in Jekyll is liquid.

  • _i18n contains translations for the website. The default language is English. Only static information is
    translated, with the blog and the showcase being displayed in English. Currently disabled and a work in progress.

  • _includes contains navigation and footer elements used by most pages. If you want to create an element to reuse
    in multiple pages, you can create a new include file here.

  • _layouts contains the wrapping content for the pages. Each layout inherits from _layouts/default.html which
    contains the main structure of the page, including the head and meta tags. Other layouts are used for specific pages,
    like the blog, download, and showcase pages.

  • assets contains static assets for the website. This includes the CSS, JS, and images used in the theme and layout.
    For media content used in articles and other pages check the storage folder. Some files may be obsolete and
    unused.

  • pages contains most of the pages for the website. The final URL for each page is specified in the metadata header
    using the permalink field. Generally, it should map to the file's path inside pages. Dynamic content pages are
    generated using Markdown collections and layouts.

File storage

  • storage contains media and other files uploaded for use in dynamic content pages, such as the blog, the showcase,
    the events. Some files may be obsolete and unused.

Build system

This project is build with Jekyll, with the build instructions located in Gemfile and _config.yml. When building
locally, some configuration options may need to be different. To define those, _config.development.yml is used.

Content update guidelines

Updating Godot download version

All download information on the website is data-driven. This means that to change the information about the current
stable version, or on-going version previews, you don't need to modify pages directly. Instead, data files must be
updated.

The main file for keeping track of every official version is data/_versions.yml. It contains exactly one record
per each official release, including pre-releases. This file should be updated every time there is a new official
build available for download.

To create a new version, add the following block to the file:

text
- name: "4.0.1"
  flavor: "stable"
  release_date: "20 March 2023"
  release_notes: "/article/maintenance-release-godot-4-0-1/"

Make sure to order entries correctly, with the higher version number being closer to the top. Use the flavor field
to mark release as stable or as one of the pre-release builds. Make sure to always fill out the release date, and the release
notes link, if available.

When a new build for an existing version is published, update its corresponding block, changing the flavor and the release
information. Make sure to update this information when publishing the release notes.

Stable releases featured across the website, must be marked with the featured field and the corresponding major version number. Only one record must be marked as featured per version, so don't forget to remove it from the current holder of the mark.

text
- name: "4.0.3"
  flavor: "stable"
  release_date: "19 May 2023"
  release_notes: "/article/maintenance-release-godot-4-0-3/"
  featured: "4"

There are two additional files providing data for download pages and links: _data/download_configs.yml and
_data/download_platforms.yml. These files don't normally require changes and are used as a static reference table.
They define descriptions, tags, and filename slugs for all downloadable builds, as well as order for downloads on
some pages.

Localizing the website

To localize the website, the _i18n folder contains translation files for each language. The default and fallback language is English /_i18n/en.yml.

If you want to add a new language, create a new file in the _i18n folder with the language code as the filename and add the label for that language at /assets/js/localize.js. For example, for French, create /_i18n/fr.yml and add 'fr': 'Français' in the languageMap const.

The translations are handled by a jekyll plugin that contains a few tags you can use inside the templates. You can read more at /_plugins/localize.rb. But the tl'dr is:

  • Use the '{% t useyourkeyhere %}' tag to translate text
  • Use the '{% current_lang %}' tag to get the current page language
  • Use the '{% tlink /your/path %}' tag to get the localized URL

Adding a mirrorlist host

If a new host needs to be supported by the mirrorlist, it needs to be added in a few places. For the data side of
things you need to update _data/mirrorlist_configs.yml and add another record for the major-minor version code.

text
- name: "4.1"
    stable: [ "github" ]
    preview: [ "github_builds" ]

The stable key refers to hosts available for the stable release of that version, while the preview key refers
to all pre-releases and dev snapshots, which typically share all their characteristics. If in future there is a
need for finer control, some overrides system needs to be implemented.

For the logic side of things, the new host needs to be supported by the _plugins/make_download.rb script. Refer
to how other hosts are handled in that file and do the necessary adjustments. We assume that the final filenames
are standard across all hosts, so _data/download_configs.yml is respected.

Resources

  • Join the discussion on Godot Contributors Chat in the #website
    channel.
  • Please consider website usage stats when relying on modern
    web technologies (web standards support, file type support, etc).