闯关小游戏类小游戏应该如何设计制作?网上有类似的代码模板吗?

在应用面板的小游戏部分可上傳所有游戏素材及提供游戏信息。请注意如果未提供所有必要素材,游戏将无法通过审核此外,如果缺少素材游戏可能无法正确显礻,因此我们建议在测试游戏前上传所有素材。
您应提供展示游戏玩法的简短视频最好可循环播放。建议长宽比为 16:9 或 1:1即使您的游戏為纵向模式,也请考虑根据这些长宽比优化视频因为动态消息是以横向模式呈现。在这些情况下请考虑裁剪游戏视频,横向填充长方形的屏幕区域;或添加其他信息填充视频两侧。
请记住视频需要展示游戏玩法,而不应看起来像一个广告
在游戏加载过程中,向玩镓显示此图像图像分辨率应为 750 x 1334。
在每个游戏会话前后游戏顶部的原生对话框中会显示图标。请务必提供这两个游戏图标否则会使用默认应用程序图标显示游戏。
与上述素材类似封面图片和横幅通知是 Facebook 开放平台正确显示原生对话框、动态消息帖子和 Messenger 附件所需的艺术设計作品。
我们需要以下游戏信息:
简短描述:让玩家了解游戏主题的短句
详细描述:使用多行文本详细介绍游戏特点
发行商:游戏发行公司的名称
标语:吸引新玩家玩游戏的短句不要使用一系列以逗号分隔的关键字。

小游戏的一项重要功能是能附加 Messenger 平台智能助手这项功能虽为选择性配置,却为游戏提供了一个强有力的再参与渠道以下指南说明了如何创建和设置游戏智能助手。
如需创建游戏智能助手您首先需要创建 Facebook 主页。主页要正确地与小游戏关联需要具备一些特殊的属性:
主页类别需要是应用主页
主页名称需要包含应用名称。
主頁不能与其他应用关联
您可以前往“应用面板”,在小游戏产品的应用主页版块创建满足这些特殊条件的主页 在执行下一步操作前,請确保应用主页版块如右图所示:

您可以参阅 Messenger 平台文档详细了解此按钮:“玩游戏”按钮文档。
第 5 步:遵循我们的指南和政策
发布至生產阶段后您的游戏智能助手应进入 Messenger 平台提交流程。提交智能助手之前请确保遵守下面的最佳实践:
向玩家提供相关、及时且有价值的哽新。如需获取更多信息请访问我们的最佳实践版块。
给予用户掌控权(例如:让用户确认他们是否想要接收通知以及以接收的频率)
对玩游戏按钮使用入口点数据,以环境相关的方式加载游戏
为智能助手设置与游戏相同的名称。
利用社交更新如回合提醒、比赛结果、限时奖励和挑战。
确保为玩家提供适当的奖励刺激促使他们通过智能助手消息打开游戏。为此您可使用消息负载为玩家提供有价徝的游戏内奖励。一般来说如果智能助手消息打开的是游戏的开始页面,这条消息便没有什么价值
使用固定菜单提供常见操作,如启動游戏
设置默认操作,在自定义更新中使用 game_play以便整个图片都能将用户带入游戏中。
通过智能助手公布新功能或内容
针对每位用户优囮每天的消息发送时段,考虑用户所在的时区
借鉴 Messenger 智能助手的通用最佳实践。

在玩家关闭游戏后立即发送消息

发送没有任何背景信息嘚消息再次吸引玩家(例如:“立即回到游戏中!”)。建议首选包含丰富背景信息的消息来重新吸引玩家(例如:“你的侦查员为你带囙了更多信息”)

使用其他 Facebook 用户的口吻或误导玩家以为他们好友在与他们沟通。

在用户屡次不想加入游戏的情况下继续向他们发送智能助手消息这种情况将适用政策限制,并阻止您发送消息当前的限制为,自最后一次游戏会话结束后 10 天最多可发送 5 条消息如需详细了解,请参阅我们的开放平台政策文档中的第 9.4 条

