Seize the Day

Less is more : Dear Esther 简评


Less is more,是现代主义建筑大师路德维希·密斯·凡德罗提倡简单,反对过度装饰的设计理念,也是极简主义的经典表述。在AAA级游戏制作成本及规模不断攀升的同时,一些独立游戏开发者则朝着这个方向发展,简约的风格带来一种与众不同的清新和震撼。

dear esther

Dear Esther 由独立游戏工作室 The Chinese Room [室] 制作, 起初是作为Source引擎的Mod作品在2008年发布,2012年在Steam平台发售商业版。游戏没有复杂的操作,玩家所能做的只有前后左右(WSAD) 和放大(Zoom),采用Source引擎,游戏画面渲染的很不错,诸如水面的反射,水流的折射等物理效果让人印象深刻。简单的操作,极少的交互凸显了叙事的重要性,让整个游戏的情节成为了该游戏的核心。

游戏以一个废弃的海岛为场景,玩家可自由探索地区,并在途中某些地点触发画外音。叙述者自称“我”,即主角,也可指代为玩家自己。言语多以 “Dear Esther”开始,很像书信的开头,内容都是主角写给Esther的信件节选。玩家通过不断地探索来获得更多的叙述,以及结合游戏场景中的物件,从而获得零星的故事片段。随着探索区域的逐渐深入,获得的线索也越来越多,原本散乱的记忆拼图最终成为了一个整体。

Read more ⟶

Flash Player 11.5 Beta & AIR 3.5 Beta 特性


FP11.4发布没多长时间,很多新功能还没有用上,FP11.5 Beta就已经发布了。 主要特性及优点(不定期更新): 在Flash Player的…
Read more ⟶

在 Flash Player 中显示GIF动画


之前遇到这个需求,本人坚持”不重复发明轮子”的原则,弘扬”积极的偷懒不算偷懒”的精神,找到了两个解决方案。因为之前研究了GIF格式和LWZ算法,所以理解起来,没有太大的问题。

方案一:as3gif

作者:Thibault Imbert 项目地址:http://code.google.com/p/as3gif/

2007年Thibault 在他的Blog里介绍了这个方法,从java GIF encoder 移植而来,可以实现gif的编码、解码和显示。调用也很简单,代码如下:

	// we create the GIFPlayer, it plays automatically by default
	var myGIFPlayer:GIFPlayer = new GIFPlayer();
	// we show it
	addChild ( myGIFPlayer );
	// we load a gif file
	myGIFPlayer.load ( new URLRequest ("animation.gif") );
	// you can also load any valid GIF stream (ByteArray) with the loadBytes method (version 0.2)
	myGIFPlayer.loadBytes ( gifStream );
	// listen for the IOErrorEvent.IO_ERROR event, dispatched when the GIF fails to load
	myGIFPlayer.addEventListener ( IOErrorEvent.IO_ERROR, onIOError );
	// listen for the GIFPlayerEvent.COMPLETE event, dispatched when GIF is loaded
	myGIFPlayer.addEventListener ( GIFPlayerEvent.COMPLETE, onCompleteGIFLoad );
	// listen for the FrameEvent.FRAME_RENDERED event, dispatched when a GIF frame is rendered on screen
	myGIFPlayer.addEventListener ( FrameEvent.FRAME_RENDERED, onFrameRendered );
	// listen for the FileTypeEvent.INVALID event, dispatched when an invalid file is loaded
	myGIFPlayer.addEventListener ( FileTypeEvent.INVALID, onInvalidFileLoaded );
	// get total frames
	myGIFPlayer.totalFrames;
	// standard methods
	myGIFPlayer.play();
	myGIFPlayer.stop();
	myGIFPlayer.gotoAndStop(3);
	myGIFPlayer.gotoAndPlay(3);

优点:简单易用,接口丰富,满足一般应用。具备GIF编码类,可将位图数据添加至GIF动画帧中。

缺点:解码和播放的性能不太理想。在加载大的文件时耗时太长,动画帧控制不准确。

Read more ⟶

GIF 格式及LZW算法浅析


前段时间得知一个产品需求,需要在Flash Player中显示gif动画图片。虽然Flash支持gif图像的载入,但无法播放动画。

花了不少时间去了解GIF格式,虽然顺利解决了问题,但是知其然也知其所以然,了解了这些知识,对理解编码/解码的过程和解决问题有非常大的帮助。

gif sample

GIF概述

Graphics Interchange Format(GIF,图形交换格式)是一种位图的图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩算法进行编码,有效地减少了图像文件在网络上传输的时间。是目前广泛应用于网络传输的图像格式之一。

