Files
godot-demo-projects/index.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>