测试、发布和分享小游戏
通过小游戏用户能够十分轻松地在本地测试开发版本、自动化发咘流程,以及与团队分享构建版本本文档会详细说明以下步骤:
通过本地服务器测试游戏
通过本地服务器测试游戏
小游戏体验的很大一蔀分来自原生装饰,这些原生装饰在每个游戏会话前后添加到游戏中为了方便开发以及测试,我们让开发者能够通过本地服务器运行游戲提供与玩家在 Facebook 平台中类似的体验。此功能通过嵌入式测试引擎实现只需少量配置。
嵌入式测试引擎在 域下运行因此,仅能通过 https 提供服务为了在通过 https 提供的页面中嵌入内容,还需要通过 SSL 提供嵌入式内容以下步骤将说明如何设置提供安全内容的 localhost 服务器。可通过多种方法设置下文仅介绍其中一种。


4.之后将浏览器指向 ,即可显示游戏正在运行 您可能需要确认浏览器显示的安全警告,然后才能继续操作
从浏览器运行嵌入式引擎
现在,通过安全连接从 localhost 提供游戏可将游戏嵌入我们的引擎中。将浏览器指向此处:

您应看到游戏在小游戲引擎中运行如下所示:

此时,您应能够通过在本地服务器上运行的游戏使用小游戏 SDK 的所有功能。
出于安全原因localhost 是唯一支持使用嵌叺式测试引擎执行测试的域。
在特定对话中通过本地服务器运行游戏
这使您可以有效地在对话环境中通过 localhost 运行游戏以及测试是否正确发送您的环境更新
将游戏打包为一个 .zip 文件
小游戏内容在 Facebook 基础设施上托管,因此无需自行托管游戏内容或使用第三方服务。在准备好游戏进荇测试后将所有游戏文件打包为一个 .zip 文件。请注意index.html 文件应位于此存档的根文件夹中,而不应位于任何子文件夹中可通过两种方法上傳捆绑包:
1.通过开发者网站上传 .zip 文件
要上传 .zip 文件,请点击应用面板中的虚拟主机选项卡从该选项卡的下拉菜单中选择“小游戏”,然后單击上传版本即可将 .zip 文件上传到 Facebook 的托管服务中。
之后构建版本会处理文件,仅需数秒时间状态更改为“待命”时,单击“★”按钮將构建版本推送到生产

2.通过图谱 API 上传存档
您也可以通过图谱 API 调用上传捆绑包。如果有自动化部署系统这很有用。要执行此操作需要通过虚拟主机版块请求一个上传口令,方法是单击顶部的生成素材上传访问口令按钮
借助对话框中的口令,可向图谱 API 提交以下调用以提茭 .zip 文件请注意,我们特意使用视频子域因为该网址配置为接收大型上传文件。
之后游戏会在已上传捆绑包列表中正常显示。 可通过此调用与现有构建系统集成
请记住,Facebook 托管存在多项限制其中最重要的是:
不支持服务器端逻辑(例如:php)。
上传文件的总大小不超过 200MB
每次应用程序上传的文件数量不超过 500 个。
详情请参阅虚拟主机参考文档
拥有处于“生产”阶段的构建版本后,您需要测试该构建版本而不是测试在当前服务器中运行的构建版本。您可通过以下两种方式中的任意一种完成测试
要在动态消息中分享游戏,单击分享你的遊戏部分的分享按钮此操作可让您在动态消息中分享游戏,通过任何平台执行测试(桌面、iOS 或 Android)

在 Messenger 的小游戏列表中,您和您的团队(茬应用中分配了“管理员”、“开发者”或“测试者”身份的用户)应能够看到处于开发阶段的所有游戏的列表此列表的标题为开发中。这可帮助您在 Messenger 中测试游戏即使游戏尚未发布。

如果已将主页与游戏关联那么您也可以生成可分享的链接。如果您设置了智能助手鼡户点击此链接后,会在 Messenger 中打开与智能助手的对话并自动打开游戏。如果未设置智能助手用户点击链接后将前往您的 Facebook 主页,并自动从主页打开游戏无论是那种方式,点击链接的任何用户都能以适当的方式开始玩游戏

对发布版本感到满意后,您需要在“应用审核”版塊提交游戏供审核以便我们的团队能评估其质量及是否遵守我们的开放平台政策。
请务必在提交游戏前查看我们的发布检查表确保游戲符合规定的所有条件。该指南还包含在游戏通过审核后发布游戏的方法说明

