KCP gameserver with packet dispatch, scene streaming, combat, gacha and the shop, plus a small HTTP server for the login flow and the wish history page. Game data under assets is pulled out of the client instead of being typed by hand. The excel tables come from the packed bin container and the spawn points from the compiled scene scripts.
97 lines
3.3 KiB
C#
97 lines
3.3 KiB
C#
namespace Yuanshen.Kcp
|
|
{
|
|
/// <summary>
|
|
/// Options used to control the behaviors of <see cref="KcpConversation"/>.
|
|
/// </summary>
|
|
public class KcpConversationOptions
|
|
{
|
|
/// <summary>
|
|
/// The buffer pool to rent buffer from.
|
|
/// </summary>
|
|
public IKcpBufferPool BufferPool { get; set; }
|
|
|
|
/// <summary>
|
|
/// The maximum packet size that can be transmitted over the underlying transport.
|
|
/// </summary>
|
|
public int Mtu { get; set; } = 1400;
|
|
|
|
/// <summary>
|
|
/// The number of packets in the send window.
|
|
/// </summary>
|
|
public int SendWindow { get; set; } = 32;
|
|
|
|
/// <summary>
|
|
/// The number of packets in the receive window.
|
|
/// </summary>
|
|
public int ReceiveWindow { get; set; } = 128;
|
|
|
|
/// <summary>
|
|
/// The nuber of packets in the receive window of the remote host.
|
|
/// </summary>
|
|
public int RemoteReceiveWindow { get; set; } = 128;
|
|
|
|
/// <summary>
|
|
/// The interval in milliseconds to update the internal state of <see cref="KcpConversation"/>.
|
|
/// </summary>
|
|
public int UpdateInterval { get; set; } = 100;
|
|
|
|
/// <summary>
|
|
/// Wether no-delay mode is enabled.
|
|
/// </summary>
|
|
public bool NoDelay { get; set; }
|
|
|
|
/// <summary>
|
|
/// The number of ACK packet skipped before a resend is triggered.
|
|
/// </summary>
|
|
public int FastResend { get; set; }
|
|
|
|
/// <summary>
|
|
/// Whether congestion control is disabled.
|
|
/// </summary>
|
|
public bool DisableCongestionControl { get; set; }
|
|
|
|
/// <summary>
|
|
/// Whether stream mode is enabled.
|
|
/// </summary>
|
|
public bool StreamMode { get; set; }
|
|
|
|
/// <summary>
|
|
/// The number of packets in the send queue.
|
|
/// </summary>
|
|
public int SendQueueSize { get; set; }
|
|
|
|
/// <summary>
|
|
/// The number of packets in the receive queue.
|
|
/// </summary>
|
|
public int ReceiveQueueSize { get; set; }
|
|
|
|
/// <summary>
|
|
/// The number of bytes to reserve at the start of buffer passed into the underlying transport. The transport should fill this reserved space.
|
|
/// </summary>
|
|
public int PreBufferSize { get; set; }
|
|
|
|
/// <summary>
|
|
/// The number of bytes to reserve at the end of buffer passed into the underlying transport. The transport should fill this reserved space.
|
|
/// </summary>
|
|
public int PostBufferSize { get; set; }
|
|
|
|
/// <summary>
|
|
/// Options for customized keep-alive functionality.
|
|
/// </summary>
|
|
public KcpKeepAliveOptions KeepAliveOptions { get; set; }
|
|
|
|
/// <summary>
|
|
/// Options for receive window size notification functionality.
|
|
/// </summary>
|
|
public KcpReceiveWindowNotificationOptions ReceiveWindowNotificationOptions { get; set; }
|
|
|
|
internal const int MtuDefaultValue = 1400;
|
|
internal const uint SendWindowDefaultValue = 32;
|
|
internal const uint ReceiveWindowDefaultValue = 128;
|
|
internal const uint RemoteReceiveWindowDefaultValue = 128;
|
|
internal const uint UpdateIntervalDefaultValue = 100;
|
|
|
|
internal const int SendQueueSizeDefaultValue = 32;
|
|
internal const int ReceiveQueueSizeDefaultValue = 32;
|
|
}
|
|
}
|