Files
2025-08-20 10:46:01 +02:00

153 lines
6.2 KiB
ReStructuredText
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Contributing demo projects
==========================
Thanks for your interest in contributing to the
`Godot demo projects <https://github.com/godotengine/godot-demo-projects>`__!
Demo submission criteria
------------------------
Please follow these guidelines for submitting new demos or improving
existing demos:
- The demo must work with the latest Godot version of the branch youre
submitting to.
- The demo must follow all of the Godot style guides:
- `Project
organization <https://docs.godotengine.org/en/stable/tutorials/best_practices/project_organization.html>`__
- `GDScript style
guide <https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html>`__
- In GDScript, type hints should be used whenever possible to
improve runtime performance and ease code maintenance. The
**Debug > GDScript > Warnings > Untyped Declaration** project
setting is set to **Warn** on most existing demos to enforce
this. This setting should also be configured to **Warn** on new
demos.
- `C# style
guide <https://docs.godotengine.org/en/stable/tutorials/scripting/c_sharp/c_sharp_style_guide.html>`__
- `Shaders style
guide <https://docs.godotengine.org/en/stable/tutorials/shaders/shaders_style_guide.html>`__
- The demo should not be overcomplicated. Simplicity is usually
preferred.
- The submitted files must be freely redistributable and modifiable,
including for commercial use. This applies to art assets as well.
- In practice, this means the following licenses are accepted for
art assets:
- CC0 1.0 (or similar public domain dedications)
- CC BY 3.0/4.0
- CC BY-SA 3.0/4.0
- Licenses such as “Royalty-free” (without clarification), CC BY-NC
or CC BY-ND are **not** accepted.
- To allow demos to be cloned quickly, file sizes should be kept
reasonable for all files submitted. Try to keep the demo project
filess download size below 20 MB, unless there is a good reason to
have a larger demo (e.g. if high-quality textures are *required* to
show off an effect).
- You can check this by creating a ZIP file containing the project
files, then removing ``.godot/`` within the ZIP file.
- For 3D demos, consider relying on Godots procedural generation
abilities (such as
`NoiseTexture2D <https://docs.godotengine.org/en/stable/classes/class_noisetexture2d.html>`__)
to decrease file size.
Submission criteria for new demos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you are submitting a new demo:
- Make sure it includes a ``README.md`` file similar to the other
demos.
- Make sure a short description (1-3 lines) is set in the Project
Settings.
- Make sure the project has a ``icon.webp`` in lossless WebP [1]_
format that is 128×128 pixels, with its path defined in the Project
Settings. This allows the icon to remain crisp on hiDPI displays.
- Make sure the project includes a ``screenshots/`` folder containing a
screenshot in lossless WebP [1]_ format similar to the other demos.
Its recommended to stick to only 1 screenshot, but you may add
multiple screenshots if required. The screenshot should be in
1280×720 resolution, without visible window borders.
- The ``screenshots/`` folder must contain an empty ``.gdignore``
file to prevent Godot from importing screenshots as resources.
- Make sure the demo has keyboard and controller input support (plus
mouse if relevant). Explicit touch input support is a bonus, but not
required.
- For keyboard events, WASD configurations must use *physical* key
locations in the Input Map to allow them to work out of the box on
non-QWERTY keyboard layouts.
Visual considerations
^^^^^^^^^^^^^^^^^^^^^
- Unless the project requires a different stretch mode and aspect, use
the ``canvas_items`` stretch mode and ``expand`` stretch aspect in
the Project Settings. Configure anchors for Control nodes correctly,
so that `multiple
resolutions <https://docs.godotengine.org/en/stable/tutorials/rendering/multiple_resolutions.html>`__
and aspect ratios are supported.
- Demos that dont update their visual output often (such as UI demos)
must have **Low Processor Mode** enabled in the Project Settings.
This must be left disabled in demos where constant redrawing is
expected (such as most “game” demos).
- For greater performance and compatibility, use the **Compatibility**
rendering method in 2D demos that dont require advanced graphics
functionality.
- In 3D demos or 2D demos that require advanced graphics
functionality, use the **Forward+** rendering method (**Mobile**
is automatically used on mobile platforms in this case).
- In 3D projects, set **Rendering > Textures > Default Filters >
Anisotropic Filtering Level** to **16×** in the Project Settings.
Make sure all materials use the relevant anisotropic sampler mode
(**Nearest Mipmaps Anisotropic** or **Linear Mipmaps Anisotropic**).
- In 3D projects, set **Rendering > Anti Aliasing > Quality > MSAA 3D**
to **4×**.
- In projects that use demanding graphics features such as SDFGI,
set **Rendering > Anti Aliasing > Quality > Screen Space AA** to
**FXAA** instead as this is faster.
- Use graphics options that perform reasonably well on low-end to
mid-range hardware. Demanding graphics options should not be enabled
by default, unless theyre the entire point of the demo.
If you are submitting a copy of a demo translated to C#
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Please ensure that there is a good reason to have this demo
translated. We dont want to have multiple copies of every single
project, as this makes maintenance more difficult.
- Please ensure that the code mirrors the original as closely as
possible.
- In the ``project.godot`` file and in the ``README.md``, include “with
C#” in the title, and also include a link to the original in the
``README.md``.
.. [1]
You can use `Squoosh <https://squoosh.app/>`__ to convert images to
WebP. Make sure to enable the Lossless option, as its not the
default.