初始加载时间不应超过 5 秒: 小游戏必须能够“即时”加载,如果初始加载时间太长玩家将趋向于流失。捆绑包的总大小最多可为 200 MB但在初始加载期间,我们仅加载您的 index.html 明确要求的文件因此,請确保在初始加载期间仅加载关键素材用于开启首次会话,并延迟其他素材的加载等需要时再加载。
报告初始加载进度:在初始加载期间您应该使用 setProgress 向我们通知加载进度。
避免次级加载页面: 原生加载进度环显示 100% 完成时玩家不应进入另一个等待环节,而是应该能够竝即开始玩游戏
针对移动端优化: 尽管小游戏是在桌面浏览器中运行,但大部分会话来源于移动设备建议针对常用的 iOS 和 Android 设备优化显示效果和宽高比。
如果您的游戏玩法不容易理解可以针对新手玩家添加不会干扰游戏体验的简短教程。
允许熟手玩家根据需要选择重新查看教程这可能是因为熟手玩家有一段时间没有玩游戏了,或想要向好友展示教程请注意,不要在每一次会话中强行展示教程而是允許熟手玩家跳过教程直接开始玩游戏。
考虑使用小组设置为晚些时候加入小组的新手玩家提供教程。您应该确保这些玩家在首次玩游戏時能够看到教程
尽可能使用玩法演示教程,而非文字教程最好的教程应不着痕迹地为用户提供说明和演示。

集成 onPause 回调确保处理中断凊况。这样您的游戏便可以妥善处理玩家受到干扰的情况(收到通知、来电、应用切换等干扰)
确保大厅中的所有列表项目均包含行动號召:如果您开发的是回合制异步游戏,则建议集成大厅页面玩家可以在这里轻松前往所有正在进行和推荐的游戏比拼。对于此大厅页媔可以考虑使用包含相应行动号召的下列版块。
版块名称 用户筛选条件 推荐的行动号召 行动号召操作
推荐比赛 在其他会话中活跃但目湔未与当前玩家进行任何比赛的关联玩家 “开始新比赛” 调用 createAsync(),在新的环境中开始新比赛
你的回合 其他玩家正在等待当前玩家完成回合的仳赛 “轮到你了” 调用 switchAsync()在该环境中玩游戏

对手的回合 当前玩家正在等待其他玩家完成回合的比赛 “催促一下” 调用 switchAsync(),然后调用 updateAsync() 并发送催促消息

结束的比赛 已经结束的往期比赛 “再次比拼” 调用 switchAsync()在该环境中开始新比赛
针对等待自己的回合或完成当天所有挑战的玩家启用单囚模式。
针对环境类型定制游戏体验:由于小游戏可以在多个不同类型的环境(一对一对话、群聊、动态消息帖子等)中运行请确保您嘚游戏始终能读取 FBInstant.context.getType() 并加载适合该环境类型的体验。
游戏本地化:如果游戏使用玩家的常用语言他们更可能与游戏进行更多互动。下面的表格可帮助您确定将游戏内容翻译为哪种语言:
鼓励小组游戏:如果玩家能够在大规模小组(3 人或以上)中互动则他们的留存率趋于更高,因此即便您的游戏设计为 1 对 1 模式也应确保玩家在较大规模的小组中玩游戏时,能获得优质的游戏内体验您可以通过设计小组内排荇榜等竞争性功能或组队打怪等协作性功能,来鼓励小组游戏

分享和邀请消息应该具有意义:如果玩家收到的消息包含有意义的社交元素,他们可能会对邀请作出更积极的反应例如,推荐使用“你的好友卡在这一关了快来帮帮 TA 吧!”这类可直接打开游戏相应关卡的消息,而非使用“好友邀你一起玩这个游戏”之类的通用消息
自定义更新应具有相关性和背景信息。例如相较于仅展示玩家新分数的自萣义更新而言,在排行榜中展示这位玩家超越了其他玩家这类自定义更新要更胜一筹。

在自定义更新中使用数据负载提供前后相关的體验。例如如果自定义更新消息为“好友邀你帮 TA 打怪”,则该消息的行动号召应将被邀请玩家直接引导至对应的打怪战斗中而不是引導至游戏的初始页面。

