This demo showcases a custom logger implementation, which runs in parallel
to the built-in logging facilities (including file logging). The custom logger
displays all messages printed by the engine in an in-game console.
* Improve gamepad behaviour in rpg
Fix gamepad can't do dialogue.
Fix character often plays bump animation with gamepad when there's no
obstacles around.
Add gamepad A to ui_accept so gamepads can press buttons in dialogue and
combat.
Use get_vector so we get an automatic deadzone on our input.
Round our input direction so we don't pass Vector2i(0,0) to
request_move, get denied, and then do a bump animation.
* Use SpriteFrames instead of animating texture
Seems like Godot 4 doesn't allow toggling AnimationPlayer tracks by
making children editable so the texture is no longer being set and the
player is invisible. Regardless, this workflow is also not scalable to
multiple enemy types. Instead, use SpriteFrames to setup different
visuals for each slime.
Triggers animations from code alongside AnimationPlayer calls because
doing it in AnimationPlayer seemed unnecessarily complex.
* Give all slimes a common base class
Split player input handling from walker to allow both slimes to use the
same visual setup. In a real game, you'd want this kind of setup so
enemies are able to walk on the grid too.
Remove unused actor.gd -- looks like this was an early version of
walker.gd.
Setup opponent slime as type=Actor because otherwise you can't fight
them.
* Convert TileMap to TileMapLayer
Used "Extract TileMap layers as individual TileMapLayer nodes" in the
TileMap editor and removed the 0 layer argument from functions in
grid.gd
* Explain and rename facing direction node
When I first started looking into the character, I couldn't figure out
what this play button texture was for. After experimenting, it might be
an old version of the character visuals or a demo to show how to make
your character rotate.
* Fade to black between scenes
Fix blue screen when entering combat.
Our fade ColorRect was hidden so it never displayed. We removed the
exploration scene before fading so the fade started with an empty scene
with a blue skybox.
* Loop idle animation in combat
Add AnimationTree to combat character setup so we can tell when the
take_damage animation completes. This was harder than expected because
by default Godot modulates to black and sets scale to 0 unless you
specify otherwise with the RESET animation.
* Add a CanvasLayer above each clickable Control root
Fix mouse can't click buttons.
Seems like we're not able to click buttons in Godot 4 without a
CanvasLayer root. Adding that makes it work, but required some
restructuring to point at the correct node. In cases like combat+ui,
change it to emit a signal to use the "call down, signal up" pattern.
* Remove error comment that no longer occurs
Neither winning nor fleeing triggers this warning on Godot
v4.4.1.stable.official [49a5bc7b6].
* Rename parent -> grid
Make it clearer that the parent of the player and other pawns is
expected to be our Grid class.
* navigation_astar: replace deprecated TileMap with TileMapLayer
* navigation_astar: use get_used_cells() instead of iterating over region
This also removes the confusing use of Tile.OBSTACLE. The tile enum is
mostly used for atlas coordinates but in this case it is compared with
the source id which only happens to be zero as well.
* navigation_astar: use constants for atlas coordinates
This makes it more obvious how to set cells in larger tilesets where the
second position is not zero.
It also removes the constant OBSTACLE which is unused since the last
commit.
* navigation_astar: mention get_used_rect()
Using it in this example is more complex (as the border has no cells)
but it's good to know.
- Add runtime MP3 and WAV loading with example files.
- Add runtime FBX loading (but no example files, due to known issues with
the current FBX runtime loading implementation).
- Use supersampling for the 3D preview to further improve quality.
- Shorten file path to example glTF scene.
- Mention audio duration in the UI when loading an audio file.
This showcases various tonemapping operators and their interaction
with several color correction textures (1D and 3D).
A script generating neutral 3D LUT textures is also included.
Co-authored-by: Allen Pestaluky <allenpestaluky@gmail.com>
- Add options for physics ticks per second, time scale, max physics steps per frame
and physics interpolation to the 2D and 3D physics tests demos.
- Physics ticks per second are always multiplied by time scale so that
time scale does not affect the physics simulation quality.
- Enable 4× MSAA for better debug shape display. Remove meshes/lights as
the debug collision fill make these unnecessary.
- Switch to the Mobile rendering method in the 2D physics tests demo
to allow for 2D MSAA, as it's not implemented in Compatibility yet.
- Improve collision shapes color in the 2D and 3D physics tests demos
for better visibility. Each PhysicsBody type now has its own collision
shape color.
- Allow placing/breaking blocks when further away (up to 5 blocks instead of 4).
- Add a background to the debug display to improve readability on bright backgrounds.
- Simplify coordinate display using the `%v` placeholder available in 4.3 onwards.
This was most common at low physics tick rates like 20 TPS.
This also fixes an issue with the RigidBody character demo having
movement speed depending on the physics tick rate.
JSON.parse_string() parses all numbers as floats, even if there are no decimals.
`str(JSON.parse_string('{"type": 3}').asdf)` would result in `"3.0"`, which is not a valid int.
Because of this, the demo is not working.