APP下载

3D计算机游戏程序设计语言教学的探索与实践

2011-10-17徐东红中国矿业大学计算机科学与技术学院江苏徐州221116

中国科技信息 2011年6期
关键词:引擎程序设计教学法

徐东红 中国矿业大学计算机科学与技术学院,江苏 徐州221116

3D计算机游戏程序设计语言教学的探索与实践

徐东红 中国矿业大学计算机科学与技术学院,江苏 徐州221116

3D计算机游戏是融合了技术、艺术、商业的文化产品,更是软件产品。在课程讲授过程中,如何让技术开发与艺术创造在冲突的理念中相互包容,让学生理解3D游戏开发的理念,掌握游戏开发的关键知识点与技术细节,并在实践中融会贯通,最终形成游戏开发的专长,就此类问题具体阐述了笔者的教学内容、教学模式、考核形式以及教学效果。

3D游戏编程;OpenGL;教学模式

1.简介

近几年来计算机游戏发展的速度与规模日新月异,其相关技术已应用到科研、工程、商业、艺术等社会和工业生产的几乎一切领域[1]。以3D游戏设计为基础的科研与教学成为越来越多的院校,相关专业必修或者选修的专业课程,同时学生对于以3D游戏设计为基础的相关专业知识也越来越感兴趣。3D计算机游戏是融合了3D图形、图像及声音技术和艺术的文化产品,同时也是一个软件产品。对于工科院校的学生,不仅仅是学习一些简单的语言设计,而是想以此学习为基础,进行更深入的研究与应用。因为其相关知识和技术的更新、发展非常快,只有及时学习和掌握新的研究成果并提高实际应用能力,才能为以后的工作与研究奠定基础。同时计算机3D游戏软件的开发学习和一般软件开发学习有着明显的不同[2,3]。计算机3D游戏程序设计人员不仅需要掌握程序设计技巧,还需要有坚实的专业领域知识,才能有效地生成和实现游戏的画面内容、音效处理以及与玩家的交互等。作为教授此课程的专业教师如何选择相关3D程序设计语言、如何让学生学习过相关语言后能更进一步的深入研究与应用、如何把一些研究应用至3D游戏学习中并在实践中融会贯通,最终形成游戏开发的专长,是计算机游戏程序设计课程专业教师必须要着重的要求。

2 .3D游戏编程语言,OpenGL与OpenAL组合设计完美的3D游戏

做3D游戏的设计开发,选择合适的设计语言极为重要,选择的设计语言不仅需要易学、易用,而且还要要求具有跨平台、高性能、且有相关的规范标准。OpenGL是用于开发简捷的交互式二维和三维图形应用程序的最佳选择,任何高性能的图形应用程序,从3D动画、CAD辅助设计到可视化仿真,都可以利用OpenGL高质量、高性能的特点。OpenGL强有力的图形函数不要求开发人员把三维物体模型的数据写成固定的数据格式,也不要求开发人员编写矩阵变换、外部设备访问等函数,大大地简化了编写三维图形的程序。更重要的是微软在Windows中包含了OpenGL,OpenGL能够模拟比较复杂的三维物体或自然景观。OpenGL在游戏设计中的优势主要体现在3D图像的设计与实现中,游戏中另一重要方面是3D音效,完成这一重要功能的是OpenAL。 OpenAL(Open Audio Library)是自由软件界的跨平台音效API。它设计给多通道三维位置音效的特效表现。其 API 风格模仿自OpenGL。是为了将Windows商业游戏移植到Linux上。OpenAL主要的功能是在来源物体、音效缓冲和收听者中编码。

3. 在课堂上运用OpenGL编3D游戏,结合典型案例全面分解剖析,让学生掌握3D游戏开发的理念与实际应用技术

在课堂教学中,专门对游戏开发的基本理念和流程进行剖析,在学习过知识点后,针对具体学习的知识点采用流行及典型的三维的游戏的案例,在游戏创意及具体编程代码层面上进行层层分解剖析,以“解剖麻雀”的方式来讲解游戏产品的组成以及游戏产品的开发流程,帮助学生理解和掌握3D游戏程序设计的方法和思想。在学生掌握知识点后,让学生发挥自己的想象力去设计和实现具体的例子,并在开放式讨论中进行详细的讲解。下面通过一个案例来说明如何将将典型案例进行全面分解剖析,让学生掌握3D游戏开发的理论,达到良好的教学效果。案例:在课堂上中学习过运用OpenGL绘制多边形、设置不同色彩、平移、缩放、旋转等技术后,把各种技术组合使用,设计了在各种3D虚拟及游戏中常用的一种机器人,该机器人由头部、手臂、躯干、腿等不同形状和色彩的几何图像组成,且各组成部分相互协调进行行走,转动。由于篇幅有限,源程序代码过长,用OpenGL和C++设计的机器人部分代码如下。计算法的枯燥、沉闷的传统教学法,尝试开放式教学内容;提问式讲课;无标准答案的课程设计;查找文献,分组动手实现程序设计等参与式教学方法,培养和发扬学生的参与意识,通过参与式教学提高学生学习的主动性、积极性和效率,培养学生的动手能力和创新能力。

