小游戏编程的要点

软件世界

这几期,我们通过对三个例子的设计,相信大家对小游戏编程的基本实现方法有了一定的了解。在这里,对前面所述的内容再进行一个梳理和补充。

一、总结

先请参照第29至32期“玩转小游戏编程”的系列文章。
通常游戏编程要确定七大要素:第一是你要设计的游戏是属于哪一种类型(战略/RPG/动作/益智/冒险等),第二是时代背景,第三是模式(即时/回合),第四是程序技术,第五是表现手法(具体的某个动画、音效、提示等),第六是市场定位(给什么样的人玩),第七是研发时间。
小游戏编程中第二、第七方针不太重要,但对其他几点应予以认真考虑。在确定了游戏的素材或原型后,首先应该考虑的是游戏的内核,即我们在第一篇里提到的“机器处理”(指对用户的输入进行的分析和运算)环节,这个内核应该包括游戏规则和解决途径,这些集中反映在第三篇(31、32期)的井字棋游戏中,还可以进一步复杂化以增加游戏的趣味性。其次考虑游戏与用户之间的交互层,即在第一、二篇中学习的选择正确的响应事件和动画与音效的制作,并注意图片与音效素材的收集。尽量避免使用第三方控件,因为这样会使程序较为臃肿。值得注意的是,处理好游戏界面的空白区域在编程中有时可以发挥很大作用。像第一篇(29期)利用Label占空位,第二篇(30期)中用窗体来接收射击时没打中的事件,都可以简化编程、提高效率。在第二篇中用Flash的Shape和Motion过渡来比喻仅仅是做个简单的参考,准确地说动画的类型及其实现方法如(图1)所示。

图1
图1

缩放动画的技术前面没有讲到,这里举个例子。
Dim Concentric As Boolean
Private Sub Form_Load 
Image1.Picture = LoadPictureApp.Path & "\1.bmp" 
Image1.Stretch = True '图片大小随控件大小改变
End Sub
Private Sub Timer1_Timer
If Concentric = True Then '如果需要同心缩放(即图像中心坐标不变),因为高度、宽度分别增加了0.2倍,为使中心不动,Top和Width各减少高、宽的1.2倍
Image1.Left = Image1.Left - Image1.Width * 0.1
Image1.Top = Image1.Top - Image1.Width * 0.1
End If
Image1.Width = Image1.Width * 1.2 '放大图像1.2*1.2倍
Image1.Height = Image1.Height * 1.2
End Sub

二、游戏的后期优化处理

编好了游戏之后一定要认真测试!自己玩上几十、上百遍,发动别人来“挑刺”,最常见的缺陷(Bug)有三种:
1.程序本身语法错误,这种错误比较容易发现,如果使用C、C++、C#等语言则语法错误很容易检查出来,但如果使用VB则有时错误代码只有在特定的事件才能触发,而开始运行时编译器不报警,故测试时务必保证每一行代码都被执行,避免出现溢出等现象。
2.智能方面漏洞,一般是由于AI编程的不周密造成的,此时应着重检查AI计算程序,看代码块是否检查了所有应该检查的情况并能够正确输出。此外,还应避免出现循环语句、函数错误嵌套造成的死循环等非语法错误的漏洞现象。
3.界面缺陷,主要是音效、动画、控件的美观和可操作性问题,应确保图像、声音没有瑕疵且能够正常显示、播放,控件各项属性设置正确,并且在应该改变控件属性的事件中没有忘记更改控件属性。
编程的时候,应尽量把各功能的函数、事件分开,以增强程序的可读性。
改正错误是一方面,另一方面还要做到更精致。大略提一下完善游戏的几个思考方向。
1.优化程序本身。关于程序的优化,可以参看1998年《电脑报》第41期的《优化VB程序》一文和网上相关文章,在此不作赘述。
2.提高欣赏性。可以通过一些比较好看的Skin和图片、幽默的提示语句等增强与玩家的亲和力,但要注意,不要导致运行速度大幅降低。
3.增强互动性。例如第二篇的打飞机游戏,可以增加一个由玩家来设置飞机数量、运行速度、游戏时间等的对话框,这样更有利于游戏的个性化。
4.适当增加困难。游戏对人的心理作用表现在设计者人为地设置障碍、悬念,让游戏者破除它们以求得快感,但如果过难则会削弱积极性。这就需要适当地增加难度或设置初、高级模式,给游戏者以成就感。
5.设置帮助文件。对于比较复杂一点的游戏,帮助文件可以起到介绍规则、提示技巧的作用。制作帮助文件的方法有很多,大家可以去查阅相关资料。
小游戏编程不仅带来游戏的快感,另一方面对提高编程水平大有裨益。希望以上的建议能对大家有所帮助。