`
hpyhacking
  • 浏览: 17557 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

openpoker开源项目 源代码解析

阅读更多

最近主攻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端口通信即可。

 

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

 

 

分享到:
评论

相关推荐

    Android代码-Android 优秀开源项目实现原理解析

    本工程主要用于 Android 优秀开源项目实现原理解析 的 Demo 代码托管 添加规范 各项目需要新建一个属于自己的文件夹,用于后续上传该开源库使用示例工程代码 该文件夹以开源库名-demo命名,全小写,单词间用-连接...

    trdp open开源项目源代码

    TCNOPEN是一个铁路行业相关的合作伙伴创建的开源的倡议,其目的是建立一些新的或即将出台的铁路标准的关键部分,通常以TCN命名。 TCN(列车通信网络)是IEC(国际电工委员会)第43工作组制定的一系列国际标准(IEC...

    露营基地小程序开源项目源代码

    该项目源代码已经在GitHub上进行了开源,可以供广大开发者参考、学习和使用。 以下是该项目的特点和亮点: 1. 采用uni-app框架开发,同时支持微信小程序、支付宝小程序等多个平台。 2. 前后端分离,采用Vue.js框架...

    开源项目源代码_opensource.zip

    开源项目源代码_opensource

    开源项目源代码阅读笔记_OpenSourceReading.zip

    开源项目源代码阅读笔记_OpenSourceReading

    开源中国项目源代码

    本项目源代码是开源中国针对Android平台开发的应用程序,旨在为用户提供一个互动的、便捷的开源资讯获取和交流平台。通过下载并研究这个源代码,开发者尤其是Android初学者能够深入理解Android应用的开发流程,提升...

    金山开源源代码 金山开源源代码

    【金山开源源代码详解】 金山开源源代码是金山软件公司对外公开的部分软件源代码,旨在促进技术交流与合作,推动技术创新。开源意味着开发者可以查看、使用、修改和分发这些代码,遵循特定的开源许可协议。金山软件...

    C语言嵌入式无人机开源项目源代码(包含详细的设计和说明文档)

    该项目源代码是一个典型的嵌入式无人机项目,包含了无人机硬件控制、传感器数据采集、飞行控制算法实现等多个部分。代码结构清晰,注释丰富,易于阅读和理解。其中,无人机硬件控制部分主要通过微控制器对无人机的...

    区块链服务器端demo版本开源项目源代码

    区块链服务器端demo版本开源项目源代码,可供参考,谢谢

    C# MES_开源源代码

    【C# MES 开源源代码详解】 C# MES(Manufacturing Execution System,制造执行系统)是基于C#编程语言开发的一款开源软件,旨在为企业提供生产流程的实时监控与管理。MES系统通常位于ERP(企业资源规划)系统和...

    android开源项目源码,完整商城项目源码(服务端+客户端)

    在Android开发中,开源项目意味着其源代码对公众开放,允许开发者查看、学习、修改甚至分发。这种开放性为开发者提供了深入理解项目设计和实现的机会,有助于提升个人技能,并且可以借鉴优秀的设计模式和最佳实践。...

    深入理解OpenCV 实用计算机视觉项目解析-源代码

    《深入理解OpenCV:实用计算机视觉项目解析-源代码》是一本专注于OpenCV库的实践教程,涵盖了九个章节的源代码,旨在帮助读者通过实际项目深入理解和掌握计算机视觉技术。OpenCV(开源计算机视觉库)是计算机视觉...

    eMule源代码解析

    总的来说,eMule源代码的解析不仅是对一个具体项目的剖析,也是对P2P技术和MFC编程的深入研究。通过学习eMule的源代码,开发者可以提升在分布式系统设计、网络协议实现及大型项目管理上的能力。而了解其历史背景和...

    开源的HDLC解析程序

    HDLC(High-Level Data Link Control)是一种广泛应用于数据通信系统的帧级协议,它定义了如何在数据链路层上组织和传输数据。...对于C语言的开发者来说,理解源代码并进行定制化开发也是一个很好的实践机会。

    开源雷达处理代码 开源雷达处理代码 开源雷达处理代码

    开源雷达处理代码是针对雷达信号进行采集、分析和处理的一系列公开源代码,通常由开发者社区维护和更新,旨在提供一个灵活、可扩展的平台,让研究者和工程师能够理解和定制雷达系统的各种功能。这些代码可能包括数据...

    C#中最强大的开源软件源代码

    **C#中最强大的开源软件源代码——探索SharpDevelop** SharpDevelop是一个专为.NET Framework设计的开源集成开发环境(IDE),它的源代码对于学习C#编程和理解IDE开发有着极高的价值。这个开源项目展示了如何利用C#...

    C++项目源代码(适合新手练手及参考)

    《C++项目源代码解析与学习指南》 C++是一种强大的、面向对象的编程语言,广泛应用于系统软件、游戏开发、应用软件等多个领域。对于初学者来说,掌握C++不仅能够提升编程技能,还能深入理解计算机工作原理。本项目...

    开源项目的代码汇总(主要是csdn上下载到的)

    开源项目,即开放源代码的软件项目,是软件开发的一种模式,允许用户自由地查看、使用、修改和分发源代码。这种模式促进了全球开发者之间的协作与创新,孕育出许多著名的软件产品,如Linux操作系统、Apache HTTP...

    开源项目OpenDivX源代码包-源码

    开源项目OpenDivX源代码包-源码 开源项目OpenDivX源代码包-源码

Global site tag (gtag.js) - Google Analytics