[Firefly引擎][學習筆記二][已完結]卡牌遊戲開發模型的設計

源地址:http://bbs.9miao.com/thread-44603-1-1.htmlphp

在此補充一下Socket的驗證機制:
socket登錄驗證。會採用session會話超時的機制
作心跳接口驗證
保持一個長鏈接
也爲推送消息提供

======這段是一個之前同事給個人JAVA Socket驗證機制的例子===========
socket通訊通常是找不到頭這些的,要自定義封裝通訊消息類
如開源框架netty,消息進出都有自定義加密和選擇性壓縮的
socket不想http同樣能找到某個方法,他就監聽ip的某個端口
經過解析消息類中的主題方法,抽象接口實現的

消息接收:
<ignore_js_op>html


其餘圖就不上了,主要是一個概念的普及
===================================================


前言:
        若是你有仔細分析學習筆記一中的代碼,那麼相信你對python以及Firefly已經有了一個大體的認識,那麼剩餘的不認識的也就不要緊了,官方提供了開發手冊,因此就不逐步深刻出筆記了,該有的,會有人發的。

開始準備工做:
        【目標】
        如今,咱們的目標是一個卡牌遊戲,我選擇了傳統的鬥地主來進行開發。
        
        【開發前的準備】
        任何一款遊戲都會有策劃書的,策劃書咱們就免了,由於鬥地主誰都會,並且也有前輩的開源做品,因此咱們的準備工做是,清楚鬥地主的遊戲規則,和程序的實現方案。
        因而,翻了翻互聯網資料,找到一個參考資料:
        http://blog.csdn.net/cq361106306/article/details/7855582
        
        雖然是JAVA版的,可是原理都是同樣的,函數也差很少同樣的,不同的只是內置函數的寫法和語法規範而已,要看懂確定是沒有問題的

        【服務器架構】
        首先,咱們須要一個LoginServer,這是毋庸置疑的事情
        而後,咱們須要一個遊戲主服務器mainGameServer
        (也許,你會須要一個排行服務器)
        最後,咱們則須要一個聊天服務器chatServer(既然是網遊,沒有聊天系統不等於單機麼?)
        自己這個遊戲不復雜,因此咱們就這樣設定吧。

        【服務器架構圖】
       <ignore_js_op>python



        題外話:不知道你們有沒有作過私服,出名的如傳奇,誅仙,QQ西遊私服。裏面的結構大概也是如此,不說它究竟是有用仍是無用,存在便是合理。這點,在我仍是小白的時候就深覺得然,之前老聽人家說GS報錯,GS未啓動,感受好牛X好高端的樣子,後來漸漸明白,其實就是GameServer。 

        好了,言歸正傳,既然架構圖有了,遊戲方案也有了,那麼下一步就是數據建模了,數據結構必定要作好,由於這跟你服務器的性能和擴展息息相關。
        在這裏我用的工具是PowerDesigner這款軟件進行建模,方便又實用,易管理,易查詢 
        首先咱們肯定幾個核心的表
        User
        -----userMain   用戶主表,存放用戶帳號,密碼,餘額等重要信息  表類型:InnoDB,這麼重要的表,你確定要支持事務回滾來着。
        -----userBase        用戶基礎表,存放一些只作查詢用的字段,如頭像,我的簡介
        Log
        -----loginLog        用戶登錄日誌
        -----actionLog        用戶操做日誌
        -----rfloat                用戶資金流水
        -----gameLog        遊戲記錄日誌
        Main //暫時只有兩個,由於業務邏輯暫時不忙管,只管遊戲
        -----sysMsg        系統消息表
        -----        userMsg        用戶消息表//暫時棄用,由於還不涉及到用戶短信,至於爲何要和系統消息分開,是由於消息表數據龐大
        ============================持續更新============================
        度過了一個愉快的週末,繼續更新
        貼上數據模型的代碼以及數據庫模型文件
       <ignore_js_op>mysql

<ignore_js_op>sql

<ignore_js_op>數據庫


       

遊客,若是您要查看本帖隱藏內容請 回覆


        
        庫建設完畢,如今開始一些基本模塊的封裝,在這裏說一點,不是全部的模塊都須要封裝,看需求和維護而定,我我的須要封裝是由於我封裝後能讓我開發效率提升,每一個人狀況不同,底子也不同,根據自身狀況來。
        
        在這裏我把每一個模塊及其包含的內容列出來(持續更新):
       服務器

模塊名 方法名 方法說明
用戶基礎模塊
userModel
userLogin 用於用戶登錄時的方法
regUser 註冊用戶的方法
loginCheck 檢查用戶登錄狀態的方法
heartCheck 用戶心跳檢測的方法
fundsCheck 檢查資金是否異常的方法
loginUpdate 登錄時更新用戶登錄記錄並寫日誌的方法
sendSysMsg 發送系統消息的方法
sendUserMsg 發送用戶消息的方法
readSysMsg 讀取系統消息並更新狀態的方法
readUserMsg 讀取用戶消息並更新狀態的方法
userTalk 用戶在遊戲中發言的方法
(這裏我考慮是像QQ鬥地主同樣固定發言防止做弊,
仍是不限制用戶發言,我的以爲防做弊好一點)
日誌模塊
logModel
sysLog 系統日誌的方法(保存log日誌的方法)
userLoginLog 用戶寫登錄日誌的方法
userActionLog 用戶寫操做日誌的方法
gameResultLog 遊戲結果日誌的方法
rfloatLog 寫資金流水的方法
遊戲主模塊
gameMainModel
showUserCount 在線用戶統計的方法
pushMessage 推送消息的方法
joinGameQueue 加入遊戲隊列的方法
gameMatching 匹配玩家並生成遊戲空間,隨機用戶順序的方法
shufflingLicensing 洗牌發牌的方法,並整理排序
grabLandlord 搶地主的方法
landlordCards 地主牌分發及公示的方法
showCards 出牌的方法
doubledFunds 炸彈倍數翻倍計算的方法
cardAlarm 報警的方法
settleAccounts 結算並將用戶清除隊列的方法
系統模塊
sysModel
mysqlObject 數據庫模塊,具體方法再也不羅列,這裏採起封裝主從庫
memcacheEx memcached封裝的模塊,用於分佈式集羣


        
        好了,關於學習筆記二卡牌遊戲開發模型的設計就告一段落了,學習筆記三將開始對各個模塊進行逐個封裝。如今模型有了,開發思路就愈加的清晰,當模塊封裝完畢以後,就是服務器端的開發了,咱們一步步走,不一口氣吃成一個胖子,因此,學習筆記三將持續很長一段時間逐個更新,由於畢竟我只有晚上纔有時間去鼓搗,因此耐心等待吧,我沒有已有代碼參考,不能複製粘貼,因此速度會稍微慢一點
        另外,誠請一枚AS攻城獅幫我完成筆記,有意思的聖獸請聯繫我QQ:251920948,跪謝session

相關文章
相關標籤/搜索