Skip to content

Beta release - #81

Draft
Armored-Dragon wants to merge 48 commits into
betafrom
alpha
Draft

Armored-Dragon wants to merge 48 commits into
betafrom
alpha

Conversation

@Armored-Dragon

Copy link
Copy Markdown
Member

This is the first beta release of the OpenMinerva client!

The issue was player controllers had collisions. When they were spawned on the client, they were inside of the client on the client side. This caused the client to clip into the floor due to the client-side collision.
Previously, only the host could see everyone. This means a third person could join and the two non-hosts could not see each other.
This fixes the clients spawning into the ground due to collider issues. This also changes how the client spawning functions so that an unlimited number of clients can connect and see each other.
* Basic http manager.
Basic login functionality.

* Created basic credential store.

* Updated url for device authentication.

* Device authentication.
* Work.
Just saving progress.

* Disconnect when JWT verification fails.
* Refactored JWT script.

* Refactored files.gd.
Log to a file.
Changed Global log function name.
Print_stack on error.

* Refactored account_servers.gd

* Moved credential_store.

* Moved the other files.

* RPC Manager.
This contains a lot of dev functions. Another round of refactoring is required.

* Removed multiplayer_manager and merged into network_manager.
* Basic handling for multiple accounts.
Improve security by utilizing two unique keys. One for Client to AS, the other for Client to Client/Server.

* Refactored signin.gd.

* Properly send public key to identity server.

* Multi Account support.

* Base work for libraries.

* Remove dead code.

* Account authentication status.

* Passport handling.
Changes how passports are obtained.
Select an account to use.
Remove dead code.

* Dashboard current account selection.

* Created placeholder jwt lib file.

* Changed how responses are verified.
Fixed passport sending to server.
Fixed timing issue requesting passport from account server.

