毫无疑问,2012年将是框架年。Roger Engelbert在他的博客rengelbert.com展示给我们如何做一个移动版的青蛙过河游戏,使用四个不同的框架:Starling,Sparrow, cocos2d和LibGDX。
这是在实验中涉及的游戏:
[flash]http://www.emanueleferonato.com/wp-content/uploads/2012/01/FroggerAS3.swf[/flash]
(注意:因为原帖中wmode="direct"才能观看swf,所以建议到原帖观看swf)
使用箭头键键移动青蛙,或点击游戏右下角的青蛙控制器。
这里是一个由Roger提供的简单介绍:
我将首先解释一些游戏的逻辑控制。非常重要是,逻辑本身与框架无关。框架的大部分,仅影响视图部分的逻辑:屏幕上的纹理真实渲染代替所有区块对象的逻辑处理。
所以这些教程并不意味着是关于如何建立一个像青蛙过河游戏,而是如何摆放东西在屏幕上。
尽管如此,我想我还是尽可能解释游戏逻辑,以便于,你可以区分逻辑和实际框架代码。
游戏引擎
引擎管理一系列的屏幕对象,但一次只显示一个屏幕。所以,你可以建立一个简介屏幕,一个如何游戏屏幕,一个高分屏幕,一个游戏屏幕...然后,引擎在一个循环中更新当前显示的屏幕对象。
对于这个例子,我创建了两个屏幕,一个叫一个MenuScreen显示了如何玩游戏的说明,和一个称为GameScreen实际游戏运行的屏幕。
主要游戏的对象包含公开引用GameData,TextureAtlas和声音。在游戏中的每个对象接收到一个游戏对象的引用。我决定使用构造和单例。
控制器
对于Flash版本的游戏中,我将使用两套控制器:按键和鼠标点击。稍后,移植到移动设备时,我就会放弃键盘输入的逻辑,只是保留触摸事件。
游戏逻辑
游戏的逻辑很简单。屏幕划分成13行,我叫他们为Tiers(层)。每一层有一堆sprites,他们可以是车,或龟或树。
青蛙sprite,由玩家控制, Y位置只有13个可能的值,和一个Tier值。因此,每向上或向下移动Y值玩家变更到下一层或前一层。
碰撞只属于青蛙所在层。
每一层的责任是,更新它包含的sprites的位置。
skin(皮肤)属性
正如我早先谈到的,使用不同的框架将负责游戏中使用的Sprites的皮肤属性,以及皮肤可能使用的各种纹理对象(如果加入它是动画)。在这里,可以找到框架逻辑和语法。
尽管如此,当我更新sprites在游戏中的位置时,我通过包装,而不是直接用Image对象。这看起来可能对你像额外的工作,你可以自由修改这些。我只是觉得这种方式是最容易的,把同样的逻辑移植到不同的平台上,我只需要改变逻辑控制皮肤渲染。
现在,你已经准备好了看一个我见过的最有趣的教程。
http://www.rengelbert.com/tutorial.php?id=163 (using Starling)
http://www.rengelbert.com/tutorial.php?id=167 (using Sparrow)
http://www.rengelbert.com/tutorial.php?id=171 (using Cocos2D)
http://www.rengelbert.com/tutorial.php?id=175 (using LibGDX)
我期待着播放和展示关于框架的内容,并发表我的想法。
这是在实验中涉及的游戏:
[flash]http://www.emanueleferonato.com/wp-content/uploads/2012/01/FroggerAS3.swf[/flash]
(注意:因为原帖中wmode="direct"才能观看swf,所以建议到原帖观看swf)
使用箭头键键移动青蛙,或点击游戏右下角的青蛙控制器。
这里是一个由Roger提供的简单介绍:
我将首先解释一些游戏的逻辑控制。非常重要是,逻辑本身与框架无关。框架的大部分,仅影响视图部分的逻辑:屏幕上的纹理真实渲染代替所有区块对象的逻辑处理。
所以这些教程并不意味着是关于如何建立一个像青蛙过河游戏,而是如何摆放东西在屏幕上。
尽管如此,我想我还是尽可能解释游戏逻辑,以便于,你可以区分逻辑和实际框架代码。
游戏引擎
引擎管理一系列的屏幕对象,但一次只显示一个屏幕。所以,你可以建立一个简介屏幕,一个如何游戏屏幕,一个高分屏幕,一个游戏屏幕...然后,引擎在一个循环中更新当前显示的屏幕对象。
对于这个例子,我创建了两个屏幕,一个叫一个MenuScreen显示了如何玩游戏的说明,和一个称为GameScreen实际游戏运行的屏幕。
主要游戏的对象包含公开引用GameData,TextureAtlas和声音。在游戏中的每个对象接收到一个游戏对象的引用。我决定使用构造和单例。
控制器
对于Flash版本的游戏中,我将使用两套控制器:按键和鼠标点击。稍后,移植到移动设备时,我就会放弃键盘输入的逻辑,只是保留触摸事件。
游戏逻辑
游戏的逻辑很简单。屏幕划分成13行,我叫他们为Tiers(层)。每一层有一堆sprites,他们可以是车,或龟或树。
青蛙sprite,由玩家控制, Y位置只有13个可能的值,和一个Tier值。因此,每向上或向下移动Y值玩家变更到下一层或前一层。
碰撞只属于青蛙所在层。
每一层的责任是,更新它包含的sprites的位置。
skin(皮肤)属性
正如我早先谈到的,使用不同的框架将负责游戏中使用的Sprites的皮肤属性,以及皮肤可能使用的各种纹理对象(如果加入它是动画)。在这里,可以找到框架逻辑和语法。
尽管如此,当我更新sprites在游戏中的位置时,我通过包装,而不是直接用Image对象。这看起来可能对你像额外的工作,你可以自由修改这些。我只是觉得这种方式是最容易的,把同样的逻辑移植到不同的平台上,我只需要改变逻辑控制皮肤渲染。
现在,你已经准备好了看一个我见过的最有趣的教程。
http://www.rengelbert.com/tutorial.php?id=163 (using Starling)
http://www.rengelbert.com/tutorial.php?id=167 (using Sparrow)
http://www.rengelbert.com/tutorial.php?id=171 (using Cocos2D)
http://www.rengelbert.com/tutorial.php?id=175 (using LibGDX)
我期待着播放和展示关于框架的内容,并发表我的想法。