Migration notes: godot-genre-educational
Incremental upgrade for topics this skill covers. Apply one hop, stabilize/test, then next. Never skip hops.
If the project is < 4.0, follow godot-version-migration era bridges (legacy → 3→4) until 4.0, then these hops. Official 3→4: Upgrading from Godot 3 to Godot 4.
4.0 → 4.1
Official: Upgrading to Godot 4.1
SubViewportContainer.mouse_filtermust be STOP/PASS for input to reach SubViewports.- Layered SubViewportContainers needing mouse input may need Area2D replacements.
CodeEdit.add_code_completion_optiongainslocation; Treeedit_selectedgainsforce_edit.Object.get_meta_listreturn type isArray[StringName](was PackedStringArray).WorkerThreadPool.wait_for_task_completionnow returnsError.Basis/Transform3D.looking_atandNode3D.look_at*gain optionaluse_model_front.
4.1 → 4.2
Official: Upgrading to Godot 4.2
PopupMenushortcut helpers gainallow_echo;cleargainsfree_submenus.- GraphEdit:
arrange_nodes_button_hidden→show_arrange_button; snap props renamed;get_zoom_hbox→get_menu_hbox. - GraphNode: large API move to
GraphElement; connection query methods removed;comment/show_closeremoved. NOTIFICATION_NODE_RECACHE_REQUESTEDremoved from Node.
4.2 → 4.3
Official: Upgrading to Godot 4.3
- If the genre uses TileMap, migrate to TileMapLayer nodes before relying on layer APIs.
- If the genre ships multiplayer, upgrade all peers to 4.3 together (SceneMultiplayer protocol).
- Default font outline color is black (was white).
auto_translatedeprecated for Nodeauto_translate_mode(inherit semantics).AcceptDialogregister/remove helpers take LineEdit/Button specifically.- Binary serialization of scripted Objects/typed Arrays changed — re-test save/load of custom Resources.
PackedByteArraymay use compact base64 storage; older editors may not open 4.3 resources with large byte arrays.
4.3 → 4.4
Official: Upgrading to Godot 4.4
GraphEdit.connect_nodegainskeep_alive;frame_rect_changedusesRect2.@export_filestoresuid://paths from the Inspector (breaking vsres://expectations).FileAccess.store_*methods returnboolsuccess.Curveenforcesmin_value/max_value— adjust curves that used points outside[0, 1].OS.read_string_from_stdinrequiresbuffer_size.
4.4 → 4.5
Official: Upgrading to Godot 4.5
- CanvasItem/Font/TextLine draw APIs gain optional
oversampling. TreeItem.add_buttongainsalt_text.Resource.duplicate(true)deep-duplicates only internal resources; useduplicate_deep(DEEP_DUPLICATE_ALL)for old behavior.Node.get_rpc_configrenamed toget_node_rpc_config.JSONRPC.set_scopereplaced byset_method.ProjectSettings.add_property_infowarns on invalid/usagekeys.
4.5 → 4.6
Official: Upgrading to Godot 4.6
- Retune Environment glow/fog if the genre leans on bloom-heavy looks.
Control.grab_focus/has_focusgain hide-focus options.FileDialog.add_filtergainsmime_type;SplitContainer.clamp_split_offsetgainspriority_index.EditorFileDialogfile APIs moved ontoFileDialogbase;add_side_menuremoved.PopupMenu.submenu_popup_delaydefault 0.2 (was 0.3).- TSCN gains unique node IDs (large VCS diffs on first 4.6 save — expected).
FileAccess.get_as_textdropsskip_crparameter.Performance.add_custom_monitorgains optionaltype.
4.6 → 4.7
Official: Upgrading to Godot 4.7
- Confirm project stretch mode and AudioStreamPlayer area_mask after opening in 4.7.
Control.accessibility_liveusesAccessibilityServer.AccessibilityLiveMode.TreeItem.selectgainsset_as_cursor.CanvasItemno longer adds antialiasing feather that thickened lines — widen strokes if visuals relied on it.Object.is_classtakesStringName.- Setting an element of a packed array property no longer calls the property setter for the whole array.
- Overrides of methods with typed returns must actually
return(addreturn nullif needed). - New projects default stretch
canvas_items+ aspectexpand(wasdisabled/keep).