* Change the dashboard to something more presentable. (#64)

* New dashboard work.

* Changed sessions icon.
Added instance option to manage the current instance.

* Disable dashboard buttons when page is not present.

* Storage display.

* Add account list page.
Improved display_dashboard... function.

* Created placeholder theme for panels.

* Basic account list haneling.

* Better create account functionality.

* Account login.

* Replaced original dashboard.
Scroll to bottom of messages when contacts are open.

* Use OAuth authentication for the game client. (#67)

* Initial work.
Lots of hard coded values, but this is functional ground work for OAuth support from the game client.

* Generate a random key for the pkce.

* Made the auth code non-global.

* Refresh token and access token.

* Added TODOs.

* Added file header.
psioniq File Header extension config.

* Reimplemented JWT library.

* Set oauth variables.

* Removed hardcoded authentication server values.

* Use existing random_string in random library.

* Base64 to Base64uri function in jwt library.

* Token introspection and refreshing.

* Placeholder TCPResponse to successful token capture.
The browser will no longer hang continuiously.

* Cleanup.

* Added multiple login options.
This changes the login flow to have the user specify which login they are intending on using.

* Created url library.
This will centralize url parsing making it easier to handle urls.

* Removed passport handling.
This will likely be reimplemented later.

* Improved create account flow.

* Disabled usernamepassword login.

* Use URL Parser library.

* Removed unused AES file.
Right now I do not need this here.

* Removed duplicate library.
Removed unused references.

* Stop checking OAuth server after successful connection.

* Change the dashboard handling to use a singal bus. (#78)

* Dev upload public key to the server.
I need to make some changes to the UIX so I am making a checkpoint here.

* Change structure of hut to use signalbus.

* OAuth flow.

* Go back from account creation page.

* Refresh account list on change.

* Move to account list after creating a local account.

* Check to see if account is valid before logging in.

* Remove unused account data display.

* Disable navigation to unknown pages.

* Exit page.

* Removed old dash files.
* Change movement to always calculate vector.
This change makes it so that when the menu is opened, the player will stop being able to control the player, but the player can still slow down to a stop.

* Remove movement FOV.

* Fix dashboard not opening sometimes, or getting stuck.

* Removed placeholder url.
@Armored-Dragon Armored-Dragon self-assigned this Apr 1, 2026
@Armored-Dragon Armored-Dragon added enhancement New feature or request om-client Issues relating to the OpenMinerva client. labels Apr 1, 2026
* Session listing function.

* Basic session querying.

* Fixed text capturing.

* Instance HUD.

* Added active session display.
New network_manager to manage multiple sessions at once.

* Added debug bug fix for crashing the game when not logged in when viewing the sessions tab.

* Session advertising.

* New application manager files. (#83)

* Created new manager files.

* Created base server scene.
Created create_master_scene function.

* Start multiplayer server.

* Fixed dashboard error.
Could not find active sessions because there was not a function.

* Load scene root.

* Force spawn the host.

* Start server managers.

* Added function name to logger.

* Removed old files.

* Fixed port finder bug.
The function would never find a port, woopsie!

* Initial session advertising work.

* Removed unneeded Enum.

* Initial heartbeat work.

* Session Updating.
Sessions can now update settings on the fly.

* Session delisting.
Remove sessions from the session server.

* Settings placeholder.
List session servers.

* Remove session server from config.

* Add session servers.

* Don't add empty session servers.

* Hide session server dialog in settings.

* Use session server list to advertise sessions to.

* Error fixes.
Makes the debugger not angry with me.

* Properly destroy master scene when creating a server failed.

* Error handling.
Removed some out of date TODOs.

* Stop scene when replacing root.

* Removed hardcoded localhost values used for debugging and development.

* Moved TODO to it's own issue.
#85

* Fixed heartbeats using incorrect ID.

* Fixed port issues.

* Remove dead code.

* Attempt fix for rare network issue.

* Do not request new key if we have key already.

* Basic connection to multiplayer sessions.

* Bootstrap for managing startup and shutdown.

* Close and leave servers on shutdown.

* Moved functions from app manager to session manager.

* Add multiplayer support (#89)

* Spawn player on connect.

* Basic connected session switching.

* Synchronization testing.

* Maybe fix desync of loaded players?

* Removed interaction ray from player controller.

* Set active session from network.

* Kick players when a session is closing.

* Fixed all loggers to use Enums instead of magic numbers.

* NetworkCompression autoload instead of hard referenced library.

* Removed now unused RPC handlers.

* Made HTTP library a global.

* Fix errors.

* Added session disconnect button.
Fixed leaving world.

* Minor refactor.

* Fix player losing control of other sessions when connecting.

* Clean up peer when they disconnect.

* Changed node IDs.
This was causing errors or something?

* Change module active variable name from "active" to "module_active" to
prevent confusion.

* Fix controlling incorrect player when joining session.
* Remove local oauth library.
Use Godot-OAuth2 library.

* Adjustments with the current Alpha of godot-oauth2client library.

* Added warning label to warning log.

* Adjusted README.md to center Discord invite.
* Removed legacy media.
Updated names.

* Added branding icons.

* Changed physics settings.
I guess I forgot to include the actual license in the file.
* Moved existing dashboard into subfolder.

* Navigation buttons.

* Lots of partials and scaffolding.

* Account listing.

* Create account page.

* Remove accounts.

* Session list page.

* Session listing.
This also temporarally added some dev settings due to the settings page not being implemented yet.

* Settings page.
Changed from logs to log().

* Added joined server listing.

* Added exit page.

* Replaced 'logs' with 'log' as the logger function name.

* Adjust modules used in the dashboard. (#93)

* Change account database structure.

* Added response builder.

* Changed account handling and database storage.

* Changed Session Server api key handling.
Now instead of only a single API key per application, each account has its own api set for any given number of session servers.

* Fixed active account in the header bar.

* Removed unused legacy function.

* Show "Anonymous" as user when not using an account.

* Changed name of "GlobalAccount" to "Accounts".

* Moved dashboard from "/dashv2/" to "/dash/".

* Added debug.gd.
* Added POC physics and physics networking

This is largely how physics and spawnables will be handled. There is
still a lot of syncing issues relating to building a scene after a user
has joined.

* Client join syncing.

Client syncing testing. This will have the host send the server
_database variable and the _id to the joining client so the host and the
client are on the same page.

* Sync all positions to all users when a user joins.

* Debug entity spawn menu initial work

This menu is non-functional beyond being opened and closed.

* Debug spawn menu allow capsule spawning

This is made to test the client handling of spawning different types of
spawnables. Currently this works as expected.

* Test model loading

Reference for spawning in models.

* I could have sworn I fixed this dashboard name issue before?

* Dynamic model drag and dropping

This makes it so that any model can be dragged and dropped onto the
window to load the model into the scene. This breaks multiplayer
syncing, though proper asset handling will need to be created anyways
for the internet.

* Asset handling (#97)

* GLB model handling.

Tear apart a GLB model into base components and reassemble them using a
GLTF file.

* Added placeholder assethandling lib

* Fixed several UI errors.

The Assets page now functions!

* Changed "Assets" dashboard page to "Spawnables"

Assets are defined as parts of a spawnable. This change is to avoid
internal confusion.

* Client Editor Mode (#103)

* Basic "GodMode"

GodMode will likely be renamed to "ClientEditorMode (CEM)"

* Generic node spawning.

Use a nodes "pretty_name" when available.

* Node selection popup.

Adds the ability to add from a list of valid nodes.

* Added Gizmo3D addon library.

This addon will allow the transformation of nodes in-app.
There is also now a crosshair to help line everything up.

* Select nodes

* Minor networking fix.

* Use spawnablemanager delete node when deleting a node.

Also changes the baseplate to use a MeshInstance3D that has been
subdivided.

* Created schema builder to manage spawnables.

This cleans up a lot of the code in some of the files, and centralizes a
lot of the building.

* Minor networking fixes.

Clients can load in without crashing again.

* Better Gizmo handling

Gizmos are now handled through the spawn manager.
Session wide node_added and node_created signals.

* Spawnable.create abstraction.

This makes the code a touch cleaner as now either the host or a client
can spawn nodes using a single function call.

* Test syncing of node position and rotation.

Testing implimentation of node transform syncing across clients.

* Fix colliders from interacting with eachother on other servers.

Quick fix for colliders being active across sessions.

* Added scale to networked transforms.

Added crosshair.
Fixed node reference for network transformation.

* Removed unused function.

* Removed debug prints.

* Renamed developer functions.

These were originally test functions. These tests were successful so
they were promoted.

* Improved inspector handling.

Fail guards for interacting with invalid nodes.
Interacting with an invalid node forces a refresh of the inspector.

* Updated inspector icons.

Added fallback to try to get the correct type of icon for the node by
its class.

* Subviewport view.

This changes the primary game window to use a subviewport.

* Client Editor Mode.

This adds a start to the Client Editor Mode (CEM) for desktop.

* Destroy node network abstraction.

This abstracts the destroy node similar to the spawn node.

* Move event emitters.

Moves the event emitters to the spawnable manager instead of the cem
inspector.

* Gizmo management for the Client Editor Mode. (#104)

* Gizmo work.

* Hide gizmos when out of CEM.

When you are not in CEM, you can not see gizmos anymore.

* Fixed scale gizmo not reapearing after hiding.

* Light refactoring

* Gizmos parented under root.

Before they were parented under the first selected node, but this caused
selection box issues so the gizmo was moved.

* Single active gizmos.

This changes the gizmos so that you can only have one active gizmo
selection at a time. I think this will prevent confusion.

* Don't allow selecting root.

Also adds a fail-check to see if a node is valid before selecting.

* Better parent/child gizmo support.

When selecting a parent node, the gizmo selection system will target the
parent node instead of the child(ren). If you select the children again,
a new gizmo will be created.

* Fix multi-selection parent-child relationship for gizmos.

I have no idea why this worked, but sure.

* Spawnable saving and loading (#106)

* Basic foundation.

Commit before I go to bed. Adds basic saving functionality and almost
functional loading functionality.
Loading does not preserve scene heierarchy.

* Loading spawnables.

This refactors the loading code to persist the node hierarchy.

* File Browser (#108)

This adds a basic file browser to the "Spawnables" menu. This allows navigating the inventory screen and create or remove folders. 

* Added file traversal through the local spawnables inventory.

* Fixed icon size in CEM.

* Moved local file management to dedicated file lib.

* Rename nodes in CEM.

* Load saved spawnables from files.

* Test externalizing assets before saving to inventory.

* Use file name for imported model.

* Support Skeleton3D node.

* Creating and deleting folders.

* Delete items.

* UI fixes.

* Font adjustments.

* Update view when creating or deleting a file or folder.

* Easily see which files or folders are selected.

* Hide file extension in the file browser.
This removes the trailing `.tscn` at the end of files in the browser
view.

* Use pretty name when spawning node.

* Delete confirmation.
Adds a confirmation window when deleting something.

* Fixed inspector icons.
The fallback code forced Node3D

* Removed leftover print.

* Client Editor Mode Refactor (#115)

* Removed subviewport.
This added extra complexity for not much benefit.

* New blur shader for canvas element.

* Removed gizmo selection groups.
This might be a good idea, but the implementation was bad and is too
much to deal with at this point in development.

* Dashboard uses new blur effect.
Minor changes to buttons to allow direct icon usage.

* Fixed focus issue with the node search in the inspector.

* Adjustable inspector width.

* Remove focus from search area when clicking out of search area.

* Change mouse escape keybind to tab.

* Capture or uncapture mouse when swapping edit mode.

* CEM Toolbar.
Change the gizmo type to toggle translation, rotation, and scale.
Added placeholder counters.

* Toggle translation space between local and global.

* List spawnable count in the toolbar.

* Refactor Inspector.gd work.
Added custom popup menu.

* Basic Gizmo interaction.

* Select node by selecting it in the inspector tree.

* Gizmos respect settings again.

* When renaming a node, start editing immedately.

* Custom Add Node window.

* Spawnable count updating.

* Fixed var name.

* Removed and replace original inspector.gd.
This completes the major refactor.

* Toggle gizmo visibility when toggling CEM.

* Updated icon getter.
Icons are now packed into the metadata of the nodes when they are
created, which is prioritized.

* Hide nodes not intended to be spawned directly.

* Node reparenting.

* Deletion queue: Fix crashes with Gizmo and deleted nodes.

* Better metadata handling.
This will stop some console spam of useless errors.

* Windows can not be dragged out of bounds.

* Only deselect if we have a gizmo.

* Added missing LICENSE file to rpc-await addon.
Moved LICENSE for Godot icons to the Godot folder.
* Basic CEM camera.
Rewrote player.gd as player_new.gd.

* Fix camera rotations.

* Build a physical camera in the scene.
Instead of ripping the playeer camera out of the player, a new camera is
created and used for the camera.
The camera now has a visible model.

* Network player positions.
player.gd rewrite now syncs player positions.

* NSB force cameras to start disabled.

* Fixed multiple cameras in multiplayer.

* Fixeed network spawning.

* Replace player.gd with refactored version.

* Fixed header info.

* Removed unused event listener.
* Network CEM camera transform.

* Network node transformations.
* Save the collapsed state of the inspector nodes on a refresh.

* Basic node filtering.
There are some design changes that need to happen but this is functional
code. Style will follow.

* Fixed variable typo.

* Rewrote filtering.

* Added text searching to the inspector filters.
You can now find nodes by their pretty_name.

* Inspector selected state.
After the inspector tree is rebuilt, it will automatically persist the
selected tree node.

* Changed inspector colors to be blue.

* Added state_manager.
This will handle the active states of the application. For this PR it
will handle the mouse captured state by comparing the active states of
the client.

* Prevent controlling camera when interacting with inspector.
This will add a quick check to see if you are right clicking on the
inspector area before telling the CEM camera to rotate.
* Fix naming regression.
I seriously do not know how this happened. When I fixed this, the commit
somehow vanished or something.

* Schema rewrite.
Moves schema dictionary to dedicated schema.json file.
Reevaluated and removed "spawnable_type" int. This was intended to be a
memory optimization but in effect it causes more development stress than
the actual performance impact. In addition, the implementation caused
future-proofing issues.
Remove references to "CEM_Camera" and made the node into a generic
Camera3D node.
Added three more nodes to the schema "CharacterBody3D",
"DirectionalLight3D", and "WorldEnvironment". These nodes currently do
nothing, and were only added to fix errors present in the debug world.
They can be added but will not do anything useful until CEM gets the
Node Property Editor window.

* Changed how icons are stored in the schema.

* Added node icon fallback.

* Removed out of date comment.
Armored-Dragon and others added 21 commits July 13, 2026 12:06
* Added Discord RPC addon.
Added basic Discord RPC functionality.

* Removed export_presets.
* Transform properties.

* Use rotation degrees.

* Added visibility toggle.

* Initial sub-property support.

* Rewrote node property reader.

* Fixed early exist bug in for loop.
Added float and int value fields.

* Network property change.

* Fix function name mixup.
Whoopsie.

* Color picker.
Abstracted moveable_window.gd for future windows.

* Removed transparency from color picker popup.

* Hide the NPE when invalid node selected or no node selected.

* Session player count.
This hooks up the player cound in the CEM to show the current amount of
connected players.

* Minor change in the default grid skybox.
* Here we go...
What I thought was going to be a quick 10-minute change is going to
become a week-long escapade to fix a race condition.
Player controllers are now a spawnable.
Added "CollisionShape3D" and "RayCast3D" as spawnable nodes for the
player controller.
Changed player position sender to use spawnable native transform calls.
Major refactor in spawnable_manger to help address race condition, and
lots of comments for my sanity.
Player database is now synced as well when joining a server.
Player auto respawning. When a player node is destryoed, it is respawned
after a short time.

* Fixed the problem.
It was not a race condition, it was me unexpectedly modifying the
database_id in the middle of syncing.
* Removed unusued JWT library.
This will be moved to https://github.com/OpenMinerva/godot-jwt at a
later time.

* Removed dead code, added notes.

* Remove account_server libs.
This will be reimplemented at a later time.

* Removed NetworkCompression lib.
I have sense discovered Godot 4 has built-in compression utilities.
https://docs.godotengine.org/en/stable/classes/class_enetconnection.html#enum-enetconnection-compressionmode.
If more compression becomes required, I can try again at a later date.
This networking path also would have bypassed the spawnable transform
networking.

* Removed unused and/or unimplemented crypto libraries.
As with everything else so far, these will be reimplemented at a later
time.

* Removed "Enum" global Autoload.
"Enum" is now a global class.

* Removed session_query from the autoload.
Right now this is only used for UI elements. If this functionality ever
becomes required elsewhere, it can return to the scene tree.

* Removed unusued "Assets.gd" file.

* Removed unusued "response_builder.gd".
This might return at some point.

* Removed (mostly) unusued time library.

* Removed @warning_ignore inside of signal_bus.
I just disabled the warnings for the whole project. This seems more
reasonable.

* Removed legacy debug menu.
So long old friend!

* Removed Random from autoload.
Refactored Random as a class. Now uses more preformat method of
generating a random string. Right now this is an insignificant
improvement, but the little wins go a long way.

* Explicitly typed the variables in "random.gd"

* Added more explicit types.
Refactored node syncing on join. The handshake process no longer jumps
between files.

* Refactored and removed dead functions.

* Fixed two errors.
Incorrect signal listeners.
Removed reference to non-existent node.

* Fixed host specific issue when starting a world.

* Removed duplicate listener declaration.

* Fixed schema references.

* Quieted warnings.
Some of them were not "fixed", but can be worked through and addressed
later as needed.

* Simplified server / client connection flow.
Extracted basic Multiplayer API code into class for better readability,
pending more refactoring.
Created function to streamline creating a database entry.
Removed complex status tracking in favor of simple boolean check to see
if task was successful.

* Moved some reused code to another sub-function.

* Slight simplification of internal session database.

* Fixed formatting issues.
In the future, files will be required to only have single spacing
between functions.

* Nevermind, two newlines are the standard.
https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html#blank-lines
* Mitigate hard crash when closing application.

* Add ad-icons library.

* Added "Create World" button to the dashboard.

* Added "Home" base scene type.
Home scene is now the scene loaded into at boot.

* Fixed multi-session handling for advertising servers.
New Empty scene.
When joining a server, the client will load the Empty scene, and
populate the world based upon the database provided by the host.

* Mitigated player spawning duplication on clients.

When a client connects to a server, they try to spawn themselves twice,
this adds a bandage fix for this issue.

* Rewrite of spawnable loading.

This rewrites the entirety of the spawnable loading procedure. In this
state the world loading is not fully functional, but I need a checkpoint
so that I can revert back to this state later if needed.
The next step is to handle reconstruction of the sub_resources.

* Loading a TSCN file now parses the properties and applies them
client-side.
This is not multiplayer safe yet, but this is functional. I am making a
checkpoint for functional code.

* Set transforms on newly spawned nodes.

* Sync asset database on connection.
This makes it so that the asset database on the server is synced to the
client. However the client does not yet know how or where to use these
resources.

* Added resource / asset relation syncing on client join.
This fixes several issues and now makes the joining process feature-compatible from before worlds were hard-coded and hard-loaded from disk. Sparing all bugs and other issues.

* Remove the empty node from the scene when loading the world from file.

* Only preform the reparenting step if there is anything to reparent.
This is more of an enforcement change so that only the host when
initializing the world needs to reparent the nodes.

* Added error check for resource in set_resource.

* Removed older TODOs.

* Remove commented code.

Not needed now!

* More comment housekeeping.

More outdated TODOs / HACKS removed.

* Save world as spawnable.

This is the rough initial implimentation of saving a world. Right now
the app will dump it into the spawnable folder instead of separating it
to a dedicated folder.

* Name worlds before saving.

When saving a world, the copy of the world that is saved will use the
current instance name.

* Set the name of the session when posting to the session server.

* Remove more invalid nodes from the save.

This expands the "remove player controller" function to strip out more
nodes before saving the file to disk.
Introduce the "persistent" metadata field to easily prevent saving
nodes.

* Change grid shader.

I didn't like the previous shader, and I forgot where it came from. This
shader I can source and I like it more.
…168)

* Added the godot-SQLite addon.

Added a basic SQLite database for the application.
Assets are added to the database.
Assets now properly hash their file contents before going onto the disk.
Minor benchmarking notes.
Note: The godot-SQLite addon is not in the repository as I look for a
good way to include this addon without actually commiting heavy binaries
to the repository. (Version 4.8 of the addon was used at this time.)

* Save spawnables.

Adds basic support for adding spawnables to the database.

* Spawnable dashboard page uses database to get filelist.

Added thumbnail column to the spawnable database.
Set the creation date when saving a spawnable.

* Fixed loading spawnables.

* Basic world loading from spawnable menu.

When double clicking on the world in the spawnables menu, you are now
prompted to create a new world with the selected world as the base.

* Better world loading handling.

When loading a world, the create new world dialog is reset.
When closing the dialog, it is reset.
Moved dialog code to dedicated script file.
Added "CUSTOM" base world type. It's only to be used when loading a
world from disk.

* Open New World dialog in center of scren.

When the dialog is to be shown, it is moved to the center of the screen.

* Delete spawnables.

This fixes deleting spawnbles, and will now also delete the spawnables
from the database.

* Spawnable asset relationship.

Adds a table describing the relationship between assets and spawnables.
If a spawnable is deleted, all assets related to that spawnable (if they
are not being used by another spawnable) are deleted.

* Added setup instructions and install script for linux.

Since the modules are not shipped with the project, provide an install
script so that a developer can quickly get the addons required.
Also provide instructions on how to download the files manually.
* Removed usage of "category_button" where "generic_button" is suitable.

category_button was used as a generic button, but I have sence made
"generic_button" for being a generic button. More features and more
supported.

* Reimplimented mouse escape from window.

This makes it so that there is an easy way to escape the mouse from the
window without having to open your dashboard or enable the CEM.

* Change initial spawnable database id to 1.

It was bugging me that it started at 10, it now starts at 1.

* Fixes for Gizmo3D.

Gizmo3D can no longer select nodes that are not of type Node3D (Fixes
crashing when selecting WorldEnvironment)
Gizmo3D selections are networked.
When removing a node, any Gizmo3D currently selecting it is cleared.
Fixed attempting to read non-existant values in the Node Property
Editor.

* Fix gizmos rendering from incorrect sessions.

This fixes the gizmos from rendering across sessions.

* Prevent deleting nodes that do not exist.

Adds a check to make sure we have a node before we try to delete it.

* Fix Player not properly respawning when destroyed.

The player now respawns, and the camera is force updated immediately.

* Use correct function to delete player controller.

Fixes double removing a the character controller.

* Fixed initial transform syncing.

Transforms are now properly sent to the joining client when they
connect.

* Automatically focus joined session.

This forces the client to focus the active session after joining.

* Fixed joining client removing nodes on join.

Before the client would try to set up a local scene as if they were the
session owner, which caused the client to remove what it thinks are the
initial world elements. In effect this caused the oldest nodes in the
session to start being removed.
Now the client will skip this step when loading into a session.

* Wait longer before loading the inspector page.

When a client joins a session, the inspector now waits two frames before
attempting to load the scene tree. This makes the scene tree load in
time.

* Fixed debug crash when attempting to advertise session without account.

Just a debug fix that prevents the application from crashing in the
debug env.
Added a print statement to try and catch a different advertising issue.

* Transforming spawnable now ignores sender.

This fixes rubber-banding on all clients when moving. Previously the
clients were setting the position of their nodes twice, causing all
kinds of position issues.

* Fix inadequate int check when deleting nodes.

Currently there is a design issue where the player controller is not a
complete spawnable. When deleting the player controller it will attempt
to delete the children of that node first. Due to the child nodes of the
player controller not being a spawnable, they are not properly
registered with the spawnable system. This, compounded with the
inadequate name checking caused incorrect nodes to be deleted.

* Get the session root node if null.

This fixes a race condition where if you join a server too fast, the
scene inspector will not properly load until you refocus the session.

* Improved bug trap.

The previous trap triggered, I know know how to prevent an error, but I
don't know what causes the error.

* Fix crashing on exit when in more than one session.

Simple server ordering issue relating to the current implimentation of
automatically setting a server as active when being disconnected from
the current one.

* Reorganized instance dashboard page.

Moved save buttons around.
Session "save" label changed to "update".
World save name and session name are now separate. World name gets saved
to disk, session name gets published to server.
If no session name is present, the world name is used when publishing
session to the session server.

* Remove unused variable.

* Fixed draging nodes in the scene inspector causing crashing.

* README.md update.

Added more information about used addons, and licencing.
Added promotional image.

* Fix minor typo in README.

Changed promo image linking.

* Network.gd Refactor. (#180)

Broke-out Network.gd into several modules inside of Network.gd for organizational purposes. 
Improved update server flow.
Fixed multiple heartbeats occuring when changing a session from public to private back to public.

* Added session stack.

If the session you are in closes, or you are kicked, you are pushed back
to the previously opened session.

* Network node renaming.

When you change a spawnable name, the change gets networked and clients
will update the inspector instantly.

* Load spawnables with pretty_name.

When you load a spawnable, the metadata is loaded as well.

* Spawnables now load properties from disk.

If you change a light in a spawnable and then save it, this system will
now load the changed property correctly.

* Use Freecam when switching back to session where freecam was in use.

This fixes having the freecam enabled when switching a session so that
switching back to the session will put you into the free cam.

* Disable player movement when in freecam.

This expands the check to prevent player interaction when interacting
with freecam.

* Fix crashing when trying to host session without visiting sessions tab. (#101)

This doesn't fix the actual problem, but stops the crash. A notification
should be emitted when errored in this state.

* Synchronized CEM + Dashboard states.

Now only one can be open at a time, and pressing either of the buttons
will switch the open interface.

* Capture mouse immediately on application start.

Instead of having to focus the window, and toggling any of the menus,
the mouse is captured on start.

* Double parenting issue

The master scene would parent itself twice, causing an error.

* Removed unused python files from Godot icons.

* Fix errors when setting resource_path in a new resource.

This will now check and skip the property, which is unused anyways.

* App Closing state.

The state manager now tracks when the game is trying to close itself.
This solves an issue where closing the game will catch an error when it
shouldn't.

* Fix editor warnings.

This fixes a ton of minor editor warnings (not errors) that happen when
launching the debug build of the application.
Also fixes a typeo.

* Refactor files.gd. (#183)

I decided to sneak in a refactor for files.gd. It was not in a good state by itself, and in several places in the code it completely ignores the FileManager autoload when it shouldn't.
This PR completely revamps the files.gd file so that it is cleaner, documented, and easy to use. This also changes a lot of the existing bypasses are now using this manager whenever possible. Some other functionality was moved to their respective script files outside of files.gd,

* Fix logging oversight.

Not using the variable name in the logs.

* Fixed resource handling on clients.

Resources are now properly being set by the clients when they receive
the signal to set the resource value.
I think this was a bug introduced in one of the other changes in this
bugfest PR.

* Update the spawnable page automatically when saving a spawnable.

No need to refresh the page every time you save a new spawnable.

* Create the file if it does not exist by default.

This is how the function normally should work. Instead we should
explicitly state if we do not want to create the file if it does not
exist.
Changed feature request to use forms, and limited uploads to expected
file types.
* Added CODING_STANDARDS.md

* Added at-icons to used addons.

* Added CONTRIBUTING.md

* Added CODE_OF_CONDUCT.md

* Added PHILOSOPHY.md.

* Updated README.md.

* Added key branches to CODING_STANDARDS.md.

* Removed reference to PROJECT_PLAN.md.
* Question template.

* Added documentation issue template.

* Fixed issue type.
* Created spawnable_manager_registry.gd.

Changed the internal registry handler of spawnable_manager to use a
module based approach.
Goodness!

* Removed networking batches.

Not required right now.

* Moved spawnable management to separate module.

Removed model importing implementation. This will probably need to wait
until after Godot Resource Editor work.

* Refactored "create" into specific "create_spawnable" public API.

Added more waiting while-loops just to make sure the session is in a
ready state.

* Moved function to module.

Removed dead code.

* Move delete_spawnable to spawnables module.

Gizmo selections were broken seemingly, so it was removed and replaced
with placeholder notes until the gizmo module is created.

* Moved parenting to module.

* Fixed Gizmos selection and cleanup.

* Transform spawnable transfered to module.

Networking fixes and oversights.

* Updated headers.

Removed the same old comments for probably the fifth time.

* Move spawnable selection logic to new Gizmos module.

Fixed bug where clients could not see session root.

* Toggle session gizmo visibility when switching sessions.

* Removed dead code.

Added docs.

* Changed variables from private to public.

Just a variable name change!

* Added await_session_ready function.

This pattern was done in a few places. This will be easier to work with.
* Download gdUnit4

* Dashboard tests.

Chagned a lot of the code to work inside of the test environment.

* Updated README.md

* Added gdUnit4 to list of missing addons.

* Added tests requirement to CODING_STANDARDS.md

* Added license headers.

* Added retoactive tests additions clause.

* Added types to variables

* Improved user_interface tests.

All pages are now checked.

* Improved initial.gd, and renamed to scene.gd.

* Fixed world initialization.

This was broken at some point (again). Now I can make a test for it!

* Test creating a new world.

This adds an automated test. Tests world creation.

* Added placeholder tests.

* Fix application close.

Application would error on close.
* Added basic components.

Added Object property type to the NPE.
Added ResourceEditor window.

* Swap resources of a selected node mesh.

* Separate "Change" and "Edit" button.

* Mesh resource subproperties.

This works with meshes, I still need to work on other resource types.

* Added world loading test placeholder.

* Material Spawnables.

This makes materials saved in a scene get registered with the spawnable
system.
Other misc fixes.

* Cleanup: Removed hardcoded "mesh" value in selector.

Appropriate path is now set instead of assuming everything is a mesh.

* Removed more hardcoding.

This limited the editor to only working with meshes and lightly with
materials. This has been changed. The application should now error when
something does not work properly so it can be fixed.

* Spawning basic shapes (Box / Capsule) now use Spawnable networked Resources.

Before the mesh resources were created by each client, instead of using
a shared networked resource. Now the spawnable system creates the mesh
resource so it is synced.

* Removed "easy mesh" spawnables.

These were really a dev asset that I just never really got around to
removing. I should remove them now before being reliant on them. I love
the idea though, so these will come back when the system is more stable
and robust.

* Minor changes.

Some testing functions to try to sync shaders.

* Change registry handling of spawnables to make it easier to network. (#216)

* Changed spawnable registry to keep track of nodes instead of dictionaries.

The idea is to just keep track of the nodes, but when a user needs to
get the current state, the server will parse the registry and encode the
data in a safe way. Then the server sends the encoded data to the client
to rebuild the state.

* Resources registry.

Changes the registry to store resources in a raw array.

* Updated relations.

* Added resources and resource relations.

Resources are now syncronized.

* Added test placeholder.

* Changed spawnable loading logic.

The hope is to make shaders synced when loading into a new session.

* Initial shader syncing.

* Error check.

Adds an error check for an invalid property value.

* Created more spawnable tests.
Github action runners to build and publish builds automatically.
Some extra fixes and organization for actions.
* Use aliases when possible.

* No magic numbers / values.

* Do not leave commented code.

* Define variables at the top of scope.

* Conditionals should be defined.

* Function Exists.

* Updated README to mention releases.

* Improved CONTRIBUTING.md.

* Excempt license headers from addons.

* Clarified archive extraction steps.

* Consistancy issues.
This will run the gdUnit4 test in the runner before making a release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request om-client Issues relating to the OpenMinerva client.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant