mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 15:00:09 +01:00
257 lines
19 KiB
HTML
257 lines
19 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Official Godot demos exported to Web</title>
|
|
<style>
|
|
:root {
|
|
--background-color: #fff;
|
|
--text-color: #222;
|
|
--link-color: hsl(220, 100%, 45%);
|
|
--link-visited-color: hsl(270, 100%, 55%);
|
|
--link-underline-color: hsla(220, 100%, 45%, 0.3);
|
|
--link-underline-visited-color: hsla(270, 100%, 45%, 0.3);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--background-color: #222;
|
|
--text-color: #eee;
|
|
--link-color: hsl(200, 100%, 70%);
|
|
--link-visited-color: hsl(250, 100%, 80%);
|
|
--link-underline-color: hsla(200, 100%, 70%, 0.3);
|
|
--link-underline-visited-color: hsla(250, 100%, 70%, 0.3);
|
|
}
|
|
}
|
|
|
|
*:focus {
|
|
/* More visible outline for better keyboard navigation. */
|
|
outline: 0.125rem solid hsl(220, 100%, 62.5%);
|
|
/* Make the outline always appear above other elements. */
|
|
position: relative;
|
|
}
|
|
|
|
html {
|
|
background-color: var(--background-color);
|
|
color: var(--text-color);
|
|
}
|
|
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
|
max-width: 50rem;
|
|
margin: 0 auto;
|
|
padding: 0.75rem;
|
|
line-height: 1.618rem;
|
|
}
|
|
|
|
h2 {
|
|
margin-top: 2.5rem;
|
|
}
|
|
|
|
a {
|
|
color: var(--link-color);
|
|
text-decoration-color: var(--link-underline-color);
|
|
text-decoration-thickness: 0.125rem;
|
|
}
|
|
|
|
a:visited {
|
|
color: var(--link-visited-color);
|
|
text-decoration-color: var(--link-visited-color);
|
|
}
|
|
|
|
a:hover {
|
|
filter: brightness(117.5%);
|
|
}
|
|
|
|
a:active {
|
|
filter: brightness(82.5%);
|
|
}
|
|
|
|
ul {
|
|
padding-left: 0;
|
|
}
|
|
|
|
li {
|
|
display: block;
|
|
}
|
|
|
|
li a {
|
|
display: inline-block;
|
|
width: 100%;
|
|
height: 4rem;
|
|
margin-left: 0.5rem;
|
|
}
|
|
|
|
li a:hover {
|
|
background-color: hsla(0, 0%, 50%, 0.1);
|
|
}
|
|
|
|
li a * {
|
|
float: left;
|
|
}
|
|
|
|
li a p {
|
|
height: 24px;
|
|
margin: 20px 10px;
|
|
}
|
|
|
|
.unsupported-demos li {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<h1>Godot demo projects</h1>
|
|
<p>
|
|
This page lists
|
|
<a href="https://github.com/godotengine/godot-demo-projects">official Godot demo projects</a>
|
|
exported to the web for testing purposes. These projects are deployed automatically
|
|
on every commit on the <code>master</code> branch of the repository.
|
|
</p>
|
|
<p>
|
|
The web exports on this page are provided for demonstration purposes only.
|
|
Some of these demos may not function or render correctly on the web platform,
|
|
especially on mobile devices.
|
|
For best performance, it's recommended to
|
|
<a href="https://godotengine.org/download/">download</a> a native editor
|
|
and run the demo project by importing its files in the project manager.
|
|
</p>
|
|
<p>
|
|
See the
|
|
<a href="https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html">Exporting for the Web</a>
|
|
documentation for information on exporting your own projects to the web.
|
|
</p>
|
|
|
|
<h2>List of demos</h2>
|
|
<ul>
|
|
<!-- The list of demos will be inserted below by the CI process. -->
|
|
<li><a href='2d/bullet_shower/'><img width=64 height=64 src=2d/bullet_shower//index.icon.png alt=><p>Bullet Shower</p></a></li>
|
|
<li><a href='2d/custom_drawing/'><img width=64 height=64 src=2d/custom_drawing//index.icon.png alt=><p>Custom Drawing in 2D</p></a></li>
|
|
<li><a href='2d/dodge_the_creeps/'><img width=64 height=64 src=2d/dodge_the_creeps//index.icon.png alt=><p>Dodge the Creeps</p></a></li>
|
|
<li><a href='2d/dynamic_tilemap_layers/'><img width=64 height=64 src=2d/dynamic_tilemap_layers//index.icon.png alt=><p>Dynamic TileMap Layers</p></a></li>
|
|
<li><a href='2d/finite_state_machine/'><img width=64 height=64 src=2d/finite_state_machine//index.icon.png alt=><p>Hierarchical Finite State Machine</p></a></li>
|
|
<li><a href='2d/hexagonal_map/'><img width=64 height=64 src=2d/hexagonal_map//index.icon.png alt=><p>Hexagonal Game</p></a></li>
|
|
<li><a href='2d/instancing/'><img width=64 height=64 src=2d/instancing//index.icon.png alt=><p>Scene Instancing Demo</p></a></li>
|
|
<li><a href='2d/isometric/'><img width=64 height=64 src=2d/isometric//index.icon.png alt=><p>Isometric Game</p></a></li>
|
|
<li><a href='2d/kinematic_character/'><img width=64 height=64 src=2d/kinematic_character//index.icon.png alt=><p>Kinematic Character 2D</p></a></li>
|
|
<li><a href='2d/light2d_as_mask/'><img width=64 height=64 src=2d/light2d_as_mask//index.icon.png alt=><p>2D Lights as Mask</p></a></li>
|
|
<li><a href='2d/lights_and_shadows/'><img width=64 height=64 src=2d/lights_and_shadows//index.icon.png alt=><p>2D Lights and Shadows</p></a></li>
|
|
<li><a href='2d/navigation/'><img width=64 height=64 src=2d/navigation//index.icon.png alt=><p>Navigation Polygon 2D</p></a></li>
|
|
<li><a href='2d/navigation_astar/'><img width=64 height=64 src=2d/navigation_astar//index.icon.png alt=><p>Grid-based Pathfinding with AStarGrid2D</p></a></li>
|
|
<li><a href='2d/particles/'><img width=64 height=64 src=2d/particles//index.icon.png alt=><p>2D GPUParticles</p></a></li>
|
|
<li><a href='2d/physics_platformer/'><img width=64 height=64 src=2d/physics_platformer//index.icon.png alt=><p>Physics-Based Platformer 2D</p></a></li>
|
|
<li><a href='2d/platformer/'><img width=64 height=64 src=2d/platformer//index.icon.png alt=><p>Platformer 2D</p></a></li>
|
|
<li><a href='2d/polygons_lines/'><img width=64 height=64 src=2d/polygons_lines//index.icon.png alt=><p>2D Polygons and Lines</p></a></li>
|
|
<li><a href='2d/pong/'><img width=64 height=64 src=2d/pong//index.icon.png alt=><p>Pong with GDScript</p></a></li>
|
|
<li><a href='2d/role_playing_game/'><img width=64 height=64 src=2d/role_playing_game//index.icon.png alt=><p>JRPG Demo</p></a></li>
|
|
<li><a href='2d/screen_space_shaders/'><img width=64 height=64 src=2d/screen_space_shaders//index.icon.png alt=><p>Screen Space Shaders</p></a></li>
|
|
<li><a href='2d/skeleton/'><img width=64 height=64 src=2d/skeleton//index.icon.png alt=><p>Skeleton2D Demo</p></a></li>
|
|
<li><a href='2d/sprite_shaders/'><img width=64 height=64 src=2d/sprite_shaders//index.icon.png alt=><p>2D Shaders for Sprites</p></a></li>
|
|
<li><a href='2d/tween/'><img width=64 height=64 src=2d/tween//index.icon.png alt=><p>Tween Demo</p></a></li>
|
|
<li><a href='3d/antialiasing/'><img width=64 height=64 src=3d/antialiasing//index.icon.png alt=><p>3D Anti-Aliasing</p></a></li>
|
|
<li><a href='3d/csg/'><img width=64 height=64 src=3d/csg//index.icon.png alt=><p>Constructive Solid Geometry (CSG)</p></a></li>
|
|
<li><a href='3d/global_illumination/'><img width=64 height=64 src=3d/global_illumination//index.icon.png alt=><p>Global Illumination</p></a></li>
|
|
<li><a href='3d/graphics_settings/'><img width=64 height=64 src=3d/graphics_settings//index.icon.png alt=><p>3D Graphics Settings</p></a></li>
|
|
<li><a href='3d/kinematic_character/'><img width=64 height=64 src=3d/kinematic_character//index.icon.png alt=><p>Kinematic Character 3D</p></a></li>
|
|
<li><a href='3d/lights_and_shadows/'><img width=64 height=64 src=3d/lights_and_shadows//index.icon.png alt=><p>3D Lights and Shadows</p></a></li>
|
|
<li><a href='3d/material_testers/'><img width=64 height=64 src=3d/material_testers//index.icon.png alt=><p>Material Testers</p></a></li>
|
|
<li><a href='3d/navigation/'><img width=64 height=64 src=3d/navigation//index.icon.png alt=><p>3D Navigation</p></a></li>
|
|
<li><a href='3d/physics_interpolation/'><img width=64 height=64 src=3d/physics_interpolation//index.icon.png alt=><p>Physics Interpolation</p></a></li>
|
|
<li><a href='3d/platformer/'><img width=64 height=64 src=3d/platformer//index.icon.png alt=><p>Platformer 3D</p></a></li>
|
|
<li><a href='3d/procedural_materials/'><img width=64 height=64 src=3d/procedural_materials//index.icon.png alt=><p>Procedural Materials</p></a></li>
|
|
<li><a href='3d/ragdoll_physics/'><img width=64 height=64 src=3d/ragdoll_physics//index.icon.png alt=><p>Ragdoll Physics</p></a></li>
|
|
<li><a href='3d/rigidbody_character/'><img width=64 height=64 src=3d/rigidbody_character//index.icon.png alt=><p>RigidBody Character 3D</p></a></li>
|
|
<li><a href='3d/sky_shaders/'><img width=64 height=64 src=3d/sky_shaders//index.icon.png alt=><p>3D Sky Shaders</p></a></li>
|
|
<li><a href='3d/soft_body_physics/'><img width=64 height=64 src=3d/soft_body_physics//index.icon.png alt=><p>Soft Body Physics</p></a></li>
|
|
<li><a href='3d/sprites/'><img width=64 height=64 src=3d/sprites//index.icon.png alt=><p>3D Sprites and Animated Sprites</p></a></li>
|
|
<li><a href='3d/squash_the_creeps/'><img width=64 height=64 src=3d/squash_the_creeps//index.icon.png alt=><p>Squash the Creeps (3D)</p></a></li>
|
|
<li><a href='3d/tonemap_color_correction/'><img width=64 height=64 src=3d/tonemap_color_correction//index.icon.png alt=><p>Tonemapping and Color Correction</p></a></li>
|
|
<li><a href='3d/truck_town/'><img width=64 height=64 src=3d/truck_town//index.icon.png alt=><p>Truck Town</p></a></li>
|
|
<li><a href='3d/visibility_ranges/'><img width=64 height=64 src=3d/visibility_ranges//index.icon.png alt=><p>Visibility Ranges (HLOD)</p></a></li>
|
|
<li><a href='3d/waypoints/'><img width=64 height=64 src=3d/waypoints//index.icon.png alt=><p>3D Waypoints</p></a></li>
|
|
<li><a href='audio/audio_effects/'><img width=64 height=64 src=audio/audio_effects//index.icon.png alt=><p>Audio Effects</p></a></li>
|
|
<li><a href='audio/generator/'><img width=64 height=64 src=audio/generator//index.icon.png alt=><p>Audio Generator Demo</p></a></li>
|
|
<li><a href='audio/mic_record/'><img width=64 height=64 src=audio/mic_record//index.icon.png alt=><p>Audio Mic Record Demo</p></a></li>
|
|
<li><a href='audio/rhythm_game/'><img width=64 height=64 src=audio/rhythm_game//index.icon.png alt=><p>Rhythm Game</p></a></li>
|
|
<li><a href='audio/text_to_speech/'><img width=64 height=64 src=audio/text_to_speech//index.icon.png alt=><p>Text-to-speech demo</p></a></li>
|
|
<li><a href='gui/accessibility/'><img width=64 height=64 src=gui/accessibility//index.icon.png alt=><p>UI Accessibility</p></a></li>
|
|
<li><a href='gui/bidi_and_font_features/'><img width=64 height=64 src=gui/bidi_and_font_features//index.icon.png alt=><p>BiDi and Font Features</p></a></li>
|
|
<li><a href='gui/control_gallery/'><img width=64 height=64 src=gui/control_gallery//index.icon.png alt=><p>Control Gallery</p></a></li>
|
|
<li><a href='gui/drag_and_drop/'><img width=64 height=64 src=gui/drag_and_drop//index.icon.png alt=><p>Drag & Drop (GUI)</p></a></li>
|
|
<li><a href='gui/gd_paint/'><img width=64 height=64 src=gui/gd_paint//index.icon.png alt=><p>GD Paint</p></a></li>
|
|
<li><a href='gui/input_mapping/'><img width=64 height=64 src=gui/input_mapping//index.icon.png alt=><p>Input Mapping GUI</p></a></li>
|
|
<li><a href='gui/multiple_resolutions/'><img width=64 height=64 src=gui/multiple_resolutions//index.icon.png alt=><p>Multiple Resolutions and Aspect Ratios</p></a></li>
|
|
<li><a href='gui/pseudolocalization/'><img width=64 height=64 src=gui/pseudolocalization//index.icon.png alt=><p>Pseudolocalization</p></a></li>
|
|
<li><a href='gui/regex/'><img width=64 height=64 src=gui/regex//index.icon.png alt=><p>RegEx (Regular Expressions)</p></a></li>
|
|
<li><a href='gui/rich_text_bbcode/'><img width=64 height=64 src=gui/rich_text_bbcode//index.icon.png alt=><p>Rich Text Label with BBCode</p></a></li>
|
|
<li><a href='gui/theming_override/'><img width=64 height=64 src=gui/theming_override//index.icon.png alt=><p>GUI Theming Override</p></a></li>
|
|
<li><a href='gui/ui_mirroring/'><img width=64 height=64 src=gui/ui_mirroring//index.icon.png alt=><p>UI Mirroring Demo</p></a></li>
|
|
<li><a href='loading/autoload/'><img width=64 height=64 src=loading/autoload//index.icon.png alt=><p>Autoload (Singletons)</p></a></li>
|
|
<li><a href='loading/load_threaded/'><img width=64 height=64 src=loading/load_threaded//index.icon.png alt=><p>Threaded Loading</p></a></li>
|
|
<li><a href='loading/scene_changer/'><img width=64 height=64 src=loading/scene_changer//index.icon.png alt=><p>Scene Changer</p></a></li>
|
|
<li><a href='loading/serialization/'><img width=64 height=64 src=loading/serialization//index.icon.png alt=><p>Saving and Loading (Serialization)</p></a></li>
|
|
<li><a href='loading/threads/'><img width=64 height=64 src=loading/threads//index.icon.png alt=><p>Loading in a Thread</p></a></li>
|
|
<li><a href='misc/2.5d/'><img width=64 height=64 src=misc/2.5d//index.icon.png alt=><p>2.5D Demo with GDScript</p></a></li>
|
|
<li><a href='misc/custom_logging/'><img width=64 height=64 src=misc/custom_logging//index.icon.png alt=><p>Custom Logging</p></a></li>
|
|
<li><a href='misc/graphics_tablet_input/'><img width=64 height=64 src=misc/graphics_tablet_input//index.icon.png alt=><p>Graphics Tablet Input</p></a></li>
|
|
<li><a href='misc/joypads/'><img width=64 height=64 src=misc/joypads//index.icon.png alt=><p>Joypads</p></a></li>
|
|
<li><a href='misc/multiple_windows/'><img width=64 height=64 src=misc/multiple_windows//index.icon.png alt=><p>Multiple Windows Demo</p></a></li>
|
|
<li><a href='misc/noise_viewer/'><img width=64 height=64 src=misc/noise_viewer//index.icon.png alt=><p>Noise Viewer</p></a></li>
|
|
<li><a href='misc/os_test/'><img width=64 height=64 src=misc/os_test//index.icon.png alt=><p>Operating System Testing</p></a></li>
|
|
<li><a href='misc/pause/'><img width=64 height=64 src=misc/pause//index.icon.png alt=><p>Pause</p></a></li>
|
|
<li><a href='misc/window_management/'><img width=64 height=64 src=misc/window_management//index.icon.png alt=><p>Window Management</p></a></li>
|
|
<li><a href='mobile/multitouch_cubes/'><img width=64 height=64 src=mobile/multitouch_cubes//index.icon.png alt=><p>Multitouch Cubes Demo</p></a></li>
|
|
<li><a href='mobile/multitouch_view/'><img width=64 height=64 src=mobile/multitouch_view//index.icon.png alt=><p>Multitouch View</p></a></li>
|
|
<li><a href='viewport/2d_in_3d/'><img width=64 height=64 src=viewport/2d_in_3d//index.icon.png alt=><p>2D in 3D</p></a></li>
|
|
<li><a href='viewport/3d_in_2d/'><img width=64 height=64 src=viewport/3d_in_2d//index.icon.png alt=><p>3D in 2D</p></a></li>
|
|
<li><a href='viewport/3d_scaling/'><img width=64 height=64 src=viewport/3d_scaling//index.icon.png alt=><p>3D SubViewport Scaling</p></a></li>
|
|
<li><a href='viewport/dynamic_split_screen/'><img width=64 height=64 src=viewport/dynamic_split_screen//index.icon.png alt=><p>Dynamic Split Screen</p></a></li>
|
|
<li><a href='viewport/gui_in_3d/'><img width=64 height=64 src=viewport/gui_in_3d//index.icon.png alt=><p>GUI in 3D</p></a></li>
|
|
<li><a href='viewport/screen_capture/'><img width=64 height=64 src=viewport/screen_capture//index.icon.png alt=><p>Screen Capture</p></a></li>
|
|
<li><a href='viewport/split_screen_input/'><img width=64 height=64 src=viewport/split_screen_input//index.icon.png alt=><p>Split Screen Input</p></a></li>
|
|
<li><a href='xr/mobile_vr_interface_demo/'><img width=64 height=64 src=xr/mobile_vr_interface_demo//index.icon.png alt=><p>Mobile VR Stereo Interface Demo</p></a></li>
|
|
<li><a href='xr/openxr_binding_modifier_demo/'><img width=64 height=64 src=xr/openxr_binding_modifier_demo//index.icon.png alt=><p>OpenXR Binding Modifiers Demo</p></a></li>
|
|
<li><a href='xr/openxr_render_models/'><img width=64 height=64 src=xr/openxr_render_models//index.icon.png alt=><p>OpenXR Render Models</p></a></li>
|
|
<li><a href='xr/webxr/'><img width=64 height=64 src=xr/webxr//index.icon.png alt=><p>WebXR demo</p></a></li>
|
|
<!-- The list of demos will be inserted above by the CI process. -->
|
|
</ul>
|
|
<h2>Unavailable demos</h2>
|
|
<ul class="unsupported-demos">
|
|
<li><code>2d/glow</code>: Not supported on the Compatibility rendering method (which the web platform always uses).</li>
|
|
<li><code>2d/navigation_mesh_chunks</code>: Relies on debug-only drawing functionality which is not available in projects exported in release mode.</li>
|
|
<li><code>2d/physics_tests</code>: Relies on debug-only drawing functionality which is not available in projects exported in release mode.</li>
|
|
<li><code>3d/labels_and_texts</code>: Does not export in headless mode due to an engine bug (font importing infinite loop).</li>
|
|
<li><code>3d/decals</code>: Not supported on the Compatibility rendering method (which the web platform always uses).</li>
|
|
<li><code>3d/ik</code>: Demo is not fully ported to Godot 4 yet (even though the feature works on the web).</li>
|
|
<li><code>3d/navigation_mesh_chunks</code>: Relies on debug-only drawing functionality which is not available in projects exported in release mode.</li>
|
|
<li><code>3d/occlusion_culling_mesh_lod</code>: Occlusion culling is disabled by default in web builds to decrease binary size.</li>
|
|
<li><code>3d/particles</code>: Demo mostly showcases features that are not available in Compatibility (which the web platform always uses).</li>
|
|
<li><code>3d/physical_light_camera_units</code>: Demo is not tuned for the Compatibility rendering method (which the web platform always uses).</li>
|
|
<li><code>3d/physics_tests</code>: Relies on debug-only drawing functionality which is not available in projects exported in release mode.</li>
|
|
<li><code>3d/variable_rate_shading</code>: Not supported on the Compatibility rendering method (which the web platform always uses)</li>
|
|
<li><code>3d/volumetric_fog</code>: Not supported on the Compatibility rendering method (which the web platform always uses)</li>
|
|
<li><code>3d/voxel</code>: Freezes after a few seconds of gameplay due to web platform-specific threading issues.</li>
|
|
<li><code>audio/bpm_sync</code>: Not functional on the web platform due to differences in the audio playback implementation.</li>
|
|
<li><code>audio/device_changer</code>: Not relevant for the web platform, as the web browser always chooses the audio output device.</li>
|
|
<li><code>audio/midi_piano</code>: Not functional on the web platform due to differences in the audio playback implementation.</li>
|
|
<li><code>audio/spectrum</code>: Not functional on the web platform due to differences in the audio playback implementation.</li>
|
|
<li><code>compute/*</code>: Not supported on the Compatibility rendering method (which the web platform always uses).</li>
|
|
<li><code>gui/msdf_font</code>: Does not export in headless mode due to an engine bug (font importing crashes).</li>
|
|
<li><code>gui/translation</code>: Does not export in headless mode due to an engine bug (font importing crashes).</li>
|
|
<li><code>loading/runtime_save_load</code>: Native filesystem access is not available on the web platform.</li>
|
|
<li><code>misc/compute_shader_heightmap</code>: Not supported on the Compatibility rendering method (which the web platform always uses).</li>
|
|
<li><code>misc/large_world_coordinates</code>: Not supported on the Compatibility rendering method (which the web platform always uses).</li>
|
|
<li><code>misc/matrix_transform</code>: Results are only visible in the editor.</li>
|
|
<li><code>mobile/android_iap</code>: Only relevant on native Android.</li>
|
|
<li><code>mobile/sensors</code>: Not supported on the web platform.</li>
|
|
<li><code>mono/*</code>: Not available yet (requires Mono-enabled HTML5 build).</li>
|
|
<li><code>networking/*</code>: Doesn't make sense to be hosted on a static host, as the server must be hosted on the same origin due to the browser's same-origin policy.</li>
|
|
<li><code>plugins/*</code>: Only effective within the editor.</li>
|
|
<li><code>xr/openxr_*</code>: Not functional on the web platform, as these demos are not designed for WebXR.</li>
|
|
</ul>
|
|
</body>
|
|
</html>
|