Add README files to 2D demos
17
2d/dodge_the_creeps/README.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Dodge the Creeps
|
||||
|
||||
This is a simple game where your character must move
|
||||
and avoid the enemies for as long as possible.
|
||||
|
||||
This is a finished version of the game featured in the
|
||||
["Your first game"](https://docs.godotengine.org/en/latest/getting_started/step_by_step/your_first_game.html)
|
||||
tutorial in the documentation. For more details,
|
||||
consider following the tutorial in the documentation.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 3 (particles are not available in GLES 2)
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
30
2d/finite_state_machine/README.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Hierarchical Finite State Machine
|
||||
|
||||
This example shows how to apply the State machine programming
|
||||
pattern in GDscript, including Hierarchical States, and a
|
||||
pushdown automaton.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Why use a state machine
|
||||
|
||||
States are common in games. You can use the pattern to:
|
||||
|
||||
1. Separate each behavior and transitions between behaviors,
|
||||
thus make scripts shorter and easier to manage.
|
||||
|
||||
2. Respect the Single Responsibility Principle.
|
||||
Each State object represents one action.
|
||||
|
||||
3. Improve your code's structure. Look at the scene tree and
|
||||
FileSystem tab: without looking at the code, you'll know
|
||||
what the Player can or cannot do.
|
||||
|
||||
You can read more about States in the excellent
|
||||
[Game Programming Patterns ebook](https://gameprogrammingpatterns.com/state.html).
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Hierarchical Finite State Machine example"
|
||||
config/name="Hierarchical Finite State Machine"
|
||||
run/main_scene="res://Demo.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/finite_state_machine/screenshots/.gdignore
Normal file
BIN
2d/finite_state_machine/screenshots/fsm-attack.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
13
2d/gd_paint/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# GD Paint
|
||||
|
||||
GD Paint is a simple image editor made using Godot and GDScript.
|
||||
It supports different types of "brushes": a basic pen/pencil
|
||||
and eraser, as well as a rectangle and a circle brush.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
0
2d/gd_paint/screenshots/.gdignore
Normal file
BIN
2d/gd_paint/screenshots/gdpaint.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
16
2d/hdr/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# HDR for 2D
|
||||
|
||||
Simple demo how to use High Dynamic Range (HDR) in a 2D game,
|
||||
via the WorldEnvironment node.
|
||||
|
||||
Just slide the cave image left and right to observe the HDR effect at work.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 3 (HDR is not available in GLES 2)
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
0
2d/hdr/screenshots/.gdignore
Normal file
BIN
2d/hdr/screenshots/left.png
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
2d/hdr/screenshots/right.png
Normal file
|
After Width: | Height: | Size: 192 KiB |
11
2d/hexagonal_map/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Hexagonal Game
|
||||
|
||||
Very simple demo showing a hexagonal TileMap and TileSet.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
0
2d/hexagonal_map/screenshots/.gdignore
Normal file
BIN
2d/hexagonal_map/screenshots/hex.png
Normal file
|
After Width: | Height: | Size: 401 KiB |
24
2d/isometric/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Isometric Game
|
||||
|
||||
This demo shows a traditional isometric view with depth sorting.
|
||||
|
||||
A character can move around the level and will also slide around objects,
|
||||
as well as be occluded when standing in front or behind them.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## How does it work?
|
||||
|
||||
The level uses a [`TileMap`](https://docs.godotengine.org/en/latest/classes/class_tilemap.html#class-tilemap)
|
||||
in which the tiles have different vertical offsets.
|
||||
The walls, doors, and pillars each have
|
||||
[`StaticBody2D`](https://docs.godotengine.org/en/latest/classes/class_staticbody2d.html)
|
||||
and [`CollisionPolygon2D`](https://docs.godotengine.org/en/latest/classes/class_collisionpolygon2d.html)
|
||||
at their base. The player also has a collider at its base,
|
||||
which makes the player collide with the level.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
0
2d/isometric/screenshots/.gdignore
Normal file
BIN
2d/isometric/screenshots/isometric.png
Normal file
|
After Width: | Height: | Size: 440 KiB |
14
2d/kinematic_character/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Kinematic Character
|
||||
|
||||
Example of how to make a kinematic character controller in 2D using
|
||||
[`KinematicBody2D`](https://docs.godotengine.org/en/latest/classes/class_kinematicbody2d.html).
|
||||
The character moves around, is affected by moving platforms,
|
||||
can jump through one-way collision platforms, etc.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
0
2d/kinematic_character/screenshots/.gdignore
Normal file
BIN
2d/kinematic_character/screenshots/kinematic.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
11
2d/light2d_as_mask/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# 2D Lights as Mask
|
||||
|
||||
Example of how to use 2D lights to mask objects on screen.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Using Lights as Mask"
|
||||
config/name="2D Lights as Mask"
|
||||
run/main_scene="res://lightmask.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/light2d_as_mask/screenshots/.gdignore
Normal file
BIN
2d/light2d_as_mask/screenshots/mask.png
Normal file
|
After Width: | Height: | Size: 253 KiB |
13
2d/lights_and_shadows/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# 2D Lights and Shadows
|
||||
|
||||
Simple demo of 2D lights and shadows, using
|
||||
[`Light2D`](https://docs.godotengine.org/en/latest/classes/class_light2d.html)
|
||||
and [`LightOccluder2D`](https://docs.godotengine.org/en/latest/classes/class_lightoccluder2d.html).
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="2D Lighting"
|
||||
config/name="2D Lights and Shadows"
|
||||
run/main_scene="res://light_shadows.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/lights_and_shadows/screenshots/.gdignore
Normal file
BIN
2d/lights_and_shadows/screenshots/lights.png
Normal file
|
After Width: | Height: | Size: 187 KiB |
15
2d/navigation/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Navigation Polygon 2D
|
||||
|
||||
Example of using 2D navigation using a
|
||||
[`NavigationPolygon`](https://docs.godotengine.org/en/latest/classes/class_navigationpolygon.html)
|
||||
in a [`NavigationPolygonInstance`](https://docs.godotengine.org/en/latest/classes/class_navigationpolygoninstance.html) node.
|
||||
It uses the 2D navigation API to request a path between two points,
|
||||
and then traverses the resulting path.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Navigation Polygon (2D)"
|
||||
config/name="Navigation Polygon 2D"
|
||||
run/main_scene="res://level.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/navigation/screenshots/.gdignore
Normal file
BIN
2d/navigation/screenshots/navigation.png
Normal file
|
After Width: | Height: | Size: 205 KiB |
12
2d/navigation_astar/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Grid-based Navigation with Astar
|
||||
|
||||
This is an example of using AStar for navigation in 2D,
|
||||
complete with Steering Behaviors in order to smooth the movement out.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Grid-based pathfinding with Astar"
|
||||
config/name="Grid-based Pathfinding with Astar"
|
||||
run/main_scene="res://Game.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/navigation_astar/screenshots/.gdignore
Normal file
BIN
2d/navigation_astar/screenshots/nav_astar.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
18
2d/particles/README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# 2D Particles
|
||||
|
||||
This demo showcases how 2D particle systems work in Godot.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 3 (particles are not available in GLES 2)
|
||||
|
||||
## How does it work?
|
||||
|
||||
It uses [`Particles2D`](https://docs.godotengine.org/en/latest/classes/class_particles2d.html) nodes
|
||||
with [`ParticlesMaterial`](https://docs.godotengine.org/en/latest/classes/class_particlesmaterial.html)
|
||||
materials. Note that `ParticlesMaterial` is agnostic between 2D and 3D,
|
||||
so when used in 2D, the "Disable Z" flag should be enabled.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Particle Systems"
|
||||
config/name="2D Particles"
|
||||
run/main_scene="res://particles.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/particles/screenshots/.gdignore
Normal file
BIN
2d/particles/screenshots/particles.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
28
2d/physics_platformer/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Physics Platformer
|
||||
|
||||
This demo uses [`RigidBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigidbody2d.html)
|
||||
for the player and enemies.
|
||||
These character controllers are more powerful than
|
||||
[`KinematicBody2D`](https://docs.godotengine.org/en/latest/classes/class_kinematicbody2d.html),
|
||||
but can be more difficult to handle, as they require
|
||||
manual modification of the RigidBody velocity.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 3 (particles are not available in GLES 2)
|
||||
|
||||
## How does it work?
|
||||
|
||||
The player and enemies use dynamic character
|
||||
controllers for movement, made with
|
||||
[`RigidBody2D`](https://docs.godotengine.org/en/latest/classes/class_rigidbody2d.html),
|
||||
which means that they can perfectly interact with physics
|
||||
(there is a see-saw, and you can even ride enemies).
|
||||
Because of this, all movement must be done in sync with
|
||||
the physics engine, inside of `_integrate_forces()`.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
0
2d/physics_platformer/screenshots/.gdignore
Normal file
BIN
2d/physics_platformer/screenshots/beginning.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
2d/physics_platformer/screenshots/seesaw-riding.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
@@ -8,9 +8,13 @@ You will find most of the demo’s content in the `Level.tscn` scene. You can op
|
||||
|
||||
We invite you to open the demo's GDScript files in the editor as they contain a lot of comments that explain how each class works.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 3 (particles are not available in GLES 2)
|
||||
|
||||
## Features
|
||||
|
||||
- Side-scrolling player controller.
|
||||
- Side-scrolling player controller using [`KinematicBody2D`](https://docs.godotengine.org/en/latest/classes/class_kinematicbody2d.html).
|
||||
- Can walk on and snap to slopes.
|
||||
- Can shoot, including while jumping.
|
||||
- Enemies that crawl on the floor and change direction when they encounter an obstacle.
|
||||
@@ -26,4 +30,5 @@ We invite you to open the demo's GDScript files in the editor as they contain a
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
20
2d/pong/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Pong with GDScript
|
||||
|
||||
A simple Pong game. This demo shows best practices
|
||||
for game development in Godot, including
|
||||
[signals](https://docs.godotengine.org/en/latest/getting_started/step_by_step/signals.html).
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## How does it work?
|
||||
|
||||
The walls, paddle, and ball are all
|
||||
[`Area2D`](https://docs.godotengine.org/en/latest/classes/class_area2d.html)
|
||||
nodes. When the ball touches the walls or the paddles,
|
||||
they emit signals and modify the ball.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
0
2d/pong/screenshots/.gdignore
Normal file
BIN
2d/pong/screenshots/pong.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
@@ -2,6 +2,6 @@ extends Area2D
|
||||
|
||||
export var _bounce_direction = 1
|
||||
|
||||
func _on_area_entered( area ):
|
||||
func _on_area_entered(area):
|
||||
if area.name == "Ball":
|
||||
area.direction = (area.direction + Vector2(0, _bounce_direction)).normalized()
|
||||
|
||||
15
2d/role_playing_game/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Role Playing Game
|
||||
|
||||
This shows a method of creating grid-based movement with Godot
|
||||
and GDScript. It also includes a simple JRPG-style dialogue and
|
||||
battle system on top of it.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
0
2d/role_playing_game/screenshots/.gdignore
Normal file
BIN
2d/role_playing_game/screenshots/battle.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
2d/role_playing_game/screenshots/object.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
14
2d/screen_space_shaders/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Screen Space Shaders
|
||||
|
||||
Several examples of full screen 2D shader processing.
|
||||
Many common full-res effects are implemented here for reference.
|
||||
|
||||
Language: [GDSL](https://docs.godotengine.org/en/latest/tutorials/shading/shading_reference/shading_language.html) and GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
@@ -15,7 +15,7 @@ _global_script_class_icons={
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Screen-Space Shaders"
|
||||
config/name="Screen Space Shaders"
|
||||
run/main_scene="res://screen_shaders.tscn"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
|
||||
0
2d/screen_space_shaders/screenshots/.gdignore
Normal file
BIN
2d/screen_space_shaders/screenshots/old_film.png
Normal file
|
After Width: | Height: | Size: 416 KiB |
BIN
2d/screen_space_shaders/screenshots/whirl.png
Normal file
|
After Width: | Height: | Size: 863 KiB |
13
2d/sdf_font/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# SDF Font
|
||||
|
||||
This is a demo of Signed Distance Field fonts in Godot.
|
||||
The technique used allows the text to remain clear
|
||||
under arbitrary zooms and rotations.
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 3 (this effect is not available in GLES 2)
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 4.0 KiB |
0
2d/sdf_font/screenshots/.gdignore
Normal file
BIN
2d/sdf_font/screenshots/sdf.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
12
2d/sprite_shaders/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Sprite Shaders
|
||||
|
||||
This is a sample consisting of different shaders applied to some sprites.
|
||||
Effects include outlines, blurs, distorts, shadows, glows, and more.
|
||||
|
||||
Language: [GDSL](https://docs.godotengine.org/en/latest/tutorials/shading/shading_reference/shading_language.html)
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
0
2d/sprite_shaders/screenshots/.gdignore
Normal file
BIN
2d/sprite_shaders/screenshots/sprite.png
Normal file
|
After Width: | Height: | Size: 143 KiB |
@@ -4,6 +4,10 @@ This demo project shows a way to create a 2.5D game in Godot by mixing 2D and 3D
|
||||
|
||||
Note: There is a Mono C# version available [here](https://github.com/godotengine/godot-demo-projects/tree/master/mono/2.5d).
|
||||
|
||||
Language: GDScript
|
||||
|
||||
Renderer: GLES 2
|
||||
|
||||
## How does it work?
|
||||
|
||||
Custom node types are added in a Godot plugin to allow 2.5D objects. Node25D serves as the base for all 2.5D objects. Its first child must be a 3D Spatial, which is used to calculate its position. Then, add a 2D Sprite (or similar) to display the object.
|
||||
|
||||