tanghai 8 سال پیش
والد
کامیت
5aa2e93cd8
1فایلهای تغییر یافته به همراه40 افزوده شده و 40 حذف شده
  1. 40 40
      README.md

+ 40 - 40
README.md

@@ -1,53 +1,53 @@
-### 1.可用VS单步调试的分布式服务端,N变1  
-一般来说,分布式服务端要启动很多进程,一旦进程多了,单步调试就变得非常困难,导致服务端开发基本上靠打log来查找问题。平常开发游戏逻辑也得开启一大堆进程,不仅启动慢,而且查找问题及其不方便,要在一堆堆日志里面查问题,这感觉非常糟糕,这么多年也没人解决这个问题。ET框架使用了类似守望先锋的组件设计,所有服务端内容都拆成了一个个组件,启动时根据服务器类型挂载自己所需要的组件。这有点类似电脑,电脑都模块化的拆成了内存,CPU,主板等等零件,搭配不同的零件就能组装成一台不同的电脑,例如家用台式机需要内存,CPU,主板,显卡,显示器,硬盘。而公司用的服务器却不需要显示器和显卡,网吧的电脑可能不需要硬盘等。正因为这样的设计,ET框架可以将所有的服务器组件都挂在一个服务器进程上,那么这个服务器进程就有了所有服务器的功能,一个进程就可以作为整组分布式服务器使用。这也类似电脑,台式机有所有的电脑组件,那它也完全可以当作公司服务器使用,也可以当作网吧电脑。  
-### 2.随意可拆分功能的分布式服务端,1变N  
-分布式服务端要开发多种类型的服务器进程,比如Login server,gate server,battle server,chat server friend server等等一大堆各种server,传统开发方式需要预先知道当前的功能要放在哪个服务器上,当功能越来越多的时候,比如聊天功能之前在一个中心服务器上,之后需要拆出来单独做成一个服务器,这时会牵扯到大量迁移代码的工作,烦不胜烦。ET框架在平常开发的时候根本不太需要关心当前开发的这个功能会放在什么server上,只用一个进程进行开发,功能开发成组件的形式。发布的时候使用一份多进程的配置即可发布成多进程的形式,是不是很方便呢?随便你怎么拆分服务器。只需要修改极少的代码就可以进行拆分。不同的server挂上不同的组件就行了嘛!  
-### 3.跨平台的分布式服务端  
-ET框架使用C#做服务端,现在C#是完全可以跨平台的,在linux上安装mono,即可,不需要修改任何代码,就能跑起来。性能方面,因为.net已经开源,mono已经被微软收购,现在mono的性能很强,测试了,只比windows慢一点点,比lua,python什么快的多了。做游戏服务端完全不在话下。平常我们开发的时候用VS在windows上开发调试,发布的时候发布到linux上即可。ET框架还提供了一键同步工具,打开unity->tools->rsync同步,即可同步代码到linux上,  
+### 1.鍙�敤VS鍗曟�璋冭瘯鐨勫垎甯冨紡鏈嶅姟绔�紝N鍙�1  
+涓€鑸�潵璇达紝鍒嗗竷寮忔湇鍔$�瑕佸惎鍔ㄥ緢澶氳繘绋嬶紝涓€鏃﹁繘绋嬪�浜嗭紝鍗曟�璋冭瘯灏卞彉寰楅潪甯稿洶闅撅紝瀵艰嚧鏈嶅姟绔�紑鍙戝熀鏈�笂闈犳墦log鏉ユ煡鎵鹃棶棰樸€傚钩甯稿紑鍙戞父鎴忛€昏緫涔熷緱寮€鍚�竴澶у爢杩涚▼锛屼笉浠呭惎鍔ㄦ參锛岃€屼笖鏌ユ壘闂��鍙婂叾涓嶆柟渚匡紝瑕佸湪涓€鍫嗗爢鏃ュ織閲岄潰鏌ラ棶棰橈紝杩欐劅瑙夐潪甯哥碂绯曪紝杩欎箞澶氬勾涔熸病浜鸿В鍐宠繖涓�棶棰樸€侲T妗嗘灦浣跨敤浜嗙被浼煎畧鏈涘厛閿嬬殑缁勪欢璁捐�锛屾墍鏈夋湇鍔$�鍐呭�閮芥媶鎴愪簡涓€涓�釜缁勪欢锛屽惎鍔ㄦ椂鏍规嵁鏈嶅姟鍣ㄧ被鍨嬫寕杞借嚜宸辨墍闇€瑕佺殑缁勪欢銆傝繖鏈夌偣绫讳技鐢佃剳锛岀數鑴戦兘妯″潡鍖栫殑鎷嗘垚浜嗗唴瀛橈紝CPU锛屼富鏉跨瓑绛夐浂浠讹紝鎼�厤涓嶅悓鐨勯浂浠跺氨鑳界粍瑁呮垚涓€鍙颁笉鍚岀殑鐢佃剳锛屼緥濡傚�鐢ㄥ彴寮忔満闇€瑕佸唴瀛橈紝CPU锛屼富鏉匡紝鏄惧崱锛屾樉绀哄櫒锛岀‖鐩樸€傝€屽叕鍙哥敤鐨勬湇鍔″櫒鍗翠笉闇€瑕佹樉绀哄櫒鍜屾樉鍗★紝缃戝惂鐨勭數鑴戝彲鑳戒笉闇€瑕佺‖鐩樼瓑銆傛�鍥犱负杩欐牱鐨勮�璁★紝ET妗嗘灦鍙�互灏嗘墍鏈夌殑鏈嶅姟鍣ㄧ粍浠堕兘鎸傚湪涓€涓�湇鍔″櫒杩涚▼涓婏紝閭d箞杩欎釜鏈嶅姟鍣ㄨ繘绋嬪氨鏈変簡鎵€鏈夋湇鍔″櫒鐨勫姛鑳斤紝涓€涓�繘绋嬪氨鍙�互浣滀负鏁寸粍鍒嗗竷寮忔湇鍔″櫒浣跨敤銆傝繖涔熺被浼肩數鑴戯紝鍙板紡鏈烘湁鎵€鏈夌殑鐢佃剳缁勪欢锛岄偅瀹冧篃瀹屽叏鍙�互褰撲綔鍏�徃鏈嶅姟鍣ㄤ娇鐢�紝涔熷彲浠ュ綋浣滅綉鍚х數鑴戙€�  
+### 2.闅忔剰鍙�媶鍒嗗姛鑳界殑鍒嗗竷寮忔湇鍔$�锛�1鍙楴  
+鍒嗗竷寮忔湇鍔$�瑕佸紑鍙戝�绉嶇被鍨嬬殑鏈嶅姟鍣ㄨ繘绋嬶紝姣斿�Login server锛実ate server锛宐attle server锛宑hat server friend server绛夌瓑涓€澶у爢鍚勭�server锛屼紶缁熷紑鍙戞柟寮忛渶瑕侀�鍏堢煡閬撳綋鍓嶇殑鍔熻兘瑕佹斁鍦ㄥ摢涓�湇鍔″櫒涓婏紝褰撳姛鑳借秺鏉ヨ秺澶氱殑鏃跺€欙紝姣斿�鑱婂ぉ鍔熻兘涔嬪墠鍦ㄤ竴涓�腑蹇冩湇鍔″櫒涓婏紝涔嬪悗闇€瑕佹媶鍑烘潵鍗曠嫭鍋氭垚涓€涓�湇鍔″櫒锛岃繖鏃朵細鐗垫壇鍒板ぇ閲忚縼绉讳唬鐮佺殑宸ヤ綔锛岀儲涓嶈儨鐑︺€侲T妗嗘灦鍦ㄥ钩甯稿紑鍙戠殑鏃跺€欐牴鏈�笉澶�渶瑕佸叧蹇冨綋鍓嶅紑鍙戠殑杩欎釜鍔熻兘浼氭斁鍦ㄤ粈涔坰erver涓婏紝鍙�敤涓€涓�繘绋嬭繘琛屽紑鍙戯紝鍔熻兘寮€鍙戞垚缁勪欢鐨勫舰寮忋€傚彂甯冪殑鏃跺€欎娇鐢ㄤ竴浠藉�杩涚▼鐨勯厤缃�嵆鍙�彂甯冩垚澶氳繘绋嬬殑褰㈠紡锛屾槸涓嶆槸寰堟柟渚垮憿锛熼殢渚夸綘鎬庝箞鎷嗗垎鏈嶅姟鍣ㄣ€傚彧闇€瑕佷慨鏀规瀬灏戠殑浠g爜灏卞彲浠ヨ繘琛屾媶鍒嗐€備笉鍚岀殑server鎸備笂涓嶅悓鐨勭粍浠跺氨琛屼簡鍢涳紒  
+### 3.璺ㄥ钩鍙扮殑鍒嗗竷寮忔湇鍔$�  
+ET妗嗘灦浣跨敤C#鍋氭湇鍔$�锛岀幇鍦–#鏄�畬鍏ㄥ彲浠ヨ法骞冲彴鐨勶紝鍦╨inux涓婂畨瑁卪ono锛屽嵆鍙�紝涓嶉渶瑕佷慨鏀逛换浣曚唬鐮侊紝灏辫兘璺戣捣鏉ャ€傛€ц兘鏂归潰锛屽洜涓�.net宸茬粡寮€婧愶紝mono宸茬粡琚�井杞�敹璐�紝鐜板湪mono鐨勬€ц兘寰堝己锛屾祴璇曚簡锛屽彧姣攚indows鎱�竴鐐圭偣锛屾瘮lua锛宲ython浠€涔堝揩鐨勫�浜嗐€傚仛娓告垙鏈嶅姟绔�畬鍏ㄤ笉鍦ㄨ瘽涓嬨€傚钩甯告垜浠�紑鍙戠殑鏃跺€欑敤VS鍦╳indows涓婂紑鍙戣皟璇曪紝鍙戝竷鐨勬椂鍊欏彂甯冨埌linux涓婂嵆鍙�€侲T妗嗘灦杩樻彁渚涗簡涓€閿�悓姝ュ伐鍏凤紝鎵撳紑unity->tools->rsync鍚屾�锛屽嵆鍙�悓姝ヤ唬鐮佸埌linux涓婏紝  
 ```bash
 ./Run.sh Config/StartConfig/192.168.12.188.txt 
 ```
-即可编译启动服务器。  
-### 4.提供协程支持  
-C#天生支持异步变同步语法 async和await,比lua,python的协程强大的多,新版python以及javascript语言甚至照搬了C#的协程语法。分布式服务端大量服务器之间的远程调用,没有异步语法的支持,开发将非常麻烦。所以java没有异步语法,做单服还行,不适合做大型分布式游戏服务端。例如:  
+鍗冲彲缂栬瘧鍚�姩鏈嶅姟鍣ㄣ€�  
+### 4.鎻愪緵鍗忕▼鏀�寔  
+C#澶╃敓鏀�寔寮傛�鍙樺悓姝ヨ�娉� async鍜宎wait锛屾瘮lua锛宲ython鐨勫崗绋嬪己澶х殑澶氾紝鏂扮増python浠ュ強javascript璇�█鐢氳嚦鐓ф惉浜咰#鐨勫崗绋嬭�娉曘€傚垎甯冨紡鏈嶅姟绔�ぇ閲忔湇鍔″櫒涔嬮棿鐨勮繙绋嬭皟鐢�紝娌℃湁寮傛�璇�硶鐨勬敮鎸侊紝寮€鍙戝皢闈炲父楹荤儲銆傛墍浠�ava娌℃湁寮傛�璇�硶锛屽仛鍗曟湇杩樿�锛屼笉閫傚悎鍋氬ぇ鍨嬪垎甯冨紡娓告垙鏈嶅姟绔�€備緥濡傦細  
 
 ```c#
-// 发送C2R_Ping并且等待响应消息R2C_Ping
+// 鍙戦€丆2R_Ping骞朵笖绛夊緟鍝嶅簲娑堟伅R2C_Ping
 R2C_Ping pong = await session.Call<R2C_Ping>(new C2R_Ping());
-Log.Debug("收到R2C_Ping");
+Log.Debug("鏀跺埌R2C_Ping");
 
-// 向mongodb查询一个id为1的Player,并且等待返回
+// 鍚憁ongodb鏌ヨ�涓€涓猧d涓�1鐨凱layer锛屽苟涓旂瓑寰呰繑鍥�
 Player player = await Game.Scene.GetComponent<DBProxyComponent>().Query<Player>(1);
-Log.Debug($"打印player name: {player.Name}")
+Log.Debug($"鎵撳嵃player name: {player.Name}")
 ```
