游戏程序设计课程报告

时间:2024.4.21

游戏程序设计 姓名:

班级:

学号: -----游戏引擎 杜维 计科三班 3200805030302

游戏引擎概述

自DOOM游戏出现以来,游戏产业的发展非常迅猛。因此DOOM不仅仅是一款优秀的游戏,它同时也创造了一种全新的游戏开发方式:游戏“引擎”。它是采用一种结构化,可扩展的设计理念,从而让游戏制作人员可以摆脱游戏底层的开发,在更高级的平台上,使用新的模型,绚丽的场景和动听的声音开发出新的游戏,或者向现有的游戏中添加新的元素。

那到底什么是游戏引擎?游戏的引擎类似于赛车的引擎,我们都了解赛车引擎,它是一辆赛车的心脏部件,它的性能决定着整个赛车的性能,稳定性、速度、操纵感等,车手操作赛车的好坏也都是建立在赛车的引擎的基础上。游戏也是同样的,游戏引擎是整个游戏的核心部件,它直接控制着玩家所接触到的剧情、关卡、角色、音乐、GUI界面等游戏元素,通过它才能把游戏中的所有元素联系在一起然后控制它们各自同步、有序地工作。如今的游戏引擎都已经发展到多个子系统共同构成的一套综合系统,它提供了开发中需要的所有功能。以下针对引擎的一些主要模块做一个简单的介绍。

首先是光影效果,即场景中的人和物受场景中光源影响的作用。游戏中的各种光影效果都是由引擎计算得到的,可以采用使用不同的编程技术来实现物理学中的基本光学现象以及一些高级的效果。 其次是动画系统,目前3D游戏的动画系统可以分为两大类:意识骨骼动画系统,它通过内置的骨骼动画骨架来带动物体产生运动,在游戏中比较常用。意识模型动画系统,它是在原始模型的基础上直接

对物体进行交换。一般情况下,游戏引擎都会提前把这两种动画系统添加到游戏中。

物理系统,它是游戏引擎的一个重要组成部件,它主要的人物是使用物体遵守自然的运动规律,例如,子弹的飞行路径、水体流动的速度、人物跳起时所能达到的高度、物体下落的速度等等都是由物理系统所决定的。而碰撞检测为物理系统的中心部分,它主要检查游戏中各物体的物理边界之间的关系,防止两个3D物体碰撞在一起时发生穿透等不合理的现象。例如:角色撞击在墙壁上时,碰撞检测会根据物体和墙壁之间的特点来确定两者的位置和相互的作用,从而确保角色撞在墙上的时候,不会穿墙而过,也不会把墙撞倒。

渲染是引擎最重要的功能之一,它也是整个游戏引擎中最复杂的一个部分,它的好坏直接影响着游戏引擎的好坏。例如当完成一个3D模型后,需要在3D引擎中运行,渲染模块通过读取模型的相关数据,如顶点数,模型文件的贴图纹理等,然后实时计算出来并显示在屏幕上,

输入模块是提供游戏玩家与电脑相互交流的桥梁,它负责处理来自外部的各种设备的输入请求。此外由于现在的游戏都需要支持联网特点,所以在引擎中必须加入网络特性,它主要负责客户端与服务器之间的相互通信,并努力是游戏在所有情形下都能流畅的连接服务器。 因此,在3D游戏的开发过程中,引擎的开发需要用很多的时间,所以很多游戏开发商从缩短开发时间,减少开发风险和节约开发成本等方面来考虑,更加喜欢使用成熟的第三方游戏引擎开发自己的游戏,

因此就形成了一个巨大的游戏引擎授权市场。

游戏引擎研究的目的和意义

目前网络三维游戏正在快速的发展,由于硬件技术的不断成熟,硬件的流水线技术已经可以很高效,快速的完成很多复杂的算法,同时随着游戏中各种技术的不断的发展和创新,通用游戏引擎的开发技术也越来越成熟,它是一个处理游戏的底层技术的开发平台,使用它可以使游戏制作人员可以不用理会很多底层技术,如系统的组织结构,资源的管理,图像渲染等等,从而加快了游戏开发的速度,缩短开发时间。所以研究一个通用的游戏引擎是非常必要,同时它也让游戏的“拷贝”成为可能。

