openpoker源碼 erlang寫的網遊伺服器源碼,openpoker是一個大型多人撲克網遊,内建支援了容錯能力,負載平衡和無限制的規模大小。本文是openpoker源碼檔案功能的一個清單式說明:
子產品名稱
子產品功能說明
備注
ante.erl
僅僅是開始下注的處理,具體的邏輯在betting中
barrier.erl
barrier本意屏障
bb.erl
bot launcher
betting.erl
poker betting logic 下注邏輯處理
bits.erl
位處理相關操作
blinds.erl
處理小盲注,大盲注
bot.erl
ai,gen_server,用來測試,将來應該能夠陪真人玩家來玩
bot.hrl
common.hrl
counter.erl
用于把各種計數器(自增、唯一id)存入mnesia. 目前有3種: 玩家,遊客,game
db.erl
資料庫操作
deal_cards.erl
發牌,其中的private與shared,代表公共牌還是私有牌。這已經是與具體玩法有關的了,而與架構無關。
deck.erl
台面,在其上洗牌
delay.erl
每一局遊戲開始前的倒計時
delayed_exit.erl
遊戲倒計時到正式開始前偷溜走的相關情況處理
dmb.erl
其中mb=multi bots,機器人。dmb指的是distributed multi bots 分布式
dumbo.erl
啞巴機器人
exch.erl
自定義behavior,也是一個gen_server,a stack of game modules:玩家&遊客
fixed_limit.erl
g.erl
game.erl
每一局遊戲,本質上是exch.erl。實作了開始,停止,自動計數,watch the game without joining
game.hrl
遊戲
game_start.erl
遊戲直接開始
game_wait_players.erl
遊戲等待其他玩家到齊後開始
gateway.erl
網關-負載均衡
hand.erl
用來計算牌型,例如:full housr 就是3帶2.
id.erl
固定哈希函數的封裝,用來産生程序id與key的唯一映射關系。目前沒有被引用到。
ircdb.dat.gz
模拟玩家資料
ircdb.erl
ircdb.hrl
lang.erl
多語言處理入口,需要完善,目前隻有英語
limit.erl
各種限制接口,各種limit限制判斷主要在game.erl中調用
login.erl
登入
mb.erl
機器人,用于測試
mbu.erl
no_limit.erl
一局遊戲人數上下限
observer.erl
可以給機器人附加一個觀察者職責,用來監視遊戲活動狀況的
pickle.erl
序列化
player.erl
玩家
pot.erl
貌似是獎池,也就是所有已下的賭注的集合。
pot_limit.erl
獎池中的加注、盲注限制
pp.erl
封包編碼/解碼
pp.hrl
restart.erl
no use
schema.erl
初始化排程
server.erl
主服務程序
showdown.erl
攤牌
stats.erl
資料統計
t.erl
debug
tcp_server.erl
通用的tcp伺服器程式,主要被gateway和server使用,另外也作為用戶端連接配接用
test.erl
測試入口函數
test.hrl
texas.hrl
遊客相關處理機制,下同,可以暫時忽略
tourney.erl
tourney.hrl
tourney_game_start.erl
tourney_wait_players.erl
tourney_wait_timer.erl
util.erl
提供3個公用函數: 1.判斷程序死活;2.初始化“從”資料庫;3. 傳回一個随機的程序組成員程序。
visitor.erl
遊客
以上檔案時對基于erlang開發的分布式可擴充遊戲架構openpoker源碼檔案清單的說明。主要是對檔案和檔案功能進行了說明,正在整理子產品排程關系,持續更新中...
負載均衡網關節點工作原理示意圖