You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Not all changes from 3.x to 4.x were documented. I've opened an issue upstream, but I keep encountering them.
Version 4.2.2 has some quirks that are fixed in 4.3 (and 4.4) but I'd like to target 4.2.x first and then up from there.
GUT
GUT GUI needs to be updated. GUT now expects you to use the gut tab in the editor, instead of a scene.
Many GUT tests fail on the Demo and in general. Without the GUI working, it is hard to tell which ones.
yield_for and yield_to are now deprecated and should be changed to wait_for_signalwait_seconds.
Maybe GUT should be a submodule?
Failing Tests
A few tests seem to stop the whole testing process. test_scripting_engine_filterstest_state_filter_parent just stops GUT execution. You can add additional statements after the last asster, so logically it's a problem with the cleanup tasks, but I haven't been able to track it down.
Most tests should be failing because of some problem with the code - but a few might still have issues with changes from the conversion
A few tests have commented out sections - they should be fixed and re-enabled
All tests should pass
Some tests could use updating or removing - old tests existed to test class_name for example, but they no longer work, and 4.0 syntax is <variable> is <Class> but I've preserved them for now.
DEMO / BASE SCENES
Main menu title text is wrong size
Almost all text handling needs to be fixed
Library card and deck builder don't work as intended. Part of the issue is that PopUpPanels are no longer Controls but Windows.
Demo does not show cards. They're properly loaded into cfc.deck but never make it to the Scene Tree. They work properly in GUT tests.
Tween logic did work and then stopped working. tween_property().from() doesn't seem to like the weakref implementation.
REWRITES
Font handling (mostly in cardfront.gd) has changed. Instead of a font file copy for each use (which provides font.size that can be changed) Godot now uses a single FontFile with theme_fonts (and theme_override_font_size). Some if it is started.
super._ready() Many issues stemmed from the fact that lifecycle functions no longer call their super version of those functions. The fix for this means that every derived class needs to use super._ready() as the first line in their _ready(), which also means that users will need to do that in their derived classes. Some way to rewrite these classes to prevent that would be nice for the end user.
ViewPortCardFocus.gd:155:180 $VBC/Focus is a PopUpPanel node. This node used to be a Control but is now a Window - which means there is no 'modulate' property. If we want to continue the soft fade in/out either a way using Window should be done, or it should be changed to a different node type. It might need a re-write with the change. Also note the effect on test_piles.gd:95
Script.get_global_name will be exposed in 4.3 which should allow us to get the class_name of a script object. I think it would be able to simplify logic in a few places. <variable> is <class> works in 4.2
I mostly just wrote the tween logic to replace what already existed, but they could definitely use a re-write all over the place to take advantage of their new lightweight run and forget attitude and being scope-specific.
Godot 4 does not allow overriding build-in functions (neither did 3, but 4 is more specific about it). Overridden functions should be re-named and any calls to them also to make it clearer what the call is trying to do. Off the top of my head Pile.gd:add_child() but I know there are more
AcceptDialog used to be a Popup but now is only a Window - so it's lost some methods and gained others. Anything that uses it should be reworked as needed.
SPECIFIC
These may or may not address other listed items
pile.gd pre_sorted_order is never given a value
CardTemplate.gd:359 the logic is not neat (is not and is ! are not allowed in syntax). It can be fixed when 4.3 is released
_previously_focused_cards does not seem to work in the test only. - the problem is in MousePointer.gd. The "area_entered" signal is never sent, so _on_MousePointer_area_entered never runs, so focus is never changed. MousePointer.gd might be due for re-write to native functions anyways, but its a wide-reaching unit. (test_facedown.gd)
OTHER
Github actions uses godot 3.4.4, so no builds will be able to pass until that is fixed
I'm not sure if breakpoints are carried over - if so, they should be deleted. They're to mark all of the code I touched
Lots of unused variables left over and their warnings.
Tweens are mostly handled correctly, but there are a few that don't work properly. Some are just added to the scene tree without tweeners (normally @onready var _tween = create_tween() not being in a function)
Documentation might need to be updated
If/when this is merged back into the base (and even if it isn't) all of the non-working commits starting from b314af5 should be squashed.
If you do some testing and find an issue that's not tracked here, please open an issue or submit a PR.
The text was updated successfully, but these errors were encountered:
Issues with Godot
GUT
yield_for
andyield_to
are now deprecated and should be changed towait_for_signal
wait_seconds
.Failing Tests
test_scripting_engine_filters
test_state_filter_parent
just stops GUT execution. You can add additional statements after the last asster, so logically it's a problem with the cleanup tasks, but I haven't been able to track it down.class_name
for example, but they no longer work, and 4.0 syntax is<variable> is <Class>
but I've preserved them for now.DEMO / BASE SCENES
tween_property().from()
doesn't seem to like the weakref implementation.REWRITES
super._ready()
Many issues stemmed from the fact that lifecycle functions no longer call their super version of those functions. The fix for this means that every derived class needs to usesuper._ready()
as the first line in their_ready()
, which also means that users will need to do that in their derived classes. Some way to rewrite these classes to prevent that would be nice for the end user.$VBC/Focus
is a PopUpPanel node. This node used to be a Control but is now a Window - which means there is no 'modulate' property. If we want to continue the soft fade in/out either a way using Window should be done, or it should be changed to a different node type. It might need a re-write with the change. Also note the effect on test_piles.gd:95class_name
of a script object. I think it would be able to simplify logic in a few places.<variable> is <class>
works in 4.2Pile.gd:add_child()
but I know there are morePopup
but now is only aWindow
- so it's lost some methods and gained others. Anything that uses it should be reworked as needed.SPECIFIC
These may or may not address other listed items
pre_sorted_order
is never given a valueis not
andis !
are not allowed in syntax). It can be fixed when 4.3 is releasedMousePointer.gd
. The "area_entered" signal is never sent, so_on_MousePointer_area_entered
never runs, so focus is never changed.MousePointer.gd
might be due for re-write to native functions anyways, but its a wide-reaching unit. (test_facedown.gd)OTHER
@onready var _tween = create_tween()
not being in a function)If you do some testing and find an issue that's not tracked here, please open an issue or submit a PR.
The text was updated successfully, but these errors were encountered: