Add README files to 2D demos

This commit is contained in:
Aaron Franke
2020-03-07 20:15:58 -05:00
parent 9809601e40
commit a24ac796b6
67 changed files with 314 additions and 9 deletions

View 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
![GIF from the documentation](https://docs.godotengine.org/en/latest/_images/dodge_preview.gif)

View 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
![Screenshot](screenshots/fsm-attack.png)

View File

@@ -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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

13
2d/gd_paint/README.md Normal file
View 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
![Screenshot](screenshots/gdpaint.png)

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

16
2d/hdr/README.md Normal file
View 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
![Screenshot](screenshots/left.png)
![Screenshot](screenshots/right.png)

View File

BIN
2d/hdr/screenshots/left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@@ -0,0 +1,11 @@
# Hexagonal Game
Very simple demo showing a hexagonal TileMap and TileSet.
Language: GDScript
Renderer: GLES 2
## Screenshots
![Screenshot](screenshots/hex.png)

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

24
2d/isometric/README.md Normal file
View 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
![Screenshot](screenshots/isometric.png)

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

View 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
![Screenshot](screenshots/kinematic.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View 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
![Screenshot](screenshots/mask.png)

View File

@@ -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"

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

View 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
![Screenshot](screenshots/lights.png)

View File

@@ -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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

15
2d/navigation/README.md Normal file
View 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
![Screenshot](screenshots/navigation.png)

View File

@@ -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"

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

View 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
![Screenshot](screenshots/nav_astar.png)

View File

@@ -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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

18
2d/particles/README.md Normal file
View 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
![Screenshot of particles](screenshots/particles.png)

View File

@@ -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"

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

View 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
![Screenshot of the beginning](screenshots/beginning.png)
![Screenshot of the seesaw and the player riding an enemy](screenshots/seesaw-riding.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -8,9 +8,13 @@ You will find most of the demos 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
![Player shooting in the direction of an enemy](screenshots/shoot.png)
![The entire level layout viewed in the editor](screenshots/layout.png)

20
2d/pong/README.md Normal file
View 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
![Screenshot](screenshots/pong.png)

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -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()

View 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
![Screenshot](screenshots/object.png)
![Screenshot](screenshots/battle.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View 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
![Screenshot](screenshots/whirl.png)
![Screenshot](screenshots/old_film.png)

View File

@@ -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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 KiB

13
2d/sdf_font/README.md Normal file
View 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
![Screenshot](screenshots/sdf.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View 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
![Screenshot](screenshots/sprite.png)

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

View File

@@ -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.