• Stars
    star
    283
  • Rank 146,066 (Top 3 %)
  • Language
    HTML
  • License
    MIT License
  • Created about 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The code for the official Godot Engine website. A static site built using Jekyll.

Godot Engine Website

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

Contributing

Contributions are always welcome! Godot website, just like Godot engine, is open source.

However, when contributing to the website, it is important to keep in mind that it acts as a public face of 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, 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)

Internet Explorer isn't supported.

Development

Building

To build the website locally, follow these steps:

  1. Install Jekyll prerequisites.
    • Make sure bundle 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.

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:

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

On Windows (from CMD.exe):

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.

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

      or

      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 build 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, 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:

- 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.

- 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.

Resources

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

More Repositories

1

godot

Godot Engine – Multi-platform 2D and 3D game engine
C++
88,512
star
2

awesome-godot

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

godot-demo-projects

Demonstration and Template Projects
GDScript
5,567
star
4

godot-docs

Godot Engine official documentation
reStructuredText
3,655
star
5

godot-cpp

C++ bindings for the Godot script API
C++
1,607
star
6

godot-vscode-plugin

Godot development tools for VSCode
TypeScript
1,517
star
7

godot-blender-exporter

Addon for Blender to directly export to a Godot Scene
Python
1,154
star
8

godot-proposals

Godot Improvement Proposals (GIPs)
1,089
star
9

tps-demo

Godot Third Person Shooter with high quality assets and lighting
GDScript
972
star
10

godot-git-plugin

Git implementation of the VCS interface in Godot
C++
669
star
11

collada-exporter

"Better" Collada exporter for Blender, orignally developed by the Godot Engine community
Python
416
star
12

godot-syntax-themes

Syntax themes for the Godot Engine script editor
397
star
13

godot-headers

Headers for the Godot API supplied by the GDNative module.
C
376
star
14

FBX2glTF

A command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format.
C++
326
star
15

emacs-gdscript-mode

An Emacs package to get GDScript support and syntax highlighting.
Emacs Lisp
303
star
16

godot-asset-library

PHP frontend for Godot Engine's asset library
PHP
289
star
17

godot-csharp-visualstudio

Godot C# extension for Visual Studio
C#
234
star
18

build-containers

Godot engine build containers
Shell
207
star
19

webrtc-native

The official GDNative WebRTC implementation for non-html exports.
C++
205
star
20

godot-design

Visual design specific stuff for the godot engine
202
star
21

gdnative-demos

Demo projects for GDNative
Python
191
star
22

godot-old-gsoc-ideas

Old ideas for Google Summer of Code (no longer relevant)
165
star
23

godot-google-play-billing

Godot Android plugin for the Google Play Billing library
Java
146
star
24

godot-csharp-vscode

Debugger and utilities for working with Godot C# projects in VSCode
TypeScript
141
star
25

godot-ios-plugins

Objective-C++
128
star
26

godot-benchmarks

Collection of benchmarks to test performance of different areas of Godot
GDScript
121
star
27

godot-visual-script

VisualScript as a Godot Engine c++ module
C++
118
star
28

godot-cpp-template

Quickstart template for GDExtension development with Godot
Python
109
star
29

godot-3d-dodge-the-creeps

This project was moved to https://github.com/godotengine/godot-demo-projects/tree/master/3d/squash_the_creeps
GDScript
91
star
30

godot-build-scripts

Build scripts used for official Godot Engine builds with https://github.com/godotengine/build-containers
Shell
79
star
31

godot-mono-builds

Mono build scripts for Godot
Python
56
star
32

godot-builds

Official pre-releases, dev snapshots, and custom builds of the Godot engine.
Python
54
star
33

godot-docs-l10n

Localization of the Godot documentation – Translations should be done on Weblate (see link)
Shell
51
star
34

godot-3d-platformer-demo

3D platformer, developed as part of the Mozilla Grant 2019
44
star
35

godot-tests

Repository for Godot benchmarks, regression tests, etc.
GDScript
35
star
36

godot-interactive-changelog

An interactive tool to view a changelog for each version of Godot Engine
JavaScript
30
star
37

godot-monodevelop-addin

Godot Add-in for MonoDevelop and Visual Studio for Mac
C#
30
star
38

godot-docs-project-starters

A collection of project templates and assets used by tutorials in the official Godot documentation. https://github.com/godotengine/godot-docs
GDScript
27
star
39

mousse

High quality 3D platform demo, designed to make the best use of Godot 4.0
24
star
40

doc-status

Online Godot class reference status
JavaScript
21
star
41

godot-platform-haiku

Godot Engine platform port for the Haiku operating system // UNMAINTAINED, for reference / forks.
C++
19
star
42

webrtc-actions

A set of github actions to build WebRTC as a single static library.
18
star
43

regression-test-project

Godot engine regression test project
GDScript
17
star
44

godot-team-reports

Browse Godot PR backlog for each maintenance team
JavaScript
17
star
45

godot-editor-l10n

Localization of the Godot editor and class reference – Translations should be done on Weblate (see link)
Python
14
star
46

gdscript-tests

Tests for the GDScript module implementation
HTML
13
star
47

godot-showreel-voting

A Django app to review and vote videos
Python
12
star
48

godot-prs-by-file

JavaScript
12
star
49

.github

Godot community health files
10
star
50

community-map

Map of regional community locations, submit your community here
9
star
51

issue-bot

Issuebot for chat.godotengine.org
Python
8
star
52

godot-commit-artifacts

A tool providing quick links to latest CI builds of development branches
JavaScript
8
star
53

godot-nir-static

C++
8
star
54

godot-benchmarks-results

Website to display godot-benchmarks results
6
star
55

godot-website-cover-generator

JavaScript
5
star
56

moltenvk-osxcross

Custom MoltenVK builds with `-fno-objc-msgsend-selector-stubs` to be compatible with osxcross
4
star
57

godot-question2answer

A repository hosting the current platform used at https://ask.godotengine.org
PHP
4
star
58

godot-docs-user-notes

User notes for the Godot Engine official documentation
4
star
59

issue-stats

Gather hardware and software information based on Godot GitHub issue reports
Python
3
star
60

discourse-theme

A custom Godot styled theme for discourse
SCSS
2
star