单方向卡马克算法(以后补全多方向,最近比较忙的说)

卡马克算法其本质是用户所能看到的位图区域有多大,就渲染多大的位图。 传统的制作方法是内存中已经存在了整张的位图,只在用户可视界面做位图的位移。 假设位图的大小是 1024*768.而用户屏幕大小仅为800*600 那么内存中实际上浪费了 (1024-800)*(768-600) 像素的内存。
使用卡马克算法后,理论上无限大的位图都只消耗用户屏幕大小的 800*600 的内存。极大的提高了效率。
Continue reading

昨天11月22日 Adobe 放出了 Flash Player 11.2.202.95/96 Beta版本。其中最引人瞩目的就是加入了 鼠标右键监听,中键监听,完全的自定义菜单,完全屏蔽右键菜单等功能。
由于一直受到Adobe右键菜单的拖累,导致fps游戏的右键瞄准,rts类游戏的右键移动功能都无法制作出来。甚至某些时候不想告诉用户这个app是使用Flash制作的,但是只要点击右键就被揭穿的尴尬,今日全部都是过眼云烟了。

由于很多人对于配置新的api不是很熟悉,这里放上配置教程以及demo.
Continue reading

最近看了许多开源的2D,3D游戏引擎。比如 pushButton,Flixel , Iso 等。发现各有各的特点。首先必须承认,这个自己写的《某传说中的网络游戏》的引擎肯定有不完善的地方,而且还是很多。比这些开源的引擎差距一定很大吧。 但是直接将网游移植这些成熟的引擎也不太现实。
于是~改写这些线程的引擎成为了我的一个想法。嘛~毕竟《某传说中的网络游戏》只是作为毕业设计交的作品而已。因此这次改写只是把这些开源引擎中优秀的部分“移植”过来。之所以 移植 加引号是因为只是移植了思路,而非源码。
pushButton其显示效率非常的高,原因是所有的显示对象都是显示在一张BitmapData上的,因此无论场景有多少个对象,也只是刷新一张位图而已,这一点我以前完全没想到,于是花了3个小时。写了这个显示模块的demo. 源码如下:Continue reading

刚刚看到的新闻如下:

谷歌刚刚发布Swiffy插件,可以将SWF转换为HTML,然后在手机上浏览(iOS,安卓等).Flash Pro 继续证明这是一种给作者创建桌面和移动内容的技术。不需要去学习一种新技术或工具去发布HTML。如果你熟悉Flash Pro,那么你所要做的就是安装Swiffy,发布一份你已经有的Flash文档内容到HTML。我肯定,我们将会看到越来越多的内置在Flash Pro顶部的技术,使用户能将swf发布到不同的格式。
Continue reading

博客换了新版的界面,觉得更加清爽了,心里也比较舒畅些。不过貌似新版的留言系统对旧版的不是很兼容,部分留言会丢失…嘛~一切重新开始吧。

前几天那篇Adobe放弃移动端Flash Player的开发的文章在各大媒体上都引起了轰动,许多果粉和不明真相的群众认为Flash将死。虽然我本人力挺Adobe,但是毕竟对HTML5不太熟悉,无法很好的把握未来的方向。索性研究下HTML5,知己知彼,也为了今后真要转型做个基础。

研究了一个下午的HTML5.一直在做AS的游戏开发,因此这个HTML5研究的也是游戏开发部分。canvas 是 HTML5 新出的一个标签,可以通过JS在里面进行绘图。 其实,只要掌握过 AS的 Graphic 当中的绘图API, 那么canvas? 的绘图API也很好入门的。

 
Continue reading

来源:http://www.photonstorm.com/archives/2568/the-reality-of-developing-web-games-with-flash-html5-and-unity

2011年11月10日的一篇非常详尽的文章。从工作流、平台稳定性、移动终端等10个方面详细阐述对比了用Flash,HTML5和Unity开发网页游戏。

今天对于全球的Flash开发者来说是黑暗的一天,因为Adobe宣布将不再对移动设备上的浏览器进行Flash技术支持。在这之前,Adobe刚刚宣布了公司范围内的大幅度裁员。尽管这似乎并不是什么严重的问题,但是这却又使“Flash hate wagon”开始转动。
首先,我只关心基于网页的游戏开发。因此,这篇文章只关注这个主题。这并不是一篇关于Flash和HTML5的争论文章, 也不是教你如何在移动设备上搭建应用程序。所以,这篇文章纯粹的是关注当今开发web game的现实。
我比较了Flash,HTML5,Unity,因为他们是当今唯一可行的web game开发平台。我列了10个主题来比较他们:

开发流程 – 用它来开发一个游戏有多容易?
平台稳定性 – 当你开始和结束开发游戏这段时间内,它会发生改变吗?
向后兼容性 – 用它开发的游戏10年后还能运行吗?
移动性 – 移动设备的支持
打包与分发 – 如何流通
安全性 – 代码和知识产权保护
货币化 – 如何运营赚钱
Facebook – 社交游戏的角度
多少人会玩你的游戏
3D支持 – Stage3D vs. WebGL vs. Unity

上述的方面我认为是所有游戏开发者在评估一个新的开发平台时都应该注意的。我希望这些建议对新,老Flash开发者来说都会有所帮助。
1.开发流程
Flash:用Flash来开发游戏非常简单。因为关于它有无数的书籍,网站,教程,框架,视频和源代码。对于开发工具来说,Flex route是免费的,Flash IDE需要付费。Flash拥有通用且强大的矢量渲染功能,这意味这你创建的动画的文件格式会非常小。它全面支持音频和大多数的Adobe应用程序,例如在Flash IDE中嵌入Illustrator 和 Photoshop。而且Flash还有大量的内置功能。

HTML5:编辑器例如JetBrains 的Astella会使编程变的不那么痛苦。有一些优秀的调试工具使浏览器调试也非常简单。有许多关于HTML5游戏开发的书籍,网站,在线资源和示例程序。开发HTML5游戏的工具是免费,但是也有商业的工具,例如GameMaker HTML5 和Game Salad。如果你想让程序效率更高,并且你不怎么关注底层运行机制,你可以使用特定的的库类似ImpactJS。

Unity:有一个优秀的可视化编辑器,并且可以嵌入主流的3D应用程序中。基础版本是免费供家庭使用的。也可以在公司里使用,每年需要交纳不到100K $ 的费用。专业版本带有各种插件,价格在1500$上下。一旦你有了Unity,大量的教程和资源也随之提供,所以学习并不是问题。

2.平台稳定性
Flash:Flash是跨平台的,它不在乎你用的操作系统和浏览器是什么,不管你是破旧的IE或是最新的Chrome。只要你使用的平台上有Flash Player,对于体验来说都是一样的。Adobe每年都会发布一个新版本和许多现有版本的更新。

HTML5:HTML5一直处于变动中。基于此有2个副作用:第一,即便你什么都没有做,你的游戏仍然有潜在的崩溃可能。这是因为之前你已经升级或使用其他浏览器了。第二,你必须考虑多平台。在Chrome上可以运行只是第一步,你还必须处理IE,Firefox,Safari和各种操作系统。由此带来的维护成本也不能低估。另外,最大的技术挑战包括音频支持以及不一致的画布渲染速度等。

Unity: Unity的web player拥有和Flash一样的优势。Unity的插件也是跨平台的。Unity本身也会定期的发布新功能。

3.向后兼容性
Flash:10年前,用AS1制作的游戏仍旧可以在现在的Flash Player11上运行。向后兼容性十分出色。

HTML5:对于HTML5来说,比较向后兼容性有点不公平,因为它还在发展中。这意味着,如果它不符合W3C标准,就会被废弃。

Unity:Unity并不支持以前的插件,最开始我开期待它会像Flash一样,但似乎并不是这样。