由于过场的游戏起步比较晚,到20xx年开始,才出现了众多的游戏开发公司,这些公司的技术水平相对落后,几乎很难与国外大开发商竞争,此外,国内的游戏开发技术也相对较落后,因此,研究一款使用封装技术封装底层代码的优秀游戏引擎,为游戏软件提供强大开发包和系列工具是必不可少的。

从国内游戏引擎的现状及国外游戏引擎的成功案例说明,一定要研研发属于自己知识产权的网络游戏的网络游戏通用引擎,否则,根本和国外的先进引擎相比较,另一方面,要不断的鼓励人们对于现有技术的创新,先进的技术必能提高游戏引擎的效率,进而决定游戏产品的质量。因此,不断的开发和创新新技术,并开发出符合自己特点的网络游戏通用引擎是振兴我国游戏产业首要条件。

国内外研究现状

在国外,在游戏引擎市场已经形成了非常成熟的技术群,如Unreal,Quake系列,迅速崛起的LithTech引擎。使用它们开发游戏时只需要使用游戏中的脚本和相关的3D游戏编辑器,从而让你完全脱离代码进行游戏产品的开发。此外强大的脚本系列是一个外国游戏引擎必须提供的功能基本功能,在国内,关于脚本系统的教材和文档资料都是很难找到,这些现状无不说明我国和外国在3D引擎方面的差距还是巨大的。但是在二维引擎方面国内已经非常成熟了,如163网易的大话西游便是二维引擎成功应用的代表作品。目前国内正在向三维引擎开发应用方向发展,但从Unreal引擎可以看出我国和他们还有很大的差距。

21世纪初,由于中国网络游戏市场的快速发展,国内3D引擎的研究开始迅速发展起来,但科技水平参差不齐,在国内还没有真正意义上的3D游戏引擎,而且现在国内研发的3D游戏引擎,没有实现对整个世界的高度模拟,3D空间感的错乱也带来了很多新难题,因此从根本上来讲还是存在很多的技术难点没有攻克。三维游戏中的具体问题如:长时间玩三维游戏会给玩家产生的不适感,游戏地图的扩大造成方向感的错乱,贴图量的增大带来渲染效率的降低等等问题,因此国内的三维游戏引起还需要不断的改进和优化。

随着中国游戏产业的不断发展和壮大,国内一些的游戏厂商,它们已经从以前的游戏代理厂商慢慢转型成为具有独立自主研发能力的企业,它们是中国在游戏引擎开发领域的先驱者,但是由于我国总体上的游戏的开发技术滞后,科技成果的产业化不够迅速,一些企业

的缺乏足够的科技创新精神,另外国内很多玩家对于国产的游戏产品的不信任。因而,我国的网络游戏产业遇到了巨大的挑战,而目前有实力解决这些问题的游戏厂商却屈指可数,所以加大对于3D游戏引擎的研究力度迫在眉睫,现在国内的引擎研发团队已经在努力赶超外国的水平,例如金山、网易、巨人网络等公司都在开发属于自己的产品并且不断的创新开发技术。它们的不断创新和发展也进一步标明了国内加大对于游戏产业的重视程度。

游戏引擎的构架

游戏引擎是一项巨大的软件工程,它是把一个3D游戏程序中可以重复利用的部分,以精巧的模式化技术,并将其规格化与最佳化,以方使于重要的程序技术。

游戏引擎是又许多模块之间共同组成和协同工作,它包含了渲染器、场景管理、资源管理、特效、物理系统、数据库、音效、输入输出、AI等模块。另外,引擎还需要支持一些辅助工具以方便程序员开发游戏,如GUI编译器,所以如果游戏厂商希望游戏开发人员在更短的时间内完成更好的游戏,还需要花费比较多的时间去编写和游戏引擎配套的辅助工具。

骨骼蒙皮动画

如今计算机动画越来越被人们所熟知,随着计算机动画在近些年的迅速发展,它已经渗透到人们生活中的方方面面,同时它也是计算机图形学中研究的重要内容之一,在现实生活中到处都是骨骼动画运用的例子,像3D游戏的人物角色、动画中的人物动作等等。通过它设

计了许多各式各样,栩栩如生的生物,其中人物的骨骼动画运用是最为广泛。

基于脚本的GUI

图形用户化界面即GUI是人与系统进行交互的接口,包括用户通过鼠标和键盘等输入设备,以及系统给用户提供各种提示信息操作的媒介,当前的游戏玩家都有界面的要求越来越高,一个优秀的游戏界面在很大程度上能吸引玩家的目光。

著名的游戏开发者比尔.沃尔克曾经对游戏设计写下了一个等式界面+产品要素=游戏。他这是不是做了一个游戏产品的简单加法,而是强调界面在游戏设计中的重要性,玩家在玩游戏的时候所见所感的是游戏界面,他们是不会去看游戏的底层代码写的多好,因此游戏界面才是游戏引擎和玩家的交流桥梁,因此对游戏来说,界面在很大程度上决定了游戏的可玩性。

小结

随着我们的游戏业的发展和壮大,它正在逐渐形成完整的产业链,在此同时,研发具有自主知识产权3D游戏的引擎的迫在眉睫,且具有重大的发展意义。


第二篇:游戏程序设计报告


上海xxxxx

游戏程序设计

题  目:            小鸡历险记           

     学    号:              2008xxxx                 

姓    名              xxxx                

院  系:    计算机与信息工程学院        

专业年级:        软件工程2008           

2011 6 3  

第一章 引言..................................................................................... 1

1.1  研究背景............................................................................ 1

第二章 需求分析与系统设计....................................................... 2

2.1  设计目的............................................................................ 2

2.2  设计要求............................................................................ 3

2.3  实现功能............................................................................ 3

2.4  界面设计............................................................................ 4

2.5  详细设计............................................................................ 4

2.6  结构模块........................................................................... 6

第三章  开发平台及开发技术..................................................... 6

3.1 J2ME基础知识................................................................... 6

3.2开发工具和环境搭配........................................................... 6

3.2.1开发工具...................................................................... 6

3.2.2环境搭配...................................................................... 7

第四章  模块具体实现以及主要动画触发解释........................ 7

4.1 key代码................................................................................. 7

4.2 electricity代码...................................................................... 9

第五章  心得体会........................................................................ 11

第一章 引言

1.1  研究背景

Green foot是针对那些想让自己熟悉如何使用JAVA的人而设计的,是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。它还可以被用来作为Java语言的教程,以及设计网络游戏,可以实用于所有年龄段的用户,而不仅仅是初学者。最主要的是Green foot和 BlueJ系统一样,对任何用途都是免费的。这个系统以及它的文档可以重新发布而不需要任何费用 ,为使用和学习JAVA的朋友提供了一个很好的环境。

 Greenfoot可以认为是一个用java语言创建二维图形程序的框架和IDE的结合体,很适合初学者使用。Greenfoot支持java的全部特性,它特别适合练习可视化组件的编程。在Greenfoot中,对象的可视化和对象的交互性是关键。

在Greenfoot的帮助之下一些软件游戏的开发变得很简单。我这次开发的是一款益智类的游戏。我希望通过自己的所学知识把它剖析开来,真正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。

第二章 需求分析与系统设计

2.1  设计目的

通过本学期对游戏程序的研究,我们掌握了运用greenfoot来制作游戏的技术,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。

此次游戏程序设计的目的,主要是通过greenfoot来制作游戏来更好的掌握java语言。通过greenfoot这个平台,熟习greenfoot在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在平时java课程上面学到的知识付诸于实践,并从实际操作中,找出自己的不足之处进行弥补。

