ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:162.59KB ,
资源ID:5908252      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5908252.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网易ITOWN平台架构.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网易ITOWN平台架构.docx

1、网易ITOWN平台架构一、开发包介绍开发包简要介绍目标iGate开发包主要用于开发中小型游戏,提供2d到3d游戏的解决方案。通过开放平台,为游戏开发者提供各种技术以及功能支持,帮助开发者便捷地开发出优质的游戏,接入iTown平台运营,通过多样化奖励保障开发者的收益;同时,让iTown平台的内容更加丰富,把iTown打造成一个丰富的中小游戏平台,从而达到双赢的目的。我们提供Gamefans 庞大、共享的玩家群体你只需专注游戏开发,我们负责游戏的发布、推广与运营。Assistance 专业、优质的服务支持我们有专门的团队对开发包进行持续开发,解答开发者问题。Tools 免费、强大的开发工具我们提供

2、游戏开发相关的多个编辑器;预先构建游戏框架逻辑;并提供游戏附属的好友、聊天、排行榜等各种社交功能。Earnings 丰厚、持续的经济回报上线奖金、在线人数奖励、收入分成,多样化的奖励制度给您保障与前景。你只需Idea 专注开发游戏核心玩法,轻松开启成功大门。开发包结构图iTown游戏服务器结构图: 点图放大*右侧框起来的范围是sdk功能空间 *第3方游戏通过SDK开发包制作并提交接入到iTown游戏平台。点图放大开发包有什么1、2D引擎以及相关编辑器2、游戏服务器引擎3、iTown平台功能接口(好友获取、聊天功能、聊天频道的接口、游戏启动和退出接口、扣费接口、成就相关接口、游戏排行接口)4、相

3、关文档及接口开发包接口版本开发包会有一个版本号,通常,不同版本的SDK会对已发布的接口进行兼容。 *如果是2d/3d引擎接口出现不兼容情况,我们会再提供另外一个接口,一定时期后再删除旧有接口,来尽量保证接口兼容性。 *iTown平台提供的功能接口会同时提供各不同版本的API接口来保证兼容性。开发流程 二、服务器端详解服务器总体结构我们提供的游戏平台的单组服务器结构, 结构如图: 上图是一组游戏服务器(gameserver), 一个游戏可以有多组这样的游戏服务器. 一个游戏进程, 就是玩家看到的一个游戏频道(channel), 游戏进程里,我们分成“大厅”, “房间”, 如下图: 作为第三方的游

4、戏开发者, 只需要实现”房间”逻辑。 其他由iGate游戏平台提供。平台数据数据存储, 我们分两部分, 一部分是平台提供的数据, 一部分是游戏的数据。其中, 游戏的数据, 我们提供基本数据存储, 如果存储空间不够, 支持游戏自己建表。平台数据平台提供以下数据, 供游戏共享: 1)角色基础数据角色基础数据有:账号(urs)账号唯一id(aid)账号的禁止权限(banlvl)账号的gm权限(gmlvl)角色唯一id(uid)角色昵称(nickname)角色性别(sex)角色avatar(avatar)角色所带的宠物(pet)付费元宝(ybpay) = 晶币(ybpay) (付费点卡换成的钱)免费元

5、宝(ybfree) = 赠卷(ybfree) (免费点卡换成的钱和系统赠送的钱)2)成就数据成就id(ch_id):成就ID。游戏id(gamei):对应哪个游戏的成就。玩家id(uid):玩家UID获得成就的时间(get_time):获得某个成就的时间3)排行榜数据积分(score):广泛意义上的分数,大量游戏都有可能用到。(可选)胜局(win_count):胜利局数。(可选)平局(draw_count):平局局数。(可选)负局(lose_count):负局局数。(可选)掉线(break_count):掉线局数。(可选)自定义1(tag1):游戏自定义数据1,供游戏排行扩展用。(可选)自定义

6、2(tag2):游戏自定义数据2,供游戏排行扩展用。(可选)自定义3(tag3):游戏自定义数据3,供游戏排行扩展用。(可选)自定义4(tag4):游戏自定义数据4,供游戏排行扩展用。(可选)自定义5(tag5):游戏自定义数据5,供游戏排行扩展用。(可选)自定义6(tag6):游戏自定义数据6,供游戏排行扩展用。(可选)4)好友数据好友分组(setname):好友所在分组在线状态(online):好友是否在线游戏状态(games):好友在玩游戏吗?在玩什么游戏?5)与其他游戏和社区交互的数据(尚未开放)游戏基本数据目前, 提供的每个玩家的游戏基本数据有:1)基本信息包括:coin 游戏自己的

7、游戏币score 分数win_count 胜局draw_count 平局lose_count 败局break_count 逃跑的局数2)道具信息每个玩家允许有多个道具, 其中每个道具格式如下: itemtype 道具类型count 道具数量timeitem 是否时效性道具buytime 购买时间deadtime 过期时间msg 64字节的存储空间value int存储空间status 状态3)额外存储空间每个玩家有16个256字节的存储空间(buf), 命名分别为:buf0-buf15. 其中, buf10-buf15暂时被利用为公共存储空间. 因此游戏能使用的实际是:buf0-buf9。 游

8、戏额外数据如果平台数据、游戏基本数据, 依然无法满足游戏的存储需求, 游戏可以自己创建数据库表进行存储(具体会在下个版本详细说明)。快速开发步骤消息的定义消息我们分三种:公共大厅的消息(这个由igate游戏平台实现)游戏大厅的消息(目前这个暂时不开放)游戏房间的消息因此游戏需要定义的是游戏房间里的消息. 如何定义消息例子:MSG_TYPE_SCPLAYERINFO = 0x0001MSG_TYPE_SCMANYPLAYERS = 0x0002msg_define_map = sc_player_info: uid: I,name: s,_type: MSG_TYPE_SCPLAYERINFO,

9、sc_many_players:myuid: I,playerlist: sc_player_info,_type: MSG_TYPE_SCMANYPLAYERS, 所有房间的消息, 定义在一个字典中, 如例子中的msg_define_map, 字典中的每个元素, 是一个消息. 每个消息, 包括消息名称(msg_define_map中的key)和它对应的消息定义(msg_define_map中该key对应的value). 消息名称必须是字符串, 比如例子中的sc_player_info, sc_many_players. 消息定义, 是一个字典, 它的key为此消息的各字段, 必须为字符串,

10、其中必须至少含有一个名为_type的字段. _type, 是一个0x0000 - 0xFFFF的整型, 是这个消息的消息编号, 它的值必须唯一. key对应的value, 是这个字段的消息类型. 目前支持的类型有下表中的Format项: FormatCType Pythonbsigned charintegerBunsigned charintegerhshortintegerHunsigned shortintegeriintintegerIunsigned intlongllongintegerLunsigned longlongqlong longlongQunsigned long l

11、onglongffloatfloatddoublefloatscharstringpcharstring当消息类型的字符串不在上述列表中定义的字段时, 则被认为是自定义消息. 自定义消息, 格式为: 是一个list, list的每个元素为自定义消息类型. 如例子中的sc_many_players消息的playerlist字段, 格式为sc_player_info, 表示: playerlist字段是一个list, 每个元素都是sc_player_info. 如何生成消息定义好消息并初始化(调用hall_callback. register_game_room_msgdefine_and_cal

12、lback初始化)之后, 可通过hall_callback. get_game_room_msgmgr()获得消息管理器.msgmgr = hall_callback. get_game_room_msgmgr()然后可以通过消息管理器, 生成消息. 比如:msg = msgmgr.sc_player_info(uid=1, name=kiki)或者:msg = msgmgr.sc_player_info()msg.uid = 1msg.name = kiki通过msgmgr.XXXXX(xxxx是你定义的消息的名称), 将得到一个消息对象. 如果没有指定每个字段的初始值, 每个字段都会赋予默

13、认值(数字是0, 字符串是). 此消息对象有的字段就是你在消息中定义的字段. 如何发送消息生成了消息对象msg之后, 可以通过msg.to_string() 得到字符串.data = msg.to_string()data即可通过网络接口发送给客户端。游戏初始化我们提供的接口中, hall_object, 是一个房间的基类, 需要你重载, 以实现房间逻辑. hall_callback是初始化时提供给你的一些调用接口, 以进行游戏初始化. 重载房间逻辑实现房间逻辑, 需要通过重载hall_object.HallRoom类来实现.此类提供的接口, 请查看相关接口文档.服务器初始化首先在开发目录下,