4.移动性
Flash:直到今天前,我可以说,除了iOS平台,Flash插件对于移动平台的支持是伟大的。 但是Adobe官方宣布已经不再对移动设备上的Flash Player插件继续支持了,你可以认为它已经完全死了。当然你可以通过AIR来创建移动应用程序,但是这些不属于web game的范畴,所以我们不在此进行深入讨论。Stage3D对于移动的支持并不成熟,随着许多硬件厂商的合并,以及逐渐老化的AVM,对于Adobe的开发者来说是一场艰难的战争。种种迹象表明,在重建过程中,Adobe已经把Oliver Goldman从AIR团队中调到云项目。Oliver在AIR中是核心人物,至于结果怎样,只能仁者见仁了。

HTML5:HTML5对于移动的支持力度越来越强,iOS5上已经看到了性能的明显提升。当移动浏览器开始介入这些新特性,例如触摸事件和加速度的支持,我对于HTML5的前景逐渐看好。当然,你必须处理不同的屏幕分辨率和画面比例,但是这个问题不是只有HTML5有。

Unity:Unity并不支持移动浏览器上的插件。考虑到Unity的强项在于原生移动应用程序的编译,我能理解原因。
gameover.png
5.打包与分发
Flash:Flash的游戏最终都压缩成一个SWF文件。SWF文件可以简单地通过带有HTTP服务的网站进行传输。或者,它可以锁定到一个具体的URL上。Flash游戏的门户网站完全基于SWF文件的流动方式。SWF文件传播地越广,你挣的钱就越多。
HTML5:对于HTML5的游戏来说,没有跨平台或者统一的打包方式。那些最大的游戏门户网站都不允许开发者上传游戏。我认为是因为涉及到安全问题,它们不允许在站点上运行外来的JS程序。这就意味着传播HTML5游戏的唯一方式就是通过URL共享到一个目的站点,或者通过iFrame来嵌入。最终,是由开发者或赞助商来为给他们的游戏提供上传站点的主机费用买单。Flash传播游戏的方式是从站点来取出SWF文件,然后hosting这些SWF文件。这听起来不那么臭名招住,因为这的确是Flash挣钱的方式。门户网站可以使用带有沙箱参数设置的iFrame,但是这样做会阻止HTML5游戏需要使用的特性,例如本地存储和表单。

Unity:Unity和Flash类似,因为它也会最终创建出一个单一文件,然后上传到游戏门户网站,例如Kongregate。

6.安全性
Flash:SWF并不完美,但至少它能打包你所有的资源和代码到一个单一的文件,这就需要对它本身的技术很了解或者第三方的软件才能破解它。市场上有很多SWF保护服务和代码混淆软件,基本上可以防止随意的黑客和盗贼。

HTML5: JS代码可以混淆,但是不能被未加密的客户端加密。在内存中运行时,代码很容易被修改。图形和音频内容极容易被盗,可以通过Chrome或者Firefox的对象检查器,甚至通过浏览器的缓存文件夹。有人认为有一些保护HTML5资产的方式,并且认为Flash的资产一样容易被盗用。我不打算进入文件保护的辩论,我只想说,可以用来保护HTML5资产的方法都可以应用到Flash中。

Unity:和Flash类似。如果什么人有足够的决心来盗取它的资产,他会需要相当多的技术知识。

7.货币化
Flash:有许多很好的方式来挣钱,包括:游戏赞助,在游戏中的广告,与游戏门户网站的收入分成,广告分成,游戏中的交易,雇佣式游戏打工等等。我知道很多开发者完全不需要赞助商,只需要游戏和广告收入分成。网络中有大量为广告服务的API,只需要简单的上传你的游戏,就可以等到长期收入分成。

HTML5: 存在一些游戏中的广告服务,也可以把Google广告放在游戏中。我还没看到任何HTML5的游戏赞助市场或者收入分成交易。在游戏中的交易服务,比如Fortumo,已经存在和完善。