每一次的课程设计,都是一次小小的软件工程,所以需要我们用百分百的的态度来对待。对于小一点的程序,我们一个人足以应付,但是这并不是说我们可以单独一个人为所欲为,其实质应该是通过课程设计来锻炼自己独立自主的能力。而对于那些相对于麻烦的程序,就需要两个或者多个人来共同完成,这便需要他们的协作能力,这样对他们以后进入软件公司发展有了更多的基础。

2.2  设计要求

这次课程设计的要求并不像以往那么紧,老师让我们可以通过多个平台和系统来制作游戏,包括电脑游戏和手机游戏,从sun公司的手机开发平台WTK,到谷歌的安卓操作系统,只要我们喜好哪一个,并有能力完成就可以了。

所以,这次我选择了greenfoot作为我游戏编程的平台。因为我平时学习的就是java语言,而greenfoot便是一个已Java语言为基础的游戏开发平台,所以,在编程的过程中不仅提高了效率,也让我对java语言和greenfoot之间衔接的关系有了更深了理解,同样,也让我更加熟习了这个游戏开发平台的环境。

2.3  实现功能

此次我的课程设计的游戏名称为:“小鸡历险记”。通过名字,我们就可以看出,这是一个益智类的游戏。它的由来,是我根据超级玛丽的灵感而生的。

超级玛丽这个游戏就是一个结合控制和脑力与一体的游戏,充分缓解玩家的心情,让玩家在娱乐中找到成功。我的这游戏,玩家控制的便是一个类似于超级玛丽的一个任务,他是以一个小鸡的模型组成的,具有一定的生命值,一般都为3。

接下来便是像超级玛丽这个游戏一样,在游戏中会出现一些移动的物体和火球,这些便是敌人,玩家要按上、下、左、右,控制小鸡的方向。如果躲闪不及时,便回减去一滴血,从而生命值便会减一个。随着关数的增加,过关的难度也会随之增加。

这个游戏的特别之处:

①:可以选择不同的难度来挑战相同的关卡,以次增加游戏的可玩性;

②:没有死亡模式,这样可以让玩家通过多次的尝试之后来完成任务。

③:有BOSS模式,玩家可以尝试击败BOSS来进入下一个关卡,增加游戏的可玩性。

2.4  界面设计

这个程序是一个益智类的游戏,包括躲避敌人、杀死敌人。是一个单机游戏,同一时刻只能有一位玩家进行游戏。

如图1

2.5  详细设计

系统流程图:

游戏开局出现如图1,然后进行难度的选择,再是关卡的选择,然后就可以游戏了,如果失败那就继续游戏,直到成功为止。如果一直没有成功,上诉循环过程。虽然是一直循环下去的,但是只要修改一下程序就可以修改。

2.6  结构模块

第三章  开发平台及开发技术

3.1 J2ME基础知识

Green foot是针对那些想让自己熟悉如何使用JAVA的人而设计的 是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。它还可以被用来作为Java语言的教程,以及设计网络游戏,可以实用于所有年龄段的用户,而不仅仅是初学者

  最主要的是Green foot和 BlueJ系统一样,对任何用途都是免费的。这个系统以及它的文档可以重新发布而不需要任何费用 ,为使用和学习JAVA的朋友提供了一个很好的环境.

3.2开发工具和环境搭配

3.2.1开发工具

Greenfoot可以认为是一个用java语言创建二维图形程序的框架和IDE的结合体,很适合初学者使用。Greenfoot支持java的全部特性,它特别适合练习可视化组件的编程。在Greenfoot中,对象的可视化和对象的交互性是关键。

  如果你知道BlueJ和Microworld这两个框架的话,Greenfoot可以看作他们的结合。

  这个框架可以用来实现基于二维网格的很多程序。greenfoot的框架负责两部分工作:简便的产生对象的图形化显示,按照模拟的路线运行。为了实现这些功能,Greenfoot框架提供了一个GreenfootObject基类,其他任何想实现可视化的类都要继承他。必须执行的两个最重要的方法是:getImage()返回对象的图形,act()将在模拟路线中调用。

