最近主攻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端口通信即可。
首篇先到这里,之后我会更多的涉及对源码的思考与分析~
分享到:
相关推荐
java开源项目源代码_java开源项目源代码.zip
本工程主要用于 Android 优秀开源项目实现原理解析 的 Demo 代码托管 添加规范 各项目需要新建一个属于自己的文件夹,用于后续上传该开源库使用示例工程代码 该文件夹以开源库名-demo命名,全小写,单词间用-连接...
该项目源代码已经在GitHub上进行了开源,可以供广大开发者参考、学习和使用。 以下是该项目的特点和亮点: 1. 采用uni-app框架开发,同时支持微信小程序、支付宝小程序等多个平台。 2. 前后端分离,采用Vue.js框架...
开源项目源代码_opensource
开源项目源代码阅读笔记_OpenSourceReading
本项目源代码是开源中国针对Android平台开发的应用程序,旨在为用户提供一个互动的、便捷的开源资讯获取和交流平台。通过下载并研究这个源代码,开发者尤其是Android初学者能够深入理解Android应用的开发流程,提升...
【金山开源源代码详解】 金山开源源代码是金山软件公司对外公开的部分软件源代码,旨在促进技术交流与合作,推动技术创新。开源意味着开发者可以查看、使用、修改和分发这些代码,遵循特定的开源许可协议。金山软件...
【C# MES 开源源代码详解】 C# MES(Manufacturing Execution System,制造执行系统)是基于C#编程语言开发的一款开源软件,旨在为企业提供生产流程的实时监控与管理。MES系统通常位于ERP(企业资源规划)系统和...
在Android开发中,开源项目意味着其源代码对公众开放,允许开发者查看、学习、修改甚至分发。这种开放性为开发者提供了深入理解项目设计和实现的机会,有助于提升个人技能,并且可以借鉴优秀的设计模式和最佳实践。...
《深入理解OpenCV:实用计算机视觉项目解析-源代码》是一本专注于OpenCV库的实践教程,涵盖了九个章节的源代码,旨在帮助读者通过实际项目深入理解和掌握计算机视觉技术。OpenCV(开源计算机视觉库)是计算机视觉...
总的来说,eMule源代码的解析不仅是对一个具体项目的剖析,也是对P2P技术和MFC编程的深入研究。通过学习eMule的源代码,开发者可以提升在分布式系统设计、网络协议实现及大型项目管理上的能力。而了解其历史背景和...
在提供的"20个Java开源项目源码下载"压缩包中,包含了多个知名的Java项目,这些项目可以帮助开发者深入理解Java编程、软件架构以及特定领域的最佳实践。以下是这些项目的简要介绍: 1. **ExoPlayer-r2.18.5.zip**:...
开源雷达处理代码是针对雷达信号进行采集、分析和处理的一系列公开源代码,通常由开发者社区维护和更新,旨在提供一个灵活、可扩展的平台,让研究者和工程师能够理解和定制雷达系统的各种功能。这些代码可能包括数据...
**C#中最强大的开源软件源代码——探索SharpDevelop** SharpDevelop是一个专为.NET Framework设计的开源集成开发环境(IDE),它的源代码对于学习C#编程和理解IDE开发有着极高的价值。这个开源项目展示了如何利用C#...
开源项目,即开放源代码的软件项目,是软件开发的一种模式,允许用户自由地查看、使用、修改和分发源代码。这种模式促进了全球开发者之间的协作与创新,孕育出许多著名的软件产品,如Linux操作系统、Apache HTTP...
开源项目OpenDivX源代码包-源码 开源项目OpenDivX源代码包-源码
"免费开源网校系统源代码轻松搭建在线教育平台" 这个标题表明,这是一个关于教育技术(EdTech)领域的项目,特别强调了“免费”和“开源”,意味着用户可以免费获取并拥有对源代码的完全访问权,可以根据自身需求...
iText源代码的版本是2.1.3,这个版本在当时已经非常成熟,被广泛应用于各种项目中。在iText-src-2.1.3.zip压缩包中,主要包含的是Java源代码,供开发者学习和定制。 1. **PDF创建**: iText 可以帮助开发者从头...
开源项目OpenDivX源代码包,内含:encore50src.zip 编码核心decore50src.zip 解码核心DS4050src.zip DirectShow源代码VFW4050src.zip Windows下的视频DLL源代码