游戏是这样做出来的!
看了很多人提这样的问题,也有很多人参考很多书,我在学做游戏时也参了一些书,但是都是讲一点基础的东西,感觉不是很全面。
我一直想写一本书将如何做游戏,当然不会像一般的书上讲的什么图形基础、C语言知识等肤浅的东西,但是一直没时间,而且我还想办培训学校(目前的培训学校简直只是收钱,什么砖家,屁,都是些大学的教授,教个书都讲不清楚,别说自己做过游戏了)。我的培训学校由我亲自将一个游戏是如何做成的讲给大家,
因为我一个人完成了一个网络游戏(大家肯定要问我完成的是什么游戏,现在还在内侧中,所以说出来你们也不知道)。但现实不允许:写书没时间,我要工作,不然会饿死的;办培训学校没资金。所以只能罢了,但我还是要说说理论上如何做游戏。以免很多人浪费时间。
有人要说你是谁,怎么这么大口气?其实我是无名小卒,我只有一个特长,那就是不用别人告我游戏怎么做的,我自己就能想到,当然这是天生的才能,也许就是别人说的天才吧!不过只是做游戏方面的天才。我在2000年毕业,2003年5月开始为我的一个游戏创意找风险投资,当然我是做技术的,也就是一般的程序员。11月正式进入游戏行业,直到2004年11月找到投资,目前在找更大投资中。我在游戏方面有哪些才能呢?socket的完成端口、骨骼动画、DX的所有底层、三维碰撞等等。
扯远了。还是言归正传说如何做游戏吧!此处只讲做网络游戏,不讲单机游戏,因为单机游戏太简单。
首先,要明白网络游戏中最复杂的是服务器部分。如果服务器程序不稳定就别说有这个游戏了。
其次,游戏中的人工智能最复杂,暴雪的人工智能就非常好,但是不是每个游戏都需要很多很好的人工智能。
然后,游戏的情节引擎。也就是你的游戏要怎么玩。
再次,三维游戏中的骨骼动画、碰撞检测、游戏界面等等。
可能最后才是一般人说的DX底层了。
DX底层的难度为什么我要排在最后?现在不是说游戏开发人员奇缺20万,目前的人数不过千人吗?原因就是这个,很多人还不会DX底层,就更别说上面更难的。
那么我就按难易讲了。服务器程序要用socket的完成端口,为什么?因为完成端口的优点是连接量大,适用于数据量小的消息,反正一句话,用完成端口就没错,如果你不会就赶紧学。服务器要处理很多人的信息,所以服务器处理多线程时一定要注意所引发的错误。所以多线程以及相关的知识要学。当然如果我把我的源码公开,大家就很容易懂了,但是我现在还不想公开。
服务器完成后好要做一下工作,自己写一些攻击的程序,进行长时间的攻击。还要写一些能够正常连接的客户端进行大量的数据收发,以及讲标准的数据随机处理后发给服务器,看服务器会不会因为乱数据而出错。在完全正确的情况下你的服务器就算基本ok了。如果你要问为什么这样处理的话,那么你没有做游戏的天赋,我劝你还是不要做游戏了。
接下来做客户端,封装好DX底层。然后做游戏中的窗口功能,也就是Windows里面的各个控件,Windows以自带了,为什么还要自己做呢?因为Windows的控件是GDI模式,在DX里显示不方便,而且不专业,再说我一做游戏就知道一定要写,我就花了不到两周时间(当然是晚上偶尔写一下,白天要赚钱养家糊口的),其实很
简单。举个例子:游戏中的按钮,设个矩形范围,当鼠标没在上面显示正常的图片,在矩形范围显示鼠标放在上面的图片,按下鼠标显示鼠标按下的图片,如果这个控件不能用显示不能用的图片。当然我不会笨到做一个游戏做一套窗口,我写了一个窗口编辑器,以后的游戏就用这个编辑器编窗口。
有了游戏窗口,就可以将美术画的窗口图片加在游戏里了。这样一个游戏基本有了个框架,当点击了什么做相应的事情。
接下来做游戏的引擎了。引擎基本是一个游戏一个引擎。比如《大富翁》、《暗黑》都是不一样的。我们举例《魔兽3》:首先要做地图编辑器,定义好地表,定义好各个物体,标明物体的类型,然后交给美术人员,让他们做地图。
然后做一个骨骼动画编辑器,骨骼动画是目前最流行的做法,一定要会,其实也很简单。做好骨骼动画编辑器后交给美术然他们把3dmax的模型导入编辑器中,当然,当然导入程序还得你做。
有了地图和人物模型以及人物有了动作,就可以将人物组织到地图里了,地图要定义好格子,当玩家点击地面某点就可以移动过去了。当然,因为你定义了物体类型,那么当点击了物体,人物还可以将物体捡起来。
看见没有,说了这么多,你到底会会几样?假如你全会也不要得意,因为现在你看到的游戏能像《魔兽3》一样玩起来了吗?不能吧,可以说头都还没开始呢。知道做游戏难了吧!
有了人物模型,当然怪物模型也是一样的。因为怪物要有智商,所以A*算法一定要会,这样怪物就可以追过来了,当怪物啃你的时候显示怪物啃人的动画就行了。
这些基本可以算一个游戏了,但是别得意,别忘了我们是网络游戏,游戏进入时要检测游戏的密码等这些简单的东西就不说了,假入我们成功进入了游戏服务器了,这个时候一定要做一件事,那就是向服务器请求此时的时间,为什么呢?你看游击队员在任务前要对时间,为什么,因为他们没有手机,不能及时通讯,只能说半小时后这个地方要爆炸,其他人必须半小时内逃出去。网络游戏也是这样。所有进去的玩家都得到了统一的服务器时间,这样服务器就会告诉你一件事,比如现在是12点,服务器会告诉你12点零5秒的时候有个怪物将从a点走到b点。这样所有玩家都会在12点零5秒将怪物从a点走到b点,就同步了。可能因为网络延迟,一些玩家收到晚点,没关系,按服务器时间该在什么位置,就在什么位置显示就行了。
游戏中好要处理玩家的装备系统,这些消息都要发给服务器,游戏中还要处理升级、地图切换、地图切换后周围玩家变了,重新发送玩家信息、与服务器断开后(网络时不稳定)玩家重新连接,当前状态恢复、玩家与玩家的交流、对话、交易、组队、pk等等。
这样一个游戏基本算一个游戏了,但是还有一个最重要的也是比较难的东西还没提到,那就是任务系统,任务系统目前有很多种做法,一个是脚本方式,这种方式比较灵活,但是需要很多人写,还不一定写得非常好,我时不赞成这种方式的。他有点像嵌入式开发,让我像到了微软的东西,给我的感觉是,经常出错,而且很慢,好像科技含量高,也耗钱。另一种方式就是我喜欢的工作流方式了,我是如何知道工作流的呢?谁叫我不是一毕业就进的游戏公司呢,想当初我投简历给一家很出名的游戏公司,别人说我的能力和代码都达到了他们的要求,但是他们已招够人了。于是我做一般的数据库工作,认识了工作流,这样也好,比一开始就进游戏公司的人多一样知识。如果不懂工作流,自己到网上去查。嘿嘿!看后应该不简单哦!
有了这以上的知识,那么一款类似《魔兽3》的网络游戏差不多就出来了,将游戏里的人工智能加上,网络游戏的自动下载、版本升级等加上,基本就完成了。
嘿嘿!难吧,如果没有信心的就不要做游戏了。当然以上说的会几样就行了,不一定样样会。我嘛!当然都会了,否则怎么敢用技术和我的一个创意找投资,而且最近在谈的这家公司给投资1000万,如果成功,我想开在成都。随便做个广告,有愿意做游戏的人可以留下联系方式,以后通知你面试,估计你会学到很多东西。等我有空了,我还是想写本书,公开我的所有源码,只是源码太多,我现在很忙,所以不能公开了。
也有人问我学了多久呢?我从1998年开始编写DOS下的仿《仙剑》的游戏。然后直到2003年3月15日我终于明白了骨骼动画后开始写的,而之前我几乎不会。2003年3月15日以后我花了3个月时间写完了游戏窗口编辑器、骨骼动画编辑器、组装了一个很简单的进去可以打怪升级、检装备的类似《暗黑》的DEMO,然后那我的游戏创意(这个创意可是1999年开始思考的)。去游戏公司找投资。后来进入游戏公司(2003年11月),利用工作之便将我的服务器底层(封装socket)完成。这样就具备现在的知识。
嘿嘿!我现在基本就只做两件事了,一、领工资。二、找投资。眼红了吧!一句广告词:
其实你也会。