3.2.2环境搭配

(1)    计算机的环境变量需要设置,计算机需要安装JDK版本为1.6。由于GREEN FOOT需要绑定JDK。

(2)    Green Foot的安装,需要到官网上下载正确的Green Foot版本,安装后需要测试时候可以使用,是否与JDK绑定。

第四章  模块具体实现以及主要动画触发解释

4.1 key代码

public class key extends Actor

{

boolean bpickedup = false;

boolean bremoved = false;

private myWorld mworld;

    public void addedToWorld(World world) {

        mworld = (myWorld) world;

    }

    public void act()

    {

        if (bremoved) {return;}

        findplayer();

        picked();

    }  

    private void findplayer()

    {

      if (bpickedup) {return;} //if its already picked up then dont bother

        player neb = (player) getOneIntersectingObject(player.class);

        if (neb != null)

        {

            Greenfoot.playSound("keycollect.wav");

            bpickedup = true;

        }

    }

    private void findenemy()

    {

      getOneObjectAtOffset(0,8,enemy.class);

       enemy mutantleg = (enemy) getOneIntersectingObject(enemy.class);

         if (mutantleg != null

         && mutantleg.health > 1

         && !mutantleg.bKnockedOut

         && mutantleg.canbeattacked()

         )

        {

            mutantleg.health = 1;

            mutantleg.ys = -3;

            mutantleg.knockmeout();

            Greenfoot.playSound("kick.wav");

            getWorld().addObject(new effect(), mutantleg.getX(),mutantleg.getY()-8);

        }

    }   

}

介绍Key这个类:首先这个类必须是继承Actor这个父类的,然后是Finddoor这个方法,先是一个判断:如果有Key则开门,反之则不开门,有Key方可进入下一关卡。玩家必须拿到钥匙之后方可进入下一个关卡。

4.2 electricity代码

public class electricity extends hazard

{

boolean bRemoved = false;

float xs, ys;

int health = 22;

float xx, yy;

 public electricity(boolean noeffect)

    {

        xs =  0.1f * (float) (Greenfoot.getRandomNumber(16)-Greenfoot.getRandomNumber(16) );

        ys = 0.1f * (float) (Greenfoot.getRandomNumber(16)-Greenfoot.getRandomNumber(16) );

        health = 13;

    }

    public electricity()

    {

        xs =  0.1f * (float) (Greenfoot.getRandomNumber(40)-Greenfoot.getRandomNumber(40) );

        ys = 0.1f * (float) (Greenfoot.getRandomNumber(40)-Greenfoot.getRandomNumber(40) );

    }

    public void addedToWorld(World world) {

        yy = getY();

        xx = getX();

     }

    public void act()

    {

       if (bRemoved) {return;}        

       huntplayer();

       xx += xs;

       yy += ys;

       setLocation( (int) xx,(int)yy);

       setRotation(Greenfoot.getRandomNumber(360));  

       health--;

       if (health <= 0) {removeme();}

    } 

    private void removeme()

    {

        if (bRemoved) {return;}

        bRemoved = true;

        getWorld().removeObject(this);

    }

}

 

敌人自动寻找玩家,进行一些无规则的运动,如在攻击范围之内就会触发electric这个类,敌人就会变化成后者这个形态,玩家要做的就是远离敌人攻击状态。

第五章  心得体会

 通过一个学期对greenfoot的学习,我基本掌握了greenfoot的比较基础的编程方法。因为greenfoot是已java语言为基础的游戏制作平台,其所有的语言标准和java的没有什么本质的不同,所以,通过以往对java的学习和认识,真正的操作起来,并不是很难着手。只要看了老师以前给的那些视频,我觉得greenfoot这个软件还是很容易上手的,甚至在某些方面还比myeclipse还容易一点。至少在greenfoot里面,有的类或者对象,你可以直接拖动,不用在生成和调用了。