14、 创建一个名为room_extend.py的文件. 在该文件中调用hall_init.use_hall():import hall_inithall_init.use_hall()即可使用iGate游戏平台提供的公共服务. 你可以重写hall_callback.init, 以实现服务器启动时做游戏的进程的初始化. 在初始化中, 你至少需要按顺序做以下两件事情:1. 设定房间逻辑的消息定义和相关的回调消息定义, 则是上面介绍的msg_define_map相关回调是一个字典, 消息类型作key, 该消息对应的处理函数做value. 其中, 消息类型即msg_define_map中每个消息里的”_t

15、ype”. 处理函数的参数必须分别是: room, player, msg. room, 是该玩家所在的房间的对象, player是通过room.get_player_by_uid得到的对象, msg是客户端发来的消息对象。假设已经定义了消息: msg_define_map, 定义了对应的处理函数:event_callback_map. 则可通过以下方式设定消息和回调:hall_callback. register_game_room_msgdefine_and_callback(msg_define_map, event_callback_map )2. 设定游戏模式和对应的房间类游戏可以有

16、多个模式, 每个模式可以对应不同的房间类. 通过以下方式设定:hall_callback. set_class_define(class_define_map)其中, class_define_map格式为: gamemode: (minnum, maxnum, roomclass),key为游戏模式(int), value为(该房间的最小人数, 最大人数, 房间类)设定后, 当玩家要创建房间时, 会根据指定的模式, 生成相关的房间对象. 房间与大厅的交互说明创建房间(玩家主动请求创建,或系统主动创建)根据创建房间的模式, 创建你设定的房间类对象 玩家进入房间大厅会调用room.on_play

17、er_enter_room函数(此函数需要你重载)收到客户端游戏消息服务器会回调该消息的回调函数, 传入的参数是:room(该玩家所在房间对象)player(通过room.get_player_by_hid取到的玩家对象)msg(客户端发来的消息对象)(消息回调函数是你在初始化时设定的)玩家准备状态改变时(如果你的游戏有”准备”这一概念时, 才需要走这一步)你需要主动调用:room.set_player_ready(主动调用, 大厅就可以知道玩家当前状态)游戏开始时你需要主动调用room.set_game_start(主动调用, 大厅才知道此房间已经开始游戏,游戏开始后, 大厅就不会再让其他玩

18、家进入此房间,大厅中的玩家就会看到此房间的状态是”开始”状态)游戏结束时你需要主动调用room.set_game_end(主动调用, 大厅才知道此房间游戏没有开始,游戏没开始, 如果不满员, 大厅就会允许其他玩家进入此房间,大厅中的玩家就会看到此房间的状态是”等待”状态)玩家主动离开房间玩家主动离开此房间.你需要主动调用room.tell_hall_player_leave_room以告知大厅.(必须调用, 这样大厅才知道玩家离开房间,回到大厅,否则玩家在大厅的状态一直是: “在房间中”, 会导致该玩家无法再进入任何游戏)玩家被动离开房间(比如玩家断线等, 或游戏告知大厅玩家离开)大厅会调用r