-可以看出,有了async await,所有的服务器间的异步操作将变得非常连贯,不用再拆成多段逻辑。大大简化了分布式服务器开发  
-### 5.提供类似erlang的actor消息机制  
-erlang语言一大优势就是位置透明的消息机制,用户完全不用关心对象在哪个进程,拿到id就可以对对象发送消息。ET框架也提供了actor消息机制,实体对象只需要挂上ActorComponent组件,这个实体对象就成了一个Actor,任何服务器只需要知道这个实体对象的id就可以向其发送消息,完全不用关心这个实体对象在哪个server,在哪台物理机器上。其实现原理也很简单,ET框架提供了一个位置服务器,所有挂载ActorComoponet的实体对象都会将自己的id跟位置注册到这个位置服务器,其它服务器向这个实体对象发送消息的时候如果不知道这个实体对象的位置,会先去位置服务器查询,查询到位置再进行发送。
-### 6.提供服务器不停服动态更新逻辑功能  
-热更是游戏服务器不可缺少的功能,ET框架使用的组件设计,可以做成守望先锋的设计,组件只有成员,无方法,将所有方法做成扩展方法放到热更dll中,运行时重新加载dll即可热更所有逻辑。
-### 7.客户端热更新一键切换  
-因为ios的限制,之前unity热更新一般使用lua,导致unity3d开发人员要写两种代码,麻烦的要死。之后幸好出了ILRuntime库,利用ILRuntime库,unity3d可以利用C#语言加载热更新dll进行热更新。ILRuntime一个缺陷就是开发时候不支持VS debug,这有点不爽。ET框架使用了一个预编译指令ILRuntime,可以无缝切换。平常开发的时候不使用ILRuntime,而是使用Assembly.Load加载热更新动态库,这样可以方便用VS单步调试。在发布的时候,定义预编译指令ILRuntime就可以无缝切换成使用ILRuntime加载热更新动态库。这样开发起来及其方便,再也不用使用狗屎lua了
-### 8.客户端服务端用同一种语言,并且共享代码  
-下载ET框架,打开服务端工程,可以看到服务端引用了客户端很多代码,通过引用客户端代码的方式实现了双端共享代码。例如客户端服务端之间的网络消息两边完全共用一个文件即可,添加一个消息只需要修改一遍。  
-### 9.UDP TCP协议无缝切换  
-ET框架不但支持TCP,而且支持可靠的UDP协议,UDP支持是封装了ENet库,ENet也是英雄联盟所使用的网络库,其特点是快速,并且网络丢包的情况下性能也非常好,这个我们做过测试TCP在丢包5%的情况下,moba游戏就卡的不行了,但是使用ENet,丢包20%仍然不会感到卡。非常强大。  
+鍙�互鐪嬪嚭锛屾湁浜哸sync await锛屾墍鏈夌殑鏈嶅姟鍣ㄩ棿鐨勫紓姝ユ搷浣滃皢鍙樺緱闈炲父杩炶疮锛屼笉鐢ㄥ啀鎷嗘垚澶氭�閫昏緫銆傚ぇ澶х畝鍖栦簡鍒嗗竷寮忔湇鍔″櫒寮€鍙�  
+### 5.鎻愪緵绫讳技erlang鐨刟ctor娑堟伅鏈哄埗  
+erlang璇�█涓€澶т紭鍔垮氨鏄�綅缃�€忔槑鐨勬秷鎭�満鍒讹紝鐢ㄦ埛瀹屽叏涓嶇敤鍏冲績瀵硅薄鍦ㄥ摢涓�繘绋嬶紝鎷垮埌id灏卞彲浠ュ�瀵硅薄鍙戦€佹秷鎭�€侲T妗嗘灦涔熸彁渚涗簡actor娑堟伅鏈哄埗锛屽疄浣撳�璞″彧闇€瑕佹寕涓夾ctorComponent缁勪欢锛岃繖涓�疄浣撳�璞″氨鎴愪簡涓€涓狝ctor锛屼换浣曟湇鍔″櫒鍙�渶瑕佺煡閬撹繖涓�疄浣撳�璞$殑id灏卞彲浠ュ悜鍏跺彂閫佹秷鎭�紝瀹屽叏涓嶇敤鍏冲績杩欎釜瀹炰綋瀵硅薄鍦ㄥ摢涓猻erver锛屽湪鍝�彴鐗╃悊鏈哄櫒涓娿€傚叾瀹炵幇鍘熺悊涔熷緢绠€鍗曪紝ET妗嗘灦鎻愪緵浜嗕竴涓�綅缃�湇鍔″櫒锛屾墍鏈夋寕杞紸ctorComoponet鐨勫疄浣撳�璞¢兘浼氬皢鑷�繁鐨刬d璺熶綅缃�敞鍐屽埌杩欎釜浣嶇疆鏈嶅姟鍣�紝鍏跺畠鏈嶅姟鍣ㄥ悜杩欎釜瀹炰綋瀵硅薄鍙戦€佹秷鎭�殑鏃跺€欏�鏋滀笉鐭ラ亾杩欎釜瀹炰綋瀵硅薄鐨勪綅缃�紝浼氬厛鍘讳綅缃�湇鍔″櫒鏌ヨ�锛屾煡璇㈠埌浣嶇疆鍐嶈繘琛屽彂閫併€�
+### 6.鎻愪緵鏈嶅姟鍣ㄤ笉鍋滄湇鍔ㄦ€佹洿鏂伴€昏緫鍔熻兘  
+鐑�洿鏄�父鎴忔湇鍔″櫒涓嶅彲缂哄皯鐨勫姛鑳斤紝ET妗嗘灦浣跨敤鐨勭粍浠惰�璁★紝鍙�互鍋氭垚瀹堟湜鍏堥攱鐨勮�璁★紝缁勪欢鍙�湁鎴愬憳锛屾棤鏂规硶锛屽皢鎵€鏈夋柟娉曞仛鎴愭墿灞曟柟娉曟斁鍒扮儹鏇磀ll涓�紝杩愯�鏃堕噸鏂板姞杞絛ll鍗冲彲鐑�洿鎵€鏈夐€昏緫銆�
+### 7.瀹㈡埛绔�儹鏇存柊涓€閿�垏鎹�  
+鍥犱负ios鐨勯檺鍒讹紝涔嬪墠unity鐑�洿鏂颁竴鑸�娇鐢╨ua锛屽�鑷磚nity3d寮€鍙戜汉鍛樿�鍐欎袱绉嶄唬鐮侊紝楹荤儲鐨勮�姝汇€備箣鍚庡垢濂藉嚭浜咺LRuntime搴擄紝鍒╃敤ILRuntime搴擄紝unity3d鍙�互鍒╃敤C#璇�█鍔犺浇鐑�洿鏂癲ll杩涜�鐑�洿鏂般€侷LRuntime涓€涓�己闄峰氨鏄�紑鍙戞椂鍊欎笉鏀�寔VS debug锛岃繖鏈夌偣涓嶇埥銆侲T妗嗘灦浣跨敤浜嗕竴涓��缂栬瘧鎸囦护ILRuntime锛屽彲浠ユ棤缂濆垏鎹€€傚钩甯稿紑鍙戠殑鏃跺€欎笉浣跨敤ILRuntime锛岃€屾槸浣跨敤Assembly.Load鍔犺浇鐑�洿鏂板姩鎬佸簱锛岃繖鏍峰彲浠ユ柟渚跨敤VS鍗曟�璋冭瘯銆傚湪鍙戝竷鐨勬椂鍊欙紝瀹氫箟棰勭紪璇戞寚浠�LRuntime灏卞彲浠ユ棤缂濆垏鎹㈡垚浣跨敤ILRuntime鍔犺浇鐑�洿鏂板姩鎬佸簱銆傝繖鏍峰紑鍙戣捣鏉ュ強鍏舵柟渚匡紝鍐嶄篃涓嶇敤浣跨敤鐙楀睅lua浜�
+### 8.瀹㈡埛绔�湇鍔$�鐢ㄥ悓涓€绉嶈�瑷€锛屽苟涓斿叡浜�唬鐮�  
+涓嬭浇ET妗嗘灦锛屾墦寮€鏈嶅姟绔�伐绋嬶紝鍙�互鐪嬪埌鏈嶅姟绔�紩鐢ㄤ簡瀹㈡埛绔�緢澶氫唬鐮侊紝閫氳繃寮曠敤瀹㈡埛绔�唬鐮佺殑鏂瑰紡瀹炵幇浜嗗弻绔�叡浜�唬鐮併€備緥濡傚�鎴风�鏈嶅姟绔�箣闂寸殑缃戠粶娑堟伅涓よ竟瀹屽叏鍏辩敤涓€涓�枃浠跺嵆鍙�紝娣诲姞涓€涓�秷鎭�彧闇€瑕佷慨鏀逛竴閬嶃€�  
+### 9.UDP TCP鍗忚�鏃犵紳鍒囨崲  
+ET妗嗘灦涓嶄絾鏀�寔TCP锛岃€屼笖鏀�寔鍙�潬鐨刄DP鍗忚�锛孶DP鏀�寔鏄�皝瑁呬簡ENet搴擄紝ENet涔熸槸鑻遍泟鑱旂洘鎵€浣跨敤鐨勭綉缁滃簱锛屽叾鐗圭偣鏄�揩閫燂紝骞朵笖缃戠粶涓㈠寘鐨勬儏鍐典笅鎬ц兘涔熼潪甯稿ソ锛岃繖涓�垜浠�仛杩囨祴璇昑CP鍦ㄤ涪鍖�5%鐨勬儏鍐典笅锛宮oba娓告垙灏卞崱鐨勪笉琛屼簡锛屼絾鏄�娇鐢‥Net锛屼涪鍖�20%浠嶇劧涓嶄細鎰熷埌鍗°€傞潪甯稿己澶с€�  
 
