# Functions
AddTimer adds a timer to be executed after specified duration.
AddTimer adds a repeat timer to be executed every specified duration.
Call 函数调用指定Entity的指定方法,并传递参数。 如果指定的Entity在当前game进程中,则会立刻调用其方法。否则将通过RPC发送函数调用和参数到所对应的game进程中。.
CallNilSpaces 向所有game进程中的NilSpace发起RPC调用。 由于每个game进程中都有一个唯一的NilSpace,因此这个函数想每个game进程都发起了一次函数调用。.
CallService 发起一次Service调用。开发者只需要传入指定的Service名字,不需要指知道Service的EntityID或者当前在哪个game进程。.
CreateEntityAnywhere 在随机选择的game进程上创建一个特定类型的Entity.
CreateEntityLocally 在本地game进程上创建一个指定类型的Entity.
CreateSpaceAnywhere 在一个随机选择的game(以后会支持自动负载均衡)上创建一个特定Kind的Space对象。.
CreateSpaceLocally 在本地game进程上创建一个指定Kind的Space。.
CreateSpaceOnGame creates a space with specified kind on the specified game
returns the space EntityID.
Entities 返回所有的Entity对象(通过EntityMap类型返回) 此接口将被弃用.
Exists 检查某个特定的Entity是否存在(已创建存盘).
GetEntity 获得当前game进程中的指定EntityID的Entity对象。不存在则返回nil。.
GetGameID 获得当前game进程的GameID.
GetKVDB 获得KVDB中指定key的值.
GetNilSpace 返回当前game进程总的NilSpace对象.
GetNilSpaceID 返回特定game进程中的NilSpace的EntityID。 GoWorld为每个game进程中的NilSpace使用了固定的EntityID值,例如目前GoWorld实现中在game1上NilSpace的EntityID总是"AAAAAAAAAAAAAAAx",每次重启服务器都不会变化。.
GetOrPutKVDB 读取指定key所对应的value,如果key所对应的值当前为空,则存入key-value键值对.
GetServiceEntityID 返回Service对象的EntityID。这个函数可以用来确定Service对象是否已经在某个game进程上成功创建或载入。.
GetSpace 获得当前进程中指定EntityID的Space对象。不存在则返回nil。.
ListAttr 创建一个新的空ListAttr对象.
ListEntityIDs 获得某个类型的所有Entity对象的EntityID列表 (这个接口将被弃用).
ListGameIDs 获得所有的GameID列表.
LoadEntityAnywhere 在随机选择的game进程上载入指定的Entity。 GoWorld保证每个Entity最多只会存在于一个game进程,即只有一份实例。 如果这个Entity当前已经存在,则GoWorld不会做任何操作。.
LoadEntityLocally 在当前的game进程中载入特定的Entity对象 如果这个Entity当前已经存在,则GoWorld不会做任何操作。因此在调用LoadEntityOnGame之后并不能严格保证Entity必然存在于当前game进程中。.
LoadEntityOnGame 在指定的game进程上载入特定的Entity对象。 如果这个Entity当前已经存在,则GoWorld不会做任何操作。因此在调用LoadEntityOnGame之后并不能严格保证Entity必然存在于所指定的game进程中。.
MapAttr 创建一个新的空MapAttr对象.
Post posts a callback to be executed It is almost same as AddCallback(0, callback).
PutKVDB 将制定的key-value对存入到KVDB中.
RegisterEntity 注册一个对象类型到game中。所注册的对象必须是Entity类型的子类(包含一个匿名Entity字段)。 使用方法可以参考:https://github.com/xiaonanln/goworld/blob/master/examples/unity_demo/unity_demo.go.
RegisterService 注册一个Service类型到game中。Service是一种全局唯一的特殊的Entity对象。 每个game进程中初始化的时候都应该注册所有的Service。GoWorld服务器会在某一个game进程中自动创建或载入Service对象(取决于Service类型是否是Persistent)。 开发者不能手动创建Service对象。.
RegisterSpace 注册一个Space对象类型。开发者必须并且只能调用这个接口一次,从而注册特定的Space类型。一个合法的Space类型必须继承goworld.Space类型。.
Run 开始运行game服务。开发者需要为自己的游戏服务器提供一个main模块和main函数,并在main函数里正确初始化GoWorld服务器并启动服务器。 一般来说,开发者需要在main函数中注册相应的Space类型、Service类型、Entity类型,然后调用 goworld.Run() 启动GoWorld服务器即可,可参考: https://github.com/xiaonanln/goworld/blob/master/examples/unity_demo/unity_demo.go.
# Constants
ENTITYID_LENGTH 是EntityID的长度,目前为16.
# Type aliases
DispatcherID 是Dispatcher进程的ID GoWorld要求DispatcherID的数值必须是从1~N的连续N个数字,其中N为服务器配置文件中配置的dispatcher进程数目.
Entity 类型代表游戏服务器中的一个对象。开发者可以使用GoWorld提供的接口进行对象创建、载入。对象载入之后,GoWorld提供定时的对象数据存盘。 同一个game进程中的Entity之间可以拿到相互的引用(指针)并直接进行相关的函数调用。不同game进程中的Entity之间可以使用RPC进行相互通信。.
EntityID 唯一代表一个Entity。EntityID是一个字符串(string),长度固定(ENTITYID_LENGTH)。 EntityID是全局唯一的。不同进程上产生的EntityID都是唯一的,不会出现重复。一般来说即使是不用的游戏服务器产生的EntityID也是唯一的。.
GameID 是Game进程的ID。 GoWorld要求GameID的数值必须是从1~N的连续N个数字,其中N为服务器配置文件中配置的game进程数目。.
GateID 是Gate进程的ID。 GoWorld要求GateID的数值必须是从1~N的连续N个数字,其中N为服务器配置文件中配置的game进程数目。.
Kind 类型表示Space的种类。开发者在创建Space的时候需要提供Kind参数,从而创建特定Kind的Space。NilSpace的Kind总是为0,并且开发者不能创建Kind=0的Space。 开发者可以根据Kind的值来区分不同的场景,具体的区分规则由开发者自己决定。.
Space 类型代表一个游戏服务器中的一个场景。一个场景中可以包含多个Entity。Space和其中的Entity都存在于一个game进程中。 Entity可以通过调用EnterSpace函数来切换Space。如果EnterSpace调用所指定的Space在其他game进程上,Entity将被迁移到对应的game进程并添加到Space中。.
Vector3 是服务端用于存储Entity位置的类型,包含X, Y, Z三个字段。 GoWorld使用X轴和Z轴坐标进行AOI管理,无视Y轴坐标值。.