19、oom.on_player_leave_room函数(此函数需要你重载)清空房间当该房间的所有玩家都离开后大厅会调用room.clean函数来清空(根据需要重载clean函数, 以释放房间的相关资源, 避免内存泄漏)三、客户端详解房间与大厅的交互说明创建房间(玩家主动请求创建,或系统主动创建)根据创建房间的模式, 创建你设定的房间类对象 玩家进入房间大厅会调用room.on_player_enter_room函数(此函数需要你重载)收到客户端游戏消息服务器会回调该消息的回调函数, 传入的参数是:room(该玩家所在房间对象)player(通过room.get_player_by_hid取到的玩

20、家对象)msg(客户端发来的消息对象)(消息回调函数是你在初始化时设定的)玩家准备状态改变时(如果你的游戏有”准备”这一概念时, 才需要走这一步)你需要主动调用:room.set_player_ready(主动调用, 大厅就可以知道玩家当前状态)游戏开始时你需要主动调用room.set_game_start(主动调用, 大厅才知道此房间已经开始游戏,游戏开始后, 大厅就不会再让其他玩家进入此房间,大厅中的玩家就会看到此房间的状态是”开始”状态)游戏结束时你需要主动调用room.set_game_end(主动调用, 大厅才知道此房间游戏没有开始,游戏没开始, 如果不满员, 大厅就会允许其他玩家进

21、入此房间,大厅中的玩家就会看到此房间的状态是”等待”状态)玩家主动离开房间玩家主动离开此房间.你需要主动调用room.tell_hall_player_leave_room以告知大厅.(必须调用, 这样大厅才知道玩家离开房间,回到大厅,否则玩家在大厅的状态一直是: “在房间中”, 会导致该玩家无法再进入任何游戏)玩家被动离开房间(比如玩家断线等, 或游戏告知大厅玩家离开)大厅会调用room.on_player_leave_room函数(此函数需要你重载)清空房间当该房间的所有玩家都离开后大厅会调用room.clean函数来清空(根据需要重载clean函数, 以释放房间的相关资源, 避免内存泄漏

22、)2D Core Objects2D引擎把2D资源有机地组合在一起,2D资源包括静态图片(txg)、动画(sp2)、2D模型(2dm)、粒子。 基本元素在2D引擎中,一切资源的使用都是以贴图为基础,而对于贴图的管理,则是用txg文件的方式管理,因此贴图是最基本的元素 一张大的图片(tga),里面切割为若干个小图片。txg文件内容如下: 用法:tg = render.texture_group(txg文件) tex = tg.get_clip(Clip名字) # tex则为贴图对象。静态图片用法:image = world2d.image2d(, tex)动画类似gif的动画形式,把每帧的图片按

23、顺序播放。 sp2文件格式如下:用法:sprite = world2d.sprite2d(sp2文件) 2D模型利用2D模型编辑器编辑出来的文件。里面包含了挂接系统、轨迹系统、动作组合。 用法: model = iworld2d.2dmodel(2dm文件)。2D粒子系统选定粒子贴图,选好参数,go! 场景(canvas)一切2D对象,需要挂在场景上才能生效。 用法: world2d.canvas.add_object(2dobj) 初始化时可以设置一共生成多少个背景层。 layer_id越大,越靠前,相同的layer_id,则以rlevel为准,rlevel越大越前,如果rlevel相同,则

24、以生成顺序为准,越迟生成越前。 改变某个对象的层次,可以用obj.set_layer(layer_id),或者生成时的参数增加layer_id 。如果layer_id为None,则取中间的背景层。 镜头坐标系需要注意的是,image2d/sprite2d/模型都有key_point的,引擎的key_point默认是0,0,是在图片的中心点,通过iworld2d生成的图片对象,key_point已经改成左上角了。 可以控制镜头的位置,还有远近(也就是透视镜头的可视范围)。用法: world2d.canvas.view_region_center(位置)world2d.canvas.view_re

25、gion_size(大小)编辑器资源管理首先建立2D资源目录,建议都放在项目名/res/world2d下其中再分: 基本贴图资源项目名/res/world2d/txg/. sp2资源项目名/res/world2d/sprite/. 模型资源项目名/res/world2d/2dmodel/. 粒子资源项目名/res/world2d/particles/.image编辑器(txg)把各种零散图片资源整合成一张大图,便于管理(支持格式bmp/jpg/png/tga/dds),输出是一张大图(tga/png/dds)和一个管理文件。sprite编辑器(sp2)把一个txg文件中的若干个clip按顺序组合在一起,每次播放一张。2D模型编辑器(2dm)可以添加image/sprite,并生成树状的挂接关系。然后按关键帧的方式编辑好轨迹,组合成一套套动作。2D粒子编辑器实时生成2D粒子,通过调整粒子大小/时间/颜色/贴图/运动轨迹等等,变化出各种各样的粒子效果。接口手册

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1