一、簡介
ET框架是一款基於C#語言的開源網路應用程序框架,旨在為遊戲和其他高性能應用程序提供快速開發解決方案。它包含了一個完整的網路庫,用於構建分散式系統,並提供了一套強大的工具集,可以幫助您管理實體、消息、任務和流程。此外,ET框架的設計理念是簡單易用、高效穩定、可擴展性強。
ET框架最初的開發者是陸昶輝,其最初版本即是在其任職於億方互動期間開發的。隨著ET框架在億方等遊戲公司的採用,其逐漸成為遊戲伺服器的主流框架,並逐步獲得更廣泛的應用和認可。
二、核心特性
ET框架的核心特性包括以下幾個方面:
1、網路庫
ET框架內置了高性能的網路庫,可以幫助您快速構建分散式系統。其網路庫的主要特點是基於Socket的非同步I/O模式實現,利用了C#語言的非同步編程的特性,具有很高的吞吐量和可擴展性。
public class Session : AChannel
{
private readonly CircularBuffer buffer = new CircularBuffer(SessionConfig.ReceiveBufferSize);
private readonly MemoryStream memoryStream = new MemoryStream();
private readonly MemoryStream stream = new MemoryStream();
private readonly byte[] messageBytes = new byte[SessionConfig.MessageMaxLength];
private readonly IMessageDispatcher messageDispatcher;
private readonly SemaphoreSlim sendSemaphore = new SemaphoreSlim(1, 1);
private readonly object sendLock = new object();
private readonly Queue sends = new Queue();
public Session(long id, CancellationTokenSource tokenSource, AService aService)
: base(id, aService, tokenSource.Token)
{
this.messageDispatcher = this.GetService();
}
}
2、實體組件
ET框架提供了實體組件,可以讓您很方便地定義並管理遊戲中的物品、角色等實體。這個組件的主要思想是通過添加組件來構建實體,通過移除組件來銷毀實體。在遊戲運行過程中,您可以在任何時候添加或移除組件,動態操縱實體。
public partial class Unit : Entity
{
public long OwnerId { get; set; }
public long GateSessionActorId { get; set; }
public long MapSessionActorId { get; set; }
public float X { get; set; }
public float Y { get; set; }
public float Z { get; set; }
public int UnitType { get; set; }
}
3、消息組件
ET框架還提供了消息組件,可以讓您定義和管理遊戲中的所有消息。您只需定義消息格式,並在消息組件中註冊即可在遊戲運行時發送和接收消息。ET框架自帶的ProtoBuf序列化庫支持消息的快速編解碼。
[Message(Order = 3)]
[ProtoContract]
public partial class UnitEnterMap_SyncUnits : IActorMessage
{
[ProtoMember(1)]
public long ActorId { get; set; }
[ProtoMember(2)]
public long[] PlayerIds { get; set; }
[ProtoMember(3)]
public List Units { get; set; }
}
4、任務組件
ET框架提供了任務組件,可以讓您方便地定義並管理遊戲中的任務。您可以定義任務目標、獎勵等,同時可以方便地查看任務完成情況。
[Task(2)]
public class AchieveOneTask : ATask
{
[TaskComponent(1)]
public int Value;
public override void OnExecute()
{
if (this.Value == 1)
{
this.Complete();
}
}
}
5、流程組件
ET框架的最後一個核心特性是流程組件,可以讓您定義和管理遊戲中的複雜流程。流程組件依賴任務組件,您可以定義任務節點、流程串列和並行、任務完成條件等,以實現複雜的遊戲流程。
[Flow(1)]
public class FlowDemo : AFlow
{
[MessageHandle]
public async Task TestMessage(Session session, FlowData message)
{
ETModel.Log.Info("TestMessage receive!");
return this.NextFlow();
}
}
三、使用場景
ET框架適用於各種高性能應用場景,包括遊戲伺服器、金融服務、廣告投放等。特別是在遊戲伺服器領域有廣泛的應用,曾被部分遊戲公司選擇作為其遊戲伺服器框架。
四、擴展性
ET框架具有很高的可擴展性,可以方便地加入各種插件和自定義組件。例如,可以很容易地在ET框架中加入自定義的資料庫、日誌、計費等插件,甚至可以在ET框架基礎上構建自己的網路通信庫。
五、性能測試
ET框架經過長時間的優化,已經取得了很好的性能表現。截至目前,ET框架已經針對多種配置進行過基準測試,測試結果顯示,在vCPU數量為2-32,內存為2G-32G的伺服器上,ET框架的吞吐量最高可達到10萬TPS,延遲最低僅為5ms。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286466.html