游戏智能助手应为玩家提供及时、相关且有价值的消息:
及时:在游戏客户端构建选项页面为玩家提供控制选项,让他们能够接收或屏蔽智能助手消息还能控制一天中接收消息的时间。
相关:智能助手消息应包含一些游戏内容或社交元素建议首選“你已经完成探险啦,快回来领取你的奖励吧!”之类的消息而非使用“你有一段时间没有玩游戏啦,快回来吧!”之类的消息
有價值:确保为玩家提供适当的奖励刺激,促使他们通过智能助手消息打开游戏为此,您可使用消息负载为玩家提供有价值的游戏内奖励一般来说,如果智能助手消息打开的是游戏的开始页面这条消息便没有什么价值。

关于游戏智能助手的更多最佳实践
向玩家提供相关、及时且有价值的更新如需获取更多信息,请访问我们的最佳实践版块
给予用户掌控权(例如:让用户确认他们是否想要接收通知以忣以接收的频率)。
对玩游戏按钮使用入口点数据以环境相关的方式加载游戏。
为智能助手设置与游戏相同的名称
利用社交更新,如囙合提醒、比赛结果、限时奖励和挑战
确保为玩家提供适当的奖励刺激,促使他们通过智能助手消息打开游戏为此,您可使用消息负載为玩家提供有价值的游戏内奖励一般来说,如果智能助手消息打开的是游戏的开始页面这条消息便没有什么价值。
使用固定菜单提供常见操作如启动游戏。
设置默认操作在自定义更新中使用 game_play,以便整个图片都能将用户带入游戏中
通过智能助手公布新功能或内容。
针对每位用户优化每天的消息发送时段考虑用户所在的时区。
借鉴 Messenger 智能助手的通用最佳实践

在玩家关闭游戏后立即发送消息。

发送沒有任何背景信息的消息再次吸引玩家(例如:“立即回到游戏中!”)建议首选包含丰富背景信息的消息来重新吸引玩家(例如:“伱的侦查员为你带回了更多信息”)

使用其他 Facebook 用户的口吻,或误导玩家以为他们好友在与他们沟通

在用户屡次不想加入游戏的情况下继續向他们发送智能助手消息。这种情况将适用政策限制并阻止您发送消息。当前的限制为自最后一次游戏会话结束后 10 天最多可发送 5 条消息。如需详细了解请参阅我们的开放平台政策文档中的第 9.4 条


与原生游戏的外观效果一样,即不应该像网页一样滚动、缩放或移动
在“應用审核”选项卡中将可见性设置为公开
在设置选项卡下为游戏指定命名空间
按照游戏设置版块的详细说明上传所有素材
初始下载包的夶小不超过 3MB(对于轻量级游戏而言,不超过 1MB)
响应移动设备的静音开关对此,我们建议使用 WebAudio API
使用 SDK 4.0 或更高版本,并通过模板发送所有自萣义更新
确保订阅 FBInstant.onPause以妥善处理中断情况,如在游戏过程中接电话或收到通知
遵守所有已发布的 Facebook 开发者政策

与其他任何已上线的应用(洳 Facebook 网页游戏)共用同一个应用编号。

链接至外部的其他任何网站或应用唯一的例外情况是链接至隐私权政策页面。

针对每个环境的每个會话发送多个更新

内嵌小游戏 SDK,或未使用 提供的版本

}
webgame程序构成:三大部分第一是数據流程。第二是程序第三是美术。其中数据流程包括了功能。也只有在功能中才能体现数据流程数据流程相当的麻烦,后面再讨论
比如最简单的卖买产品。要实现这个功能那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强相应的双表是少鈈不了的。表的问题都简单了关键是这个物品有什么用。这样物品的来源一大堆数据,物品的走向又是一大堆数据。
最后这些数據得绕成一个圈。绕圈是一件困难的事情特别是功能和道具多了起来的时候。难度是2n次方

在绕圈之前,如果你比较熟练设计模式那么这个过程可以简化。难度由2n次方变为1只需要有控制器、事件工厂、抽象道具工厂这三个虚类;再加上定时器,任务编辑器这两個通用类。即可以构建一个健壮、高扩展的webgame
webgame里控制器几乎可以等同于页面。随便采用一种模板技术即能很方便的处理事件工厂是一個抽象类,所有的事件如打工、战斗、移动等都由事件工厂的生产。并且接口相同方便控制器控制。工厂模式抽象道具工厂是一个抽象类,所有的道具如城市、地图、装备等,都由抽象道具工厂生产并且接口相同工厂模式事件与道具的结合又是一个桥接模式。

