天天看點

Erlang千萬級使用者遊戲架構(Openpoker)源碼檔案分析清單

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源碼檔案清單的說明。主要是對檔案和檔案功能進行了說明,正在整理子產品排程關系,持續更新中...

Erlang千萬級使用者遊戲架構(Openpoker)源碼檔案分析清單

負載均衡網關節點工作原理示意圖