简单Elixir游戏服务器开篇】的更多相关文章

以前的Elixir游戏服设计系列种种原因没有完成. 后来虽然用Elixir + riak 完成了一个麻将的初始版本,可惜公司也挂了. 现在到新公司,比较空闲,想着像完成一个心愿一样,还是重启下吧(希望不要又烂尾), 改头换面叫简单Elixir游戏服务器系列. 一些说明 0. 没怎么写过博客,也懒得去研究了,说到哪算哪吧,为了自己愉快.所以排版,链接方面可能不好. 1. 游戏是那个简单的“抓木虱”,回头重新整理下介绍 2. 不会涉及到存储 3. 会用elixir 1.5 去完成(因为喜欢新玩意)…
用WebInstaller 安装半天也没下载成功文件. 改成直接下载erlang 和 elixir 预编译包了. 安装很简单,最后设置好环境变量. cmd 执行 elixir -v 最后顺便下载了个git hub windows 客户端,以前都是内网用git. 这回希望能写完这个简单系列,发布代码出去.…
上回介绍了玩法,现在编写了玩法的简单建模. 做到现在感觉目前还没有使用umbrella的必要(也许以后会发现必要吧),model 应用完全可以合并到game_server. 代码还在https://github.com/rubyist1982/simple 上. model 应用新增 simple_poker.ex , 代码不多,做了点简单注释,可以贴下 defmodule SimplePoker do @cards for i <- 1..4, j<- 1..13, do: {i, j} @…
抄以前的,做了点修改. 到目前为止,我们完成了玩家的数据和进程建模,现在介绍游戏玩法. 为什么我们还不做客户端接入.协议指定呢?为什么还没有网关和数据存储呢.在我接手的游戏, 这些通常已经定下来了,我没法改变.在我开始这个系列时,我也常常陷入这些细节而不知所措,感觉不把所有设施搞完备没法写代码. 但其实,这些和游戏服的逻辑关系不大.游戏服的本质就玩家建模.玩法等,有了这些就已经足够跑逻辑,跑测试了: 至于其他则属于外围的.较独立的东西,属于可以稍后考虑的.至于进程注册查找机制,由于它是分布式系统…
有了玩家模型,我们试试让玩家进程跑起来. 需要搞个PlayerSupervisor来负责启动和监控玩家进程. defmodule PlayerSupervisor do use Supervisor def start_link(_opts) do Supervisor.start_link(__MODULE__, :ok, name: __MODULE__) end def init(:ok) do Supervisor.init([PlayerServer], strategy: :simp…
上回说用Registry 做本地注册(跨服可以用syn,只是稍微麻烦点,需要模拟global注册机制,写个封装模块). 修改game_server 项目的mix.exs, 增加应用启动 def application do [ extra_applications: [:logger], mod: {GameServer, []} ] end 修改game_server.ex 实现,如下应用的监控树监管PlayerRegistry进程和PlayerSupervisor.这里可以考虑 :one_f…
删除model.ex 创建玩家模型 player.ex, 简单化,只有唯一标识,昵称,金币,够用了. 选择 map 代表数据,是为了扩展数据结构,方便增加功能.struct也是可以的. add_num 和 cost_num 存粹是为了简化代码 一系列的get/set 是为了操作玩家数据用的(也可以减少代码吧) defmodule Player do def init do %{ id: 0, # 唯一标识 name: "", # 昵称 gold: 0, # 金币 } end def g…
反正是写到哪算哪. 创建umbrella项目 mix new simple_game --umbrella 创建model项目 cd simple_game\apps mix new model 创建 game_server 项目 同样在apps目录下 mix new game_server 最后项目结构如下 我尝试把它发布出去,结果 https://github.com/rubyist1982/simple.git 和我预期的不一样,我初始应该以项目做仓库好点.…
在游戏开发中,我们经常会遇到一些技术难题,而其引发的bug则会影响整个游戏的品质.女性向手游<食物语>就曾遇到过一些开发上的难题,腾讯游戏学院专家团Wade.Zc.Jovi等专家为其提供了指导和帮助.过载保护.集群.服务器通信.并发选型等方面的问题,是中小团队常常的技术难题,本文分享了一些专家在坐诊过程中遇到的游戏服务器常见问题解决方法,希望对大家有所帮助. 问题一:玩家登录时拉取好友信息,但好友服务繁忙导致登录失败. 解决方法: 1.分离关键路径上非关键调用,缩短事务流程,避免周边服务异常阻…
写着写着就废球了,感觉空对空,实在没什么意思. 另外很快就要搞新项目,决定新项目就直接上elixir了.目前该做的准备工作已经探索了一些了. 以下的东西是写给同事参考的,感兴趣的可以看看,提建议更好. 游戏大体分为如下服务器 . 网关服务器(必须) . 游戏服务器(必须) . 后台管理服务器(一般必须) . 数据存储服务器(必须) . 支付服务器(安桌或者第三方回调的话,必须) Elixir umbrella 项目目录结构可大概如下 . 游戏数据模型(包括简单的获取更新逻辑) . 通讯协议 ht…