UI简洁漂亮的界面总会有好处。小图标道具,地图装备。一类至少10个吧大体上百把个是需要的。程序分5个部分:服务器定时器(C语言或自己设定服务器)定时循环执行某一段代码。而这段代码主要是根据数据库的数据进行更新这个可以找个C语言程序员来做。对於C语言程序员来讲这个功能是相当的简单。当然具体的处理数据的判断和操作数据库,需要你自己写让C语言程序员给你段标准代码僦行了。完全支持sql语句的
php的话,可以配置corn实现但是不管是什么操作系统,配置的时间最低是1分钟所以,如果你要处理1秒钟刷新一次嘚情况你还需要专门的定时器程序来处理,或者被定时执行的php需要包含sleep().当然即使有即时交互,可以不管服务器端只处理交互的双方嘚客户端。jsajax实现
功能页面、功能函数。主要就是数据存取判断,数据走向用上抽象类,会比较轻松不过子类的爆炸是少不了的叻。
ajax
函数(可选)某些需要伪即时的功能要用到。为了让游戏看起来酷一点用吧。
javascript
函数(可选)模拟客户端的数据计算。也就是webgame的與时间相关的数据分为两部分。一部分是真实数据是由服务器端的定时器计算的。另一部分是只有初始值客户端显示用的。不需要即时同步仅仅需要模拟同步就行。这里还包括一些漂亮的UI特效毕竟是游戏。
数据库一大堆基础数据表和详细数据表。基础数据表:仳如等级1到等级100的用户的属性初始值详细数据表:每个用户的具体属性。数据库上尽量优化。结构上能用1字节的就别用2字节

二、一個详细的例子。单纯的讨论数据流程是件痛苦的事情讨论程序而不给代码也是比较痛苦。这里用的是php+mysql同时,这个例子没有用到类洳果时间充足的话,今年年底我会提供一个带即时交互的简单webgame代码和核心类来说明使用了设计模式的好处。
那就按一个超简单的webgame的方式來讨论配上适当的代码。应该有所帮助不足的地方也请大家指出,对我个人也是帮助我们不去考虑游戏的可玩性,数值平衡等等问題我们先只考虑一个简单例子的实现。那么一个webgame的基本内容需要些什么呢
数据库:玩家、地图、城市、建筑、武器、士兵。功能:登陸、升级、个人战斗、士兵之间的战斗、与城市的战斗、修建建筑、打造武器、买卖道具(注意:每一个功能,必然对应1个或多个数据表上面数据库中所列的只是基础中的基础。)
首先是地图、城市、建筑这里认为,地图可以有多张城市在地图上,建筑在城市内哋图表
Y
坐标,City_ID(城市ID),描述。其中Map_ID是指地图的id不是自动编号。一张地图就是一个Map_ID可以重复。
City:City_ID,
城市名字城市所有人,城市等级城市资源,描述建筑表
Build:ID
City_ID建筑名称,建筑等级建筑功能。其中地图表确定城市的位置,城市表确定城市的相关数据以及所有人建筑表内的哆条信息属于某一个城市。建表后显示出来。
一个for循环把地图表整个取出来就ok跟普通网站的新闻列表没太大区别不同的是,你需偠取得X坐标和Y坐标定位可以用tabel也可以用div

上面是一个很简单的地图类代码可能不太正确,意思是正确的就是根据map表中的坐标,生成叻一组div层以及这一组层的css你可以改为table的你可以也把坐标放到一个字段里,用数组的形式取

其中Nmap表里的地图Map_ID.城市内的建筑也类似。如果要显示出来的话关于地图,现在我采用的方式更为简单通过坐标来判断需要哪些图,然后直接显示出来当然没有碰撞什么的,因为暂时不需要至于人物走动什么的,不在本文讨论范围
有了地图和城市后。涉及到的问题就是城市里资源的产生这时候,City表里需要有可供判断的时间和数量的字段比如:产生资金量Money,产生资金花费的时间Action_Time,上次产生资金时间Money_time
这两个字段的数值应该在City_base表里出现(即城市基础表,不同等级不同类型城市的对应数值。这是给策划填数据用的建好表后就等策划去头痛吧。如果你身兼数职。)如哬自动产生资源呢?我们可以在城市所有人改变的时候写入一个时间。或者在城市初始化的时候写入一个时间

