网页游戏开发概念

网页游戏概述

1.1 多人游戏适合的领域

1.1.1 典型目的

  1. 从广告中获取收益

通过广告展示获取收益。尽可能多地吸引网民俩访问你的网站,并且使他们驻留的时间更长,从而给你的站点带来更多的广告曝光次数。

  1. 使站点更具吸引力

非游戏网站会通过引入一些游戏以让访客逗留更长的事件。

  1. 市场营销

(多人互动)游戏常被用来宣传推销电影、电视节目和体育赛事等。

  1. 推动下载

通过免费的轻量级网页游戏(目标推销游戏的精简版)来推销他们可下载游戏产品。

  1. 教育

通过教学和游戏结合起来使得枯燥的教学变有趣。

  1. 因为我能

开发者展示个人作品。

2 链接用户

2.1 链接技术

2.1.1 P2P(Peer-to-Peer 对等网络) 架构

两个或多个客户端不经过服务器而直接通信的架构。信息只在客户端间传送,不需要服务器的介入。可能会首先使用服务器以让客户端之间能查找到对方,但此后就不再需要了。

优点

  1. 延时校比C/S少了消息从客户端到服务器的传递时间。( C/S: C -> S -> C, P2P: C -> C )
  2. 不需要服务器。

缺点

  1. 游戏的可扩展性差。适用于游戏客户端比较少的情况。游戏客户端比较多的时候,每个客户端都需要维持大量的开放链接,网络负担大。
  2. 争议解决机制不健全,没有中心逻辑的决策者。游戏状态判定会出现争议或者冲突。

2.1.2 轮询(不建议使用的链接技术)

客户端定时给服务器发送请求以检查信息更新的过程。

缺点

  1. 可扩展性差。客户端数量大的时候,每次轮询的流量巨大,对服务器的消耗巨大。
  2. 网络延迟大。每次轮询消耗的时间大,不适用于实时要求高的游戏。
  3. 客户端断线处理延迟。客户端离线,只能通过服务器主动去"注意到"客户端已经没有发出轮询请求。

2.1.3 Socket服务器

网络上的两个程序(S-S,C-S,C-C)通过一个双向的通信连接实现数据的交换。

本质: socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

优点

  1. 双向通信。
  2. 节约资源。
  3. 实时,延迟校

3 安全

3.1 逻辑安全

为参与到虚拟世界的玩家打造一个安全的环境。

3.2 物理安全

在实践中防止黑客盗取数据、毁坏程序和扰乱他人的用户体验过程。

3.2.1 问题与解决方案

  1. 最小化接触面

努力使得黑客所能接触到的系统区域(代码、服务器、数据、客户端操控区域等)最小化。

  1. 晦涩不等于安全

晦涩复杂的加密算法不等于安全。应该保证即使黑客确切地知道了程序的算法也不能破解。

  1. 一概不信
  2. 验证一切

不要相信客户端(反之亦然),验证一切客户端发送给服务器的东西,以确保它永不破坏规则造成麻烦。

  1. 诱捕一切

假设客户端在错误的还时间发送数据或者发送的数据不正确。你应该在服务器端诱捕这些错误并可能详尽的记录下错误的信息。有助于你根据需要修补和加固系统。

  1. 非需则删

与上述的最小接触面原则相似的。不需要的工具、代码,输出等都不能暴露给用户。

  1. 不授人以柄

自定义错误代码(err code)即便让用户看到也无法轻易理解他们的原意。

3.2.2 防火墙

限制访问、阻断没有开发的的访问,保护服务器运行环境。

3.2.3 常见黑客行为

  1. 利用游戏行为(游戏漏洞)
  2. SQL注入
  3. 跨站脚本执行
  4. 数据包注入
  5. 修改消息
  6. 内存变量攻击

6 游戏逻辑决策位置

6.1 概念

6.1.1 客户端权威型

多数重要的游戏逻辑在客户端上裁决的游戏类型

所有信息都是已知的回合制游戏最可能适合采用客户端权威型模式。“所有信息都是已知”指信息处理不存在偶然性与隐含性
例如: 桌球、棋类、等回合制游戏

6.1.2 服务器权威型

多数重要的游戏逻辑在服务器上裁决的游戏类型

多数实时类游戏(不存在回合的游戏)自动归属于服务器权威型游戏。另外,在游戏信息处理上存在偶然性或者尚未透明的某些回合制游戏也应该用服务器权威型来处理。
例如: 多人坦克大战、赛车、德州扑克等棋牌类游戏。

7 实时运动

7.1 响应控制

客户端立即响应用户的输入,如果服务器同意该操作,则客户端和服务器端也就达成了同步,如果不同意,则客户端需要对之前的操作给予修正。这过程中会产生跳动现象。

7.2 路径类型

7.2.1 路点

路点: 游戏对象的目标位置。游戏对象会从其当前位置运动到该路点。

7.2.2 矢量/航向

通过运动对象的航向信息,可以执行预测运动。

7.2.3 视线

一个初始点,例如一辆车或者一把枪所在的位置。视线就是从初始点指向某个选定向外的方向(例如枪口所面对的方向)所引出的一条路径,并且最终当它碰到某个物体时就会停下来。

7.3 基于帧的运动

对象的位置会随着帧的刷新而不断变化。

由于硬件的帧速率都有所不同,这就造成了播放相同的动画,电脑慢的玩家比电脑快的玩家需要的时间长得多。
所以基于帧运动的通常适用于对时间同步要求不太高的多人游戏。

…待续

参考

《ActionScript大型网页游戏开发》