看似简单的益智游戏背后,确实异常复杂的算法。在网上参考了类似的逻辑算法和代码,也是各有不同,让我更认识到了自身学习的不足之处,也更进一步产生了对游戏开发的兴趣。受益匪浅,感悟颇多。游戏开发是一个创新的过程,由于能力欠缺,做了一个众所周知的项目。此次开发主要运用了画布的知识,在实践中掌握技术,灵活运用。另外在请教游戏开发者的过程中有所启发,修改了触屏模式,使得用户操作更为方便。

更多相关推荐:
打砖块游戏课程设计报告

目录第1章程序设计专题目的与要求111程序设计目的112程序设计的实验环境113程序设计的预备知识114程序设计要求1第2章程序设计内容221概要设计222程序整体设计说明223程序部分源代码及注释824测试结...

24点游戏课程设计报告

目录123基本功能描述2设计思路2软件设计431设计步骤432界面设计533关键功能实现6331发牌功能的实现6332计时功能的实现7333计算功能的实现7334验算功能的实现94567结论与心得体会9参考文献...

连四游戏课程设计报告

第1章引言1第2章任务概述121问题概述1211问题重述1212设计目的122需求分析1221基本要求1222游戏功能介绍123编程语言概述124编程环境概述1第3章概要设计231功能设计232程序结构233基...

游戏24点课程设计报告

游戏24点课程设计报告一题目分析类计算24点任意输入4位数字利用四则运算使之得到结果24输出所有不同算法的计算表达式可为运算优先级而使用括号二问题分析1全面性此问题要求输出结果为24的计算表达式并且要求输出要全...

java_扫雷游戏课程设计报告

滨江学院20xx20xx学年第2学期数字图像处理课程论文专业姓名学号20xx年06月05日设计通信编程课程论文Java设计扫雷游戏王李超20xx2334038南京信息工程大学滨江学院电子工程系南京210041设...

FLASH页面游戏课程设计报告

FLASH页面游戏课程设计报告第一章绪论11课题背景意义随着社会的不断发展人们的生活水平在不断地提高网络游戏也越来越多的融入到人们的生活中去游戏的出现带来了网络上的优势扩宽了人们平时玩的传统游戏的界限给人们带来...

动画与游戏设计 课程设计报告

动画与游戏开发课程报告学号1111020xx103姓名张慧专业班级11级计科本01班日期电子信息工程学院1目录一课程内容及应用领域11基于DirectX的粒子系统3111粒子系统简介3112广告板技术3113粒...

java_扫雷游戏课程设计报告

Java课程设计报告姓名学号院系班级专业1设计内容及要求11扫雷游戏的基本要求Windows20xxXP系统提供的扫雷游戏是一个很有趣的游戏本章的课程设计使用Java语言编写一个与其类似的扫雷游戏具体要求如下1...

《贪吃蛇游戏课程设计》报告

贪吃蛇游戏程序设计一课程设计任务贪吃蛇小游戏程序设计二设计要求通过游戏程序设计提高编程兴趣与编程思路巩固C语言中所学的知识合理的运用资料实现理论与实际相结合1收集资料分析课题分解问题形成总体设计思路2对于设计中...

C++课程设计报告 猜数游戏

C课程设计报告20xx20xx年度第二学期猜数游戏专业计算机科学与技术王榕20xx年7月7日学生姓名班学级号指导教师完成日期猜数游戏目录目录21概述111课程设计目的112课程设计内容12系统总体设计121系统...

魔板游戏课程设计报告

Java与面向对象技术课程设计报告20xx20xx年度第2学期魔板游戏专业电子信息工程吴才奇电信四班1103030429周越20xx年7月14日学生姓名班学级号指导教师完成日期目录目录目录21概述111课程设计...

《游戏设计》课程设计指导书

游戏设计课程设计指导书编写蔺广逢适用于数字媒体专业20xx12游戏设计课程设计任务书设计时间1周学分数10执笔人范彩霞编写日期20xx年10月一课程设计目的游戏设计课程设计是数字媒体技术专业必修的实践环节本课程...

游戏课程设计报告(36篇)