游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4177|回复: 0

从猜拳游戏到软件工程

[复制链接]

21

主题

86

帖子

86

积分

注册会员

Rank: 2

积分
86
QQ
发表于 2004-3-13 13:09:00 | 显示全部楼层 |阅读模式
小生愚鲁,写的东西大家看看,不要公愤!!
在初一时我就接触到编程,最早的QBasic语言一下子就使我着了迷。那时只是照着书上的语句一句一句输到电脑里。简单的改改书上语句的参数值,让屏幕上的圆大些或小些。再有意思一点就是用个循环让圆从屏幕左边移动到屏幕的右边。那时自己根本没有软件工程思想,或着模块化程序思想,更不用说面向对象思想,只知道程序是用程序头运行到程序尾,程序一条一条顺序执行。虽然程序简单,它也是最原始的程序运行方式。慢慢的,我学会了程序跳转语句和逻辑控制语句。程序的运行方式,程序不再是从上往下顺序执行了,而是有了一定的执行方向。程序在我的脑里不再是简单的照着书本修修改改就可以制作的了。而是需要思考出一定的逻辑来实现自己的想法,完成程序功能。于是,一个有趣的念头一下闪出来,用现学到的语句编第一个小游戏。这就想到了我们小时候爱玩的猜拳游戏。
现在看来,那个游戏是多么的幼稚和可爱,不过它却是大型软件工程的基础。想想现在的高级程序员,系统分析员,框架设计师无一不从它开始起步,一步一步登上程序的殿堂。几个简单的输入,输出,判断,随机函数却构织了一个神奇的事物,最重要的是它代替了人。它完成了一种使命,那是一种如上帝造人般的使命。这个小游戏的编制成功使我对编程的神秘又加深了。更加如痴如醉的学习,思考,编程。
后来,又开始会用一个数组名来代替很多变量名,这样一种数据块模型思考方式开始形成了。简单的数组就是数据结构的始祖。利用数组开阔了程序的能力范围,一种规范即将引入程序中,那就是命名规范。这样合理的为变量和数组取个见名思意的名字,也变成了编成考虑的一部分。从现在看来,那时的思考是多么的有必要。如今,微软公司有自己的一套微软命名法,其他公司可以用匈牙利命名法。Java也有自己的命名规范。VBasic也给控件取上分门别类的名字。另外,在数据库的设计中,命名更成了一种艺术。渐渐的,我也学会了编写函数。一个主程序加上主程序中调用的无数子函数使我的程序变得紧凑、有条理、整洁。程序的排版也显出了它的重要性。一个函数处理按键信息,一个函数讲二维数组中的数据转化为屏幕上的图形,再用一个函数处理得分,死亡逻辑。这样我就作出了一个滚屏的大海寻宝游戏。在学校,这个游戏得到了同学们的认可和喜爱,使我更加努力的走上了游戏制作的不归路!这可能也是现在网上很多游戏编程高手的源动力吧!(随着时间的流逝,我努力的学编程,所用的时间甚至超过了学习语文、数学的时间。那个时候根本不能理解汇编语言,矩阵变换,图形学年幼无知的我,却天天苦心研究,最终也未得其果。迷宫算法,跳马算法,八皇后算法也使我着迷。现在想想,追求一种不是那个时期能够理解事物到底是否值得?)
利用函数,我终于可以知道一个大型的程序工程是怎样完成的了。首先,一个大型程序必须有自己的一套函数库,那些函数用来完成最基本的最底层的功能,再在这套函数库上开发出具有工程特点的函数库,这就是所谓的SDK。最后主程序将这些函数库按照一定逻辑联起来形成最终的产品。这就是前几年流行的模块化,自上而下的软件工程开发模式。一种新的思考方式出现了,面向功能模块的思考方式。
高中时,我开始学习VBasic,首先开始接触在Windows下编程。这使我开始慢慢的揭开了Windows神秘的面纱。VBasic控件、属性和事件使我迷惑的很久,最终还是被我悟到它是一种事物、属性和动作。利用那些控件,我能很容易的作很多事情。能利用Picture控件在程序里轻易地显示一张图片,再用上Timer控件就能做出动画效果。这些效果不都可以用到游戏中么?这种轻易,不就是微软工程师们刻意为我们这种未步入Windows编程的初学者作的么?现在看来,那些控件不就是一个个对象么?对象为我们的程序结构更显得清晰。在VB上编程,我都必须想到它有哪些控件,那些控件有那些功能,改变其属性能变成什么效果。在QB和VB中编程思考的对象有了轻微的变化,虽然它们在语句上有很多相同的地方。因为VB是基于面向对象的编程。但在VB中对象的行为是一个个对象消息处理函数,使得VB好像不是现在意义上的面向对象。虽然能用VB做出能在Windows平台上运行画面更好的小游戏,但由于编程思想上没有太大突破再加上高中学习的残酷,编程的水平并没太大的变化。用VB,自己只陷入它有限的功能中,无法随意的扩展自己的想法,好多思想上解决的功能,却没有技术将它实现。我开始有了对技术的追求,那就是追求神圣的VC++。
终于脱离的高中的苦海,来到了大学。这使我如释重负,身轻如燕。一上大一,我就跑遍了北京的各大书店,每次都满载而归。第一学期也开了C语言课。加上电脑也从家里托运过来了。交大的硬件设备良好也是我们不可否认的。在此期间我学会到图书馆机房下载教程,到游戏编程论坛灌水,也因此认识了很多志同道和的好友。于是我开始疯狂的学,至于大学课的学习无疑受到了很大影响。这也不能妨碍我对游戏编程的追求。
C++语言逐渐变成了我手中的利器,一种全新的编程思维使我对游戏编程之路倍感信心。也可以比较灵活的书写VC++程序,微软的游戏开发SDK-DirectX变成我比较关注的技术。学会了使用WindowsAPI函数,使得一切技术问题迎刃而解。会较灵活编写C++程序,会用MFC、DirectX包装自己的游戏,还会用简单的内嵌汇编语句加速自己的程序,各种快速显示图像,图形,播放音效也不再是不可解技术难题。一个游戏,一个中型或大型游戏就仅仅需要这些么?我可以运用Windows的绝大部分功能,但这样就能做出一个好的游戏么?各种小问题比较好解决,但是将问题的解组合起来就变成一种难以控制的难题,这些组合问题是否就能很轻易的解决么?现在有很多问题,游戏做好了将来还会面临更多的问题,所以现在的程序必须编制得容易扩展。这些又应该怎样实现呢?
在"非典"期间假期中,我带着这些问题开始编写自己计划好的游戏。三个月很快就过去了,看看我做了些什么:一个PRG游戏做到能读入各种资源脚本,一个动作游戏做到了人物能在屏幕上跳来跳去,一个射击游戏刚刚建起框架。也就是说,游戏一个都没有做好,至少连一个demo也没做出来。自己也不得不对自己做检讨,是什么问题阻碍自己将游戏作完整呢?
现在,我又学了Java,数据库,web,数据结构等等。那些课程帮助我更了解了社会上比较流行的各种技术,技术紧紧只是技术,它是工程的肌肉和皮肤,但不是构成工程的骨架。数据结构能让自己的游戏资源数据更加合理的得到管理、提高算法的运行速度,数据库的运用在网站建设中无疑是个重头戏,Java使得各种网络底层编程变得透明,通道的实现技术使数据流的管理和加工变得更加方便和快捷,线程也是很有趣的技术。自己也学了GBA上简单的编程,这种GBA程序功能和数据共享一个内存区,使C程序变得有趣极了。web中用到的java script、java servlet、JSP等技术,能让网站成为一个功能强大的管理软件。这使我终于知道了MFC不再是技术的代名词。也体会到了,技术很重要,但它绝不是游戏编程中的主要部分。对游戏的总体设计、游戏框架设计才是最先考虑的事。技术是会变的,但框架可以不变。为什么网上有很多人拥有很高的技术,却一事无成也是这个原因。过多的追求技术,而忽视的设计。技术可以在很短的时间内学到,比如现在流行的Java培训班,几个月就能掌握各种技术,但他们就能自己设计项目么?而设计需要大量的时间去思考,实践,在思考,再实践,并且还可在各种自然界中找灵感,编译原理,操作系统等等课程都可以提高自己的设计能力,分析各种好的项目的源程序也起了很好的充电效果。
软件工程专业导论课也使我倍受启发,在一个大型工程中不仅仅程序的设计,编制是重要部分。在工程中协作各种模块正常工作,对工程开发的进度的确定,调整,对工程中个时段对人员的调整,人力的投入更是一个超大型软件项目重中之重。如果想成为一个软件架构师、高级管理人士、需求分析师或其他高级人士的话,我们所关心的更不仅仅要求自己的程序设计得更容易扩展,而且要能更好的使一个项目的开发进程能够显露出来。不在是让用户和老板看不到项目开发进程。一个好的程序架构,还要依照一定的原理为根基。编程进程的文档和用户文档的书写也是重要的部分。对于程序的测试更是要求程序员能力过硬,掌握各种有效测试手段。要想一个游戏项目不因为管理不善而被扼死在摇篮里,我们要学习的不仅仅设计上的东西了。学了这课,我终于能将自己学习的过程总结出来,能更清楚地知道自己目前的定位和以后发展的方向了。
从设计简单的猜拳游戏到真正的游戏项目工程,自己缺少什么,自己应该能很清楚地了解。缺什么就应该努力的补上,这样才能做出更好的大型游戏,才能振兴中华的萎靡游戏事业,让全世界都能感受到中华民族文化的精髓。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-9-19 23:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表