-### 10 还有很多很多功能,我就不详细介绍了  
-a.及其方便检查CPU占用和内存泄漏检查,vs自带分析工具,不用再为性能和内存泄漏检查而烦恼  
-b.使用NLog库,打log及其方便,平常开发时,可以将所有服务器log打到一个文件中,再也不用一个个文件搜索log了  
-c.统一使用Mongodb的bson做序列化,消息和配置文件全部都是bson或者json,并且以后使用mongodb做数据库,再也不用做格式转换了。  
-d.提供一个强大的ai行为树工具  
-e.提供一个同步工具  
-f.提供命令行配置工具,配置分布式非常简单  
+### 10 杩樻湁寰堝�寰堝�鍔熻兘锛屾垜灏变笉璇︾粏浠嬬粛浜�  
+a.鍙婂叾鏂逛究妫€鏌�PU鍗犵敤鍜屽唴瀛樻硠婕忔�鏌ワ紝vs鑷�甫鍒嗘瀽宸ュ叿锛屼笉鐢ㄥ啀涓烘€ц兘鍜屽唴瀛樻硠婕忔�鏌ヨ€岀儲鎭�  
+b.浣跨敤NLog搴擄紝鎵搇og鍙婂叾鏂逛究锛屽钩甯稿紑鍙戞椂锛屽彲浠ュ皢鎵€鏈夋湇鍔″櫒log鎵撳埌涓€涓�枃浠朵腑锛屽啀涔熶笉鐢ㄤ竴涓�釜鏂囦欢鎼滅储log浜�  
+c.缁熶竴浣跨敤Mongodb鐨刡son鍋氬簭鍒楀寲锛屾秷鎭�拰閰嶇疆鏂囦欢鍏ㄩ儴閮芥槸bson鎴栬€卝son锛屽苟涓斾互鍚庝娇鐢╩ongodb鍋氭暟鎹�簱锛屽啀涔熶笉鐢ㄥ仛鏍煎紡杞�崲浜嗐€�  
+d.鎻愪緵涓€涓�己澶х殑ai琛屼负鏍戝伐鍏�  
+e.鎻愪緵涓€涓�悓姝ュ伐鍏�  
+f.鎻愪緵鍛戒护琛岄厤缃�伐鍏凤紝閰嶇疆鍒嗗竷寮忛潪甯哥畝鍗�  
 
