7,112 Commits over 3,531 Days - 0.08cph!
Only log non zero netid
Zero out entity data offset if length is zero
Get block builder gamemode working again. Fix non background loaded textures not applying to material.
Only allow setting of Replicates on entity construction and before spawning
Fix movement replication for block builder player
Allow gamemodes to stall the loading screen
read/write voxel spawn data
Fix crash creating voxel map from serailized data
Serialize entity spawn data in world state as offset and length into binary blob
Allow client players to add blocks to voxel world
Don't load cubemaps in background, having issues with it
Replace networkable HasOwner with OwnerConnection, we care about the owning connection, not the direct entity owner
Also wait for assets loading in background before removing loading screen
await for huds to load before removing loading screen
Don't send netvar messages to host connection
Fix all gamemode compile errors after networking changes
Move AssetRef read/write into their own class instead of BinaryReaderWriterEx
Spawn menu system hud once and keep it around throughout the lifetime of game, show/hide when needed.
Only load menu system addon once at startup instead of every time going back to main menu, makes leaving game faster
async delay before starting server so that loading screen can show up straight away before any heavy loading is done
Call client rpc directly if the networkable is owned by local connection
Remove unreal replication for light entities
Make light properties replicated
Allow assets to be replicated with asset references
Fix NRE in AssetRef
Allow asset refs to have their own serialization depending on asset type
Add client.connection.status command
Handle client disconnect reason (only server timed out for now)
Add nameplates to NetTest
Add LocalClient class to deal with anything needing UPlayerController (a single player controller only exists on the local client now, not for every client on server)
BasePlayer has their own ViewAngles on the managed side but uses control rotation locally, this is so server can know player view angles without having a player controller
Orientate test player model with ViewRotation
Drop connection if client isn't following protocol
Bail from RPC if the networkable doesn't have replication enabled
When calling server rpc directly, set rpc client to local
Add control rotation back, needed until we remove unreal player controller shite
Call server rpc directly if has authority, Call client rpc directly if has no authority, Ignore multicast rpc if has no authority.
Player.ControlledByLocalClient handled by us instead of unreal
Remove control rotation and location stuff from player
Give players a replicated player state property. Send client info last so that client can create a local client object from local player state.
Add very basic client side movement replication to test player
Use player state as player owner so that IsOwnedBy passes
Attach model to test player so I can see where people are
Removing testing replicated properties from BaseEntity
BasePlayer replicates by default
Possess player locally using a client RPC in player state
Destroy player on client leave
Add/remove player state from world connection list when player state entity initializes or shutsdown
Pass an optional reason to Gamemode.OnClientLeave. Handle ClosedByPeer and ProblemDetectedLocally disconnect reasons
Destroy player state after Gamemode.OnClientLeave. Add chat messages on client join/leave
Call Gamemode.ClientJoined after sending client info and world state so that gamemodes can't send an early RPC
Add scoreboard to NetTest
Destroy player state when client leaves
Cache local player controller so pawns can be possessed on client
Keep a seperate IConnection list for clients in authing stage so that player state entities etc aren't spawned until they're let into the game
Authed clients spawns a replicated player state entity. Multicast rpc and var replication only sends to authed client list
Make player state a public entity so it can be replicated properly
Remove EntityClass from SaveData, unused
Fix LinePreserve preprocessor error
Server sends connecting client info (client id and user id) so that local client can be created
Set client username as steam name
Set client authority if it was created on server
Add chatbox to NetTest so it can be tested through new networking
Server renames player name if it's in use, sends the name in client info message (only useful right now for testing multiple clients with same steamid)
Send client info for every client on server, not just the connecting client
Just destroy replicated entity with DestroyProper for now (forgot that Destroy is Authority only)
Server sends all clients (except for host) serialized entity data when a replicated entity is spawned
Deserialize entity creation message data on client, attempt to create and spawn
Bail instead of throwing exception on recv var for entity that doesn't exist yet (need to stop vars coming in before entity creation)
Enable new entity replication again, previous commit fixed the fuckup
Send destroy entity message
Destroy replicated entity on client when receiving destroy entity message
Add test entity that despawns after 5 sec to test entity destroy message
Load replicated entity properties and spawn after native initialization so that NetworkRef is valid
Serialize entity property with netid instead of uniqueid when sending over network
Entity spawn data no longer goes through unreal sockets, handled all in managed
Move game messages from ClientConnection to GameClient. Add World.IsListenServer
Bypass authority check on world cleanup
Ending game while there's a client connection will close the connection and wait for a disconnect event before returning to main menu
Create new list to hold entities on world cleanup, main ent list is invalidated when destroying an entity
Set client side entities netid to 0, seems to work fine
Remove replicate attribute on test entity field, need to make sure world state comes in before replicated vars before that can work
Fix Entity.Replicates always setting to true, whoops
Add bool to mark entities as required by engine so they don't get cleaned up (really these shouldn't even be put into the ent list) Add a bullshit long number onto networkid for client only entities so they don't conflict with replicated entities for now.
When creating replicated entities, create the managed entity class within the replicated scope, create the native class and spawn it outside the scope.
Game server ignores any message except steam ticket without the client being authed
Ignore socket disconnect events if the connection has invalid userdata (library is calling it twice on timeout, maybe a bug)
Refactor game server to identify clients by client id instead of steam id (multiple local clients share steam id, duh)
Skip BeginAuthSession for local clients sending ticket across socket, host process will have already been authed
Cache connection userdata before closing it so it doesn't get wiped
Skip steam auth for local clients for now (having issues with it)
Fix multiple steam auth for local steam id
Gamemode replicates by default. Init game menu system for remote clients because this wont be replicated.
Add generated code to skip RPC and call directly, check is always false for now
Entity replicated false by default, world entity true by default (just to keep it how it was before)
Log replicates bool in ent_list command
Fix Manager.ActorCreated bailing early for native spawned entities
Cleanup world and create replicated entities on world state message
Attempt to create entities from replicated world state inside a replicated entity creation scope
Add replicated mode in entity creation scope (we need to know if an entity is created via replication to set authority and netid)
Add create native function to entity that takes a netid that can only be used in replicated entity scope