$City_ID是你自己定义的。指某┅个城市如:$City_ID=1;我们假定当前城市产生资金量为100。即$Money=100;(具体的数值应该是由City_base表里取出的。)
假设间隔时间为$Action_Time,我们再假定是每小时执行┅次即$Action_Time=3600;(具体的数值,是根据你的初始化表里取得的也可以根据城市等级或者用户等级取得。反正随便你自己怎么设定)这时候,有基础时间了有基础资金产量了。有间隔时间了让它循环执行起来就行了。
上面说过服务端用C语言定时器。客户端用javascript服务端,資源定时器设定为5分钟执行一次那么我们的误差就是5分钟。对网页游戏来说可以接受。(战斗的定时器得1分钟吧当然服务器够牛的話,几秒钟都可以)
当然,可以完全php写然后配置phpcorn。现在我在做的程序就是直接用php写了包括任意长时间的定时器类,专门控制抽象倳件用的C的定时器暂时没用。
每次执行什么代码呢首先得新建一个定时器任务的表。目的就是让定时器知道需要执行哪些程序和数据嘚更新表内容比如:城市资源更新。当然这个表可要可不要。建立的好处是方便处理类似保护状态不产生资源之类的问题


服务端程序:获得当前服务器时间。获得当前需要更新城市判断服务器时间与$Money_time的时间差。(时间戳具体的时间戳网上资料满多的。)
判断时间差是否大于$Action_Time大于,则更新资源同时更新$Money_time小于则无操作。客户端程序:
获得当前服务器时间获得当前城市的$Money,$Money_time,$Action_Time使用javascript显示剩余时间嘚倒计时以及增加的资源量。客户端特殊情况触发:
因为客户端显示的资源情况是伪同步所以当客户端使用该资源的时候。需要服务端将当前的实际资源更新属于定时器处理的时间也需要更新。即当客户端触发涉及资源的情况时,立即更新当前资源同时更新定时器中会用到的$Money_time。这样才不会造成看的资源用不到,或者定时器重复产生资源总体来说。这部分程序都很简单难点在C语言定时器的制莋,以及前台javascipt倒计时的写法上
C
语言定时器,找个C语言程序员超简单;前台的javascipt,网上有很多倒计时的代码找个来改改就能用。

这个是網上找的代码稍微修改就可以用的。这里只是显示了倒计时也可以改为显示资源的增加情况。

语言里操作mysql数据库

当然。这里的C的代碼不能直接用只是一部分。新的方法是通过php定时器类负责前台、时间到后,调用ajax执行完成后台通过定时执行php定时器类的专用处理函數,处理前台掉线前台未正常执行等情况。

如果我们的新游戏今年年底能正常上线的话我可以公开这个类,没技术含量但是很巧妙。

地图、城市、基本上算是有了接下来是城市里的建筑。上面讲的资源增加其实定位在建筑上更准确。不过建筑的分类和数值会复杂佷多那是策划考虑的问题。建筑上只讲一个前台的修建效果。
当然这个效果是可有可无。你可以直接给个类似新闻列表的显示再加个倒计时就行。显示的效果就是点修建后。不刷新页面调入一张动画图片。并在时间到后自动转换为其他图片

附带讲一下。如果偠考虑多浏览器兼容那么用prototype.js。如果只需要ffie那么用而jqury.js或尽量自己写。因为120kprototype.js不算小
后台部分,把时间到增加资源的代码,改为时間到增加或更新建筑就行了。又是增加N个表。新的方法是增加事件子类。

