分享

怎样学习Flash和AS3.0游戏编程

 nywrb 2012-10-18
本帖最后由 niujiarong 于 2012-9-25 10:12 编辑


如今,Adobe Flash在游戏开发方面上正大步向前发展。除官方外的还有各大页游门户网站Kongregate, Newgrounds, 和Armor Games ,在桌面端,手机设备以及平板设备上都可以找到由Flash制作打包的本地应用程序(native apps)。

那么,为了让各位更加方便学习AS3游戏编程,我们特意收集整理了相关的教程、学习建议,以及书籍推荐。


Flash已死,有事烧纸?

毫无疑问,Flash在最近两年一直处在艰难之时期。一方面,苹果的乔布斯并不喜欢它,以至于iPadiPhone都无法运行Flash Player,甚至在后来连Andoid设备都不支持Flash Player了。加上HTML5正以惊人的速度发展,它每天的更新都让浏览器增加着新的功能,大有超越Flash之势。另外一方面,而那些由Flash制作的网页广告带着雷人的标语:“老婆不在家”,等等,一直遭受着网友的唾弃。更加气愤的是,Flash Player崩溃,往往都会导致整个浏览器的崩溃,摔鼠标的心都有了!

所以Flash带着诸多的毛病,在大多数前端开发人员和普通大众心中都留下了不好的印象。并且Flash尽管在许多领域曾红极一时,如:多媒体网站建设。但在当今的技术看来,显得有些过时了。话虽如此,我还是依然认为它一个是杰出的游戏开发平台!


为什么要用Flash开放游戏?

第一个理由是——技术。AS3作为Flash的默认的编程语言,发展至今,已经和最早的ActionScript大有不同了。如今,它已是一种强大的,面向对象的,支持硬件加速以及网络功能和支持3D图像的语言。虽然说以插件形式的Flash Player在移动设备的浏览器上已经无法使用,不过作为Flash游戏,我们依然可以通过打包成本地应用的方式在iPhone, iPad, Android, Kindle Fire, 和 BlackBerry供玩家游玩。

另外一个理由是——生态系统。起初,Flash的相关门户网站都只能做一些看似骗小孩的小游戏,游戏里的“火柴人”粗糙很。不过这都是陈年旧事了,时代在发展,依靠一些复杂的游戏逻辑和碰撞检测制作出的游戏,可以让现在的Flash游戏产业产值达到数以亿计!并且它的身影几乎遍及全平台。你可以在App Store, Google Play Store, Amazon Appstore随随便便见到FLash制作的游戏。

最后我个人认为一个最为重要的理由就是这个社区。因为Flash非常独特的演变,它创造出了一个完美的群体,既是设计人员,又是开发人员,这个群体对游戏开发来说尤为重要。而在这个社区里的一部分游戏开发人员贡献了大量的有价值的类库,工具,书籍和教程。


说到HTML5做游戏
我很无奈,在网络上你可以听到各种各样的对使用Flash的唾弃的声音,尽管他们背后隐藏着各种意图。在许多关于Flash的讨论中,经常会有个人跳出来普渡众生似得告诉你:你就应该立即使用HTML5,而他丝毫不提及论题中的实质内容。

当然啦,我们必需去了解一下HTML5,学习不同的平台我觉得这是一种义务。但是请不要无视Flash的诸多优势。HTML5取代Flash并是不动动嘴皮子这么简单的事儿。

抛开那些受利益左右的观点,Will Blanton说的这话我认为还是挺靠谱的:

我热衷于探索新的技术,但是游戏开发却不仅仅是技术那么简单,游戏是情感的一种载体(像是艺术)。所以,就像认为一位艺术家变换着手中的工具就可以更好的表达自己的思想一样,这种想法可笑至极。



安装Flash开发工具

Flash Professional 并不是一定需要. 当然它是一款十分有用的GUI(图形用户界面)和图像素材工具, 但是它对代码的支持却不是那么好。

如果你是Win的用户,我建议你去下载一个神器 FlashDevelop 代码编辑器 – 我个人的最爱.。我还写了一些这软件的教程( a beginner’s guide to it,) 这是他的官方网站( the official website.)。

不幸的是,如果你是Mac用户(苹果用户)就用不到了, 推荐 FDT 可以试一下 – 这里是免费版本( free version)初学者初学者足够用了 。Michael Plank 写的 FDT教程(a great beginner’s guide ), 这里是官方网站的说明文档 full documentation

如果你已经拥有了 Adobe Creative Suite 集合, 或者你是 Creative Cloud  的用户,那么你一定已经有了 Flash Builder, 这是Adobe公司提供专注于Flash代码部分的编辑器。这里是初学者的相关教程( Check out this guide )。

当然你还可以用文本编辑器+SDK直接去写代码......

不要对选择什么工具而当心,因为你以后可以换的嘛。



学习AS3

AS3 (ActionScript 3.0) 实际上是Flash的一门编程语言,在此之前还有AS2.0的版本,不过那些都过时了,让我们把注意力放在AS3上。如果你想做Flash的游戏,那么你就必需学习AS3编程。虽然在学习编程的过程中你不一定都是在学习做游戏,但是这些基本功对你今后做游戏确实影响深远的。


如果你已经会了JavaC#或者其它的OOP语言,那么只要看看下面这些文章,就可以对AS3有个全面的了解了。

