Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4252628
  • 博文数量: 82
  • 博客积分: 671
  • 博客等级: 上尉
  • 技术积分: 24576
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-18 16:08
个人简介

www.kernel.org

文章分类

全部博文(82)

文章存档

2016年(1)

2015年(3)

2014年(12)

2013年(14)

2012年(52)

分类: 系统运维

2012-10-28 11:01:19

开发你的第一个游戏

   本章我们将一步一步学习如何用Gamma来开发游戏。

·         准备

·         添加平台

·         添加角色

·         移动角色

·         添加敌人

·         自定义游戏视角

·         添加光线

·         添加纹理

·        

·         创建多级关卡

·         创建HUD

·         为游戏添加平滑的光照反射效果

 准备

   在里我们已经将开发环境搭建好,创建的game.js 内容如下:

require(['gma/base', 'gma/manager'],

 

    function(gma) {

        //游戏的具体定义包括在这个函数中.

        var manager = gma.manager();

        manager.storeLevels({});

        manager.init();

    }

);

 

require函数

    首先,在game.js文件里我们用require函数导入Gamma库,require函数的输入参数是由Gamma库里gma/base gma/manager 包所构成的一个数组。除了require函数外,我们还定义了一个可执行函数。

/*全局的require方法 */

require(['gma/base', 'gma/manager'],

 

    function(gma) {

        //游戏的具体定义包括在这个函数中.

        ...

    }

);

 

    该函数只接受 包作为其输入参数.

创建场景

    其次,在game.sj中我们用代码 var manager = gma.manager();. 创建了一个管理器(译者注:在Gamma游戏开发中这个管理器充当了场景的作用,后面我们都将Gamma的管理器称为场景)。缺省情况下,该场景会在html文件里id名为"gamma"div标签里显示出来。(在创建游戏场景时我们还可以设置它的 属性。设置方法请参考: .)

    另外,创建场景时还可以通过属性来指定其宽度和高度。下面这个例子创建了一个宽、高各为600500的场景:

/*全局的require方法*/

require(['gma/base', 'gma/manager'],

 

    function(gma) {

        var manager = gma.manager({

            width : 600,

            height : 500

        });

    }

);

 

启动游戏的主循环

    为了让我们的游戏真正地运行起来,必须设置游戏的主循环。可个过程可以通过在场景里保存游戏关卡,然后调关卡的init()方法来实现游戏主循环的初始化。在我们的游戏里我们设置了一个空了关卡:

manager.storeLevels({});

manager.init();

添加平台

    下面我们来创建一个基本关卡,这个关卡仅包含一个小平台,然后将该平台添加到关卡里。平台的类型为entity,所以如果有多个平台我们可以将其定义成entity数组,然后将该数组添加到关卡里。例如:

var myLevel = {

    entities : [

        {type: 'platform', top:0, left:0, width:30, height:3},

        {type: 'platform', top:0, left:36, width:30, height:3}

    ]

};

 

    因为平台的缺省类型是entity,所以可以省略不写,如下:

var myLevel = {

    entities : [

        {top:0, left:0, width:30, height:3},

        {top:0, left:36, width:30, height:3}

    ]

};

 

    最后,我们用方法将关卡添加到场景里:

manager.storeLevels(myLevel);

 

最终示范代码

require(['gma/base', 'gma/manager'],

 

    function(gma) {

        var manager = gma.manager({

            width : 600,

            height : 500

        });

        var myLevel = {

            entities : [

                {top:0, left:0, width:30, height:3},

                {top:0, left:36, width:30, height:3}

            ]

        };

        manager.storeLevels(myLevel);

        manager.init();

    }

);

 

    提示

    关于如何定义一个平台的更多详情请参考 的相关章节

 

 添加角色

    创建游戏角色时需要调用 方法实例化一个角色对象,然后将它和关联起来。下面的代码创建角色时指定了其位置和大小:

manager.character = gma.character({

    left     : 0,

    bottom   : 0,

    width    : 3,

    height   : 6,

    depth    : 3

});

    以上代码,需要将gma/entities/character 添加到require函数的依赖数组中。

设置角色的出生点位

        spawn 用于定义了角色的出现位置,一般在关卡对象用标签属性来定义。当关卡被加载后,角色的显示位置就由spawn对象里main标签的值来确定。

        Gamma中,角色位置是由角色左下角的xy坐标值确定。下面的例子创建了的出生点位是:x=15y=24

var mylevel = {

    spawn : {

        main : [15, 24]

    }

}

   提示

    如果关卡中,spawn对象没有用main标签定义角色的出生点位,当游戏运行时角色的默认显示位置是[0, 0]

最终示范代码

require([

    'gma/base',

    'gma/manager',

    'gma/entities/character',

    'gma/events'

],

    function(gma) {

        var manager = gma.manager({

            width : 600,

            height : 500

        });

        manager.character = gma.character({

            left     : 0,

            bottom   : 0,

            width    : 3,

            height   : 6,

            depth    : 3

        });

        var myLevel = {

            spawn : {

                main : [15, 24]

            },

            entities : [

                {top:0, left:0, width:30, height:3},

                {top:0, left:36, width:30, height:3}

            ]

        };

        manager.storeLevels(myLevel);

        manager.init();

    }

);

    后记:

    之前从来没接涉足过游戏开发领域,这次CU提供了这么好的机会,正好可以挑战一下自己。通过查阅游戏开发过程中会用到的一些术语、名词,并结合自己多年的“被游戏玩”的经验,耗时两个mornings,终于翻译完了。当然,作为门外汉,翻译的准确性用词的合理性方面在专业游戏大牛们看来或许有些绕口。如果有游戏方面的大牛路过俺家门口,还请大虾们不吝赐教,谢谢了咯。

  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  
阅读(3862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~