Unity:这里我不太懂,也许读者可以补充。

8.Facebook
Flash:Facebook上最流行的游戏都是用的Flash。The Sims Social每个月3600万的玩家使用的都是Flash。新的水果忍者同样使用Flash,并且会用到Flash 11的新特性。绝大部分的Zynga游戏也都使用Flash。之所以会这样,是因为Flash的受众,现有的技能(Flash开发者众多)和简单的开发流程。同时在Facebook上可以有很多方式来挣钱,因为它有大量的第三方服务和API接口。
HTML5: 我努力在Facebook上寻找最流行的纯HTML5游戏。当然肯定会有一些,因此,如果你找到了请帖链接。Zynga在2010年就收购了Dextrose,但是我还没看到什么结果。一些公司已经发布HTML5游戏到Facebook上,比如OMGPOP的Gem Rush,每日用户10人。但是Gem Rush只是用了HTML5的API,游戏本身还是Flash的!因此我的结论,目前为止,Facebook上最大的玩家群体还是使用Flash。

Unity:看上去Unity游戏在Facebook上也有一些赢利点。如UberStrike (每个月83万玩家) 和King’s Bounty(每个月2万玩家)。只要游戏内容足够吸引人,Facebook的用户也不方队安装Unity插件。

9.多少人会玩你的游戏
Flash:因为事实上,很多桌面用户都连接到互联网玩游戏,所以Flash的用户数量是巨大的。一个标准的Flash游戏在第一年通常有2-3百万次的访问量。好的Flash游戏当然次数更多。我们的游戏Home Sheep Home一上线就有每天1百万的访问量,在18个月内已经有1亿的访问量。这是一个惊人的数字。加上Facebook巨大的用户群,一定会有成百上千的用户在玩Flash游戏,玩家完全不是你的问题。

HTML5: 老实说,我无法找到任何相关数据,可能这个技术太新了,也没有用它做出来的好游戏。从技术上讲,可以说,潜在的用户可以有10亿,但是究竟事实上能有多少,开发者可以试试。

Unity:虽然Unity官方声明了玩家的数量,但是并没有第三方的统计。Kongregate上只有总共577000的访问量。而最好的Flash的游戏已经有2500万的访问量。事实上,排名前一百的Flash游戏没有低于250万的访问量。

10.3D支持
Flash:Flash Play 11引入了Stage3D,它本质上是OpenGL ES 2.0。Adobe已经做了一个标准化的工作来实现它,但是也有一大堆注意事项。首先,游戏需要用wmode=direct来嵌入。而大多数的游戏门户网站还不支持,所以如果你的游戏放到一个不支持它的门户上,它根本不会运行3D硬件。其次,不支持GPU的黑名单很令人丧气。任何2009年前的驱动程序无法工作;最常见的英特尔GMAS(板载图形芯片)也无法工作。而在2007年,90%的个人电脑都用了因特尔GMAS,这是个真正的大问题。当然Adobe必须要划一条线,但是Flash的吸引力在于它无所谓运行在什么样的硬件上。如果你用了Stage3D,实际上你已经把巨大的潜在玩家抛弃了。所以必须非常小心的选择这条路,确保你能尽快的回收资本。

HTML5: 在这里我们谈WebGL。它和Stage3D在技术层面上有很多相似点,但是在很多关键领域有缺陷:不能全屏,没有鼠标捕获(Flash Player11.2支持),没有多重渲染目标,没有instanced drawing等等。在Autodesk的博客上有一片很好的文章说了这些问题。当然这些只是短期内的技术难点,并且最终将可以被克服。WebGL最大的问题在于Microsoft目前的立场是不支持它。Microsoft不是WebGL工作组的成员,而且不支持WebGL的任何格式。由于IE浏览器仍然有很大的占有率,所以这个不容忽视。

