通過小寶的卡牌遊戲,看開源SCUT服務器運行使用

這幾天在看小寶更新的bolg,小寶的通信底層寫的真不錯,爲什麼前面寫了kbe,firefly的用法,這裏又說scut,其實就服務器方面用這些或者網易的柚子,甚至雲峯的那個3000行代碼的工具功能都差不多,不過,scut有個好處就是提供很完善的代碼生成系統,服務端,客戶端腳本開發更方便,另外scut已經有幾款商業遊戲上線,這個是kbe不具備的,firefly本身來源於一款韓國外包的商業遊戲,但發佈了這麼久,人氣並不是很高,所以讓我們看看scut有哪些優點吧,我們先下載安裝,很簡單隻要直接雙擊安裝就可以了,scut官網教程大篇幅都在講安裝iis和net4.51框架,其實如果不是開發服務器端(就算開發也不一定需要安裝,因爲替代工具還是有的,不過不能使用官方的代碼生成工具了,所以開發的話還是裝吧,也不難,如果就想測試asp.net程序,那麼可以下載我的整合的集成工具包,下載地址),我這裏只是拿個例子運行起來,所以就沒安裝,這個工具包運行網頁還行,如果是開發的話,還是用iis吧

安裝完之後我們啓動RedisRedis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關係數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。[1] 
Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹複製。存盤可以有意無意的對數據進行寫操作。由於完全實現了發佈/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道並接收主服務器完整的消息發佈記錄。同步對讀取操作的可擴展性和數據冗餘很有幫助。
跟firefly不同的是,scut使用的內存存儲系統是redis,不過功能上是一樣的,我們不多管,啓動數據庫,,我們的zerver沒有變綠,怎麼回事呢?因爲zerver集成了redis32位,而我們要使用的是64位所以,我們要先啓動scut提供的x64版本,如果先啓動zerver會出錯,當然如果不是使用zerver的請忽視,直接安裝mysql的不需要考慮這些問題。安裝一個mysql客戶端工具,我這裏是用的navicat當然zerver自帶的phpmyadmin也一樣的效果,不過速度要慢點
我們下載scut開發工具
源碼包(官網提供下載),我在網上看過一些小夥伴說安裝了scut不能運行官方例子,很多其實就是因爲安裝包裏沒有提供這個數據庫,我們要在例外的地方下載,直接導入importdb.sql,導入之後這樣
我們看官網的例子庫都在這裏,我們現在要連接數據庫,打開配置文件
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <!--基本配置
        Port:監聽端口
        Code:產品代碼
        ServerId:產品遊服代碼
        Redis.Host:Redis主機地址
        Redis.Port:Redis主機端口
        Redis.Password:密碼
        Redis.Db:數據庫位置
    -->
    <add key="Product.Code" value="0"/>
    <add key="Product.ServerId" value="0"/>
    <add key="Game.Port" value="9001"/>
    <add key="Redis.Host" value="127.0.0.1:6379"/>
    <add key="ScriptRelativePath" value="Script"/>
    <add key="CSharpRootPath" value="CsScript"/>
    <add key="LuaRootPath" value="LuaScript"/>
    <add key="Game.Language.TypeName" value="GameServer.CsScript.Locale.SimplifiedLanguage"/>
    <add key="Game.Action.Script.TypeName" value="GameServer.CsScript.Action.Action{0}"/>
    <add key="Script_IsDebug" value="True"/>
    <add key="Lua_Disable" value="True"/>
    
    <!--腳本解密回調配置-->
    <!--<add key="Game.Script.DecodeFunc.TypeName" value="ScutSecurity.ScriptDes,ScutSecurity"/>-->
  </appSettings>
  <connectionStrings>
    <!--<add name="SnsCenter" providerName="SqlDataProvider" connectionString="Data Source=localhost;Database=snscenter;Uid=sa;Pwd=123;Pooling=true;"/>
    <add name="PayCenter" providerName="SqlDataProvider" connectionString="Data Source=localhost;Database=PayDB;Uid=sa;Pwd=123;Pooling=true;"/>
    <add name="ConnData" providerName="SqlDataProvider" connectionString="Data Source=localhost;Database=PHData;Uid=game_user;Pwd=123;"/>-->

    <add name="KaPaiData" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=KaPaiData;Uid=root;Pwd=111111;"/>
    <add name="KaPaiConfig" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=KaPaiConfig;Uid=root;Pwd=111111;"/>
    <add name="KaPaiLog" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=KaPaiLog;Uid=root;Pwd=111111;"/>
    
    <add name="SnsCenter" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=snscenter;Uid=root;Pwd=111111;"/>
    <add name="PayCenter" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=PayDB;Uid=root;Pwd=111111;"/>
    <add name="ConnData" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=PHData;Uid=root;Pwd=111111;"/>
  </connectionStrings>
</configuration>
 <add name="SnsCenter" providerName="MySqlDataProvider" connectionString="Data Source=localhost;Database=snscenter;Uid=root;Pwd=111111;"/>連接數據庫,我們需要改的,add name="SnsCenter" ,Database=snscenter;Uid=root;Pwd=111111;數據庫名稱,用戶名,密碼,Source=localhost本地的,好了,我們使用小寶卡牌來看效果
好了服務器啓動成功了,對了忘了說了,我們運行服務器之前要把我們要運行遊戲的服務器端腳本放到這個例子相關的東西,比如如何開發,使用去小寶的博客看吧,小寶還錄了免費視頻教程,好人啊。百度一下就有了,我們啓動客戶端看效果載入直接運行
因爲我們已經註冊了用戶,直接點開始遊戲
我們看下服務器窗口好了,scut的基本講解就到這了。
發佈了66 篇原創文章 · 獲贊 57 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章