# DevFramework **Repository Path**: Peterj/DevCore ## Basic Information - **Project Name**: DevFramework - **Description**: No description available - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2015-12-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #DevFramework 游戏开发框架 ##其中包含下列项目 ### 1.DevCore 目标:包含基础工具,通用类库 目前: * 高效的NetStream(对socket的封装) * 命令行参数解析 * Xml解析 * Log * 其他 ### 2.CSharpRoutine 目标:C#版 Actor模型 目前:已简单实现,简单测试,20000个actor,1kw条简单消息,用时20秒左右(i5 3.1GHz), 经测试和Go原生goroutine效率差不多(go用时也是20秒左右, 但是go cpu占用少一点,至少在一个量级上。^_^)。 用法: 类似Unity协程 ``` public class TestActor : Actor { protected override IEnumerator Main() { StartCSRoutine( WaitMessage() );//启动新协程 while( true ) { var msg = new WaitMessage(); yield return msg;//等待消息 var testMsg = msg.Content as TestMessage; yield return new WaitForSeconds(2);//等待时间 } } } ``` ### 3.Common 目标:客户端和服务端公用逻辑,主要处理通信协议 目前:快捷高效定义消息协议(基于Protobuf-net),rpc实现。 用法:只需要简单定义,即可实现客户端和服务端通信 1. 消息 只需在MessageId枚举中定义消息Id,然后在需要传输的messag类上添加MessageIdAttribute 就会生成相关id到type的映射代码 ``` [ProtoContract, MessageId( MessageId.Person )] public class Person : IMessageData { [ProtoMember( 1 )] public string Name { get; set; } [ProtoMember( 2 )] public int Age { get; set; } } } ``` 2. Rpc 只需继承自Enity,然后在方法上添加RpcAttribute即可 ``` public partial class TestUser : Entity { [Rpc( 1, RpcProvider.Server )] public Response RpcLogin(string userName, string pwd, string extra = null) { //TODO: Console.WriteLine( "userName:{0},pwd:{1},extra:{2}", userName, pwd, extra ); return Response.Create( true ); } } ``` ### 4.CodeGenerator 目标:用于Common项目的代码生成 目前:已实现MessageId到Type的映射代码,生成Rpc消息的序列化和反序列化的相关代码 ### 5.CommonPostProcess 目标:用于Common项目后处理,利用Mono.Cecil注入Rpc相关代码到Common.dll 目前:已实现 ### 6.ClientSample 目标:用于测试的客户端 目前:基于NetStream和Rpc的测试客户端 ### 7.ServerSample 目标:服务端 目前:基于SuperSocket和Rpc的服务端 ### 8.BehaviorTree 目标:行为树实现 目前:尚未实现 ### 9.CSharpRoutineTest和DevCoreTests 测试代码 ### 10.项目依赖关系图 ![项目依赖图](http://git.oschina.net/uploads/images/2016/0914/183428_9c6fe0be_596776.png "依赖图")