Placeholder for game lobby room : it will have a chat, game start button and maybe some match settings. and also a player list with the ability to kick, mute and so on.
"Creating match" and "Joining match" popups :
Blur for panels : Panels now have blur implemented to match the figma design. the performance impact of this blur needs to be checked. in some areas the blur will require a backbuffercopy to work properly. these nodes seem to have no effect if hidden so they can be grouped up with whatever panel is using them.
Shader Globals : To make some shaders more portable shader globals are used to set mouse position and set blur intensity.
New Match Handler and login failure dialog : Match handling used to be a prototype built in to the ui. now it's completely done with a new autoload called MatchManager. When the game starts now connection failure should be handled properly. however this feature will only work for game start right now because websockets don't seem to have an awareness of connection failures.
Create match button disable: create match button now is disabled if connection status is not "connected".
A note on godot signals : if a signal takes only 1 parameter, when awaiting for that signal that parameter can be used just like the return value of a function. this is used in the login_set(cancelled) signal in GBackend to know if the login has been cancelled or not.
Things that need to be added on the javascript side: As commented in the GBackend autoload, some features and dialogs need to be added later on. As mentioned in the authenticate_async() function's comments the comments login_set.emit(true) can be used to inform us if the html dialog was closed without setting username and password(or continuing offline was preferred). currently we have automatic login in the non html version so this is still not used there either.
Known issues : Match making scene button focus/keyboard navigation might be messed up a bit right now. will fix that later
TODO on the godot side :
Add connection failure handling for the websocket used for the nakama connection so that it can detect disconnection midgame.
Add more backend and front end features to handle match joining. things like limit of player count, blocking new joins when the match is running and so on.
Use the Implemented connection failure to reconnect when needed. a lot of state transitions need to be implemented.
Engine version : https://github.com/ProjectLam/godot-build-scripts/releases/tag/4.0-2c9b534acd-20230502 Nakama backend version index: 1
Major Changes :
backbuffercopy
to work properly. these nodes seem to have no effect if hidden so they can be grouped up with whatever panel is using them.MatchManager
. When the game starts now connection failure should be handled properly. however this feature will only work for game start right now because websockets don't seem to have an awareness of connection failures.A note on godot signals : if a signal takes only 1 parameter, when awaiting for that signal that parameter can be used just like the return value of a function. this is used in the
login_set(cancelled)
signal inGBackend
to know if the login has been cancelled or not.Things that need to be added on the javascript side: As commented in the
GBackend
autoload, some features and dialogs need to be added later on. As mentioned in theauthenticate_async()
function's comments the commentslogin_set.emit(true)
can be used to inform us if the html dialog was closed without setting username and password(or continuing offline was preferred). currently we have automatic login in the non html version so this is still not used there either.Known issues : Match making scene button focus/keyboard navigation might be messed up a bit right now. will fix that later
TODO on the godot side :