最近主攻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命名,全小写,单词间用-连接...
JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器 Java编写的HTML浏览器源代码,一个很...
开源项目源代码是IT行业中一个极其重要且富有价值的学习资源,尤其对于软件开发人员和编程爱好者来说,它们提供了深入理解编程技术、设计模式以及最佳实践的机会。这些代码库通常是免费提供的,鼓励用户自行研究、...
TCNOPEN是一个铁路行业相关的合作伙伴创建的开源的倡议,其目的是建立一些新的或即将出台的铁路标准的关键部分,通常以TCN命名。 TCN(列车通信网络)是IEC(国际电工委员会)第43工作组制定的一系列国际标准(IEC...
本项目源代码是开源中国针对Android平台开发的应用程序,旨在为用户提供一个互动的、便捷的开源资讯获取和交流平台。通过下载并研究这个源代码,开发者尤其是Android初学者能够深入理解Android应用的开发流程,提升...
【金山开源源代码详解】 金山开源源代码是金山软件公司对外公开的部分软件源代码,旨在促进技术交流与合作,推动技术创新。开源意味着开发者可以查看、使用、修改和分发这些代码,遵循特定的开源许可协议。金山软件...
区块链服务器端demo版本开源项目源代码,可供参考,谢谢
Silverlight商业网站开源项目,项目使用Silverlight特性制作商业网站,体现RIA应用的强大和绚丽。 项目为开源项目,可以随意修改和传播。 在线演示地址:...
在Android开发中,开源项目意味着其源代码对公众开放,允许开发者查看、学习、修改甚至分发。这种开放性为开发者提供了深入理解项目设计和实现的机会,有助于提升个人技能,并且可以借鉴优秀的设计模式和最佳实践。...
【C# MES 开源源代码详解】 C# MES(Manufacturing Execution System,制造执行系统)是基于C#编程语言开发的一款开源软件,旨在为企业提供生产流程的实时监控与管理。MES系统通常位于ERP(企业资源规划)系统和...
**C#中最强大的开源软件源代码——探索SharpDevelop** SharpDevelop是一个专为.NET Framework设计的开源集成开发环境(IDE),它的源代码对于学习C#编程和理解IDE开发有着极高的价值。这个开源项目展示了如何利用C#...
"如何阅读源代码,开源项目" 在本文中,我们将讨论如何阅读源代码,通过一个开源项目的例子来进行讲解。阅读源代码是程序员不可或缺的一项技能,无论是为了学习编程方法,还是为了提高自己对大规模源代码的把握能力...
2. 将SVGPP的源代码复制到你的项目文件夹,或者通过CMake构建系统将SVGPP作为子模块引入。 3. 配置项目设置,链接到Boost库(通常包括`boost_system`、`boost_filesystem`等组件)。 4. 引入必要的SVGPP头文件,例如...
"免费开源网校系统源代码轻松搭建在线教育平台" 这个标题表明,这是一个关于教育技术(EdTech)领域的项目,特别强调了“免费”和“开源”,意味着用户可以免费获取并拥有对源代码的完全访问权,可以根据自身需求...
开源项目OpenDivX源代码包-源码 开源项目OpenDivX源代码包-源码
"Java项目开源源码,共111个" 本资源提供了111个Java项目的开源源码,涵盖了各种Java项目类型,包括Web开发、移动应用开发、桌面应用开发等。这些源码可以作为学习Java编程的参考资源,也可以作为实际项目开发的...
Python爬虫开源项目代码是学习和实践Python网络爬虫技术的重要资源。这些开源项目提供了丰富的示例和实践经验,涵盖了各种爬虫技术的应用场景,对于初学者和进阶者都有很大的帮助。下面将详细阐述Python爬虫相关的...
iText源代码的版本是2.1.3,这个版本在当时已经非常成熟,被广泛应用于各种项目中。在iText-src-2.1.3.zip压缩包中,主要包含的是Java源代码,供开发者学习和定制。 1. **PDF创建**: iText 可以帮助开发者从头...
《OR1200开源CPU源代码分析》 在当今的计算机硬件领域,开源硬件项目逐渐受到关注,OR1200开源CPU便是其中之一。它以其开放的设计理念、高效的性能和灵活的应用,吸引了众多硬件爱好者和专业人士进行研究与开发。本...