-ET框架的服务端是一个强大灵活的分布式服务端架构,完全可以满足绝大部分大型游戏需求。使用这套框架,客户端开发者就可以自己完成双端开发,节省大量人力物力,节省大量沟通时间。  
+ET妗嗘灦鐨勬湇鍔$�鏄�竴涓�己澶х伒娲荤殑鍒嗗竷寮忔湇鍔$�鏋舵瀯锛屽畬鍏ㄥ彲浠ユ弧瓒崇粷澶ч儴鍒嗗ぇ鍨嬫父鎴忛渶姹傘€備娇鐢ㄨ繖濂楁�鏋讹紝瀹㈡埛绔�紑鍙戣€呭氨鍙�互鑷�繁瀹屾垚鍙岀�寮€鍙戯紝鑺傜渷澶ч噺浜哄姏鐗╁姏锛岃妭鐪佸ぇ閲忔矡閫氭椂闂淬€�  
 
-使用方法:  
-1.用git clone代码下来,安装Unity 2017.1p5 和VS2017  
-2.vs打开Unity/Unity.sln,编译  
-3.再启动一个vs打开Server/Server.sln,编译  
-4.打开Unity->tools菜单->命令行配置,选择LocalAllServer.txt 这是启动单一App的方式,如果要启动一组多App服务器,在命令行工具中选择127.0.0.1.txt,点击启动即可,具体配置都可以自己用这个命令行配置工具修改  
-5.点击工具中的启动,这样就启动了服务端(也可以用VS启动,方便单步调试)  
-7.运行Unity,输入帐号,点击登录这时日志 连接Gate成功,表示运行OK!  
+浣跨敤鏂规硶锛�  
+1.鐢╣it clone浠g爜涓嬫潵锛屽畨瑁匲nity 2017.1p5 鍜孷S2017  
+2.vs鎵撳紑Unity/Unity.sln,缂栬瘧  
+3.鍐嶅惎鍔ㄤ竴涓獀s鎵撳紑Server/Server.sln锛岀紪璇�  
+4.鎵撳紑Unity->tools鑿滃崟->鍛戒护琛岄厤缃�紝閫夋嫨LocalAllServer.txt 杩欐槸鍚�姩鍗曚竴App鐨勬柟寮忥紝濡傛灉瑕佸惎鍔ㄤ竴缁勫�App鏈嶅姟鍣�紝鍦ㄥ懡浠よ�宸ュ叿涓�€夋嫨127.0.0.1.txt,鐐瑰嚮鍚�姩鍗冲彲锛屽叿浣撻厤缃�兘鍙�互鑷�繁鐢ㄨ繖涓�懡浠よ�閰嶇疆宸ュ叿淇�敼  
+5.鐐瑰嚮宸ュ叿涓�殑鍚�姩锛岃繖鏍峰氨鍚�姩浜嗘湇鍔$�锛堜篃鍙�互鐢╒S鍚�姩锛屾柟渚垮崟姝ヨ皟璇曪級  
+7.杩愯�Unity锛岃緭鍏ュ笎鍙凤紝鐐瑰嚮鐧诲綍杩欐椂鏃ュ織 杩炴帴Gate鎴愬姛锛岃〃绀鸿繍琛孫K锛�  
 
-讨论QQ群 : 474643097  
+__璁ㄨ�QQ缇� : 474643097__