Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update most demos for Godot 4.0.beta10 #782

Merged
merged 1 commit into from
Jan 5, 2023

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Oct 6, 2022

The HDR for 2D demo was renamed to Glow for 2D as autoexposure can no longer be used in 2D in 4.0.

The SDF font demo was renamed to MSDF font to denote that multi-channel distance field fonts are now used.

The OpenSimplexNoise demo was renamed to Noise Viewer as it now uses FastNoiseLite.

Various demos have received small improvements along the way (mainly cosmetic changes or usability improvements):

  • All demos now use physical key inputs, so that non-QWERTY keyboard layouts work out of the box.
  • GUI-only demos have low processor mode enabled and V-Sync disabled, for low input lag while keeping resource usage low. Tearing caused by the lack of V-Sync is usually not noticeable in GUI-only demos.
  • In some demos, physics FPS was increased to 120 to improve smoothness on high refresh rate displays and decrease input lag. Demos have simple physics calculations compared to full-blown projects, so this change should be affordable on lower-end devices too.
  • Glow for 2D demo now features a toggleable glow map (lens dirt effect).
  • 2D particles demo now features turbulence, subemitters, collision and global coordinates animation examples (particles + PathFollow2D). Glow can also be toggled.
  • Truck Town now features a race track on the outside of the town, built using CSGPolygon3D + Path3D.
  • Truck Town now has a large floor plane that extends past the city for a better appearance. It can also be driven on if you need to see how vehicles behave on a large flat plane.
  • Truck Town now features engine and impact sounds, blob shadows for cars, exhaust particles and dynamic FOV based on speed. These changes don't require much additional code, but improve the feel of the demo a lot when put together. The speedometer's color changes depending on speed thanks to a Gradient resource, and the unit can be changed by pressing U or Select as an alternative to clicking the button (implemented using BaseButton's shortcut property).
  • Truck Town has revised textures (AI upscaled to 2×, grass color tweaked to be more pleasing to the eyes). The level geometry now features smoother terrain.
  • Truck Town's UI is now keyboard and gamepad-friendly. A title label was also added.
  • Platformer 3D now features a reset button (R) that is automatically used when falling off the map, like Kinematic Character 3D. Platformer 3D also has increased gravity and jump height for better jump feeling. Jump height can now be reduced by releasing the jump key mid-air.
  • The Platformer 3D stage was extended to make more areas reachable.
  • Bullets shot by the player in the Platformer 3D demo now emit light. The character also casts a blob shadow using a Decal node, and its material fades out with dithering if it gets too close to the camera (for better scene visibility).
  • The number of coins collected is now kept track of in Platformer 3D, with the number displayed above the player character in 3D space (diegetic UI).
  • RigidBody Character 3D now uses orange-red textures instead of purple to visually distinguish it from Kinematic Character 3D.
  • RigidBody Character 3D now uses a ShapeCast3D instead of a RayCast3D to detect whether the player is able to jump. Compared to a RayCast3D which is infinitely thin, this allows for more reliable checking if the player is standing over an edge or corner.
  • Voxel demo now features crouch camera smoothing.
  • Voxel and Dynamic Split Screen demos now feature smooth physics friction for the player controller.
  • Window Management demo now features a transparent window toggle, as well as confined and confined + hidden mouse mode. Screen refresh rate is also displayed.
  • Various additional cosmetic tweaks.
  • Mic Record demo now has an "Open User Folder" button. Print output formatting on playback was also improved.
  • Audio Generator demo now features a volume slider and a generated frequency slider.
  • 3D Graphics Settings demo now features settings for FSR sharpness, shadow resolution, shadow filtering and model quality (mesh LOD). Preset buttons were also added.

See #697 (comment).

Updated

Demos updated and confirmed to be working as of 4.0.beta8:

  • plugins
  • All demos in viewport
  • All demos in misc
  • loading/autoload1
  • loading/scene_changer1
  • loading/serialization1
  • 2d/bullet_shower
  • 2d/dodge_the_creeps
  • 2d/finite_state_machine
  • 2d/hdr (no autoexposure/HDR as that's not possible in 2D anymore in 4.0, only glow)
    • Renamed to 2d/glow as a result.
  • 2d/hexagonal_map
  • 2d/instancing
  • 2d/isometric (bug: collision is offset)
  • 2d/kinematic_character
  • 2d/lights_and_shadows
  • 2d/particles
  • 2d/physics_tests
  • 2d/pong
  • 2d/screen_space_shaders
  • 2d/sprite_shaders
  • 3d/antialiasing
  • 3d/graphics_settings
  • 3d/kinematic_character
  • 3d/navigation (bug: meshes are broken due to being saved as ArrayMesh resources in 3.x, for which there is no conversion tool yet)
  • 3d/platformer
  • 3d/rigidbody_character
  • 3d/truck_town
  • 3d/volumetric_fog
  • 3d/voxel
  • 3d/waypoints
  • audio/device_changer
  • audio/spectrum
  • audio/mic_record
  • gui/sdf_font
    • Renamed to gui/msdf_font.

Updated, but couldn't get working yet

Not planned to be tackled in this PR

These should be updated in separate PRs: https://github.com/godotengine/godot-demo-projects/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc+label%3Aupdate

  • mobile/ demos
  • mono/ demos
  • networking/ demos

Future TODOs

  • Add shadow resolution, shadow filter quality and depth of field settings to 3D Graphics Settings demo.
  • Update screenshots for all demos.
  • Check Camera2D settings in all demos to match the new default window size.

Footnotes

  1. The update was done in https://github.com/godotengine/godot-demo-projects/pull/776. This PR includes some cosmetic changes to the loading/ demos. 2 3

@Calinou Calinou added the update label Oct 6, 2022
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 2 times, most recently from 36a4aef to cac3984 Compare October 10, 2022 19:22
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 4 times, most recently from 58b8026 to 047db4a Compare November 29, 2022 16:53
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 8 times, most recently from 6cc7571 to fe69d6c Compare December 5, 2022 17:37
@Calinou Calinou changed the title Update demos for Godot 4.0.beta2 Update demos for Godot 4.0.beta7 Dec 5, 2022
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 10 times, most recently from fe909a7 to 6d0b26b Compare December 10, 2022 02:22
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 3 times, most recently from a1671d1 to ff2df2b Compare December 19, 2022 16:46
@Calinou Calinou changed the title Update most demos for Godot 4.0.beta8 Update most demos for Godot 4.0.beta9 Dec 19, 2022
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 5 times, most recently from 83ea321 to ec9cda1 Compare December 20, 2022 22:11
@Calinou Calinou force-pushed the update-demos-4.0beta2 branch 3 times, most recently from 4666753 to ccf3e13 Compare December 23, 2022 22:57
@Calinou Calinou changed the title Update most demos for Godot 4.0.beta9 Update most demos for Godot 4.0.beta10 Dec 23, 2022
The HDR for 2D demo was renamed to Glow for 2D as autoexposure can
no longer be used in 2D in 4.0.

The SDF font demo was renamed to MSDF font to denote that multi-channel
distance field fonts are now used.

The OpenSimplexNoise demo was renamed to Noise Viewer as it now
uses FastNoiseLite.
@Calinou Calinou marked this pull request as ready for review December 29, 2022 21:44
@Calinou
Copy link
Member Author

Calinou commented Dec 29, 2022

This is now ready for review, even though not all demos were updated to 4.0 as part of this PR. We can do that in future pull requests.

Please test all demos locally and report any issues you may encounter 🙂

Instructions

Copy link
Member

@akien-mga akien-mga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably won't have time to do in depth review or testing, but I believe it's worth merging sooner than later, and catch potential issues once more users try the updated demos.

@zoeesilcock
Copy link
Contributor

Hi, I have taken some time to go through the demos listed above and test them on Godot 4.0b10. Projects without comments worked fine as far as I could tell. I got a lot of "Load failed due to missing dependencies" errors when first opening projects, but they all seemed to be fine after pressing the "Open anyway" button. Not sure if that is Godot 4 bug or something related to the projects in question, I would have to check if any diff was caused by pressing the "Open anyway" button. I've probably included some things here that are just noise, but I've tried to stick to debugger breaks and errors.

I'd be happy to provide further information or test more if there are any points here that are unexpected or platform specific.

Computer specs:

Mac OS X Ventura (13.1)
2,7 GHz Quad-Core Intel Core i7
Intel Iris Plus Graphics 655 1536 MB
16 GB 2133 MHz LPDDR3

Results:

  • plugins
    • Unable to load addon script from path: 'res://addons/custom_node/heart_plugin.gd'. This might be due to a code error in that script. Disabling the addon at 'res://addons/custom_node/plugin.cfg' to prevent further errors.
    • Everything seemed to work fine though.
  • misc/pause
    • The dropdown only works when the button reads "Unpause". Unclear if this was intended, but after a quick look I couldn't find what may cause that. Perhaps process_mode.gd also needs to use process_mode = Node.PROCESS_MODE_ALWAYS like pause_button.gd does?
  • misc/matrix_transform
  • misc/noise_viewer
    • noise_viewer.gd:26 Integer division, decimal part will be discarded.
  • misc/window_management
  • misc/2.5d
    • Unable to load addon script from path: 'res://addons/node25d/node25d_plugin.gd'. This might be due to a code error in that script. Disabling the addon at 'res://addons/node25d/plugin.cfg' to prevent further errors.
    • Worked fine despite that.
  • misc/os_test
    • os_test.gd:117 - at function: : Parser Error: Static function "screen_is_touchscreen()" not found in base "DisplayServer".
    • Open Shell (folder): OS alert window: The application can't be opened. -50
  • misc/joypads
    • TODO: Find a controller to test with...
  • viewport/dynamic_split_screen
  • viewport/2d_in_3d
  • viewport/3d_in_2d
  • viewport/gui_in_3d
    • E 0:00:02:0361 get_width: Viewport Texture must be set to use it.
      <C++ Error> Condition "!vp" is true. Returning: 0
      <C++ Source> scene/main/viewport.cpp:109 @ get_width()
    • E 0:00:02:0361 get_height: Viewport Texture must be set to use it.
      <C++ Error> Condition "!vp" is true. Returning: 0
      <C++ Source> scene/main/viewport.cpp:114 @ get_height()
    • E 0:00:02:0396 setup_local_to_scene: Condition "proxy.is_valid()" is true.
      <C++ Source> scene/main/viewport.cpp:87 @ setup_local_to_scene()
    • These don't seem to be serious, the project still launches and appears to work as expected.
  • viewport/3d_scaling
  • viewport/screen_capture
  • loading/autoload
  • loading/scene_changer
  • loading/serialization
    • Open User Data Folder: OS alert window: The application can't be opened. -50
  • 2d/bullet_shower
  • 2d/dodge_the_creeps
    • First open: Load failed due to missing dependencies: Mob.tscn
    • Works despite this warning, and doesn't show the warning when re-opening the project.
  • 2d/finite_state_machine
    • state_machine/state_machine.gd:53 - at function: _physics_process: Invalid call. Nonexistent function 'update' in base 'Nil'.
  • 2d/glow
  • 2d/hexagonal_map
    • First open: Load failed due to missing dependencies: tileset.tres
    • Works fine after hitting "Open anyway".
  • 2d/instancing
  • 2d/isometric (bug: collision is offset)
    • Works fine apart from the bug you already know of.
  • 2d/kinematic_character
  • 2d/lights_and_shadows
    • First open: Load failed due to missing dependencies: background.png
    • Works fine after hitting "Open anyway".
  • 2d/particles
    • First open: Load failed due to missing dependencies: fire_particle.png
    • Works fine after hitting "Open anyway".
  • 2d/physics_test
    • test/functional/test_one_way_collision.gd:373 - at function _start_test: Invalid get index 'name' (on base: 'null reference').
    • Contacts:
      E 0:00:09:0144 window_get_popup_safe_rect: Condition "!windows.has(p_window)" is true. Returning: Rect2i()
      <C++ Source> platform/macos/display_server_macos.mm:3564 @ window_get_popup_safe_rect()
    • Both the contacts performance tests never seemed to complete, instead ending up with spinning beach ball after a while. I might have just been impatient.
  • 2d/pong
  • 2d/screen_space_shaders
    • First open: Load failed due to missing dependencies: burano.jpg
    • Works fine after hitting "Open anyway".
  • 2d/sprite_shaders
    3d/antialiasing
  • 3d/graphics_settings
    • settings.gd:295 - at function: Parse Error: Static function "environment_glow_set_use_high_quality()" not found on base "RenderingServer".
    • Project launches if you hit continue in the debugger, but the UI doesn't seem to apply any changes or even allow hiding the sidebar.
  • 3d/kinematic_character
    • First open: Load failed due to missing dependencies: cubelib.tres
    • Works fine after hitting "Open anyway".
  • 3d/navigation (bug: meshes are broken due to being saved as ArrayMesh resources in 3.x, for which there is no conversion tool yet)
  • 3d/platformer
  • 3d/rigidbody_character
    • On first open: Load failed due to missing dependencies: cubelib.tres
    • Works fine after ignoring that warning.
  • 3d/truck_town
    • E 0:00:05:0959 _on_mini_van_pressed (and the other two): Condition "!is_inside_tree()" is true. Returning: Transform3D()
      <C++ Source> scene/3d/node_3d.cpp:308 @ get_global_transform()
      follow_camera.gd:23 @ @implicit_new()
      car_select.gd:15 @ _load_scene()
      car_select.gd:39 @ _on_mini_van_pressed()
  • 3d/volumetric_fog
  • 3d/voxel
  • 3d/waypoints
    • W 0:00:02:0506 The function 'angle_diff()' is a static function but was called from an instance. Instead, it should be directly called from the type: 'Control.angle_diff()'.
      <C++ Error> STATIC_CALLED_ON_INSTANCE waypoint.gd:79
  • 3d/physics_test
  • audio/device_changer
  • audio/spectrum
  • audio/mic_record
  • gui/msdf_font

@Calinou
Copy link
Member Author

Calinou commented Jan 5, 2023

Thanks for testing 🙂

I'll merge this following Akien's approval. Fixes can be applied to future pull requests to keep changes easy to review.

@Calinou Calinou merged commit 1d5184e into godotengine:4.0-dev Jan 5, 2023
@Calinou Calinou deleted the update-demos-4.0beta2 branch January 5, 2023 15:50
@InfiniteProductions
Copy link
Contributor

Hi,

this link:

* Download the PR fork's branch: https://github.com/Calinou/godot-demo-projects/archive/refs/heads/update-demos-4.0beta2.zip

is down.

@geowarin
Copy link

@InfiniteProductions The branch has been merged in the 4.0-dev branch. You can download it with the link on github (Code > Download zip) when you are on 4.0-dev branch, or by cloning the repo and switching to this branch (with git clone and git switch).

Here is the link for your convenience :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants