Commit Graph

850 Commits

Author SHA1 Message Date
Collin Smith
01888faac6 Implemented ReliableUtil and composite ByteBuf into ReliableChannelHandler
Implemented ReliableUtil and composite ByteBuf into ReliableChannelHandler
ReliableChannelHandler automatically replaces outbound message with composite
Removed size prefixing contract from Packet factory
Added ReliableUtil#createHeader to write data and set writer index passed header
2020-06-20 14:03:27 -07:00
Collin Smith
d672768495 Added finishNettyBuffer 2020-06-20 12:49:17 -07:00
Collin Smith
5c4c06d47e Created setContentSize method to support composite buffers
Created setContentSize method to support composite buffers
Removed UDP header fields from Netty fbs table
2020-06-20 12:47:31 -07:00
Collin Smith
26aebd5183 Created ReliableUtil class with utility methods to set and get header data encoded within a reliable UDP packet outside of fbs 2020-06-20 02:01:05 -07:00
Collin Smith
a8fe6bc732 Removed Header table from fbs and inlined fields within the Netty table 2020-06-20 00:21:04 -07:00
Collin Smith
101cc92be4 Added protocol field to netty packet header 2020-06-19 15:01:01 -07:00
Collin Smith
510342e232 Implemented some basic reliable udp logic
Seq should increment and wrap around at 0xFFFF
Added special case for ack < 0 (init first packet)
Added netty packet creation functions to ReliableChannelHandler
Header creation is difficult because I can't mutate existing packets easily -- experimenting
2020-06-18 20:46:57 -07:00
Collin Smith
2b6d06f330 Rolled Client debugging outbound packet data logging into ReliableChannelHandler 2020-06-17 22:57:40 -07:00
Collin Smith
fb7377980b Created ReliableChannelHandler to try and accomplish ReliableInboundHandler and ReliableOutboundHandler with one ChannelHandler
Replaced implementations with ReliableChannelHandler
Removed ReliableInboundHandler and ReliableOutboundHandler
Removed propagation for caught exceptions within ReliableChannelHandler impls
2020-06-17 22:29:14 -07:00
Collin Smith
f1df48b468 Changed ServerHandler to be a subclass of PacketHandler -- replaced anon PacketHandler with ServerHandler impl 2020-06-17 22:02:33 -07:00
Collin Smith
573f4d1b4b Added reliable ChannelHandlers to server ChannelPipeline 2020-06-17 21:56:00 -07:00
Collin Smith
fc66d120d7 Filled in some of anonymous PacketHandler within Main to process some packet types 2020-06-17 21:54:08 -07:00
Collin Smith
02a6cd4b56 Created PacketHandler class to help with decoding fbs packet objects from netty channels 2020-06-17 21:33:34 -07:00
Collin Smith
ef94883dd7 Refactored name scheme 2020-06-17 21:16:04 -07:00
Collin Smith
a2000a6162 Fixed some initialization issues and created reliable ChannelHandler implementations to help deal with UDP reliability 2020-06-17 21:09:56 -07:00
Collin Smith
cad29c7b82 Created Header table in Netty fbs and sample packet 2020-06-16 02:40:39 -07:00
Collin Smith
f5454be03d Created test fbs packets 2020-06-14 20:59:27 -07:00
Collin Smith
cbd55ee164 Replaced StringEscapeUtils from apache commons-lang3 with commons-text
StringEscapeUtils from commons-lang3 was deprecated and should be using version from commons-text
Optimized imports
2020-06-14 12:35:15 -07:00
Collin Smith
dd54d11d9f Transitioned to UDP client/server 2020-06-13 21:13:11 -07:00
Collin Smith
eda10f1da9 Small optimization 2020-06-13 17:45:36 -07:00
Collin Smith
4dcfe2ff00 Created netty module to try implementing UDP servers and move away from the LibGDX networking 2020-06-13 17:42:05 -07:00
Collin Smith
07d98015fd Fixed code formatting and removed fully qualified com.riiablo.codec.COF references 2020-06-13 01:25:19 -07:00
Collin Smith
6be70a3667 Changed parameters for hits ObjectSet -- libgdx changed the parameter check an doesn't allow 1.0f load factor 2020-06-12 22:28:34 -07:00
Collin Smith
eb2d672ac1 Improved accuracy of networking ping calculation #77 2020-06-12 20:08:58 -07:00
Collin Smith
cbfae0f702 Cleaned formatting and alignment 2020-06-12 19:22:50 -07:00
Collin Smith
97b1a3d2d3 Removed static methods and management structs from SystemProfiler
Created ProfilerManager passive system to act as a manager and factory for SystemProfiler instances
Changed SystemProfiler static functions to be a ProfilerManager instance via injection
Fixed some UI bugs within SystemProfiler GUI including incorrect width
Added reference to ProfilerSystem within CursorMovementSystem to block input events when profiler GUI is open
Removed ProfilerSystem#dispose() -- ProfilerManager has it's own dispose method
Reduced visibility of SystemProfiler constructors -- instances should only be created by ProfilerManager
SystemProfiler#initialize() will no longer add the instances to a struct -- automatically added when created by ProfilerManager factory
2020-06-12 17:47:05 -07:00
Collin Smith
8f04cb5c94 Removed dependency on net.mostlyoriginal.artemis-odb:contrib-plugin-profiler
Replaced with com.riiablo.profiler
Copied contrib-plugin-profiler GUI skin to internal assets
2020-06-12 16:04:05 -07:00
Collin Smith
42ff871f38 Removed unneed code 2020-06-12 15:52:43 -07:00
Collin Smith
1c920b461c Created profilers for ping and rtt metrics #77
Implemented averaging of network latency samples via NetworkProfiler
NetworkProfiler handles the interfacing between Profiler plugin and Pinger system
Created IntervalBaseSystem which is a copy of IntervalSystem without dependency on any Aspect
Added support for a PacketListener for Pinger system (receives callbacks for received ping packets)
2020-06-12 15:51:56 -07:00
Collin Smith
2e9e3f2b1f Created a SystemProfiler for CPU and CPU parts of a frame
Created actual SystemProfiler instances for sampling CPU and GPU frame times
CPU and GPU frame times are now graphed with each system (adding them should give total frame time)
Added sample field to SystemProfiler to store value of last call to SystemProfiler#sample(long)
Removed CPU and GPU profiling from ProfilerSystem
2020-06-11 18:39:43 -07:00
Collin Smith
fcd4fa607f Created metrics for tracking CPU and GPU time
Rewrote artemis-odb-contrib/contrib-plugin-profiler
Profiler was too restrictive and privated many useful fields and had static methods, yuk
Profiler plugin will always run and the key will only hide the UI (and set it as GPU system)
Profiler plugin will maybe be modified in the future to be more extensible
Extended profiler plugin to support tagging systems as GPU systems
I'd like to know which systems are slow and track CPU/GPU bottlenecks on mobile
2020-06-11 01:19:49 -07:00
Collin Smith
b1a3411073 Created Metrics class and moved metric fields to it
Metrics will have more metric fields added as we go
2020-06-10 00:32:14 -07:00
Collin Smith
3c08bfbf04 Added RTT field to Pinger 2020-06-09 22:36:48 -07:00
Collin Smith
3390b544a6 Improved accuracy of ping calculation #77 2020-06-07 15:55:28 -07:00
Collin Smith
cdc73e12d6 Added support for Ping packet
Added Ping to Networking fbs
Created Riiablo.ping long to store current ping in ms
Changed Client draw fps to draw Riiablo.ping below fps
Created Pinger system which manages Riiablo.ping and sending and receiving Ping packets
Riiablo.ping is really more like RTT+frame_time and should be ironed out better
Created issue #77 related to the work done in this commit and deficiencies to be addressed
2020-06-07 00:23:00 -07:00
Collin Smith
da152ff5c6 Created constants for Client.Display.DrawFPS values 2020-06-06 22:53:28 -07:00
Collin Smith
da53dabad6 Aggregated Connection and Disconnect fbs into Networking fbs
Removed old individual fbs for Connection and Disconnect
Reordered D2GSData to group Networking packets
2020-06-06 18:17:21 -07:00
Collin Smith
ff34dea994 Created PlayerController flatbuffer spec file
Removed individual fbs for player movement packet definitions
Changed (Walk|Run)ToEntity packets from id to entityId
2020-06-06 18:06:16 -07:00
Collin Smith
d6e973f2f2 Fixed GroundToCursor code to use client-side entity id and pass along server-side entity id 2020-06-05 13:28:38 -07:00
Collin Smith
ae00373f8a Added ServerItemManager which will handle item wrapper entity creation/deletion 2020-06-05 13:25:37 -07:00
Collin Smith
013b22a169 Added local and server entity id to entity debug info 2020-06-05 13:16:58 -07:00
Collin Smith
4bef27052c Disabled optimize imports on the fly for the specified classes
Flatbuffers files were being modified by IntelliJ before committing
2020-06-04 20:16:02 -07:00
Collin Smith
83a95e35fc Removed deprecated DropItem and PickupItem packets and related code 2020-06-04 19:46:42 -07:00
Collin Smith
e472514179 Rolled Deleted component implementation into a Flags component
Removed Deleted component and associated flatbuffers classes
Created Flags component along with added a bitflags field to EntitySync flatbuffers table
It seems plausible more flags will be needed in the future aside from marking an entity as deleted
2020-06-04 19:41:55 -07:00
Collin Smith
7301c483ca Posting Deleted component 2020-06-04 19:24:33 -07:00
Collin Smith
ffda38c9fd Fixed issue where packets might be sent to a disconnected client 2020-06-04 19:14:08 -07:00
Collin Smith
804e8373d5 Improved logging for D2GS packets
Added ability to disable logging for specified packet types (EntitySync was cluttering the log)
2020-06-04 17:05:15 -07:00
Collin Smith
7404ea63a6 First iteration of deleting networked entities
This iteration assumes removing Networked component implies deletion
Deletion is managed as a flag within the EntitySync packet header
2020-06-03 20:58:58 -07:00
Collin Smith
7aa3f448ee Removed extra logging 2020-06-03 20:29:21 -07:00
Collin Smith
faf8743a75 Fixed an issue where picking up networked item wasn't loading assets
ClientEntityFactory#createItem now calls Item#load()
Cursor will run Item#checkLoaded on cursor item and attempt setting cursor when loaded
2020-06-03 17:35:59 -07:00