简单Elixir游戏服设计-玩家进程跑起来
Posted damnit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单Elixir游戏服设计-玩家进程跑起来相关的知识,希望对你有一定的参考价值。
有了玩家模型,我们试试让玩家进程跑起来。
需要搞个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: :simple_one_for_one) end def start_player(player) do Supervisor.start_child(__MODULE__, [player]) end end
搞个PlayerServer来负责玩家进程。
defmodule PlayerServer do use GenServer, restart: :temporary, start: {__MODULE__, :start_link, []} def start_link(player) do GenServer.start_link(__MODULE__, player, name: __MODULE__) end def init(player) do {:ok, player} end end
plyaer_supervisor的测试代码
defmodule PlayerSupervisorTest do use ExUnit.Case doctest PlayerSupervisor setup do start_supervised PlayerSupervisor %{} end test "测试PlayerSupervisor启动PlayerServer" do assert {:ok, _player_pid} = PlayerSupervisor.start_player(Player.init) end end
下一章,我们将解决玩家进程注册的问题(现在玩家只能1个),如果只是单服的话可以用elixir 自带的Registry。
跨服的话用syn 或者gproc。
由于只是演示用(工作轻松点),所以我将用Registry。
同时game_server 是时候修改为应用启动了。
以上是关于简单Elixir游戏服设计-玩家进程跑起来的主要内容,如果未能解决你的问题,请参考以下文章