Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4970319
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2012-10-28 21:56:44

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

 

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

 

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

 

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

源码概况

 

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

 

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

 

启动服务器

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

  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出现,那些都是作者用于对服务器进行控制预留的,不用理会。

  1. $> erl -make

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

  1. erl > schema:install().
  2. erl > server:start("127.0.0.1", 8002)

 

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

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


文章来自:http://hpyhacking.iteye.com/blog/1166481

阅读(1885) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~