Releases: lucaspoffo/renet
0.0.16 - Dependencies
No major changes, mostly updating dependencies: egui to 0.28 and bevy to 0.14.
Changelog
BevyRenet
- Update to bevy 0.14. (PR) by raffaeleragni
Renetcode
RenetVisualizer
- Update to egui 0.28. (PR) by raffaeleragni
Contributors
0.0.15 - RenetSteam and Bevy 0.13
This release has no major changes for renet itself, but comes with a new version for bevy 0.13 and now the renet_steam crate is released (transport layer using steam API).
Changelog
RenetSteam
Renetcode
- Use timeout given from ConnectToken instead of fixed 15 secs. (commit)
BevyRenet
- Implement Component for ClientId. (PR) by SylvKT
- Add emit_server_events_system, now, transports can update and disconnect clients before events are emitted. (commit)
- Removed steam feature, now to use steam, you add
renet_steam
with the bevy feature. (commit) - Update to bevy 0.13. (PR) by dgsantana
- Make all systems public, this makes possible to manually add the systems and use them for ordering. (commit)
RenetVisualizer
- Update egui to 0.26
0.0.14 - Some goodies
This release has some small quality changes:
- Use
ClientId
instead of a u64 for client ids, more type safety. - Add
is_connecting
andis_connected
toRenetClient
, this should make it a bit easier to write code transport agnostic.
In the main branch we have the unreleased transport layer for steam if you want to test. The steam transport is also available in the bevy_renet crate under the feature steam
(only available in the main branch).
Full changelog is available below. Thanks for all the contributors, and for all my sponsors 🙏
FULL CHANGELOG
Added ⭐
- Added
is_connecting
,is_connected
toRenetClient
, this should make it easier to write code more transport agnostic. Also addedset_connected
,set_connecting
so the transport layer can keep the connection status updated for theRenetClient
(if you are using the default transport layer you will not need call it, but if you have a custom transport layer you will need to call them). (PR) by OleStrohm - Added methods
can_send_message
andchannel_available_memory
forRenetClient
andRenetServer
. (commit) - Renetcode: make fields for ConnectToken public. (PR) by UkoeHB
Fixed 🐛
- Fixed
RenetServer.connected_clients
not returning the correct numbers of connected clients. (commit)
Changed 🛠️
- Use ClientId struct instead of u64 for clients ids, better type safety for users. (PR) by roboteng
- NetcodeServer: now accepts multiple server addresses when being created. (PR)
- NetcodeServer: change arguments when creating it, now accepts only a configuration struct
ServerConfig
, that has all previous arguments. (PR) - RenetVisualizer: updated to egui 0.23. (PR) by Zajozor
- BevyRenet: updated to bevy 0.12 (commit)
- BevyRenet:
client_disconnected
,client_connecting
,client_just_connected
,client_just_disconnected
has been moved out of the transport module. Now they use the methods fromRenetClient
instead of the transport layer. (PR) by OleStrohm
Removed 🔥
- Removed
is_connecting
,is_connected
,is_disconnected
fromNetcodeClientTransport
, use the methods fromRenetClient
instead. (PR) by OleStrohm
Contributors 🙏
0.0.13 - Final touches
This release does not have major changes, it mostly fixes some bugs and adds some missing methods.
A new transport layer for the Steam API
has been added (PR by TrustNoOneElse). But it is still unreleased for now, it needs some features/docs but it already functions, an echo example was created to showcase how to use it. The usage of the steam transport layer is very similar.
Renet
Added ⭐
- Added missing method for retrieving clients
SocketAddr
for connected clients in the default server transport:client_addr
. Also added method to retrieve clientSocketAddr
from default client transport:addr
. (commit) - Add iterator access to client ids in the server:
clients_id_iter
,disconnections_id_iter
. (PR) by UkoeHB
Fixed 🐛
- Fix not removing items when receiving messages out of order. (commit)
- Correctly calculate small packet size for unreliable channels. (commit)
Bevy Renet
Added ⭐
Changed 🛠️
- Updated to bevy 0.11. (PR) by Olle-Lukowski
- Run conditions now returns closures, similar to how bevy run conditions do. (PR) by Shatur
Removed 🔥
- Removed
RenetSet
andTransportSet
. Useresource_exists::<RenetClient>()
andresource_exists::<RenetServer>()
instead. (commit)
Contributors 🙏
0.0.12 - The big rewrite
This release comes with 3 major changes:
- Rewrite of the reliability/fragmentation protocol, it should handle any bandwidth.
- Split of renet and the transport layer. Now it's possible to use other transport protocols.
- Configuration simplification
Most of the public API has stayed the same. With the split of the transport layer, you now need to create and update it separately from renet
, but the setup is still very similar (renet comes with a default transport layer using renetcode
). A lot of the work for this release was done in the internal fragmentation/reliability protocol, now it should handle any bandwidth. Also, you don't need a special configuration when sending bigger messages, the fragmentation is better and is done per message now.
Renet
Added ⭐
- Added
NetcodeServer
andNetcodeClient
all the network transport logic has been moved to these structs.- You can check the documentation, examples, or demos to see how these new structs are used.
Changed 🛠️
- Replaced
RenetConnectionConfig
withConnectionConfig
, this new configuration has been greatly simplified. You only need to specify how many bytes you can use per update tick and the channels configuration (ChannelConfiguration
). - Rework of
ChannelConfiguration
, only 3 fields now:channel_id
,max_memory_usage_bytes
, andsend_type
. RenetServer::new
andRenetClient::new
now only hasConnectionConfig
as argument.- Renamed
RenetServer::is_client_connected
tois_connected
. NetworkInfo
hasbytes_sent_per_second
andbytes_received_per_second
instead ofsent_kbps
andreceived_kbps
.
Removed 🔥
- Removed
send_packets
fromRenetServer
andRenetClient
, this is now done by the transport layer. - Removed
can_send_message
, this could cause some bad practices of checking before sending messages. If you cannot send a message you should change the channels configurations.
Rechannel
Rechannel has been deprecrated, all its logic has been moved inside renet.
Bevy Renet
Added ⭐
- Added new Plugins for the transport layer:
NetcodeServerPlugin
andNetcodeClientPlugin
. - Client disconnects when the app closes.
- Server disconnects all clients when the app closes.
Changed 🛠️
- Removed the
clear_events
options, you can achieve the same functionality by adding the Events yourself before the Plugin.
0.0.11
Added ⭐
- BevyRenet: updated bevy to version 0.10. (PR) by Shatur
- RenetVisualizer: updated egui to version 0.21.
- Renet, Renetcode, BevyRenet: add client.is_connecting(). (commit)
- Renet: allow to send empty messages again, this was a bad change since some serialization methods can serialize to empty messages. (commit)
Changed 🛠️
- Renetcode: renamed client.connected() with client.is_connected() for consistency. (commit)
Contributors 🙏
0.0.10
Added ⭐
- BevyRenet: updated bevy to version 0.9 (PR)
- Added functions
client_addr
,user_data
,is_client_connected
,max_clients
, andconnected_clients
forRenetServer
, some utilities fromNetcodeServer
. (commit) (commit) - Renetcode/Renet: make generate_random_bytes public. This can be used to generate a random private key. (commit)
- Rechannel: add
DefaultChannel
enum, useful when using the default channel configuration. (commit) - BevyRenet: add configurable event clearing. (PR)
- Rechannel: add configuration for unordered reliable channel. (commit)
- Rechannel: add configuration for sequenced unreliable channel. (commit)
- Renetcode: added logging. (commit) (commit)
Changed 🛠️
- Renetcode: remove
client_id
argument when creating a RenetClient. (commit) - Rechannel: rename block channel to chunk channel. This clarifies what the channel does: the message is sliced into multiple chunks so it can be sent in multiple frames. Also, it is not confused with "blocking" thread/logic.
Fixed 🐛
- Rechannel: when sending an empty message, this now gives an error. (commit)
- Rechannel: ignore already received block messages. (commit)
Contributors 🙏
0.0.9
Added ⭐
- Rechannel: added max_message_size configuration for channels. This also fixes an exploit over the block channel,
it was possible to send a SliceMessage with a high value of number of slices, this would cause the channel to allocate a lot of memory causing out of memories errors. (commit) - Add Secure/Unsecure option when creating the server/client, easier for testing or prototyping. (commit)
Changed 🛠️
- Genericify send/recv methods, use
Into<u8>
for channel id andInto<Bytes>
for messages (#28) - Rechannel: split channels into Sender Channels and Receiver Channels. Now server and clients can have different channels (commit)
Fixed 🐛
- Rechannel: fix block messages not correctly getting acked (commit)
- Rechannel: check chunk id when receiving block messages (commit)
- Rechannel: don't initialize block messages with 0 slices. Malformed packets could crash the server/client with out of bounds accesses (commit)
- Rechannel: don't ack fragment packet on the first received fragment, only when all fragments are received (commit)
Removed 🔥
- Removed
renet::ChannelNetworkInfo
(commit)