9RIA.com天地会 - 论坛

返回列表 发帖

天地培训

9RIA天地会官方培训机构

Adobe官方认证培训中心

[教程] 我的 ActionScript for Multiplayer Games and Virtual Worlds 学习笔记

本帖最后由 greenidea 于 2009-11-11 23:07 编辑

最开始的时候我写过关于 ActionScript 3.0 game programming university 的学习笔记,到现在已经过了1年多了,是单机的。最近发现有本关于AS3的多人游戏开发的英文书籍 ActionScript for Multiplayer Games and Virtual Worlds ,打算学习下,写写笔记,也希望大家能够一起交流下。我想这本也应该是粗略的介绍了下关于多人游戏开发的相关知识而已。我用比较烂的英文进行浅显的理解,英文不好再加上相关的知识点不是很了解,所以不妥的地方还望高人指点,也希望喜欢写游戏的朋友来我的博客 www.madud.com 和我交流.



目录 Summary of Contents
1. Web Game Landscape
2. Connecting Users
3. Security: You vs. Everyone Else
4. Introducing ElectroServer
5. Chat
6. Where Decisions are Made
7. Real-time Movement
8. Lobby System
9. Real-time Tank Game
10. Tile-based Games
11. Cooperative Game Play
12. Isometric View
13. Avatars
14. Virtual Worlds
15. Buddies
16. User Homes  

接下来就是逐章学习,并不是逐字翻译,也就随便写写,希望看的人不要当成真理,书肯定都会有错误的地方,我的理解可能更会有错误!

该书下载地址 ActionScript for Multiplayer Games and Virtual Worlds 解压密码: riabook.cn
1

评分人数

  • Aone

Aone 赐本贴 威望 + 2 银子 + 20  诏曰: 精品文章

天地人才库
顶起来 我也借楼主的光 学学 哈哈!!!

TOP

本帖最后由 tian1boy 于 2009-11-20 08:44 编辑

呵呵直接下载该书源码查看更方便吧http://www.electrotank.com/gamebook/
1

评分人数

  • Aone

Aone 赐本贴 银子 + 8  诏曰: 我很赞同

TOP

好兄弟,讲义气!---by eko

踏上天地会荣耀之路!

 

申请舵主

加入掘金队

加入译林军

知识专题整理

 

咨询(QQ):

1442604479(小地)

 

本帖最后由 greenidea 于 2009-11-11 23:02 编辑

那源代码我收下了啊,呵呵!继续... 随便写写的,大家想看就凑话看吧

1.web game landscape

简单来说,网页游戏就是通过浏览器来玩的游戏,目前基于网页的游戏是非常流行的,玩游戏很好玩,开发游戏其实更有乐趣。
本章我们将谈论下关于客户端的选择,创建网页游戏,可以使用很多不同的平台,这些平台提供某种开发语言,你选择该平台下的语言进行编码,然后将编码编译成可执行的游戏, 在发布到网页上去。为了让游戏能够在网页上运行,虚拟机必须要安装在你的客户端上,虚拟机就是让浏览器知道游戏如何运行的软件,ADOBE的FLASH虚拟机叫做FLASH PLAYER,相信说到FLASH PLAYER你已经很明白了吧
这里列出几种选择吧,JAVA, Shockware, Unity, Flash….
虽然JAVA, Shockware, Unity在很多应用上非常的强大,但是在浏览器上,FLASH更具优势,那是因为FLASH学习起来并不难,并且FLASH拥有强大的图形动画创作能力,以及强大的脚本语言AS3,程序处理图形动画非常的方便。另外一点是FLASH PLAYER家喻户晓,安装普及率很高,网页基本离不开FLASH PLAYER了。选择FLASH作为网页游戏的客户端是必然。
你不仅仅是通过浏览器玩多人游戏,你也可以下载并脱离浏览器,那是因为FLASH内容可以被编译成三种不同的格式SWF,EXE,AIR, SWF相信大家很熟悉了,嵌入网页的都是SWF, EXE文件是WINDOW执行文件,SWF传化成EXE,因为EXE本身包含了FLASH PLAYER了,所以你不需要安装FLASH PLAYER就可以执行了, AIR是ADOBE桌面应用,你需要下载安装AIR环境…
到目前,FLASH是最适用的网页游戏开发平台,但基于网页的FLASH游戏很多都是单机的,很少有多人的,玩家是更喜欢玩多人的,他们更喜欢玩新的东西,然而并不是很多开发者都熟悉如何去开发一个多人游戏,并且他们没有服务器端的知识,由于这些原因,目前FLASH多人游戏还很少
FLASH多人游戏已经成为可能早在FLASH PLAYER4的时候,FLASH PLAYER5已经可以和远程服务器建立SOCKET链接了。
近年AS3的出现,各种服务器端的成熟,FLASH多人游戏的开发更加成熟,各种FLASH开发的多人游戏以及虚拟社区不断的涌现,FLASH开发多人游戏和虚拟社区已经一种趋势,FLASH多人游戏更加吸引玩家,有很大的发挥空间,有很大的市场
这章其实没什么说的,就是一句话:FLASH做网页游戏的前端比较合适

