Skip to content

Releases: lucaspoffo/renet

0.0.16 - Dependencies

20 Jul 17:44
Compare
Choose a tag to compare

No major changes, mostly updating dependencies: egui to 0.28 and bevy to 0.14.

Changelog

BevyRenet

Renetcode

  • Implement Error for DisconnectReason. (PR) by Shatur

RenetVisualizer

Contributors

0.0.15 - RenetSteam and Bevy 0.13

22 Feb 01:32
Compare
Choose a tag to compare

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

  • Released version 0.0.1. Checkout the README or the Bevy Demo to see how to use it.

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

12 Nov 21:28
Compare
Choose a tag to compare

This release has some small quality changes:

  • Use ClientId instead of a u64 for client ids, more type safety.
  • Add is_connecting and is_connected to RenetClient, 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 to RenetClient, this should make it easier to write code more transport agnostic. Also added set_connected, set_connecting so the transport layer can keep the connection status updated for the RenetClient (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 and channel_available_memory for RenetClient and RenetServer. (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 from RenetClient instead of the transport layer. (PR) by OleStrohm

Removed 🔥

  • Removed is_connecting, is_connected, is_disconnected from NetcodeClientTransport, use the methods from RenetClient instead. (PR) by OleStrohm

Contributors 🙏

0.0.13 - Final touches

20 Jul 03:39
Compare
Choose a tag to compare

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 client SocketAddr 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 ⭐

  • Added new runs coditions: client_just_connected and client_just_diconnected. (PR) by Shatur

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 and TransportSet. Use resource_exists::<RenetClient>() and resource_exists::<RenetServer>() instead. (commit)

Contributors 🙏

0.0.12 - The big rewrite

19 May 22:40
Compare
Choose a tag to compare

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 and NetcodeClient 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 with ConnectionConfig, 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, and send_type.
  • RenetServer::newand RenetClient::new now only has ConnectionConfig as argument.
  • Renamed RenetServer::is_client_connected to is_connected.
  • NetworkInfo has bytes_sent_per_second and bytes_received_per_second instead of sent_kbps and received_kbps.

Removed 🔥

  • Removed send_packets from RenetServer and RenetClient, 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 and NetcodeClientPlugin.
  • 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

12 Mar 05:29
Compare
Choose a tag to compare

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

18 Nov 23:51
Compare
Choose a tag to compare

Added ⭐

  • BevyRenet: updated bevy to version 0.9 (PR)
  • Added functions client_addr, user_data, is_client_connected, max_clients, and connected_clients for RenetServer, some utilities from NetcodeServer. (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

25 Jul 05:29
Compare
Choose a tag to compare

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 and Into<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)