GIF主要分为两个版本,即GIF 87a和GIF 89a:

GIF 87a:是在1987年制定的版本; GIF 89a:是在1989年制定的版本。在这个版本中,为GIF文档扩充了图形控制区块、备注、说明、应用程序接口等四个区块,并提供了对透明色和多帧动画的支持。

GIF格式结构

GIF文件由文件头,描述块,彩色表,数据块,扩展块和结束符构成,GIF87a和GIF89a的区别在于:后者较前者增加了扩展块,从功能上看即提供了对透明色和多帧动画的支持。

结构组成

结构如下表所示:

Header Header Header
Logical Screen Descriptor Screen Descriptor Block GIF Data Stream
Global Color Table Global Color Table(optional)
Application Extension Extension Blocks(optional, repeated)
Graphic Control Extension*
Image Descriptor Image Blocks(repeated)
Local Color Table
Table Based Image Data
Extension Blocks(optional, repeated)
Trailer Trailer Trailer
Read more ⟶

Adobe® ActionScript® Compiler 2.0 (ASC2.0)版本说明


伴随着Flash Builder 4.7 beta的发布,正如Adobe所承诺的那样,新的编译器也浮出水面。全新的编译器到底有哪些改进和新特性,想必是大多数ActionScript开发比较关心的问题。简单翻译了下ASC2.0官方发布说明,希望能对同行们有一点帮助。

如果要了解Flash Builder 4.7,可以参看zrong的这篇文章

** August 2012 – Adobe® ActionScript® Compiler 2.0 (Build 2.0.0.345083) ** Welcome to the Adobe ActionScript Compiler 2.0 (ASC 2.0) Preview.

ASC 2.0 是一个新的ActionScript® 3.0 (AS3)编译器。相比之前版本更遵循AS3语言规范,编译性能方面有了很大改善。在内存压力下更稳定,并包含一些演示性的优化选项(内联,无用代码删除),这些选项可以有选择地启用。

这个编译器已经包含在刚发布的 Flash Builder® 4.7 预览版中。其单独版本已经同AIR SDK 3.4 一起打包发布。

注意:ASC 2.0支持编译AS3应用,虽然留有熟悉的mxmlc和compc命令行入口,但是不支持Flex应用的编译。

当有更多信息时,该文档可能会不定期更新。

版本说明 – August 2012

  • 这是新编译器ASC 2.0 的第一个公开预览版;
  • Flash Builder 4.7 and the ASC 2.0 command-line compiler now share the same code model. This avoids duplicate representations of a program and means the IDE has an accurate representation of the language – matching the compiler. (没看懂,不清楚code model,representation的定义)
  • 全新多线程架构,支持多文件同时编译,减少编译时间;
  • 更佳的常数合并和常数传播带来运行时更佳性能的代码;
  • 通过移除不必要的活动记录减少函数开销;
  • 包含内联和无用代码删除相关的字节码优化;
  • 加入新关键字”goto”,实现AS3的非线性控制流;
  • 现在支持SWF 13的LZMA压缩了。
  • 新的符号管理系统,意味着包含Flash 和 AIR项目的Flash Builder 4.7 AS工作空间,编译起来应该会快多了;
  • fontswf, optimizer,swfdump和swcdepends ,基于ASC 2.0的新版本可以用了;
  • Asdoc,fdb的旧版本依然包括在内;
  • 字体转码已经从[Embed]语法中移除,现在字体需要先预转码并作为SWF嵌入,可以通过工具(如fontswf或Flash Professional CS6)来完成。
  • 源代码中的相对路径([Embed] assets, includes, etc…)将从其包含文件相对解析。要指定一个相对于源文件根目录的路径,需要在你的路径前加”/”;
  • 英文编译器错误信息已经翻译成法文,日文,中文,区域取决于JVM的设置,并可以通过 -tools-locale 设置项改写。
Read more ⟶

连接Kindle Fire到ADB(实体机调试)


前提条件

为开发环境下载安装下列包:

使用 Android SDK Manager 下载安装下列SDK包:

  • Android 2.3.3 (API10) => SDK Platform
  • Tools => Android SDK Tools
  • Tools => Android SDK Platform-tools
  • Extras => Google USB Driver package

OSX设置

修改 adb_usb.ini

  1. 打开文件: ~/.android/adb_usb.ini
  2. 添加一行: 0x1949
  3. 添加一行: 0x0006
  4. 保存文件

注意:确保每行一条配置。如果文件不存在,新建文件并确认具备已配置完毕的Android SDK。

Read more ⟶