Javatpoint Logo
Javatpoint Logo


These are the list of keyboards supported by the language. Keywords are reserved words (tokens), they cannot be used as identifiers. Operators (like in, not, and, or) and names of built-in types, as listed in the following sections, are also reserved.

The keyboard is defined in the GDScript tokenizer which are given below:

Keyword Description
If See if/else/elif.
else See if/else/elif.
elif See if/else/elif.
For See for.
do Reserved for future implementation of do…while loops.
match See match.
while See while.
case It booked for the next applications.
switch It reserved for future implementation.
break It exits the execution of the current for or while loop.
continue It skips immediately skips to the next iteration of for or while loop.
pass It used where a statement is required syntactically, but the execution of code is undesired, e.g., in empty functions.
return Returns a value form a service.
class Defines a class.
is Tests whether a variable extends with the current quality.
extends Explains what class to reach with the current class.
self This refers to the current class instance.
tool It executes the script in the editor.
signal It defines a sign.
func It represents a function.
static It defines a static function, and Static member variables are not allowed.
const Defines a constant.
enum It establishes an enum.
var It represents a variable.
on ready Initializes variables once the Node the script is attached to and its children are modifiable in the editor.
export It saves a variable along with the resource it's connected to and makes it visible and modifiable in the editor.
set get It defines setter and getter functions for a variable.
preload Preloads a class or variable.
breakpoint Editor helper for debugger breakpoints.
yield Co-routine support.
assert Asserts a condition, logs error on failure. Ignored in non-debug builds.
remote Networking RPC annotation.
master Networking RPC annotation.
slave Networking RPC annotation.
sync Networking RPC annotation.
TAU TAU constant.
INF Infinity is constant. Used for comparisons.
NAN NAN (not a number) constant. Used for comparisons.
PI PI constant.


The following is the list of supported operators and its precedence.

Operator Description
x[index] Subscription, Highest priority
x.attribute Attribute reference
is Instance Type Checker
~ Bitwise NOT
-x Negative
*,/,% Multiplication/Division/Remainder
Note: The result of these operations depends upon the types of the operands. If both are Integers, then the result will be an Integer. That means 1/10 returns 0 instead of 0.1. If at least one of the operands is a float, then the result is a float: float (1)/10 or 1.0/10 return both 0.1.
+,- Addition/Subtraction
<<,>> Bit shifting
& Bitwise AND
^ Bitwise XOR
| Bitwise OR
<,>,==,!=,>=,<= Comparisons
in Content Test
!, not Boolean NOT
and,&& Boolean AND
or,|| Boolean OR
If x else Ternary if/else
=,+=,-=,*=,/=,%=,&=,|= Assignment, Lowest Priority


Literal Type
45 Base 10 integer
0x8F51 Base 16 (hex) integer
3.14,58.1e-10 Floating-point number(real)
"Hello"," Hi" Strings
""" Hello""" Multiline string
@" Node/Label" Node path or StringName


Anything from a #(hash) to the end of the line is ignored and considered as a comment.

Multi-line comments can be created using """ (three quotes in a row) at the beginning and end of a block of text. Note that this creates a string; therefore, it will not be stripped away when the script is compiled.

Built-in types

Built-in types are stack-allocated, and they are passed as values. This means a copy is created on each assignment or when it was moving them as arguments to functions. The only exceptions are Array and Dictionaries, which are given by reference, so they are shared. (Not PoolArray like PoolByteArray though, those are passed as values too, so consider this when deciding which to use!)

Basic built-in types

A variable in GDScript can be assigned to several built-in types.


It is an empty data type that contains no information and cannot be assigned any other value.


The Boolean data type only contains true or false.


This data type can contain only integer numbers (both negative and positive).


It is used to provide a floating-point value (real numbers).


A sequence of characters in Unicode format. Strings can contain the standard C escape sequences. GDScript supports format strings printf functionality.

Vector built-in types


2D vector type containing x and y fields. It can also be accessed as an array.


2D vector type containing two vectors fields: position and size. Alternatively contains an end field, which is position+size.


3D vector type containing x, y, and z fields. This can also be accessed as an array.


In 2D, transforms 3x2 matrix is used.


3D plane type in the normalized form that contains a standard vector field and a d scalar distance.


Quaternion is a data type used for representing a 3D rotation. It is useful for interpolating rotations.


The axis-aligned bounding box (or 3D box) contains two vectors fields: position and size. Alternatively contains an end field, which is positive + size.


3x3 matrix used for 3D rotation and scale. It contains three vector fields (x, y, and z) and can also be accessed as an array of 3D vectors.


3D transform contains a basis field basis and a Vector3 field origin.

Engine build-in types

  • Color

The data type contains r, g, b, and fields. It can also be accessed as h, s, and v for hue/saturation/value.

  • NodePath

Compiled path to a node used mainly in the scene system. It can be easily assigned to and from a string.

  • RID

Resource ID (RID). Servers use generic RIDs to reference opaque data.

  • Object

Base class for anything that is not a built-in type.

Container built-in types


Arrays are indexed starting form index 0. Starting with Godot 2.1, indices may be negative like in python, to count from the end. Generic sequence of arbitrary objects types, including other arrays or dictionaries. The array can resize dynamically.

GDScript arrays are allotted linearly in memory for speed. Large arrays, which are more than tens of thousands of elements) may, however, cause memory fragmentation. If it is a concern, particular types of arrays are available. These only accept a single data type. They avoid memory fragmentation and also use less memory but are atomic and tend to run slower than generic arrays. They are recommended to use for large data sets.

  • PoolByteArray: An array of bytes (integer from 0 to 255).
  • PoolIntArray: An array of integers.
  • PoolStringArray: An array of strings.
  • PoolcolorArray: An array of Color objects.
  • PoolRealArray: An array of
  • PoolVector2Array: An array of Vector2
  • PoolVector3Array: An array of Vector3


Associative container which contains values referenced by unique keys.

Lua-style table syntax is also supported. Lua-style uses = instead of: and does not use quotes to mark string keys (making for slightly less to write).Keys are written in this form cannot start with a digit.

To add a key to an existing dictionary, access it like an existing key and assign to it:



Variables can exist as class members or local to functions. They are created with the var keyboard and may, optionally, be assigned a value upon initialization.


Constants are similar to the variables, but must be constants or constant expressions and must be assigned on initialization.


Enums are a shorthand for constants and are pretty useful if we want to assign consecutive integers to some constant.

If we pass a name to the enum, it also put all the values inside a constant dictionary of the name.


Functions belong to a class always. The scope priority for variable look-up: local-class member-global. The self-variable is always available and is provided as an option for accessing class members, but is not always required (and cannot be sent as the function's first argument, unlike python).

It can return at any point. The default return value is null.

Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Trending Technologies

B.Tech / MCA