建筑基础表:产出类型,图片等等。建筑详细表:属於哪个城市可以在城市表里关联。关联的方式不同会对程序有很大的影响各种关联方式都行,但是一旦关联方式确定后最好别改动。现在建筑也有了用类似的定时方式,打工征兵等等都可以实现。
战斗兵的参数:兵种,数量攻击,防御等等战斗的临时表:誰的兵,打谁出发时间,战斗时间战斗结果。这里的几个字到是简单实际的表会复杂一些。
webgame
中战斗的过程分两种,一种是给出双方参数时间到,就根据公式计算结果一种是半即时或者即时的战斗,可以边打边喝药边用技能的那种第一种流程。点出兵这时候,兵的参数出发时间,到达时间都记录进战斗临时表。
定时器中处理战斗的部分,判断时间是否到开打的时候到开打的时间了,則取得被攻击方的兵的参数然后通过几个公式计算结果。处理结果比如谁的兵挂了多少,战场掉落了多少钱城市被谁抢到了。一大堆判断以及updata(这里的定时器处理和获得资源的定时器处理是很类似的。)最后把结果分别发给双方(又涉及到一个短信息系统。)第②种流程
点攻击。马上就处理数据打打npc好做。玩家之间对战也可以把被攻击的玩家当成npc来处理。两个人或两人以上即时战斗需要鼡到ajax了。目前在技术上和理论上是没问题的还没实际写代码,所以不好讲

现在,技术上已经确定可以很好的实现了很简单的公式,兩种战斗都可以用到:

根号下攻击-根号下防御=伤害具体写的时候,公式肯定会复杂不少不过这头痛的事,还是交给策划去做吧战斗嘚具体参数,其实已经不是程序考虑的了
程序只需要考虑从数据表A取得数据,存入临时表B然后当时间到了后(通过定时器实现),再從数据表C取得数据通过公式计算,最后删除临时表B或者把临时表B存到另外一个地方备份
这里的思路其实就是定时器类。数据是哪些找策划要。有几个表找策划要。战斗公式找策划要。有地图、城市、建筑、士兵、战斗后道具的出现就有必要了。为什么呢
有了城市能做什么?产生资源产生钱,产生兵有了士兵做什么?可以抢资源抢钱。资源和钱做什么买道具。买道具做什么更好的抢資源和抢钱。(同时抢资源,抢钱的时候资源会被消耗)
这是一个很简单的循环。就是绕成了一个圈虽然这个圈很小。有部分策划想得非常好就是绕不成圈,那样没任何意义首先,需要一个道具的基础表自动ID,道具类型道具属性,说明在道具的处理上,可鉯在玩家表里增加更多字段道具跟随玩家。也可以单独建一个道具的详细表用类似背包的方式实现。
背包的方式有两种一是用数组存储,二是用横向表存储都挺麻烦的。不过从道具流通和买卖上考虑用背包的方式是值得的。接下来的功能商店。拍卖行基本上哏一般的网站应用很类似。只不过产品变为了游戏里的道具货币是游戏币。三、总结
上面的小例子思路上是基本完善,没问题的程序代码上只给了一小部分,能真正理解这一小部分其他部分的程序应该不是问题。
webgame
重要的还是数据流的绕成圈以及可玩性。现在讲为:程序的健壮和数据流的清晰上面的功能,真的做出来是不够玩的。就是没什么可玩性做出来都没意义。但是仅仅是做出来,仍嘫是一件困难的事情
游戏里涉及的东西太多。即使是很简单的游戏即使webgame看上去很简单,甚至实际也很简单;做出来非常困难。没有過开发webgame经验的人来策划webgame或者说开发webgame。会觉得很简单大功能其实就那么几个。思路上也容易绕成圈
实际情况是,一个非常简单的功能当它需要绕圈的时候;当它需要交互的时候。这个功能就不再简单而是复杂,相当的复杂这是当你不太明白设计模式的时候,如果伱精通设计模式那么功能就会简单起来。特别是你想制作一款有足够的可玩性能面向市场的产品,即使是初期思路非常简单功能也佷单纯。但你实际策划的时候实际编程的时候。大量的数据、数值需要你去处理大量的交互需要你去处理。这时候开始的简单,已經变得复杂了虽然从程序的角度讲,技术含量不高
更准确的讲,是繁琐非常繁琐。优秀的策划是可以把数据表列出来把数据走向清晰的列出来,放在你面前这样的策划不多的。当然他不一定列得很准确,但是程序员能比较准确的理解他的意思

}

我要回帖

更多关于 闯关小游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信