openpoker开源项目 源代码解析
来源:互联网 发布:网络主播用英语 编辑:程序博客网 时间:2024/06/18 12:05
转载:http://hpyhacking.iteye.com/blog/1166481
最近主攻erlang编程,erlang在处理网络并发可谓具有语言上的天赋,而这恰恰能帮我解决很多游戏服务器中的问题,想必每一个接触过erlang的人都看过《轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》,看完之后总有中跃跃欲试的冲动~ 这篇文章距今已经很久远了,但其中所描述的设计还是很实用的,erlang与game的结合这是一个非常好的参考资料,从对erlang的基础学习转变为研习源代码了。
这是一个系列文章,我会将从 openpoker 中所看所学所想记录下来,以便后续深入并参考~
有关openpoker项目的介绍,可以参考上文链接的文章,但那篇文章年代久远,作者早就悄无声息的更新了项目,文章中讲到的一些概念在新代码中没了踪影,看完了起个参考作用就成了,还是追着这个系列一点点的来看吧~
这个项目被作者放到了github上,一直有更新,但作者将开源协议变成了禁止商用。猛击此处你可以找到项目最新的源代码~
源码概况
首先看一下项目的目录结构,还是比较标准的erlang项目,doc目录有协议说明以及安装说明,src目录存放所有的源代码,我们首先要做的就是先大概看一下所有源代码~
光看源代码的名字就知道server.erl这个文件不简单,非常重要,另外要想理解这个项目exch.erl与game.erl还有g.erl这三个文件的组合也是理解的要点。
启动服务器
作者将Emakefile放到了src目录,个人感觉很不舒服,将此文件放到了项目根目录,并重写了此文件
- {'src/limit',[debug_info, {outdir, "ebin"}]}.
- {'src/exch',[debug_info, {outdir, "ebin"}]}.
- {'src/*',[debug_info, {outdir, "ebin"}]}.
这就是erlang的make文件,会根据源文件的日期进行比较进行编译,首先要理解为什么先编译 limit和exch两个模块,因为这是作者实现的两个自定义OTP模块,可以理解为OO语言中的Interface,后续的编译需要用到这两个模块。
不出意外在项目的根目录执行下列名就可以顺利编译项目了, 其中会有一些未使用的方法Warnning出现,那些都是作者用于对服务器进行控制预留的,不用理会。
- $> erl -make
编译成功开始运行服务器,注意编译成功后一定要将目录切换到ebin目录中
- $> erl -sname test
启动后按照doc/install中的说明需要先初始化数据库表,随后即可启动服务器
- erl > schema:install().
- erl > server:start("127.0.0.1", 8002)
至此一个扑克游戏的服务器以及运行起来了,客户端与8002端口通信即可。
首篇先到这里,之后我会更多的涉及对源码的思考与分析~
- openpoker开源项目 源代码解析
- openpoker开源项目 源代码解析
- openpoker 项目解析 1-简介
- openpoker 项目解析 2-功能模块清单
- openpoker 项目解析 3-整体分析
- openpoker 项目解析 4-开始游戏
- (Android 开源项目 android pn) Android pn源代码解析
- Java开源笔记:Spring源代码解析
- 开源Registry项目Harbor源代码结构解析
- Harbor Registry项目源代码结构解析
- 开源Registry项目Harbor源代码结构解析
- 开源项目源代码阅读方法
- 开源项目源代码阅读方法
- android: 大量开源项目源代码分享
- Android开源项目源代码分享
- android: 大量开源项目源代码分享
- 阅读开源项目源代码的方法
- swift源代码兼容开源项目清单
- 实现自定义消息对话框控件MsgBox简介
- /proc/vmstat
- HTML中的分组标签
- 菜鸟学堂 -【Java 导出Javadoc】
- Android界面开发推荐颜色
- openpoker开源项目 源代码解析
- Sergey Brin在Google+发文 为数天前言论进行解释
- memcpy与memmove的实现
- ELisp编程八:条件语句
- VB.NET Shell
- javascript自定义对象
- 爱因斯坦迷题
- AndroidTesting: Mock Context
- IE6与IE7 8下iframe滚动条问题