Skip to content

Commit

Permalink
Improved description of annotations
Browse files Browse the repository at this point in the history
Removes an unnecessary and potentially confusing comparison of annotations to keywords and generally improves wording in the GDScript Basics tutorial. A new page to the Contributing section has been added for scripting development guidelines. This new page hosts suggestions on when annotations should be implemented in GDScript.
  • Loading branch information
allenwp committed Apr 25, 2024
1 parent 3a577ea commit 71e4e2c
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 6 deletions.
1 change: 1 addition & 0 deletions contributing/development/core_and_modules/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ This section covers the basics that you will encounter in (almost) every source
inheritance_class_tree
internal_rendering_architecture
2d_coordinate_systems
scripting_development

Extending Godot by modifying its source code
--------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
.. _doc_scripting_development:

Scripting development
=====================

GDScript
--------

Annotation guidelines
~~~~~~~~~~~~~~~~~~~~~

..
This description intentionally avoids mention of implementation and
compilation details because these are often inconsistent between annotations
Create annotations for modifiers that act on the script or its code.
Addionally, create annotations for behaviour that is specific to the Godot
engine and editor; if the primary purpose is to affect the way that the engine
or editor treats or interacts with the script, implement the token as an
annotation.

Do not create annotations for general programming language features.

::

# Affects how the editor treats this script.
@icon("res://path/to/class/icon.svg")
# Affects how the engine interacts this script.
@onready var character_name = $Label

# static is a general programming language feature.
static var num_players = 2

For historical reasons, some existing annotations and keywords do not strictly
follow these guidelines. Choosing between implementing a feature as an
annotation or as a language keyword is a nuanced decision that should be made
through discussion with other GDScript developers.
12 changes: 6 additions & 6 deletions tutorials/scripting/gdscript/gdscript_basics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -446,13 +446,13 @@ GDScript also supports :ref:`format strings <doc_gdscript_printf>`.
Annotations
~~~~~~~~~~~

There are some special tokens in GDScript that act like keywords but are not,
they are *annotations* instead. Every annotation start with the ``@`` character
and is specified by a name. A detailed description and example for each annotation
can be found inside the :ref:`GDScript class reference <class_@GDScript>`.
Annotations are special tokens in GDScript that act as modifiers to a script or
its code and may affect how the script is treated by the Godot engine or
editor.

Annotations affect how the script is treated by external tools and usually don't
change the behavior.
Every annotation starts with the ``@`` character and is specified by a name. A
detailed description and example for each annotation can be found inside the
:ref:`GDScript class reference <class_@GDScript>`.

For instance, you can use it to export a value to the editor::

Expand Down

0 comments on commit 71e4e2c

Please sign in to comment.