openpoker开源项目 源代码解析

来源:互联网 发布:比特币算法漏洞 编辑:程序博客网 时间:2024/06/11 04:21

http://hpyhacking.iteye.com/blog/1166481

https://github.com/hpyhacking/openpoker -- 源码

最近主攻erlang编程,erlang在处理网络并发可谓具有语言上的天赋,而这恰恰能帮我解决很多游戏服务器中的问题,想必每一个接触过erlang的人都看过轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》,看完之后总有中跃跃欲试的冲动~ 这篇文章距今已经很久远了,但其中所描述的设计还是很实用的,erlang与game的结合这是一个非常好的参考资料,从对erlang的基础学习转变为研习源代码了。

 

这是一个系列文章,我会将从 openpoker 中所看所学所想记录下来,以便后续深入并参考~

 

有关openpoker项目的介绍,可以参考上文链接的文章,但那篇文章年代久远,作者早就悄无声息的更新了项目,文章中讲到的一些概念在新代码中没了踪影,看完了起个参考作用就成了,还是追着这个系列一点点的来看吧~

 

这个项目被作者放到了github上,一直有更新,但作者将开源协议变成了禁止商用。猛击此处你可以找到项目最新的源代码~

 

源码概况

 

首先看一下项目的目录结构,还是比较标准的erlang项目,doc目录有协议说明以及安装说明,src目录存放所有的源代码,我们首先要做的就是先大概看一下所有源代码~ 

 

光看源代码的名字就知道server.erl这个文件不简单,非常重要,另外要想理解这个项目exch.erl与game.erl还有g.erl这三个文件的组合也是理解的要点。

 

启动服务器

 

作者将Emakefile放到了src目录,个人感觉很不舒服,将此文件放到了项目根目录,并重写了此文件

 

 

Erlang代码  收藏代码
  1. {'src/limit',[debug_info, {outdir, "ebin"}]}.  
  2. {'src/exch',[debug_info, {outdir, "ebin"}]}.  
  3. {'src/*',[debug_info, {outdir, "ebin"}]}.  

 

 

这就是erlang的make文件,会根据源文件的日期进行比较进行编译,首先要理解为什么先编译 limit和exch两个模块,因为这是作者实现的两个自定义OTP模块,可以理解为OO语言中的Interface,后续的编译需要用到这两个模块。

 

不出意外在项目的根目录执行下列名就可以顺利编译项目了, 其中会有一些未使用的方法Warnning出现,那些都是作者用于对服务器进行控制预留的,不用理会。

 

 

Bash代码  收藏代码
  1. $> erl -make  

 

 

编译成功开始运行服务器,注意编译成功后一定要将目录切换到ebin目录中

 

 

Bash代码  收藏代码
  1. $> erl -sname test  

 

 

启动后按照doc/install中的说明需要先初始化数据库表,随后即可启动服务器

 

 

Erlang代码  收藏代码
  1. erl > schema:install().  
  2. erl > server:start("127.0.0.1"8002)  

 

 

至此一个扑克游戏的服务器以及运行起来了,客户端与8002端口通信即可。

 

首篇先到这里,之后我会更多的涉及对源码的思考与分析~