Unity:Unity当然支持3D。在有限的测试中,Unity结果完美。当然你需要安装Unity的浏览器插件。但是如果你知道你的游戏玩家足够,那么Unity仍然是目前最好的3D游戏解决方案。Unity宣称将支持导出Unity游戏成Flash格式,而且不会有Stage3D带来的GPU黑名单问题。我真想把钱给Unity,让他们能够在不远的将来能够把Unity游戏导出成WebGL格式。


Flash to Focus on PC Browsing and Mobile Apps; Adobe to More Aggressively Contribute to HTML5
Posted by Danny Winokur

[Also posted on Adobe’s Conversations Blog]

Adobe is all about enabling designers and developers to create the most expressive content possible, regardless of platform or technology. For more than a decade, Flash has enabled the richest content to be created and deployed on the web by reaching beyond what browsers could do. It has repeatedly served as a blueprint for standardizing new technologies in HTML. Over the past two years, we’ve delivered Flash Player for mobile browsers and brought the full expressiveness of the web to many mobile devices.

However, HTML5 is now universally supported on major mobile devices, in some cases exclusively. This makes HTML5 the best solution for creating and deploying content in the browser across mobile platforms. We are excited about this, and will continue our work with key players in the HTML community, including Google, Apple, Microsoft and RIM, to drive HTML5 innovation they can use to advance their mobile browsers.

Our future work with Flash on mobile devices will be focused on enabling Flash developers to package native apps with Adobe AIR for all the major app stores. We will no longer continue to develop Flash Player in the browser to work with new mobile device configurations (chipset, browser, OS version, etc.) following the upcoming release of Flash Player 11.1 for Android and BlackBerry PlayBook. We will of course continue to provide critical bug fixes and security updates for existing device configurations. We will also allow our source code licensees to continue working on and release their own implementations.

These changes will allow us to increase investment in HTML5 and innovate with Flash where it can have most impact for the industry, including advanced gaming andpremium video. Flash Player 11 for PC browsers just introduced dozens of new features, including hardware accelerated 3D graphics for console-quality gaming and premium HD video with content protection. Flash developers can take advantage of these features, and all that our Flash tooling has to offer, to reach more than a billion PCs through their browsers and to package native apps with AIR that run on hundreds of millions of mobile devices through all the popular app stores, including the iTunes App Store, Android Market, Amazon Appstore for Android and BlackBerry App World.

We are already working on Flash Player 12 and a new round of exciting features which we expect to again advance what is possible for delivering high definition entertainment experiences. We will continue to leverage our experience with Flash to accelerate our work with the W3C and WebKit to bring similar capabilities to HTML5 as quickly as possible, just as we have done with CSS Shaders. And, we will design new features in Flash for a smooth transition to HTML5 as the standards evolve so developers can confidently invest knowing their skills will continue to be leveraged.

We are super excited about the next generations of HTML5 and Flash. Together they offer developers and content publishers great options for delivering compelling web and application experiences across PCs and devices. There is already amazing work being done that is pushing the newest boundaries, and we can’t wait to see what is still yet to come!

Danny Winokur is the Vice President and General Manager of Interactive Development at Adobe

来自Adobe 官方博客,简而言之就是。 Adobe 将停止 安卓,黑莓手机上浏览器中的flash插件更新,而将重点转移到桌面平台浏览器内外的flash研发。 同时加大对html5的支持。

实际上这篇新闻或许很吓唬人,在cnbeta上有果粉喊着这是flash末日。其实并非如此,安卓与黑莓上实际上是用跨平台的AIR应用的,而AIR可以打包FLASH文件运行,就像原生APP那样。而HTML5 目前也缺少一个方便的IDE,而之前出的EDGE也是一个试验flash一键转换到html5的方案。

Adobe在桌面版的开发继续,在移动版上将加强Air的统治地位。flash没有死,而且还活的好好的。虚幻3,Unity3D,CyrEngine 的加入就是证明。

后天就是大学的最后一年运动会了,也是我人生中最后一次的运动会假期了。尽量让它过的充实一些吧~

5天时间哎~

先列个事项清单,一步步完成!

1.网络游戏数据库验证更改为xml方式


private function onCom(e:Event)
{
var _result:String=e.target.data;
_result=_result.substr(_result.indexOf("")+1);
var _xml:XML=new XML(_result);
_result=_xml["result"];
myLoader.removeEventListener(Event.COMPLETE,onCom);
myLoader.removeEventListener(IOErrorEvent.IO_ERROR,onError);
myLoader=null;

if(_result==”true”)
{
this.dispatchEvent(new Event(SUCCESS));
}else{
this.dispatchEvent(new Event(FAILURE));
}
}

2.重写网络游戏的文档类,使用继承基类的方式

3.完成SOA的坦克联网游戏,顺便加入3种设计模式,当作两门课程的任务交了

工厂模式
命令模式
装饰者模式

4.做2份英语6级的试题呀~

5.自行车郊游10公里!

 

btw: 空间准备换到国外了,域名大概也差不多该做转向了。目前地址是 http://www.aoicon.in/blog? 大概12月15日迁移过去吧~实在受不了万网的域名解析和空间提供商的时不时服务器错误了。

用away3D 做了一个渲染360°全环境贴图的demo,并制作了一个环绕漫游相机对着中间的盒子进行y轴和x轴的旋转,这样可以更好看看到周围的环境与中间盒子的细节。
skybox

由于单页面渲染多个3D视图 或者 同浏览器多标签渲染 3D视图 会导致 fps 丢失,因此这个demo 放在 》继续阅读 的页面中。
所以先上代码:
[cc lang=”actionscript3″ nowrap=”false”]
package
{
import away3d.materials.utils.CubeMap;
import away3d.primitives.SkyBox;

import flash.events.Event;
import flash.geom.Vector3D;
import flash.ui.ContextMenu;

[SWF(width=”500″,height=”500″,frameRate=”60″)]
public class ViewportClipping extends away3D
{
// Environment map.
[Embed(source=”../Embed/envMap/snow_positive_x.jpg”)]
private var EnvPosX:Class;
[Embed(source=”../Embed/envMap/snow_positive_y.jpg”)]
private var EnvPosY:Class;
[Embed(source=”../Embed/envMap/snow_positive_z.jpg”)]
private var EnvPosZ:Class;
[Embed(source=”../Embed/envMap/snow_negative_x.jpg”)]
private var EnvNegX:Class;
[Embed(source=”../Embed/envMap/snow_negative_y.jpg”)]
private var EnvNegY:Class;
[Embed(source=”../Embed/envMap/snow_negative_z.jpg”)]
private var EnvNegZ:Class;

private var _wave:Number = 0;
private var _origin:Vector3D=new Vector3D(0,0,0);

public function ViewportClipping()
{
var myMenu:ContextMenu=new ContextMenu();
myMenu.hideBuiltInItems();
this.contextMenu=myMenu;

_createView();
_createScene();
_createCamera();
_createSkyBox();
}

protected function _createSkyBox():void
{
var _cubeMap:CubeMap=new CubeMap(new EnvPosX().bitmapData,new EnvNegX().bitmapData,new EnvPosY().bitmapData,
new EnvNegY().bitmapData,new EnvPosZ().bitmapData,new EnvNegZ().bitmapData);

_view.scene.addChild(new SkyBox(_cubeMap));
}

protected override function _onEnterFrame(ev:Event):void
{
_cube1.rotationY-=.5;
_cube1.rotationX-=.5;

_view.camera.position=_origin;
_view.camera.rotationY += .1;
_view.camera.rotationX += .1;
_view.camera.moveBackward(1000);
_wave+= .005;
_view.camera.y = 400+Math.sin(_wave)*200;

_view.render();
}
}
}
[/cc]
Continue reading