A new version of the Inventory System is available with more multiplayer-related features. The Multiplayer Interaction Demo can now run in multiple modes, through two separate implementations of the Character scene: The simple character scene leverages the MultiplayerSynchronizer and can either let the client have authority and move the character, or have the client send inputs to the server, which then applies the movement logic server-side. A separate netfox character scene leverages the netfox addon to implement client-side prediction and server reconciliation.
Features:
Added a “drop all items” to the GGInventoryUI toolbar.
Added a GGAccessTestPolicy to the access manager for delay and failure testing of policies.
Added crafting to the main tour
Added crafting recipe collection
Added MyMultiplayerSpawner, which reads scenes from a directory to populate its auto spawn list
Added hotbar access policy
Hotbar tracks item when its moved around in the inventory
The GGInventory’s items_changed signal now supports batching
The GGInventory’s swap_items() method now atomic/emits a single items_changed signal
Added reusable MyItemDropHandler to drop items near character within configurable distance
Multiplayer Interaction demo character now includes two versions; A “simple” version, and a “netfox” version for client-side prediction.
Added Multiplayer Lobby demo; similar to the Multiplayer Interaction demo, but uses WebRTC with a lobby server that allows clients to join via lobby code.
Added window management examples to main tour
Added link to multiplayer lobby demo to main tour for web build
The main tour theme selector now uses the resource name as the theme name
Multiplayer interaction demo character can equip tools and weapons, with hotbar integration
Weapon types and item serialization enhancements
Bug fixes:
The inventory controller default action strategy handles touchscreen double-tap as double-click
Camera callback in physics process for smoother ux
Correction to sequencer action strategy method name
Correctly apply inventory search filter to inventory UI
Crafting component gdmaim enum compatibility
Disable project allow_hidpi and remove tour autoscaling via content_scale_factor due to issue with Godot’s drag-and-drop handling
Don’t export GGItemData active property
Don’t show sequencer’s save button on web
Adjust drag-and-drop order of operations to batch items_changed correctly
Drop filtered items compatibility with allow_gaps set to false
Enable access manager’s open access policy delay timer
Proper GGInventoryUI slot_scene handling when in list view
Inventory UI’s grid and list view allow for grid columns configuration
Correct architecture guide references to demos
Hide sort menu’s clip_text at label breakpoint
Inventory expirations updates item quantity via LUT
Fix for simple inventory UI support
Inventory transfer stacking strategy batches items_changed so items can unequip correctly during transfer
Inventory UI passes slot_scene to controller even when outside tree
Larger Multiplayer Interaction demo character client scope shape to avoid Godot 4.2.2 MultiplayerSpawner’s visibility regression issue
Main menu eats/handles inputs when visible
MDI Game UI allows interactions while inventory is open
Correct minimum inventory browse and transfer UI sizes
Correction to main tour overlay layer
Prevent dropping items from multiplayer interaction demo loot bag
Properly clean up access manager’s pending contexts
React to hotbar actions when button is released
SDI Game UI inventory browse UI focus handling
SDI Inventory transfer UI handles input events while open
SessionManager only reacts to server-side join/leave signals
Show WebRTC warning when in web mode
Open window with noopener option on web to preview separate Godot instance smashing ArrayBufferView
Splitting inventory items fills slots to the left, if the right side is full
Splitting items resets the TTL to item type expiration
The Inventory System Deep Dive and Architecture Guide helps game developers implement advanced multiplayer inventories using Godot Engine. The PDF Guide contains over 500 pages of code walkthroughs, diagrams, and explains concepts related to inventories, items, and more.
A little while ago, I created a type of AudioManager to make it easier to work with sound files in bulk: Rather than assigning audio streams by hand, I was doing it programmatically; reading the contents of a directory and using load() to get the resources. It worked great and saved a lot of time …
I had a setup with nested CanvasLayer nodes. Toggling the visibility of the root CanvasLayer doesn’t hide any nested CanvasLayer nodes. My solution was to listen to the visibility_changed signal, find any CanvasLayer child nodes, and apply the same visibility to them.
Once I found out about the Steam Deck’s Desktop Mode, it got even more interesting. Steam Deck’s Gaming Mode vs Desktop Mode You see, the Steam Deck defaults to an analog of Big Picture mode on PC. It runs full screen in “Steam Deck gaming console” mode. But underneath all that is a Linux system …
It’s not Far Cry, nor Crysis, but it could be. The Realistic Jungle Demo demonstrates that Godot is capable of impressive visuals. If you want to run it yourself, download it from https://wrobot.itch.io/jungledemo. It was announced in this Reddit post. Update: The source code was released (with the commercial assets removed).
Inventory System v1.14 available
A new version of the Inventory System is available with more multiplayer-related features. The Multiplayer Interaction Demo can now run in multiple modes, through two separate implementations of the Character scene: The simple character scene leverages the MultiplayerSynchronizer and can either let the client have authority and move the character, or have the client send inputs to the server, which then applies the movement logic server-side. A separate netfox character scene leverages the netfox addon to implement client-side prediction and server reconciliation.
Features:
Bug fixes:
The Inventory System Deep Dive and Architecture Guide helps game developers implement advanced multiplayer inventories using Godot Engine. The PDF Guide contains over 500 pages of code walkthroughs, diagrams, and explains concepts related to inventories, items, and more.
Related Posts
Dynamically finding and loading resources from the Filesystem for Android and Web Exports
A little while ago, I created a type of AudioManager to make it easier to work with sound files in bulk: Rather than assigning audio streams by hand, I was doing it programmatically; reading the contents of a directory and using load() to get the resources. It worked great and saved a lot of time …
Toggling Visibility of Nested CanvasLayers
I had a setup with nested CanvasLayer nodes. Toggling the visibility of the root CanvasLayer doesn’t hide any nested CanvasLayer nodes. My solution was to listen to the visibility_changed signal, find any CanvasLayer child nodes, and apply the same visibility to them.
Godot Engine on the Steam Deck – Developing games on the go?
Once I found out about the Steam Deck’s Desktop Mode, it got even more interesting. Steam Deck’s Gaming Mode vs Desktop Mode You see, the Steam Deck defaults to an analog of Big Picture mode on PC. It runs full screen in “Steam Deck gaming console” mode. But underneath all that is a Linux system …
The Godot Jungle Demo
It’s not Far Cry, nor Crysis, but it could be. The Realistic Jungle Demo demonstrates that Godot is capable of impressive visuals. If you want to run it yourself, download it from https://wrobot.itch.io/jungledemo. It was announced in this Reddit post. Update: The source code was released (with the commercial assets removed).