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源码文件清单的说明。主要是对文件和文件功能进行了说明,正在整理模块调度关系,持续更新中...
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLiJzMjBDM1cTY5kjZlFGNhFWNzQzMjZjYzIDNyY2YxUWL3AjMyUTM4EzLclDMzEDMy8CX2YTO2kDNvw1ZvxmYvwVbvNmLn9GbiRXauNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.jpg)
负载均衡网关节点工作原理示意图