TOP

笔记我是直接写到我的博客www.madud.com, 这样如果一章没有写完我就保存为草稿很方便,直到完成一章节的时候,我就会直接发布在我的博客和天地会上。那继续....

2.Connecting Users

这章主要讨论用户连接的,在虚拟社区和多人游戏中,用户与用户的交流是必不可少的.那么用户与用户之间是如何通信的呢,他们之间是直接连接起来,还是有其他方式呢,本章将回答这些问题,并且讨论常见的连接方式。

实现用户之间的交流,客户端必须发送信息给另一个客户端,并且这些信息由另一个客户端可见。通常的,客户端之间的相互交流,采用以下两种方式之一

第一是Peer to Peer. 意思是信息在客户端之间相互传送,而不需要服务器端的帮忙

第二是Client-Server:客户端只发信息给服务器,然后服务器在发送信息给其他客户端,这让其他玩家就知道你在做了什么事情。这类主要有两种方式,轮询以及长连接socket连接形式,socket连接是通过socket 服务器来实现的,这种是最为常见的方式

现在具体说说点对点(Peer toPeer)的连接方式,点对点是两个或者更多的客户端直接交流,不使用服务器的一种方式。一般,点对点在游戏中使用不是很多,点对点在游戏中,速度处理会有一定的优势,不需要服务器。点对点完全是客户端之间的交流, 服务器不是必须的. 游戏开发者和发布者喜欢这种方式,因为不需要去承担服务器端的一些开销。

点对点的缺点。当你的客户端数量比较合理的时候,或者说不是很多的时候,你可以用点对点实现一个游戏,因为不需要太多的消耗,不需要服务器. 但是当你有很大量的客户端存在,并且需要交流的时候, 例如成百上千的, 此时点对点并不可行。你可以想象一下,在有限的网络范围内,比如有1000个客户端,这1000个客户端相互连接会产生1000000个连接,那网络将会变的很紧张。

两人游戏的时候,玩家A与玩家B都控制鼠标去吃一块奶酪,玩家A比较接近奶酪,并且吃到了奶酪,然后玩家A发送消息给B,意思是告诉B,A已经吃了奶酪。B接受消息,删除了奶酪,更新了A的分数,玩家A与玩家B实现了共同的状态。意思是并没有发生任何冲突。

但是现在两个玩家朝着第2块奶酪走去,在几毫秒的时间内,两个玩家分别决定自己已经吃掉了奶酪。他们自身都认为已经吃到了奶酪,并且告诉对方是自己吃到的,这样就会发生冲突了,同样的也会有很多例子….

那么怎么解决这个问题呢,最放的解决方案是采用客户端与服务器的通信方案,让服务器端去判断这些比较重要的情况来解决冲突问题

按理说,点对点形式,可以用其中一个客户端做为主机去解决冲突,但是会产生两个新的问题。

第一点就是,这么做没有发挥点对点的优势,我理解的意思是你使得其实一个客户端压力过大

第二点是,点对点有很多安全隐患,因为所有的重要的游戏逻辑都在客户端处理,你是不可控制的

