为什么 TypeScript 成功了,更廖俊波先进事迹的 ActionScript 却失败了

&b&2016 年了,还有人在关心 ActionScript,我感到很是欣慰啊。&/b&&br&作为一个老老老老老 Flasher 来说两句。&br&&br&题主问得
“如果当年 Adobe 对 Flash 见好就收,把 ActionScript 作为以浏览器为目标平台的语言,会取得成功吗?” 和 &a data-hash=&64ea560a29c1a17c50c6& href=&///people/64ea560a29c1a17c50c6& class=&member_mention& data-editable=&true& data-title=&@张程易& data-hovercard=&p$b$64ea560a29c1a17c50c6&&@张程易&/a& 回答的 “针对题主的第二个问题,我想说,Adobe并没有能力影响浏览器,微软的VBscript凭借Windows内嵌的IE6都没有成功,Adobe有什么能力能占领浏览器平台呢?”&br&&br&&b&其实都不对。啊,简直大错特错。&/b&&br&&br&&b&Adobe 当然想到了把 ActionScript 作为以浏览器为目标平台的语言,Adobe 也当然有能力影响浏览器平台……&/b&&br&&br&君可知浏览器御用语言 JavaScript 背后的 ECMAScript 规范,又可曾听过传说中的 ECMAScript 4th Edition?&br&君可知这个规范由 Adobe 与 JavaScript 作者 Brendan Eich 联手打造,却最终惨遭遗弃,而其唯一实现,就是 Flash 中 ActionScript 3.0 ?&br&君可知从 1999 年的 ES3,到 2009 年的 ES5(Harmony),这段长达十年之久的历史里,又发生了什么惊天地泣鬼神的故事?&br&&br&欢迎来到《走进科学》。&br&&br&啊不,是《知乎 Wiki》&br&知乎上关于这个问题的好答案,真的太多了,由衷感谢下面各位。&br&&br&&b&1.
&a href=&/question//answer/& class=&internal&&ECMAScript 6 会重蹈 ECMAScript 4 的覆辙吗? - 尤雨溪的回答&/a&&/b&&br&&blockquote&ES4 的故事相当复杂... 我一时八卦心起整理了一下:&br&2005 年开始弄 ES4 的主要是 Brendan Eich 和开发了 AS3 的 macromedia(后来是收购 macromedia 的 Adobe)……&/blockquote&ES4 的历史与八卦,听小右哥 &a data-hash=&cfdec6226ece879d2571fbcf& href=&///people/cfdec6226ece879d2571fbcf& class=&member_mention& data-editable=&true& data-title=&@尤雨溪& data-hovercard=&p$b$cfdec6226ece879d2571fbcf&&@尤雨溪&/a& 给你娓娓道来。下面的参考文献也满是干货。&br&&br&&br&&b&2. &a href=&/question//answer/& class=&internal&&ECMAScript 6 会重蹈 ECMAScript 4 的覆辙吗? - 贺师俊的回答&/a&&/b&&br&&blockquote&ES4被干掉我个人觉得很大程度上是“政治”原因而非技术原因。注意本段均为带有强烈个人观点的阴谋论叙述……&br&&/blockquote&&a data-hash=&3ec3ba90a0d38& href=&///people/3ec3ba90a0d38& class=&member_mention& data-editable=&true& data-title=&@贺师俊& data-hovercard=&p$b$3ec3ba90a0d38&&@贺师俊&/a& 贺老之所以为贺老,看的就是贺老犀利的观点。&br&&br&&br&&b&3. &a href=&/question//answer/& class=&internal&&未来是 HTML 5 还是 Flash 的时代? - 知乎用户的回答&/a&&br&&/b&&blockquote&1999年开始接触Flash技术,2000年向Macromedia提交了Flash AS1的Math相关算法而成为beta tester,2003年是Macromedia Flash的dev volunteer, 2004年成为Macromedia在中国的第一个技术员工,2005年,Adobe并购Macromedia结束,进入Adobe做工程师,2008成为Flash Video与Flash Media Server的大客户技术经理,2009年成为Flash Platform Evangelist......&br&&/blockquote&来自 Egret Co-founder,Adobe 中国 Flash 平台教主级人物 &a data-hash=&557cc99bfe762006cbe8beb& href=&///people/557cc99bfe762006cbe8beb& class=&member_mention& data-editable=&true& data-title=&@马鉴& data-hovercard=&p$b$557cc99bfe762006cbe8beb&&@马鉴&/a&,3000 赞的大回答,分享他与 Flash 与 AS 的沸腾十五年。&br&&br&&br&&b&4. &a href=&/question//answer/& class=&internal&&如何看待 HTML5 开源游戏引擎 Egret,HTML5 游戏开发的前景如何? - 知乎用户的回答&/a&&/b&&br&&blockquote&Egret 为何用TypeScript?为何不用Dart,AtScript或者其他?&br&TypeScript(TS)是一个严格意义上JavaScript超集......&/blockquote&同样来自 &a data-hash=&557cc99bfe762006cbe8beb& href=&///people/557cc99bfe762006cbe8beb& class=&member_mention& data-editable=&true& data-title=&@马鉴& data-hovercard=&p$b$557cc99bfe762006cbe8beb&&@马鉴&/a&,由于 Egret 的设计非常非常接近 Flash,而 TS 又非常接近 AS3……里面有关 ES Feature Set 和 Flash vs Egret 的图挺不错的。&br&&br&&br&&b&5. &a href=&/question//answer/& class=&internal&&Flash 动画是如何兴起和衰退的? - 曾嵘的回答&/a&&/b&&br&&blockquote&Flash 和Flash MV依然会有市场,它们还会在自己的领域继续发光,Adobe依然可以开心地卖软件,Macromedia依然是死不瞑目。&br&只是——这世界变了。&/blockquote&大概是我在知乎上关注的第一个 Flasher
&a data-hash=&cbdfeb87f31f79e0b8db33f96ebd5869& href=&///people/cbdfeb87f31f79e0b8db33f96ebd5869& class=&member_mention& data-editable=&true& data-title=&@曾嵘& data-hovercard=&p$b$cbdfeb87f31f79e0b8db33f96ebd5869&&@曾嵘&/a&,2013 年还力挺 Flash/AIR 的他,2014 年的答案里已经满满都是心酸。&br&&br&&br&&b&6. &a href=&///?target=https%3A//en.wikipedia.org/wiki/ECMAScript& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ECMAScript&i class=&icon-external&&&/i&&/a& - wikipedia&/b&&br&&blockquote&&p&By August 2008, the ECMAScript 4th edition proposal had been scaled back into a project codenamed ECMAScript Harmony.&/p&&/blockquote&&br&&br&&b&7. &a href=&///?target=http%3A///63036/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&趣文:编程语言拟人化(第二弹)&i class=&icon-external&&&/i&&/a&&/b&&br&&blockquote&“她的父亲是有名的设计师,但是在她5岁的时候被卷入战火身亡。她希望为即将到来的和平时代出一份力,比谁都更早开始学习这门语言,然而在好不容易能说好这门语言的时候,这语言被采用为公用语的提案泡汤了。”&br&&/blockquote&&br&&br&这个世界上纯粹的东西不多,技术算一个。&br&可是就算是技术,也不是那么纯粹的。&br&&br&&br&不说了,满满都是泪。&br&&img src=&/bde_b.png& data-rawwidth=&597& data-rawheight=&182& class=&origin_image zh-lightbox-thumb& width=&597& data-original=&/bde_r.png&&&br&那年的英语比现在还渣。&br&那年我还说着 HTML5 腊鸡,Flash 牛逼。&br&那年。
2016 年了,还有人在关心 ActionScript,我感到很是欣慰啊。 作为一个老老老老老 Flasher 来说两句。 题主问得 “如果当年 Adobe 对 Flash 见好就收,把 ActionScript 作为以浏览器为目标平台的语言,会取得成功吗?” 和
回答的 “针对题主的第二…
前段时间一个C#的同事转AS3,我给了他一些意见,他很顺利的转型了,现在已经可以适应RPG游戏开发。这些意见也给你看看:&br&&br&1.了解Flash Platform的全部技术。可以看看这篇文章:Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系:&a href=&///?target=http%3A//zengrong.net/post/1295.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系&i class=&icon-external&&&/i&&/a&&br&&br&&br&2.在下面选择一本书籍在1周内看完:&br&&ul&&li&Flash ActionScript 3殿堂之路 &a href=&///?target=http%3A///subject/2249511/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flash ActionScript 3殿堂之路 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&li&ActionScript 3.0 Cookbook中文版 &a href=&///?target=http%3A///subject/2367867/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ActionScript 3.0 Cookbook中文版 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&li&ActionScript 3.0编程精髓 &a href=&///?target=http%3A///subject/3102069/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ActionScript 3.0编程精髓 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&/ul&这三本从难度上是从易到难,如果是有经验的开发者,建议看第三本《ActionScript 3.0编程精髓》,原因是足够深入。前面两本都很浅。&br&&br&&br&3.看完官方的ActionScript 3.0 开发人员指南 &a href=&///?target=http%3A///zh_CN/as3/dev/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/zh_CN/as&/span&&span class=&invisible&&3/dev/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&建议用1周,看不懂的跳过,碰到问题再来看。&br&&br&&br&4.把官方的用于 Adobe Flash Platform 的 ActionScript 3.0 参考 &a href=&///?target=http%3A///zh_CN/FlashPlatform/reference/actionscript/3/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Adobe ActionScript(R) 3 (AS3 ) API 参考&i class=&icon-external&&&/i&&/a& 浏览一遍,注意选择运行时和产品。&br&&ul&&li&运行时中,AIR可以暂时不看;&/li&&li&产品中,可以只看Flash Professional CS5.5 和更早版本这个部分。&/li&&/ul&5.看完下面两本书:&br&&ul&&li&Flash ActionScript3.0动画教程 &a href=&///?target=http%3A///subject/3016575/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flash ActionScript 3.0动画教程 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&li&Flash ActionScript3.0动画高级教程 &a href=&///?target=http%3A///subject/4175538/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flash ActionScript 3.0 动画高级教程 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&/ul&6.熟悉设计模式(如果以前不熟),建议在下面两本中选择一本(个人偏向第一本):&br&&ul&&li&Head First 设计模式 &a href=&///?target=http%3A///subject/2243615/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Head First 设计模式 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&li&ActionScript 3.0设计模式 &a href=&///?target=http%3A///subject/4001015/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ActionScript 3.0设计模式 (豆瓣)&i class=&icon-external&&&/i&&/a&&/li&&/ul&7.熟悉一套UI框架,建议看这套:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MinimalComps&i class=&icon-external&&&/i&&/a&,然后自己写一套UI框架。&br&如果还想了解其他的UI框架,可以看这里:&a href=&///?target=http%3A//zengrong.net/flashassistant%23UI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flash&Flex大全&i class=&icon-external&&&/i&&/a&&br&Flex是一套设计的非常不错的框架,有空可以看看源码。&br&&br&&br&8.这里还有一篇文章,可以参考一下:有Flex应用基础,做游戏还需要学习什么:&a href=&///?target=http%3A//zengrong.net/post/1266.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&有Flex应用基础,做游戏还需要学习什么&i class=&icon-external&&&/i&&/a&&br&&br&更新&br&&b&关于Actionscript2.0的推荐&/b&&br&&br&评论中有同学提到关于推荐 Actionscript 2.0 的书籍,我的建议是:&br&&ol&&li&AS2是个半成品,高不成低不就,强烈不建议学习。&/li&&li&要么学AS1, 要么AS3。&/li&&/ol&如果你一定要学的话,我还是推荐两本我读过的不错的书(虽然你不一定能买到),Actionscript 2.0虽然很糟糕,但这两本书确实是相当不错的。&br&&br&&a class=& wrap external& href=&///?target=http%3A///subject/1278317/& target=&_blank& rel=&nofollow noreferrer&&Flash MX 2004 ActionScript 2.0与RIA应用程序开发 (豆瓣)&i class=&icon-external&&&/i&&/a&&br&香港资深闪客
&a class=& wrap external& href=&///?target=http%3A//.hk/& target=&_blank& rel=&nofollow noreferrer&&颜金桫&i class=&icon-external&&&/i&&/a& 的作品,相当有深度。值得一读。&br&&img data-rawheight=&1280& data-rawwidth=&1001& src=&/394f8bf442df0_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1001& data-original=&/394f8bf442df0_r.jpg&&&br&&br&&a class=& wrap external& href=&///?target=http%3A///exec/obidos/ASIN//ref%3Dnosim/moockorg& target=&_blank& rel=&nofollow noreferrer&&Essential ActionScript 2.0: Colin Moock: 5&i class=&icon-external&&&/i&&/a&&br&大名鼎鼎的Flash专家 &a href=&///?target=http%3A//en.wikipedia.org/wiki/Colin_Moock& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Colin Moock&i class=&icon-external&&&/i&&/a& 的作品,这本书的 Actionscript 3.0 版也相当不错。 &a href=&///?target=http%3A//en.wikipedia.org/wiki/O%2527Reilly_Media& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&O'Reilly&i class=&icon-external&&&/i&&/a& 的书确实是没说的。&br&这本书&b&没有&/b&简体中文版,但有一本台湾 &a href=&///?target=http%3A//.tw/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gotop 碁峰資訊&i class=&icon-external&&&/i&&/a& 出的繁体中文版,趙英傑工作室翻譯,名稱為《精通ActionScript 2.0--探究Flash Actionscript 2.0物件導向程式設計的精奧進化》,当时我花了大概300人民币拿下这本九成新的二手书。我的面向对象编程入门就是从这本书开始的。&br&&img data-rawheight=&1280& data-rawwidth=&960& src=&/d3b9ea3ed892b3631fe73_b.jpg& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/d3b9ea3ed892b3631fe73_r.jpg&&
前段时间一个C#的同事转AS3,我给了他一些意见,他很顺利的转型了,现在已经可以适应RPG游戏开发。这些意见也给你看看: 1.了解Flash Platform的全部技术。可以看看这篇文章:Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Playe…
详见博客:&a href=&///?target=http%3A//zengrong.net/post/1295.htm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zengrong.net/post/1295.&/span&&span class=&invisible&&htm&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&b&ActionScript&/b&&br&ActionScript通常简称为AS,它是Flash平台的语言。AS编写的程序,最终可以编译成SWF、SWC。SWF就是我们常说的Flash动画。但是现在SWF已经不仅仅是动画,而是RIA的载体。&br&ActionScript有3个版本,分别是1.0版(AS1),2.0版(AS2)和3.0版(AS3)。只有Flash Player 9及以上播放器才支持AS3编译的SWF。这三个版本的差别非常大,现在最流行的版本是AS3。&br&&b&&br&&/b&&br&&b&Flex与MXML&/b&&br&因为在开发RIA的时候,需要很多常用的功能,例如控件(Button,ComboBox,List……)、布局(VGroup、VBox……)等等…… Adobe就开发了一套官方的框架集来实现这些功能,这套框架集就叫做Flex。&br&为了方便程序员快速编写RIA程序界面,Adobe又实现了一种基于XML语法的语言&strong&MXML&/strong&,这套语言很像HTML,可以与AS混用,MXML最终也是编译成SWF或SWC。 Flex框架就是使用AS3与MXML两种语言写成的。但说白了,MXML 外加实现了MXML语法,如果你有兴趣,也可以自己实现这些。 Flash和Flex,都是用AS编写,使用swf体现。&br&&b&&br&&/b&&br&&b&Flash&/b&&br&现在Adobe已经将Flash其定义为一个平台(Flash Plantform),包括了Flash IDE、Flash Builder、AIR、Flash Player以及更多。但我们一般讲Flash,有两个意思,一个是指Flash动画(也就是网页上扩展名为swf的动画),另一个就是Flash IDE。&br&Flash(IDE)从4.0开始进入中国,前期一直在网页动画方面告诉发展,多被用来做网页小广告(让你CPU100%的罪魁祸首之一)和MV(showgood三国系列、小小系列、大学自习室……曾经风靡一时啊)。那时的“闪客”,主要是做动画,即使涉及到编程,也大多是用当时的AS1.0(后来Flash MX 2004升级为AS2.0)写一点stop、gotoAndPlay之类的东东了。Flash(IDE)发展到8.0版本以后,才开始大量用于编程,当时比较流行的就是“Flash留言本”等等。相关历史我做了一张图来表示,括号里的数字是年份。&img src=&/ca65d01cbdd1a_b.jpg& data-rawwidth=&685& data-rawheight=&514& class=&origin_image zh-lightbox-thumb& width=&685& data-original=&/ca65d01cbdd1a_r.jpg&&&b&&br&&/b&&br&&b&Flash Builder/Flex Builder&/b&&br&AS发展到3.0之后,由于其语法和JAVA比较像,再加上增强的性能与强类型,可以完全脱离FLA文件,使用纯文本编码,受到了许多其他程序员(尤其是JAVA程序员)的青睐。由此得以高速发展,用AS开发程序的人也越来越多。AS在视频网站、游戏行业发展迅速。但是,Flash IDE虽然是一个很好的动画制作工具,却不是一个好的开发工具。于是,Adobe又发布了Flex Builder,一个基于Eclipse的IDE,并发布了Flex SDK,后来又开源了。&br&有了免费的编译器,Flex得以快速发展。用Flex Builder也可以开发纯AS项目(即所有的文件都是as文件,不包含MXML,也不包含FLA)。一个真正的程序猿,应该更愿意使用这种方式吧?Flex Builder从4.0开始,被Adobe改名为Flash Builder。&br&Flash Builder和Flash IDE不应该放在一起比较,它们不是一类软件。如果一定要比较一下的话,那么就是Flash IDE比较偏重于设计一点,用它做动画比较方便,当然也可以用它编写AS3程序。用Flash IDE编写的程序,会有一个FLA源文件,可能还包含多个as文件。Flash Builder偏重于程序,用它可以开发MXML(也就是Flex)项目。也可以用它编写纯AS项目。用Flash Builder编写的项目,都是纯文本文件(.as或者.mxml)。 对于程序流,当然偏爱Flash Builder,而设计流比较偏爱Flash IDE。&br&当然,IDE并非只有Adobe官方的东西,Flash Develop就是个免费的IDE。如果你愿意,用记事本做编辑器也没什么不好(比如说zrong就正在尝试VIM),因为SDK和编译器都是免费的。&br&&b&&br&&/b&&br&&b&Flash Player&/b&&br&swf动画需要在网页上显示出来,就需要安装Flash Player。Flash Player的不同版本,其实与Flash IDE也有一定的对应关系(从上图也能看出来)。但到了AS3时代后,这个对应关系就不那么明显了。Flash Player 9是能支持AS3 的最低版本(其实前面还有一个Flash Player 8.5,只是没普及就升级到9了),后面的Flash Player 都能支持AS3了。关于Flash Player,我写过一篇有史以来关于Flash Player的最详细说明,看这个就很清楚了。&br&&b&&br&&/b&&br&&b&AIR&/b&&br&Flash Player 再强大,也是运行在浏览器中,受浏览器约束。为了摆脱浏览器,Adobe又出奇招,发布了AIR。AIR其实就是一个Runtime,你可以把它理解成JVM。有了AIR,就可以用AS3开发桌面软件,而且开发出的软件可跨平台运行(这和JAVA的&strong&一次编译,随处运行&/strong&不是如出一辙么!)。目前国内的AIR应用主要集中在网站的客户端方面,例如新浪微博AIR客户端等。&br&&br&&b&SWF SWC SWZ&/b&&br&&strong&SWF&/strong&&br&swf是我们见到的最多的Flash平台文件了。是的,它就是Flash平台的最终表现形式。前面说到了,无论是Flex、Flash还是纯AS3,最终编译出来的文件都是swf格式,浏览器中的Flash Player插件和独立的Flash Player,也只能“打开”swf文件进行播放。前面说到的AIR,它的本质也就是运行时+swf而已。&br&其实并非所有的swf都能直接播放的。swf有3种:&ol&&li&&strong&程序SWF(application swf)&/strong&:可以直接在flash player中运行的swf;&/li&&li&&strong&库SWF(library swf)&/strong&:swc文件中的library.swf;&/li&&li&&strong&模块SWF(module swf)&/strong&:Flex Module产生的swf文件。&/li&&/ol&最终用户碰到的绝大多数都是“程序SWF”,而程序猿们碰到后面两种SWF的可能性就比较大。&br&&strong&SWC&/strong&&br&SWC是一种库文件,通常用来发布非开源的类。程序猿们将源码编译成SWC文件,并发布API文档,我们就可以使用这些SWC提供的类库进行自己的开发。SWC并不是运行时共享的,而是在编译的时候直接加入了程序SWF中。最终的程序SWF可以脱离SWC运行。&br&SWC本质就是一个zip文档,其中包含一个library.swf文件和一个用于描述的xml文件,你可以用zip管理器打开它查看。&br&&strong&SWZ&/strong&&br&你可能会发现,从TLF出现以来,Flex SDK中多了一个flashx包,这个包中的功能,就是用SWZ实现的。SWZ是在运行时共享的库,你可以将其看作一个&strong&可以放在外部的SWC&/strong&。而且SWZ的共享是平台级别的(Moudle SWF的共享是浏览器级别),存在于操作系统缓存中(Module SWF的存在浏览器缓存),只要下载过一次SWZ,你的操作系统中所有用到这些SWZ中的地方(无论是IE、FF、Chrome还是AIR)都不用重新下载。&br&对于程序猿,这里的关于SWC和SWZ的信息肯定是不够的,所以建议看一下smithfox的swf swc swz RSLs ant,本文的这个部分也是参照它写成的。
详见博客: ActionScript ActionScript通常简称为AS,它是Flash平台的语言。AS编写的程序,最终可以编译成SWF、SWC。SWF就是我们常说的Flash动画。但是现在SWF已经不仅仅是动画,而是RIA的载体。 ActionScript有3个版本,分别是1.0版(…
客户端大多数是flash,小部分unity3d和自己开发浏览器插件或者html5。&br&&br&服务端有C/C++、Java、C#、PHP、erlang、nodejs等等,只要你想得到的基本上都有人在用。&br&&br&页游前后端一般使用TCP/IP协议,SNS游戏用HTTP协议的挺多,页游和SNS游戏在应用场景上有所不同,所以架构也会有所不同,所以SNS游戏用PHP的多,页游新兴时也是PHP的多,但是随着游戏类型多样化,需求提高,应该已经逐步没人再用PHP了。&br&&br&你说的释放技能这样一个流程:&br&1. 客户端告诉服务端释放什么技能&br&2. 服务端验证技是否能释放,比如玩家是否装配了这个技能,蓝够不够等等&br&3. 服务端按技能配置找到周围的命中对象(可能是群攻),进行扣血等操作,更新敌人和玩家的状态&br&4. 服务端发送广播给周围的客户端,告诉这些客户端发生了什么事情&br&&br&可以阅读Mozilla开源的Browser Quest这个项目,一个html5 + nodejs的游戏,完整演示了客户端服务端怎么通讯的,逻辑怎么做的,通讯怎么做的,很值得参考。&br&&br&游戏demo: &a href=&///?target=http%3A//browserquest.mozilla.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&browserquest.mozilla.org&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&项目代码: &a href=&///?target=https%3A///mozilla/BrowserQuest& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/mozilla/Brow&/span&&span class=&invisible&&serQuest&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
客户端大多数是flash,小部分unity3d和自己开发浏览器插件或者html5。 服务端有C/C++、Java、C#、PHP、erlang、nodejs等等,只要你想得到的基本上都有人在用。 页游前后端一般使用TCP/IP协议,SNS游戏用HTTP协议的挺多,页游和SNS游戏在应用场景上有所不同…
我没有用XCode开发过具体项目,我的移动开发经验主要是Android SDK、AIR for Android、AIR for iOS。&br&&br&因为开发经验的限制,我&b&不能&/b&准确的说明XCode的优势和劣势,这里只基于自己的Android开发经验,以及AIR在iOS上的开发经验来分析。&br&&br&&br&&b&AIR的优势&/b&&br&&br&AIR的优势其实就是Flash或者ActionScript语言的优势。这些优势大家已经在互联网上看过许多了,我还是啰嗦一下:&br&&b&1. 优秀的2D性能和渲染机制&/b&&br&网络上关于Flash性能底下的言论是绝对错误的。其实Flash的性能相当高,而且大多数情况下都比Javascript高。ActionScript经过如此长时间的专制发展,形成了一套易于使用的显示列表(DisplayObject)机制,加上灵活的MovieClip和Sprite等等对象,在制作2D动画方面,是目前互联网技术中最好的选择。即使是你认为显示列表的性能底下(在显示对象超过1K的情况下确实低下),你也完全可以使用BitmapData这个高性能的引擎做位图渲染。&br&&b&2. 蓬勃发展的3D技术&/b&&br&Stage3D比OpenGL要更容易掌握。使用各种开源、付费的引擎,程序员可能不需要了解3D工作机制,就能制作3D动画(或者游戏)。当然,目前的Stage3D的驱动支持还有待完善,但Adobe目前很努力(不努力就挂掉了),驱动情况会慢慢解决掉。&br&更让人激动的是Starling这类使用Stage3D进行2D渲染的引擎。完全为游戏而生,把Flash的2D性能又提高了一个数量级。&br&&b&3. 比较完善的框架和社区&/b&&br&Flash社区经过多年发展,已经非常完善,有很多的优秀的框架、工具、引擎、调试器、甚至编译器可以使用。当然,OC社区或许更完善,所以这个有优势并不明显。&br&&b&4. 简单易用的语言&/b&&br&ActionScript是简化版的JAVA。我无法把ActionScript与OC对比,但ActionScript绝对比JAVA易用。相关比较可以看这个:&a href=&/question//answer/& class=&internal&&Flex 用的 ActionScript 3.0 语法如此像 Java,为什么不直接用 Java 语言描述呢?&/a&&br&&b&5. 使用ANE可以完成所有OC能做的事情&/b&&br&AIR使用的ANE插件技术,让你用OC开发一些本机插件,以API的方式来调用它,让你能完成AIR本不能完成的事情。后面我会提到,其实这个也算劣势。&br&&br&&b&AIR的劣势&/b&&br&&br&&b&1. 大文件&/b&&br&AIR在iOS上并非采用的是虚拟机模式。它直接把ActionScript代码编译成二进制代码,这与XCode变成成的二进制代码没有区别。整个AIR运行时也变成二进制代码。这就导致了无论是什么大小的程序,你总要在它的基础上加上运行时的大小。&br&&b&准确的编译文件大小测试:&/b&&ul&&li&AIR3.5,AS项目,仅使用了graphics中的drawRect方法,3.8MB&/li&&li&AIR3.5,Flex4.6项目,没有放任何组件,5.8MB&/li&&/ul&&b&2. 不是BUG的BUG&/b&&br&由于上面描述的原因,你要把ActionScript当作OC来用,否则可能会碰到某些不是BUG的BUG。我在这篇文章中就讲到了这样一个BUG:&a href=&///?target=http%3A//zengrong.net/post/1654.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BUG?AIR打包的iOS程序在整数比较上的问题&i class=&icon-external&&&/i&&/a&;&br&这里还有更多的AdobeBUG:&a href=&///?target=http%3A//zengrong.net/post/tag/AdobeBug& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AdobeBug | zrong's Blog&i class=&icon-external&&&/i&&/a&&br&&br&&b&3. 痛苦的调试&/b&&br&FlashBuilder并不是面向iOS开发的,所以它的调试过程复杂且痛苦。在FlashBuilder 4.6上,我必须利用iTunes这个垃圾软件把打包好的Debug版本的ipa文件安装到iOS设备上,然后在FlashBuider上启动调试进程。Debug版本的ipa运行十分缓慢(对,是十分),甚至因为它的缓慢,很多BUG都无法发生。&br&当然,这种情况在AIR 3.4出现之后有所好转。AIR 3.4不需要iTunes就能把ipa部署到iOS设备中进行调试。但是,目前的FlashBuilder4.6还不支持这种方式,你要使用AIR3.4的新的直接部署调试功能,就必须使用命令行,然后调用fdb来调试。&br&AIR 3.5支持在Release版本(非Debug版本)中输出调试堆栈,这能让我们用正常的速度来调试ipa,但这其实是让我们更麻烦了。&br&&b&4. 痛苦的编译&/b&&br&你能忍受一次编译需要20分钟么?如果你的程序很复杂,那么这个时间还会延长。你能忍受在发布程序之前,突然发现一个小bug,然后等待20分钟编译调试么?注意,某些bug,只能在编译之后才会出现。&br&&b&5.痛苦的ANE调试&/b&&br&和上面的调试不同,ANE的调试更加痛苦可不可捉摸。很多情况下,ANE的错误是直接FC,没有报错代码,没有消息,解决问题只能靠猜,你能猜中么?&br&更痛苦的是,大部分情况下,使用AIR的程序员都在Windows下工作,使用AIR自带的ADL在Windows系统上调试,这种调试方法是不支持ANE的,你要测试ANE,必须打包后在iOS真实设备上调试,这又碰到了上面说的“痛苦的调试”的情况。&br&&br&&b&不完善的小结&/b&&br&&b&这种情况下可以使用AIR&/b&&br&&ul&&li&你要开发的东西是游戏(不要用AIR开发应用)&/li&&li&有一个Flash游戏需要移植到iOS上(移植)&br&&/li&&li&开发一个新游戏,只有1个月时间(快速开发)&br&&/li&&li&只会ActionScript和Flash(技术限制)&/li&&li&跨平台优先级高于一切(跨平台)&/li&&/ul&&b&关于Flex&/b&&br&Flex SDK包含swf编译器、swf相关工具、MXML语言和一套名为Flex的框架,这套框架大部分是做界面的事情。但即使是Adobe说他们的Flex中包含的UI组件为移动设备做了多少优化,也千万不要用它来开发移动设备上的程序,否则你会痛苦一被子。&br&&br&Flex/Flex SDK/AIR的关系,可看这篇文章:&a href=&///?target=http%3A//zengrong.net/post/1295.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系&i class=&icon-external&&&/i&&/a&
我没有用XCode开发过具体项目,我的移动开发经验主要是Android SDK、AIR for Android、AIR for iOS。 因为开发经验的限制,我不能准确的说明XCode的优势和劣势,这里只基于自己的Android开发经验,以及AIR在iOS上的开发经验来分析。 AIR的优势 AIR的优势其…
首先我们来看问题&为什么 TypeScript 成功了,更先进的 ActionScript 却失败了?&&br&&br&先问是不是,再问为什么,根据github上的语言活跃度统计[1],TypeScript名列34位,ActionScript名列36位,可谓半斤八两,并没有哪个成功哪个失败之说,更何况TypeScript今天的活跃度大部分由巨硬爸爸维持,很多新JS项目已经转向Flow等更友好的类型检查工具,所以说这个题目的前提并不成立。&br&&br&再者这两个语言的应用场景并不一样,AS的本体Flash已是强弩之末,TS是前端的一门预处理语言,依托强大的JS生态而生,二者并不具有可比性,所以说并不能就此对比两者语言哪个成功哪个失败。&br&&br&针对题主的第二个问题,我想说,Adobe并没有能力影响浏览器,微软的VBscript凭借Windows内嵌的IE6都没有成功,Adobe有什么能力能占领浏览器平台呢?&br&&br&最后我们说一门语言是否成功,其实并不只和这门语言的设计有关,君不见Java10年不变之语法对C#照样是有巨大的优势,真正决定一门语言是否成功,主要是要看这个语言的生态环境,也就是说要考虑到历史的进程~&br&&br&来源&br&[1].&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHut - Programming Languages and GitHub&i class=&icon-external&&&/i&&/a&
首先我们来看问题"为什么 TypeScript 成功了,更先进的 ActionScript 却失败了?" 先问是不是,再问为什么,根据github上的语言活跃度统计[1],TypeScript名列34位,ActionScript名列36位,可谓半斤八两,并没有哪个成功哪个失败之说,更何况TypeScript今天…
如果你想用最快的速度把C#+WPF跑在浏览器上的话,那你应该使用微软的winjs(在github上)和FunScript。首先把你的WPF程序移植到UWP上,其次是用winjs(就是UWP在浏览器上的移植)先让你的UI在浏览器上搞出来,最后把WPF的ViewModel部分(如果你是用WPF的方法是正确的的话,那么UI和Model应该没有任何交集,可以直接分别处理)编译成dll之后反编译成F#再用FunScript处理成js,然后改一改,done。iPad部分镶嵌一个WebView,就搞出来了。
如果你想用最快的速度把C#+WPF跑在浏览器上的话,那你应该使用微软的winjs(在github上)和FunScript。首先把你的WPF程序移植到UWP上,其次是用winjs(就是UWP在浏览器上的移植)先让你的UI在浏览器上搞出来,最后把WPF的ViewModel部分(如果你是用WPF的方…
放弃AS3吧。我写了十几年Flash/Flex/FMS/AIR/AS1/2/3了,还不是转了:&a class=& wrap external& href=&///?target=http%3A//zengrong.net/post/2231.htm& target=&_blank& rel=&nofollow noreferrer&&Good Bye, Flash!&i class=&icon-external&&&/i&&/a&&br&&br&AS3的程序员(假如你也同时熟悉Flash的话),转型的方向还是很多的。因为Flash的缘故,你对前端周边技术(视频、音频、图形图像)了解应该会比较多一点,那么转前端会非常容易。&br&&br&HTML5之类的就不说了,转那个没什么难度,本来AS3和Javascript就是同源,HTML和CSS学起来也就是两三天的事情,业余时间平时学一下就可以了。但要注意补习一些HTTP协议的知识(AS3的API封装得实在太傻瓜了……)。&br&&br&AS3的许多特性都是致(chao)敬(xi)JAVA的(例如 flash.utils.ByteArray 就是 java.io.RandomAssessFile 和 java.nio 的合体),所以你转JAVA问题也不会太大。不过,也仅仅是语法比较熟悉,设计模式可以通用而已,关于语言应用范畴、性能、用法、文化、优化方法……这两门语言都差别太大了。&br&&br&JAVA的应用范畴要广泛许多,但和Flash Player 类似的跑在浏览器中的&a class=& wrap external& href=&///?target=http%3A//zh.wikipedia.org/wiki/Java_applet& target=&_blank& rel=&nofollow noreferrer&&Java applet&i class=&icon-external&&&/i&&/a&已经是日薄西山了,而JAVA SE的应用似乎局限在Eclipse这种IDE上(当然优秀的JAVA软件不少的),似乎后端应用才是JAVA的正途。如果你打算向后端发展的话,JAVA是可以考虑的。&br&&br&JAVA在前端还有一个方向,就是Android开发。如果你开发Android(独占)应用,这个绕不过去。如果你开发跨平台应用,那么HTML5似乎是更合适一点,孰轻孰重,需要自己考虑。&br&&br&OC和swift依然有Android类似的问题,这两个语言绑定在Apple平台上,对个人发展方向的限制未免太多,而且只能开发iOS和Mac软件,不能做后端,在考虑方向的时候,优先级应该排在JAVA之后。&br&&br&Flash目前在页游依然是压倒性的优势,其实在视频领域和在线APP领域,Flash Player还是有不错表现的,我在 &a class=&internal& href=&/question//answer/&&怎样学习Flash? - 曾嵘的回答&/a& 中总结了Flash能达到的领域。直到现在,Flash Player依然是有优势的,Flash只是被Adobe自己玩坏了而已:&a class=&internal& href=&/question//answer/&&为什么 .NET 一宣布开源和支援跨平台,一些人就在喊 Java 可以去死?因果关系何在? - 曾嵘的回答&/a&。&br&&br&所以,我假设你现在是在页游领域,那么转型就有两条路:&b&Unity和cocos2d-x&/b&。什么?你发现虚幻4免费了?这个……暂时还是别碰吧……以Flash 和AS3的基础,去碰虚幻基本上就等于找死。&br&&br&我以前写过一个回答:&a href=&/question//answer/& class=&internal&&AdobeAIR与unity3D都是跨平台,那个更好呢? - 曾嵘的回答&/a&,现在,我的建议依然不变。假如你想走这个方向的话,我好像还写过一篇可以勉强参考一下的文章:&a href=&/question//answer/& class=&internal&&如何学习一种开发框架(如:手机开发cocos2dx方向)? - 曾嵘的回答&/a&&br&&br&如果有空的话,Unity也可以学习下,毕竟cocos2d-x的工具链不完善(cocostudio那个东西不是给人类使用的,不要浪费时间)&br&&br&所以呢,在你本来是个页游AS3程序员的基础上,我建议的优先级顺序是 C++(cocos2d-x)-& Unity -& JAVA -& OC&swift 。&br&&br&等等,HTML5在哪里?HTML5不是移动互联网的趋势么: &a class=&internal& href=&/question//answer/&&为什么说html5是移动互联网的趋势? - 曾嵘的回答&/a&&br&&br&前面我提到了,HTML5相对简单些,所以我认为你必须要学。
放弃AS3吧。我写了十几年Flash/Flex/FMS/AIR/AS1/2/3了,还不是转了: AS3的程序员(假如你也同时熟悉Flash的话),转型的方向还是很多的。因为Flash的缘故,你对前端周边技术(视频、音频、图形图像)了解应该会比较多一点,那么转前端会…
&p&页游客户端常见的无非就是Flash Player和HTML5.&/p&&p&但请注意,Adobe宣布将于2020年停止开发和更新浏览器插件Flash Player.&/p&&p&Adobe建议内容创作者将Flash内容移植到HTML5,WebGL以及WebAssembly格式(wasm).&/p&&p&Adobe Flash CC在2014年就初步加入了对HTML5 Canvas类型和WebGL类型支持.&/p&&p&Adobe在2015年宣布将Adobe Flash Professional CC更名为Adobe Animate CC,正式提供对HTML5 Canvas的支持.&/p&&p&可见,连Flash老东家Adobe都不想在浏览器里玩Flash了,都要转到HTML5上了,所以未来页游肯定是HTML5更有前景.&/p&&p&而基于HTML5开发游戏,那么浏览器就是你用的游戏引擎.&/p&&p&因为性能问题,在浏览器里跑3D游戏很勉强,所以假设你开发的是2D网页游戏,那你只需使用HTML5提供的canvas画布组件就行,使用2D模式.&/p&&p&2D游戏没有3D眩晕感,而且更容易开发,而且要明确,游戏性才是王道.&/p&&p&网络协议用WebSocket,弱交互如棋牌游戏用HTTP也行.数据传输格式用JSON就可以,浏览器原生支持.&/p&&p&因为客户端浏览器里的东西很容易被恶意篡改,所以游戏逻辑得放在服务器端.比如棋牌游戏,用户拿到什么牌,肯定在服务器里有存储,比如存在Redis里,做到无状态.用户出牌的操作,服务器肯定是先判断,用户有没有这些牌,有才能出,比上一个玩家出的牌大才能出.&/p&&p&出牌成功时,服务器就向游戏里的其他用户推送消息,告诉他们,该玩家出了什么牌.如果用的是HTTP,在消息通知时一般还需要用到Redis的PubSub消息订阅机制.而WebSocket可以直接推(push),也可以使用Redis PubSub通知.因此Redis的订阅(subscribe)操作最好是一个异步操作,避免产生阻塞,所以你需要一个异步的Redis客户端(比如PHP的Swoole就内置了基于hiredis的异步Redis客户端).&/p&&p&gameLoopTimerId = setInterval(main, 1000 / 30);&/p&&p&比如你每隔1000 / 30 = 34ms执行一次游戏主函数main,即30FPS.&/p&&p&游戏主函数main主要有2个操作,一个操作就是update,一个操作就是render.&/p&&p&&b&update操作&/b&就是你收集用户输入,通过websocket发给服务器,拿到服务器结果设置客户端的变量的值,比如你控制的英雄的位置的坐标.可以做的优化就是你要做一些延迟补偿来应对网络延迟,需要的话,可以看看阀门公司Valve的技术博客:&/p&&div class=&highlight&&&pre&&code class=&language-text&&/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization
http://blog.csdn.net/buck84/article/details/8235159 (翻译)
&/code&&/pre&&/div&&p&&b&render操作&/b&就是把上一帧画面清空,根据update操作设置的变量的值,重新把元素(比如英雄位置)画到画布canvas里.&/p&&p&如何开发一个简单的HTML5 Canvas 2D小游戏,可以看看下面这个例子,非常适合入门:&/p&&div class=&highlight&&&pre&&code class=&language-text&&/how-to-make-a-simple-html5-canvas-game/
/Wayou/p/how-to-make-a-simple-html5-canvas-game.html (翻译)
&/code&&/pre&&/div&
页游客户端常见的无非就是Flash Player和HTML5.但请注意,Adobe宣布将于2020年停止开发和更新浏览器插件Flash Player.Adobe建议内容创作者将Flash内容移植到HTML5,WebGL以及WebAssembly格式(wasm).Adobe Flash CC在2014年就初步加入了对HTML5 Canvas类型和We…
&p&&转自开源中国&&/p&&p&原生手游市场已是红海,腾讯、网易等寡头独霸天下,H5游戏市场或将成为下一个风口。据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折。如何选择适合团队和项目的引擎,笔者通过学习和项目实践,总结微薄经验,供大家参考,非技术人员也可以将本篇内容作为引擎选择的重要关注点。&/p&&br&&p&&b&选择H5游戏引擎的思考维度&/b&&br&1、开发语言的支持&br&2、2D、3D、VR的支持&br&3、性能&br&4、引擎的应用广度&br&5、设计理念&br&6、工作流支持力度&br&7、商业化成熟案例&br&8、学习资源与技术支持能力&/p&&br&&p&首先,我们要知道,当前主流的游戏引擎有哪些。由于H5引擎有很多,笔者在这里进行了精心的筛选,过滤掉不支持webGL的引擎,以及封装了第三方渲染内核的JS框架,和不能直接在浏览器中运行的JS引擎。&/p&&br&&p&为什么要过滤掉这几种呢,首先,没有自己的渲染内核,仅仅是基于第三方的内核作的API封装,笔者很担心可持续的性能优化和维护能力。另外,不能在浏览器中直接运行的JS引擎,将限制H5游戏跨平台的交互能力。还有, 笔者非常看好webGL模式,认为webGL模式才是H5引擎的未来。原因有几点:&/p&&blockquote&&p&第一、性能,webGL模式远超Canvas数倍。DOM模式就不适合用于真正的游戏开发,更不用提。&br&第二、3D方向,webGL模式理论上可以制作2D和3D游戏,Canvas和DOM模式下只能制作2D游戏。&br&第三、普及率,webGL的普及率已经非常高了,尤其是支持webGL的腾讯TBS-Blink内核已在4月19日发布,并逐步在微信、QQ空间、QQ浏览器、手机QQ等APP中采用静默安装方式全面升级。这个普及率在国内带来的影响,;你懂的……&/p&&/blockquote&&p&&strong&1、选择H5游戏开发语言&/strong&&/p&&p&拥有广泛开发者的H5游戏开发语言共有三种,分别为Flash AS3、TypeScript、JavaScript。其中Flash AS3、TypeScript均属于面向对象的高级脚本语言,通过编译器将原项目代码编译成JavaScript代码文件运行于浏览器之中,面向对象的高级语言无论是项目开发管理,还是项目开发的工具环境的成熟度都明显优于JavaScript脚本语言,尤其是中大型项目方面,AS3等高级语言的效率会更高。&/p&&img src=&/fe20a462a298f8cba1b2d4f291c911e5_b.jpg& data-rawwidth=&584& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&584& data-original=&/fe20a462a298f8cba1b2d4f291c911e5_r.jpg&&&br&&p&从上图看出,支持JavaScript语言的引擎更多,由于AS3语言的编译器为Layabox引擎推出的,因此采用AS3作为开发语言的仅有Layabox引擎。笔者建议在开发中大型游戏项目的时候,采用TypeScript或者是Flash AS3语言进行开发。如果是小型游戏,任选其一即可。&/p&&br&&p&&strong&2、引擎的未来延续能力&/strong&&/p&&p&选择一个引擎,并不是简单的认为,满足眼前够用就可以了,引擎的未来延续能力也是很重要的,这个项目是2D,下个项目想开发3D,如果引擎不支持怎么办?去换个引擎?如果VR的机会来了,再想发布VR版本,这个引擎不支持,需要重新开发吗?等等问题,作为开发者尽可能要提前想好。&/p&&img src=&/f1ad4622fdc774d183f1bc9643bd5bfa_b.jpg& data-rawwidth=&654& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&654& data-original=&/f1ad4622fdc774d183f1bc9643bd5bfa_r.jpg&&&br&&p&通过上图,可以看出,即便是在支持webGL的H5引擎里,有只面向2D游戏的,也有只面向3D游戏的,同时支持2D、3D、VR的H5引擎,从目前看只有Layabox与Egret引擎。&/p&&br&&p&&strong&3、性能是核心需求&/strong&&/p&&p&性能是H5游戏面临的核心门槛,也是很多H5游戏不被专业玩家认可的重要原因之一。游戏卡顿,不流畅,这样的产品体验很难在激烈竞争中生存下来。&/p&&br&&p&H5产业早期的普及阶段即将过去,游戏品质在迅速提高,品质中包括精细的美术和炫酷的动画等。在复杂的游戏项目面前,上述种种元素,其流畅体验度对游戏引擎是极大的考验。所以选择性能优秀的引擎是保证品质的最重要基础,一定要谨慎。&/p&&br&&p&在游戏项目研发开始时,一定要先对复杂的模块做DEMO测试,特别是带背景滚动的游戏。比如横屏卷轴游戏,对帧数稳定性要求极高,如果满足不了性能上的需求,可能会带来眩晕、眼花、疲倦等不良体验。&/p&&img src=&/2cbb118afae885de48934e_b.jpg& data-rawwidth=&654& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&654& data-original=&/2cbb118afae885de48934e_r.jpg&&&br&&p&在webGL的2D渲染性能方面,pixi.js的性能处于当前的顶级。在webGL的3D渲染性能方面,Three.js非常优秀。在runtime方面Cocos2d-js也有着原生级的表现,经过对比,笔者认为Layabox性能的综合实力最强,在各个渲染领域都保持在HTML5引擎的顶级水平。当然,上图仅作为参考,对于任何号称某个引擎性能最牛的论调,一定要亲自进行性能DEMO的测试对比,而不要轻易采信。&/p&&br&&p&由于性能是游戏最核心的需求,笔者这里再多说一句,大型项目在系统复杂度、UI复杂度、动画显示数量和种类等方面与小型游戏项目完全不在一个量级。会涉及到比小游戏更复杂的性能优化、内存管理、资源管理等需求,如果选择了小马拉大车的低性能引擎,项目夭折可能性非常大,除非最后项目开发者花大量时间自己优化引擎。所以性能差一点,就会导致结果差很多,不可主观想象。&/p&&br&&p&&strong&4、与引擎的应用广度&/strong&&/p&&p&随着H5游戏品质提升,在其他领域也具备一定的竞争力和价值,一次开发可发行各个领域版本,已成为日渐明确的需求,这里面包括发行原生APP手游和PC的flash页游需求,大统一的引擎时代即将来领。目前最火爆的H5游戏《传奇世界H5》据说有40%的收入来自PC网页。&/p&&img src=&/9a7eb6ed88581e74affbb1914e67fab6_b.jpg& data-rawwidth=&584& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&584& data-original=&/9a7eb6ed88581e74affbb1914e67fab6_r.jpg&&&br&&p&发布PC页游时,由于PC浏览器目前对HTML5兼容性不足70%,用户损耗很大,页游联运平台可能会拒绝或放量很少,只有采用能同时发布Flash版本的引擎,才能解决这个问题。&/p&&br&&p&&strong&5、设计理念与定位&/strong&&/p&&p&设计理念是个比较大的话题,也是个很重要的引擎选择因素,比如引擎是要专注移动端,还是要面向全平台多端游戏市场。是注重性能,还是注重工具链等等。深入了解不同引擎的理念与定位,才能更好的与游戏产品进行结合。&/p&&img src=&/a47b6ef869bfb09a572460_b.jpg& data-rawwidth=&643& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&643& data-original=&/a47b6ef869bfb09a572460_r.jpg&&&br&&p&上图内容仅作参考,详情建议去各引擎官网深入了解。&/p&&br&&p&&strong&6、工作流支持力度&/strong&&/p&&p&作为商业级开源引擎,工具链的提供与支持也是一种选择考量要素,比如UI编辑器、粒子编辑器、骨骼编辑器、场景编辑器等等,如果引擎方直接提供或支持,那么将会较大的提升研发效率。&br&本文中提到的7个引擎,只有Egret、Layabox、Cocos2d-JS这三个引擎,在工具链方面提供足够全面的支撑。&/p&&br&&p&&strong&7、是否有成熟的商业案例&/strong&&/p&&p&怎么证明引擎是成熟的?一定要有成熟的商业案例,一般引擎的官网上都会有游戏案例介绍,我们在选择引擎之前要进行深入体验,包括:商业案例的数量、商业案例的种类、稳定性、流畅度(要在低端机里体验)、项目复杂度、项目相似度等。如果有一些大型成功案例背书会相对安全可靠些。&br&从目前的行业案例来看,Layabox引擎的MMORPG《醉西游》、重度动作游戏《猎刃2》、大型模拟经营游戏《梦幻家园》等无疑是H5引擎技术的最高水准代表作。但是从卡牌、挂机等类型的付费游戏总体数量来看,Egret引擎明显占优,充分说明该引擎的市场宣传力度更胜一筹。&/p&&br&&p&&strong&8、学习资源与技术支持能力&/strong&&/p&&p&能提供什么样的学习资源,以及技术支持,对于开发者也是重要因素,如果你是技术大牛,只想使用轻量的第三方渲染内核。那么2D游戏,pixi.js无疑是首选。3D游戏,笔者推荐Three.js。但是这两种引擎的学习资料都比较稀少。笔者认为学习资料的完善,以及在学习过程中的技术支持力度,将会很大的帮助你解决引擎使用中的问题。所以,API完善,DEMO完善,文档完善,社区的响应速度,交流氛围,以及QQ技术支持等,都可以作为你选择引擎的因素考量之一。&/p&&br&&p&&strong&9、页游移植产品的引擎选择&/strong&&/p&&p&目前像《醉西游》等优秀H5产品是Flash页游或手游移植而成,移植类的产品在选用引擎时要注意,代码是否可以直接移植?如果可以,那将节省大量的开发成本。比如Flash AS3开发的2D或3D页游或手游,可以把逻辑与算法代码直接拷贝移植到Layabox引擎项目中,开发速度提高数倍。&/p&&p&写在最后:最后提醒一下,千万不要相信某些引擎的单方宣传,一定要花一点时间去研究实践,亲自制作DEMO去作一作对比,动手体验到的才是真理。&/p&&br&&p&&strong&针对DEMO测试笔者有几点建议:&/strong&&/p&&p&
1、采用一个复杂的UI,特别是复杂列表,比如说没有分页的背包列表,背包里放上不同的道具图片,测试滑动时的流畅度,这块比较考验性能,元素越复杂,数据越多,尤其能对比出来性能上的差异。&/p&&p&
2、包含最复杂战斗部分,不要写战斗逻辑代码,不然会花的时间太长,只需要把战斗相关的动画和复杂的元素放在场景中模拟即可,因为H5游戏性能瓶颈通常在于画面的显示。&/p&&p&
3、 测试主要目的是看项目在引擎中性能,这是最至关重要的,所以,硬件上,我们要选择低端安卓手机(比如红米)进行测试。软件环境建议使用微信环境测试,首先,因为微信公众号是H5的主要渠道之一,其次,微信当前的H5性能低于chrome浏览器,在恶劣的环境下更能测试引擎的优劣。&/p&
&转自开源中国&原生手游市场已是红海,腾讯、网易等寡头独霸天下,H5游戏市场或将成为下一个风口。据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折。如何选择适合团队和项目的引擎,笔者通过学习和项目实践,总结微薄经验,供大家参考…
最近做flex的air项目 感觉flex要做的很好还是很不容易的&br&&br&优势 方面:&br&&br&1 跨平台的代码上, 在电脑,android 手机和android平板 , iphone和ipad 逻辑代码都是一套,开发效率非常高。而且as3 程序员成本也比一般的低一些&br&&br&2 UI设计和开发流程上,时间成本也能节省很多,从psd设计完后,然后经过flash重新设计UI界面组件,如果设计人员同时会ps和flash效率还是很高的, 然后由开发人员进行编码&br&&br&3 flex框架的高效上,flex目前4.6 提供的常用界面还是基本够用了,尤其针对android提供了和ios一样的用户UI,在不同设备和分辨率 DPI上,通过不同的state和微调界面布局(虽然很繁琐)但可视化操作还是比多个平台容易多了
,&br&&br&&br&4 性能上其实非常不错了,如果不是3D应用,一般都够用了,基本能达到原生80% 到100%, 比html5强多了(flex框架本身较慢,如果不用flex框架纯as3性能很高,做一些游戏很适合)&br&&br&&br&&br&&br&&br&&br&劣势 方面:&br&&br&&br&1 和IOS好的原生程序相比还有一定UI和性能上的差距,主要iOS自带的UI很好,但flex很难用到。&br&&br&&br&2 硬件新特性 虽然有ANE但用起来非常麻烦,虽然比html5强多了,但iOS上的icloud和gamecente iap,这些东西开发效率很低。 而且android4.0上也有很多新功能例如nfc相关,flex还是没办法直接使用&br&&br&3
调试也没有原生的方便,只能生成ipa后安装到设备上调,flex上UI的小的bug很多也很难解决。&br&&br&&br&&br&&br&总结
如果专心一个平台 ios 还是原生的好,原生开发效率也高。&br&如果是跨平台android和ios 其实还是不错的,效率很高,开发出来的东西也不错的,肯定比html5这烂东西强多了。&br&&br&
最近做flex的air项目 感觉flex要做的很好还是很不容易的 优势 方面: 1 跨平台的代码上, 在电脑,android 手机和android平板 , iphone和ipad 逻辑代码都是一套,开发效率非常高。而且as3 程序员成本也比一般的低一些 2 UI设计和开发流程上,时间成本也能…
在大多数互联网公司里,前端开发工程师这个职位的要求是不包含ActionScript的,但是会包含JavaScript。ActionScript与JavaScript在语法方面是非常相似的,但是对于应用开发来说,不同的运行时(Flash和浏览器)的区别更为关键,因为这导致API、类库、开发工具、开发方法的巨大差别。实际上,基于Flash的技术体系与基于HTML(特别是HTML5)的技术体系存在竞争关系(尽管在具体项目中是可以协作的)。同时掌握两个体系的技能当然好,这样的人也并不少见,但是人的精力是有限的,对于大多数开发者来说最终可能还是会偏向其中一支。对于上规模的企业来说也必然走向专业化分工。
&br&&br& 当然,虽然绝大多数前端开发工程师职位并不需要懂ActionScript,但是了解一些基本的Flash开发技术乃至其他各领域的知识技能肯定是有益无害的。
在大多数互联网公司里,前端开发工程师这个职位的要求是不包含ActionScript的,但是会包含JavaScript。ActionScript与JavaScript在语法方面是非常相似的,但是对于应用开发来说,不同的运行时(Flash和浏览器)的区别更为关键,因为这导致API、类库、开发工…
Flash必然是主流 原因如下:&br&第一: flash在webgame上已经有整套的成熟解决方案。&br&第二: flashplayer在pc机上的安装率是非常高的。&br&第三: flash的开发成本比较低,成熟的开发框架,成熟的开发工具。&br&第四: Flash开发技术不断的强大,例如多线程的支持、3D的支持、音视频的优化等等,同时Adobe也将重点和专注领域放到了游戏方面。&br&第五: Adobe推出的Air在一定程度上也解决了手机应用的实现。&br&关于html5&br&第一: html5处于发展阶段,目前的API不够完善,浏览器支持程度不够,开发工具不够完善等&br&第二: 目前html5确实是在不断强大例如:对于绘图的支持、websocket的支持、音视频的兼容,开发组件的强化(表单)。 但是都不够成型甚至一些还有些鸡肋。 例如 音视频, html5的音视频仅仅是支持视频音频的播放,但是不支持解码编码,需要依赖浏览器,由于浏览器的不同也就造成了兼容问题&br&第三:从目前来看html5可以制作一些简单的应用,例如 一些小游戏,一些手机上的单机游戏。但是比较大的pc上的webgame 还是谨慎使用。
&br&希望对你有帮助。&br&&br&啰嗦两句: 总听到有人收 html5会替代掉 flash, 我认为这是比较不负责任或者是跟风的说法,因为这两种技术在未来 html5比较亲向于手机方面的应用 flash 比较亲向于pc。 所以不会是谁干掉谁,而是一定程度上的互补!
Flash必然是主流 原因如下: 第一: flash在webgame上已经有整套的成熟解决方案。 第二: flashplayer在pc机上的安装率是非常高的。 第三: flash的开发成本比较低,成熟的开发框架,成熟的开发工具。 第四: Flash开发技术不断的强大,例如多线程的支持、3…
十年过去了,没想到还是要来回答课件的问题 :-)&br&&br&但这个问题&b&不太好&/b&回答,我不太确定题主期望偏向与界面设计、交互体验、程序设计还是教学内容。但我将尽量尝试。&br&&br&&b&1. 定义课件&br&&/b&&br&课件大约是个只有师范生和老师们才会明确知道含义的名词,不过即使是这个名字,也需要一些仔细的理解。&br&&br&我不能确定你说的“交互性课件”指的是教师在课堂上以展示为主使用的&b&课件&/b&,还是只学生独立使用或者在家长和老师的指导之下主动使用的&b&学件&/b&。&br&&br&你给的例子里面,第1个偏向与前一种范畴,第2个偏向于后一种范畴。第3、4个访问有些问题(等了5分钟打不开),我没有看。&br&&br&其实第1个并&b&不是&/b&一个好的课件例子。它花了太多的功夫来制(炫)作(耀)灵动的菜单和轻巧的音效,却没有展现什么有意义的内容。按照它展现的效果和音效来看,应该是针对低年级的学生(他们会对这些比较感兴趣),可是整体设计上又过于简洁,无法吸引小朋友的注意。而如果它原本是设计给16岁以上的学习者使用,我又看不出它的那些小把戏能真正给授课带来什么直接的效果。&br&&br&第2个例子是个学件,或者说教学类游戏。这类作品(或者商品)更适合在线独立学习,这是课件的一种离开教师的自学表现形式。&br&&br&课件其实是多媒体作品的一种子类型,准确的说,和各种电子产品(或软件)自带的教学光盘、政府大厅的触摸屏、旅游景点互动介绍等等属于同一种类型。&b&Google地球&/b&算课件么?如果把它用于教学,当然算。&b&虚拟紫禁城&/b& 算课件么?太算了。&br&&br&这样看来,&b&交互式课件&/b& 也就没有什么可独立讨论的了。制作一个课件,和制作任何的需要交互的多媒体作品在技术上没什么不同。&b&当然,只是技术上&/b&。从另一个方面考虑,课件和普通的多媒体作品还是有非常大的差别,就是制作优秀的课件需要对教学规律和课程内容有深刻的了解和研究。&br&&br&但是如果从教学方面讨论,作为一个离开了教学一线10年,离开了教育界3年的前老师,应该是力有不逮了。所以我只能从一个程序员的角度来谈谈技术方面的问题,我想题主也应该是这个意思。&br&&br&&b&2. 技术选择&/b&&br&&br&多媒体技术涉及的范围非常广,除了必要的整合工具之外,音频视频图形图像处理技术,都必须熟悉,这些如果展开说,那么本篇就无法结束。所以只说用于整合的工具。&br&&br&那么,十年前最好的(当然目前也是最好的)整合工具,就是&b& Adobe Flash&/b&,没有之一。&b&题主你选对了。&br&&/b&&br&当然,还有Adobe Director、Macromedia Authorware,还有方正奥思,或者VB/VC/Dreamweaver 都是可以的。这些我都用过,而且用的足够深入。但既然题主已有选择,就按正确的来说。&br&&br&其实 Microsoft PowerPoint 也能达到你说的的效果,你深入学习VBA,达到你给的第1个例子的水平也并不难。但既然你选择了Flash,那就继续。&br&&br&&b&3. 学习方法&/b&&br&&br&我 2004年 写过一本 &a class=& wrap external& href=&///?target=http%3A//product./18550& target=&_blank& rel=&nofollow noreferrer&&Flash MX互动教学课件制作实例教程[按需印刷]&i class=&icon-external&&&/i&&/a& , 这本应该是很适合题主,只是书店一定买不到。另外这本是用AS1编写的,可能在语言上有些落后。但是,如果你能找到这本书,我还是建议你看一下的。对于编写课件来说,AS1已经完全可以胜任,而且书中介绍的关于结构组织的相关知识是无论什么版本的Flash都必须要精通的,即使用现在的Flash CC也不例外。&br&&br&然后,在熟悉Flash的过程中,必须掌握一种图像编辑工具(推荐Adobe Photoshop或者GIMP),一种音频编辑工具(推荐Adobe Audition或者Goldwave),一种非线性编辑工具(推荐Aodbe Premiere或者Corel 会声会影),一种手绘工具(推荐Adobe Illustrator或者Corel Draw),一种3D编辑工具(这个可选)。&br&&br&在学习这些工具的过程中,掌握图像文件、视频文件、音频文件的常见的种类与区别,音视频编码技术以及码率、codec对视音频质量的影响,不同软件和平台对多媒体(视频、音频、图像)文件的支持情况。&br&&br&需要学习一些界面设计知识和交互设计知识,掌握基本的排版和配色技巧。此处需要向美术和设计专业同学请教。&br&&br&Adobe Flash 软件以及AS3语言的学习,参考下面两篇文章。&br&&ul&&li&&a href=&/question//answer/& class=&internal&&怎样学习Flash?&/a&&/li&&li&&a class=&internal& href=&/question//answer/&&关于 ActionScript 有哪些书籍值得推荐?&/a&&/li&&/ul&&br&&p&最后,就是利用题主的教学理论和教学实践知识,再加上 Adobe Flash软件的便利,制作出鬼斧神工的作品吧!&/p&&br&&p&&b&祝你成功。&/b&&/p&
十年过去了,没想到还是要来回答课件的问题 :-) 但这个问题不太好回答,我不太确定题主期望偏向与界面设计、交互体验、程序设计还是教学内容。但我将尽量尝试。 1. 定义课件
课件大约是个只有师范生和老师们才会明确知道含义的名词,不过即使是这个名字,…
看到楼主提到dragonBones,勾起了很多从前的回忆,简单谈谈我对这个问题的看法。&br&首先想给dragonBones打打广告,这个项目最初的原型并非Adobe做的,不过整个框架完善到现在能够成为一款商业级的2D骨骼系统,可以说是Adobe的功劳,具体来说,是Adobe中国还未解散时由我所在的Flash Runtime组做的,整个框架的主要贡献者是我在Adobe时的mentor刘晨光和Away3D在中国的作者之一,我的同事廖诚两位。当时我大三,这个框架其中也多多少少有一些我的贡献。目前据我了解Egret已经在HTML5的平台上移植了这款原来在AS3上的引擎,主要负责人正是我师父刘晨光,所以如果想要在H5用骨骼动画,可以考虑使用Egret,算是帮老同事打打广告~&br&好,进入正题,说点干货。&br&首先还是从原理开始解释骨骼动画,我们常说的骨骼动画一般分为两个部分:&br&1.骨架(Skeleton)&br&2.蒙皮(Skin)&br&这两个部分从逻辑上可以说是完全独立运作的两个部分:&br&第一部分骨架涉及的数据包括两个,一是骨架的&b&拓扑结构(也就是连接、父子关系)&/b&,这个部分的描述&b&一般是使用一棵树来表达和存储&/b&;二是&b&骨架的各种pose,也就是每个动作对应的整个骨架的位置信息&/b&,每根骨头的位置信息在一个关键帧都需要单独用一个矩阵来表达,这个矩阵描述了这根骨头在其父骨骼坐标系下相对于其初始pose的位置变换,包括缩放(某些情况下并不支持缩放)、平移和旋转,&b&在3D世界里这个矩阵是4*4的,在2D世界里相应的是3*3的矩阵&/b&&br&第二部分蒙皮则表达的是&b&依附在骨骼上的顶点的信息&/b&,这里就涉及了一个概念叫做&b&绑定(Binding)&/b&,我希望通过这块的原理说明来解释为什么dragonBones没有提供你需要的动画类型。骨骼绑定的过程就是&b&确定每个顶点受哪几根骨骼的影响,每根骨骼影响的权重有多大&/b&,譬如肘部的皮肤可能同时受大臂和小臂两根骨头的影响,而远离手肘的部分可能就只受小臂骨头影响。一般在3D骨骼动画里,每个顶点最多支持4-8根骨骼同时影响它就已经可以很精确地表达整个蒙皮的效果了。而在dragonBones中,每个顶点&b&只受一根骨骼的影响&/b&,正因如此,&b&它不会发生形变&/b&。&br&&br&好,接下来讲为什么dragonBones不提供这个功能,这是因为在&b&3D游戏中,顶点是表达一个物体的基本数据结构&/b&,一个物体是由顶点集合构成的,&b&而在2D游戏中,像素通常不是基本的数据单元&/b&,一个2D模型的基本单元是图块,也就是说,你能直接操纵到的,&b&是一个个的图块,而不是一个个的顶点或者像素&/b&,正因如此,在2D游戏中通常不存在3D游戏中复杂的顶点shader,也不存在贴图纹理的概念。当你需要变形的时候,你需要的是&b&2D模型的每个像素点都有自己的骨骼索引和权重信息&/b&。想想我们常使用的&b&sprite sheet&/b&,它的基本单位是&b&帧&/b&,这是能够操作的&b&最小单位&/b&。dragonBones的初衷是减小资源量,同时实现更为细粒度的动作(比如交互式的),让美术从繁琐的逐帧绘制Sprie Sheet的工作中解放出来,所以它把一个角色每一帧的sprite sheet拆分成一个个更小的基本图块,譬如胳膊,腿,躯干等等,而每个基本图块仍然是&b&最小的可控制单位&/b&。所以我们&b&可以给每个基本图块绑定一根骨骼,并且也只能绑定一根骨骼,因为dragonBones是没有顶点概念的&/b&。&br&而dragonBones之所以没有顶点的概念,最根本的原因是&b&这完全不符合传统2D美术资源的制作流程&/b&,如果要引入顶点,实际上是相当于把每个人物模型&b&在2D平面上三角化&/b&,然后使用类似3D引擎中的vertex shader的思路来传入2D模型的2D顶点位置、UV信息以及相应的贴图。要知道,&b&dragonBones以及类似的2D骨骼系统是为了简化美术的工作流而不是增加!!!&/b&如果每个2D人物的制作不是从手绘开始而是从类似3D建模一样的工作开始,那2D游戏的成本开销无疑会增加很多,这违背了这个工具的开发初衷。而且在引入这样的系统后,整个渲染流程相当于完全推翻,你不可能使用starlling已有的渲染系统完成渲染,&b&因此你只能自己实现一套基于顶点的2D渲染器,而且这个渲染器还必须是基于GPU的,因为CPU根本负担不起这样的逐顶点甚至逐像素的操作。&/b&&br&当然,楼主的问题是&b&如何在游戏中引入可变形的骨骼动画&/b&,我到现在还没回答这个问题。不过说到这一步,其实相应的实现策略就已经在一定程度上说出来了,具体做法,可在dragonBones的基础上这样做修改:&br&1.保留dragonBones引擎中关于骨架Skeleton部分的实现,包括如何序列化、反序列化、骨骼在引擎中的树状表达结构,但在最终计算每个实际渲染部分的位置时,使用新的基于weight linear blend的渲染,只引用骨架的变换矩阵。&br&2.渲染部分,有且只有&b&自己实现一套类似3D骨骼动画渲染器的方式&/b&,这部分是这个想法的实现难点之一。&br&3.工具部分,我刚才一直没提到的,也是最复杂的。因为这件事必须要美术预先给你导出带有权重的像素集或者2D顶点集。基于现有的美术工具不可能做这么specific的事情,那就必须自己做一个给2D角色网格化的工具、刷UV的工具、刷权重的工具。当然如果真的是商业游戏有这个需求,你们可以考虑开发这样的工具,毕竟它比开发一个同功能的3D工具还是简单不少,但如果只是自己试验试验,那你可能需要相当一段时间考虑&b&如何实现这个工具以及如何让工具有效地辅助你进行三角化和刷权重、布UV&/b&。前提是你有一定的3D建模软件的使用经验。&br&dragonBones是一个优秀的2D框架,它从架构上简化了美术的工作流,同时减少了资源量,但是&b&单从人物表现的逼真程度来讲这样的2D骨骼动画还是不如传统的sprite sheet的视觉效果好,这就好比理论上在3D游戏中,顶点动画永远比骨骼动画更具有表现力&/b&。但在3D游戏中前者的成本太高,相比来说后者优势就很明显,但在2D游戏中,如果你希望你的人物表现更加栩栩如生,那么sprite sheet+一个优秀的美术显然是不错的方法。
看到楼主提到dragonBones,勾起了很多从前的回忆,简单谈谈我对这个问题的看法。 首先想给dragonBones打打广告,这个项目最初的原型并非Adobe做的,不过整个框架完善到现在能够成为一款商业级的2D骨骼系统,可以说是Adobe的功劳,具体来说,是Adobe中国还未…
用Unity3D+C#吧,C++的优势只体现在游戏内容太多Unity3D会爆炸的时候。
用Unity3D+C#吧,C++的优势只体现在游戏内容太多Unity3D会爆炸的时候。
什么是ajax?前端工程师分两种,一种是js方向,一种是as方向,一般公司都是要js方向的。as我们公司一百个前端里只有一个。。。
&br& ajax这种说法只会让人笑话你,面试的时候可别这么说
什么是ajax?前端工程师分两种,一种是js方向,一种是as方向,一般公司都是要js方向的。as我们公司一百个前端里只有一个。。。 ajax这种说法只会让人笑话你,面试的时候可别这么说
做成UWP,买个Surface,项目演示的时候就说这是苹果最新出的ipad pro(逃
做成UWP,买个Surface,项目演示的时候就说这是苹果最新出的ipad pro(逃
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 乌克兰武器为什么先进 的文章

 

随机推荐