mirror of
https://github.com/godotengine/godot-contributing-docs.git
synced 2025-12-31 05:48:13 +03:00
153 lines
6.2 KiB
ReStructuredText
153 lines
6.2 KiB
ReStructuredText
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 you’re
|
||
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
|
||
files’s 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 Godot’s 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.
|
||
It’s 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 don’t 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 don’t 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 they’re 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 don’t 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 it’s not the
|
||
default.
|