FLASH PLAYER10开始支持点对点了,FLASH PLAYER10已经支持一种新的通信协议RTMFP,Real-Time Media Flow Protocol, 他被用作点对点的信息传输,意味着FLASH 开发者有能力去连接FLASH客户端到其他FLASH客户端,这个FLASH 客户端必须先连接RTMFP-capable server ,例如Adobe Stratus Server, 这个Server的目的是连接做好FLASH客户端的相互连接。利用这个特性,FLASH开发者可以创建语音和视频聊天。

今天是光棍节了,我接着这个草稿继续写,一口气把这章结束并发布到madud.com上吧,也算对得起这个伟大的节日了,哈哈。接着说到了轮询,轮询的方式应该在适当的情况下使用的,如留言板,很多开发者屡次采用这种方式。在少量用户情况下,得到了比较成功的运用。

轮询就是客户端定时发送给服务器端并且检测更新的一个过程。 例如一个聊天室,客户端每秒发送两次给服务器端检测是否有更新,客户端定期的发送并且获得回复。这个来自服务器端的回复以某种方式说明没有任何更新,或者说有更新,用户加入或者离开的信息,或者有消息发出的信息。

轮询这种方式,可以想象一下如果在一个庞大用户的聊天室,或者多人游戏,虚拟社区中,有10000个用户,每个用户每秒询问服务器2次,服务器此时所作的计算将是非常繁重的,每秒两次呼叫,那就意味着每秒有20000次的请求以及20000次的回复,大量的贷款和服务器资源被占用了!

还要提一下关于轮询的一些不恰当的应用,当你做游戏实现实时的时候,显然定期发送消息给服务器不是一种很好的解决方案。这种方式我只是看书这么理解下,加上英文不是很好,如想更加深入和精确的学习这块的不妨多查查专门针对这块的资料,我想这本书也是大概给个印象而已。

SOCKET SERVER,SOCCKET服务器是运行在远程物理服务器上的程序,监听来自客户端的所有连接,接受来自客户端的连接,管理这些连接,并且处理客户端之间的消息。Socket服务器存在一个主机或者IP以及至少一个端口。

当一个客户端与服务器端建立socket连接的时候。他们已经与服务器建立了一个长连接,使用SOCKET,客户端可以发送消息给服务器端,服务器端可以发送消息给客户端,这期间不需要轮询,不需要问答的形式,因为SOCKET的建立,时刻准备着接受处理任何消息。

系统可以采用某种手段缩小传输的数据量,服务器可以集合客户端的消息,就是把发送过来的消息集合起来作为一次发送。这种形式也可以运行到点对点上。一些比较经济的Socket服务器也会考虑这么做的

SOCKET服务器接受事件驱动的特性,想象一下,在一个聊天室内,所有的用户都不做任何活动,不说话,也不进入进出,此时应该什么都不发生。没有任何信息的传输,没有任何带宽的占用。当一些事情发生的时候,有人进入进出,有人发送消息的时候,客户端程序采用事件处理,发送消息给服务器端,服务器端在把这消息通知给所有的客户端,让其他客户端知道在聊天室里发生了什么事情。事件驱动的应用在编程中是必不可少的。

接下来关于Socket服务器的选择,大多数做WEBGAME的人都知道现在的主流 SOCKET的服务器,我接触的时间比较短,没有听过也不了解书中提到的服务器,ElectroServer… 我知道FMS, RED5, SFS等等,选择哪个服务器最合适,因人因需求而定吧!这里不对每个服务器多说。
1

评分人数

  • wizim

wizim 赐本贴 威望 + 2 银子 + 20  诏曰: 顶!

TOP

前两个章节就发出来了哈
关注下楼主

TOP

出来顶顶 十一 反犬句 的帖~啊哈哈~~~
天天都要进步一点

TOP

这个要支持lz

TOP

支持 LZ 继续更新!

TOP

最近又开始忙了,忙完了,再继续....

TOP

强烈支持LZ
好好学习,天天向上!

TOP

强烈支持楼主写下去!

TOP

感谢楼主的贡献

TOP

楼主啊  自从你的出现,我满脑子都是你了! 难道我爱上你了?·····

TOP

最近也在看这个,支持楼主!

TOP

返回列表