在具体案例教学中,采用问题教学法、引导式教学法和参与式教学法。在问题教学法中,围绕3D游戏程序设计的知识模块,在引导学生发现各种各样问题的前提下,传授知识。教学活动中,尝试3D程序设计知识围绕实际问题而展现,使问题不仅成为激发学生求知欲的前提,也成为学生期盼、理解和吸收知识的前提,以此激发学生的创造动机和创造性思维。在引导式教学法中,给出相似模块的编程思想有具体的编程代码,让学生去模仿和创造,比如在给出的案例中在讲解过用OpenGL设置机器人顶部方法后,让同学们模仿此代码设计绘制立方体的前面、后面、底面、左面和右面的代码,并强调方法与顶部设计相同,仅是参数里面的数值不同。在讲解设置机器人手臂方法后,让同学们模仿给出的实际代码设计绘制机器人其他的部位如头部、躯干、腿等部位的代码,并强调方法与手臂设计相同,仅是与设计手臂的立方体大小不同,同时为了区别不同部位,可以设置不同的色彩,达到综合美观3D的效果。在参与式教学中,打破3D设

4.介绍游戏引擎,通过开放式课后作业、游戏开发实践、科研训练相结合,把多学科交叉的知识点和技能进行融会贯通

“工欲善其事 必先利其器”,为了开发应用,在掌握了语言设计知识点后,把语言与具体的引擎结合,更能用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。在学习OpenGL设计时,给同学们讲解3D建模的引擎如Ogre、Maya、Softimage等的使用方法,在学习OpenAL 3D声音设计时,给同学们介绍常见的声音引擎如BASS、MikMod、FMOD、ModPlug、Miles Sound System、EAX、Dolby Encoding等在设计3D声音时要注意的事项,要求同学们在3D建模引擎和声音引擎中掌握一至二种,并把同学们分成项目组,给每个项目组布置和科研相关的题目,或者前沿的设计,如“基于OpenGL的矿井机器人操作可视化等。另一个方面是在学期结束前一周,每个小组将所开发的游戏进行演示交流,任课老师和其它小组的学生提出进一步完善的建议,并督促每个小组进行整改。经过多年的教学实践证明,通过逐步引导学生在“做”游戏产品的过程中,把所游戏开发所涉及的多学科知识进行融会贯通,由点及面地逐步掌握游戏开发的高级技能,是让学生在游戏开发方面一步一个脚印地迈向更高层次的有效途径之一。总之,把游戏开发实践、科研训练相结合,极大地提升了学生的创新能力和科研基本素质。

图1

5.结语

针对3D游戏设计的课程特点,积极开展游戏开发实践教学、研究型教学、科研训练型学习,提高大学生的学习能力、实践能力和创新能力的研究与实践。我们的教学研究与实践主要内容包括三个方面:结合典型案例全面分解剖析,让学生掌握3D游戏开发的理念与实际应用技术和成体系的实验训练;游戏引擎介绍与应用以及多学科交叉的知识点和技能相对接的科研训练。这三个主要方面,层层递进、环环相扣,是体系完整的创新型3D游戏设计语言教学实践,并在教学中取得了令人满意效果。

[1]于延,王建华.游戏软件设计专业培养模式的实践与探索[J].计算机教育.2010(7):104-107

[2]田兴彦,王嘉.基于3D 游戏引擎的物理探究学习平台设计[J].微计算机信息.2010(26):3-6

[3]刘青,刘锐.基因工程虚拟实验室的设计与实现[J].现代教育技术.2006(5):60-64

10.3969/j.issn.1001-8972.2011.06.073

国家重大专项“核高基”(No. 2009ZX01043-001-07)项目,中国矿业大学青年基金项目(No.2009A050),中国矿业大学“启航计划”项目

徐东红(1977-),男,博士,讲师,研究方向为3D虚拟程序语言设计,服务计算,形式化方法。

猜你喜欢

引擎程序设计教学法
新海珠,新引擎,新活力!
批注式阅读教学法探究
基于Visual Studio Code的C语言程序设计实践教学探索
实施“六步教学法”构建高中政治高效课堂
从细节入手,谈PLC程序设计技巧
三生 三大引擎齐发力
高中数学实践教学法的创新策略探讨
蓝谷: “涉蓝”新引擎
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用