· The Display List –  AS3: The Display List, Display list programming in AS3, and AS3 101: The Display List. (显示对象列表)

· The Event System – see Introduction to event handling and AS3 101: Events. (事件机制)

· Garbage Collection – see Understanding Garbage Collection in AS3.(垃圾回收机制)


如果你只是一位编程的初学者的话,你需要更加综合的指导。我推荐AS3 101, 它分为18个部分去阐述AS3中的核心概念。

这里还有适合初学者的书(老鸟也值得翻阅):Essential ActionScript 3.0)Foundation Actionscript 3.0 Animation: Making Things Move!.(译者注:大家可以通过名称搜索到中文版的书)。不要被后者的题目吓到了。其实它正是教你通过代码去实现动画效果,这可和游戏编程有很强的关联。


另外,Matt Barker 建议看看这本出自Adobe官方的多达六百页的指导,Programming ActionScript 3 [pdf].

如果你需要一些参考, Adobe Livedocs (adobeAPI在线文档)是个不错的选择,这里有你需要的所有东西(它搜索功能有点鸡肋,不过你可以在google里搜索,偶尔就会蹦出在线文档里的内容。

Stack OverflowGamedev Stack Exchange 一问一答的方式也可以很好帮你解决问题。



制作你的第一款游戏

其实现在可以找到许多很详细的制作Flash游戏的教程,但是适合初学者的却比较少见。

只要你看了我之前的那些推荐,即使你并没有什么游戏开发的经验,AdvancED Game Design with Flash. 这本书也可以帮助你制作你的第一款游戏。

其实网络上还有很多免费的教程,但是由于内容涉及的太广泛,所以我也不知道适不适合你。当然你可以自行看看Activetuts+ Games archives, 或者Everyone’s Platformer然后找一些非常简单非常简单的小游戏去练习。就怕你找了一篇高难度让后就自己把自己的积极性给打击了。



更多更多

当你掌握了Flash平台后, Implementation tutorials on this site 在这里你还可以找到一些不同的开发平台。

下面也有更多非常详细的学习制作Flash游戏开发的资源。不过它们只是一个整理而已,并没有分个顺序,所以随意选取你感兴趣的内容吧。



Flash游戏引擎

Flixel and FlashPunk 是两个免费的开源的2D游戏引擎。

它们都有非常详细的教程,并且目前有许多游戏都是基于它们开发的。

the official Help page, 这个链接里有Photon Storm网站整理的Flixel游戏开发贴士。

这里是FlashPunk的相关官方教程 the official tutorials.。如果你曾经是Game Maker的游戏开发人员,你会觉得这个引擎的类库非常的友好易用。



Stage3D

Stage3DAPI可以让你的游戏通过GPU实现硬件的加速。想更加深入的了解,可以访问Christer Kaitila的著作Stage3D Game Programming: Beginner’s Guide

Away3D, 也十分值得一试,这是另外一款Flash3D引擎)

当然,Stage3D也可以做2D的游戏,并且可以轻易让你的游戏帧率保持在60fps

Christer写的另外一本书有介绍: six-part tutorial series on building a 2D shoot-’em-up ,前三章免费。

看看 Starling Framework, 引擎,它是一个专门为达到3D硬件加速定做的2D游戏引擎,利用3D硬件渲染,还不需要过多接触Stage3D的知识。 Thibault Imbert 写的免费教程 an introductiongreat ebook



移动和平板设备开发

就像我最早提及到的,Flash不仅仅是在网页上跑的技术。你还可以将通过Flash制作的游戏打包成 iPhone, Android, 或者 BlackBerry 的本地应用,还可以在各自的应用商店出售。

讲普通的游戏打包成应用并不是很复杂。只要搜关键词[flashdevelop android] 或 [fdt ios]都可以找到大把大把的内容。

其中真正关键的是怎样让你的游戏适应这些平台,怎样使用这些设备的硬件功能和触摸屏。这两本是很值得一看的 Flash Development for Android CookbookFlash iOS Apps Cookbook ,还有一系列的文章是出自我们的兄弟网站 Mobiletuts+ ,介绍关于移动设备的交互设计



其它资源

还有一些我曾经研究过的类库,像Box2D, GreenSock, 和MinimalComps

我整理了这个清单,是一些很有用的站点

· Adobe Gaming

· FGL

· gotoAndLearn.com

· Playtomic

· Mochi Media

· AS3 Game Gears

· Flash Game Dojo

· (9ria.com)

清单我可能遗漏了一些好的站点,你随时可以留言补充



关于制作游戏

我曾经在 XNA guide 就提及过,现在再次建议。当你开始做的时候,千万不要想着里面做一个MMO大型页游,或者需要大量的素材的那种RPG游戏。记住,刚开始学习的时候你只需要一步一步的来,不要天真想着一口吃成大胖子。

举个例子吧,像乒乓球这样的游戏,你可以做成多个等关卡。像躲避类的,你就可以做成星际探索加上对敌人的射击玩法。

先不要去管那些什么设计模式和游戏框架之类的高级编程技术,没必要。你只需要先专注于制作完成一些小游戏(finishing some games,),因为它们可能压根就不需要用到这些技术。


在此特别感谢Djordje Radakovic, Matt Barker, Joseph Burchett, Will Blanton, 和John Cotterell 联合完成了此篇指导。

如果我们遗漏了什么学习Flash的资源,尽管留言提醒我们就是了。谢谢。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多