关于计算机学习与我的三国开发
一、学计算机的三个阶段
第一阶段需要大量的实践,培养编程感觉以及求真务实精确的科学精神,这个阶段是由简入繁,会知道实际细节
第二阶段需要大量读书,用理论去归纳各种编程现象以达到总体把握各个项目,以及培养追求完美的哲学精神,培养理论思维,能做到建立一套比较完美的理论,是由繁入简.学习组成操作编译的目的也在于此,它们不是要你去做硬件系统编译器,而是让你能把握编程的总体
第三阶段是能用计算机思维分析解决各种问题,是计算机科学的核心,这个阶段是从计算机走向现实,侧重于面对实际问题分析而不是编程问题,培养从思维的高度针对具体问题选择恰当的思维方式,它需要涉及思维学,哲学,语言学,数学,心理学,管理学,经济学等等,要达到能够用计算机思维分析解决这些领域的问题比如用系统思维,类比思维,逻辑思维等等
从计算机科学的角度就三个阶段,但从其它角度则还有个阶段
在第三阶段以后需要破执,认识到计算机思维仅仅是以还原论思维为主,需要学习带有模糊思维的中医以及带有体悟的哲学,从而达到思维的本来面目,不受计算机思维的束缚,从而达到了道的境界,认识到编程仅仅是思维的应用
二、关于三国开发
有人说做游戏不需要那么高阶段。我觉得对,如果纯粹做游戏的确不需要懂那么多。所以我是不为游戏而做三国,我甚至认为我一己之力根本做不了游戏,那么我为何做呢?从开发史看我最早就是为娱乐,然后是想提供一个平台,再后是为学技术,再后是想构建三国理论,再后是构建开发理论,到现在是想构建思维理论,种种因素交织在一起(详见后文)。所以我是为了娱乐,提高和成就而做三国,所以我追求高阶段。但是这并不意味着三国就可以随便做,所以我认真的把它当游戏做,这也是我发布它,甚至还找美工弄图的原因,如果纯粹的试验品,根本没有必要。然而 即便我认真的把它当游戏做,毕竟几个人的力量有限,实际上也达不到真正的游戏,所以在客观上只能是大家看到的既有用心之处又有草率之处。
我说这些并非说明业余开发就是不行,事实上业余也有办法组织团队,但是我不想去做这类事,做了对我意义不大,甚至是违背我的想法.我认为开发一个好的游戏关键是有一定数量的人,怎么组织其实没那么重要.集中式团队并非组织人员的唯一手段.从MOD热可以看出,让玩家参与数值,图片的设计反而效果更好,而这其实是分散式组织的形式,这是现代管理的一种重要组织形式.尤其适合于业余非营利性质的项目.从MOD的模式可以看出,一个MOD都是由技术高手出修改器,由玩家使用修改器,这样的核心技术人员和实际使用者组成的模式,我把这种模式称为立体开发。它的特点是没有统一的组织,根据自身爱好自觉参与开发,资源往往共享,在有必要时集中组织团队统一开发(如:岳飞传)。我这项目也打算这么做,一方面出修改器方便玩家修改数值,一方面开源让懂程序的修改功能,AI,公式等等,我会公开开发文档方便大家理解程序,有机会还会写文章说明设计思路,毕竟理解代码需要借助于一些资料.我不像其它人计较游戏的版权,如果大家喜欢拿去商业我都没意见。我更强调的是大家的参与,不要什么都是我们少数几个弄,我们会弄一点核心的比较困难的部分,但不是全部.我希望看到的是不同人按不同的想法对游戏做不同的修改,出现多个版本这种百花齐放的格局,而非死气沉沉的一种想法.
为什么我用VB而不用现代的语言,并不是我不会,而是我觉得用VB已经能达到我的目的而且确实可以做得出,而且是我最熟悉最省力的语言,另一方面我的理念是让大家参与开发,如果有人觉得VB差自己可以换个实现,我把文档都公开了,应该不困难,如果觉得WEB,手机,FLASH好,性能经得起移殖,反正我不需要版权.
总之一句话,对我而言开发这游戏的研究的目的达到了,对于想做三国的我也提供了一个平台,其它的我就不管太多,我说这些仅仅是希望大家能参与进来,做些能做的事,不是就靠我们有限的几个,如果大家有需要什么技术上的帮助可以找我。如果有人觉得这游戏落后想创新个,可以自己弄, 这里的源码设计可供参考,游戏所需要的技术基本都体现了.有什么技术困难的或者想理清思路的可以找我。作为搞研究的很乐意讨论开发方法一类的话题,但是一些具体的设计细节以及编程体力活我可不喜欢。在这里我希望越来越多的人能够靠自己在各种资源帮助下独立做出三国,而不是靠别人,有机会我会共享越来越多的资源。
三、做三国的背景及原因
在上个世纪90年代末,接触学习了VB。由于在当时,业余时间没什么事做。又因为机器显卡配置差,玩不了游戏,于是把VB写程序作为娱乐的方式;当时写的程序都是数据管理类的游戏,如赌大小、股票,彩票、老虎机了等等,由于是娱乐,也不怎么讲究质量,娱乐就好。到了2000年,接触到了三国演义3,玩了很久,就有了做三国游戏的想法,由于能力不足就随便做了个简单的三国游戏(就是双方几个部队的名字和兵力以文字形式显示在上下边上,玩家选择我方下面部队打敌上面部队,没有移动,然后做了很多关,还做些特殊的技能:当然仅仅是扣兵力数值和成功率不同)。在当时做出这个很有成就感,充分达到了娱乐的目的。但是也苦于没人讨论,无法发展下去。后来接触到英杰传系列,三国志7-9,富甲天下,三国立志传等等三国游戏,对三国游戏有进一步了解,那时听说VB过时了,学其它先进的又学不会,就没什么编程。
到了2003年开始有网络了,去了琅琊论坛看到了发展与设计区很多人对三国游戏有设想但却没有实际的程序,当时我就在想大家应该实际做点程序,哪怕是最简单的,因为可以不断完善,关键是需要个可靠的程序基础。我又回忆起当初做的那个三国游戏,于是就用几天随便做做就发上去讨论。这个游戏叫战略三国。因为只是做着玩,自然VB也无所谓了。后来战略三国做了一些改进。先是友盟论坛的XYZ提了些建议,变成了先选人后对战的形式,对战专门一个界面,左右两侧为双方名字和兵力以及各指令 ,除了攻击还有计谋。再后来,轩辕有个玩家提出做成战棋的,我也想到了实现思路,用控件数组摆成矩阵,根据下标的关系确定部队是否邻近,于是就把游戏改为战棋的模式,邻近部队可以使用攻击计谋指令。这就是战略三国1的三个版本。
后来去了轩辕论坛,我看到了很多人对三国九的修改非常热情但是对三国九的系统设计也很多不满但是无能为力。我就意识到能有一个易修改的程序的重要性。于是我就有做个三国九模式的游戏的想法,我希望玩家能够在我这个游戏平台上随心所欲设计数值,如果对功能有想法我可以按他们意思弄。在当时就明确指出程序维护性要好,这样才能按玩家需要修改功能。也需要修改器,方便玩家设计数值。还需要开源,毕竟我一个人无法满足所有玩家的需要,得让不同的程序员开发多个版本才行。有人曾经说三国志9之所以经典,很大程度上是在于修改器,它激发了玩家修改的热情。但是我认为修改器这种修改仅仅是数值层面,无法深入功能层面,是很有局限性的,而功能层面的修改则需要修改程序,而且是维护性好的程序。大家可以看出我做三国的目的根本就没有想创新,也没有想独自一个人包办开发的一切,而仅仅只是提供一个平台。
有天在友盟论坛,看到个策略三国开发组的贴子,我就加入了那个开发组,后来还当了那个开发组的论坛的管理员,也认识了一些专业人员使我对真正的开发有所了解,在开发组一些人员的帮助下我开发了战略三国2,与战略三国1相比仅仅是画面声效进步了,游戏模式反而退化了,我方敌方全部电脑控制。有人评论说战斗是看电影。
后来策略三国开发组散了,遇到了任毅,我们经过讨论决定他负责策划我负责程序,于是我就不考虑设计问题了。从此以后专门思考程序。而他则按三国九模式系统地设计这个游戏。在思考程序的过程中我体会了技术的乐趣,自此以后做三国又多了个意义:锻炼技术。在开发过程中学习了面向对象,最终在05年9月把游戏做出来了,这个游戏虽然基本功能具备了但是不成游戏。最终因为程序混乱做不下去了,我与任毅合作也结束了。在这游戏开发后我就深感思路清晰的重要性,于是想构建一套理论指导下次的开发,就把游戏开发的经验总结成〈〈战略三国设计思想〉〉,同时买了〈〈系统分析之路〉〉以及〈〈软件工程〉〉来吸取其思想,了解到系统论思想以及面向对象的本质,让我知道了把握系统设计的总体思路的重要性。自此以后做三国又多了个意义:构建一套开发理论指导开发。这个游戏的最大贡献是做到了策划和程序分开以及积累了各种功能的实现,开发文档规范初步形成。
后来把这游戏发GameRes论坛,游戏之家指出了画面的不足并让我用GDI来做游戏,于是我设计了飞棒击球练习GDI技术。在06年4月遇到了林度,他在论坛发模拟三国大纲,也是三国九模式,于是我与他合作,他负责策划我负责程序,就用了战略三国的方法指导开发,这个游戏最大的进步是画面,尤其是地图以一个背景为基础大大改善了质量。GDI的应用使得游戏界面系统思路清楚很多。但是游戏最终还是因为混乱做不下去了。于是林度又设计了战争这项目,他指出模拟三国的战争设计非常糟,于是单独拿出来设计,分为行军系统,战斗系统。最终在08年6月顺利完成。这个项目最大收获是学会了战争的实现。同时也学了DX,构建了通用的界面系统。在战争结束后,我们的合作结束了。
在战争结束后,努力过把内政加入战争,还专门设计了新战略三国,但还是出现思路混乱的老问题,由于此时已没有策划,而且开发经验也积累不少,于是觉得再做下去也不会突破,转而学习理论。从08下半年开始从数据结构学起,到09年组成原理,操作系统。OOA,网络,数据库,离散,到10年的汇编,编译原理,软件工程,OOD,到11年上半年的算法,计算机系统结构,微机原理。从这些书里我初步理清了开发思路。由于长期没有策划,又被书中精彩的理论吸引,看着看着也就不怎么想做游戏了,那几年基本沉浸在理论的海洋中,用纯理论的思维来分析游戏,那滋味确实好极了。于是我就想以这些理论为基础创建一个通用的开发理论。从此我就把创建开发理论作为比开发三国更重要的事来做。直到10年8月觉得看书看累了,就做了个战略三国3放松放松,这个游戏其实和战争差不多,主要在画面上有所进步,第一次实现了部队的移动、战斗和灭亡动画,在游戏设计上支持多势力混战,可区分敌军友军,还采取了多部队的游戏形式,此外还设计了简单的剧本系统。在开发这个项目中我尝试运用所学知识去解决问题,但很不幸用所学知识解决的问题不多,更多的还是靠经验解决,于是仍然造成程序结构混乱,以至于最终放弃本项目。开发结束后我就反思到虽然我经验和理论都不少,但是没有结合到一起,理论的实际应用也需要研究。自此以后做三国又多了个意义:研究理论的应用方法,在理论和实践中找到衔接点。
在学习各种理论的同时,我同时还在进行思维的研究,这个研究最初是从考虑游戏通用架构开始的,在08下半年时还在运用各种理论分析游戏架构,总觉得不透彻。到了09年,开始用对象解释游戏架构,对游戏架构的认识深刻很多,最后发展出一套用以时空为基础用系统的思想解释的方法。当时企图构建用对象解释一切的理论,结果花了很久时间也未构建完成,更大的问题是什么为对象不明确。后来就暂停了思考,看了些哲学,然后才发现我之前的方法其实是用还原论解释问题,而这种方法很多古代哲学家都在追寻,没有一个成功的。而在近代已经转向认识论了。于是我也用认识论的方法来完善理论,什么为对象的问题得到解决。后来我看了些道德经的解读,尤其是那句“道可道非恒道也,名可名非恒名也”,使我认识到名相也会阻碍对事物的认识,因此企图用理论解释一切的方法最终反而给自己设置障碍,这是理论解释的方法的局限性。接着我的研究扩展到了思维,研究起动作思维、形象思维和抽象思维间的关系。进一步完善了理论。此时我想通过实践研究思维具体环节以深化理论,也想实践已经形成的思维理论,于是想到了做三国,有了通过编程研究思维的想法。
到了2011年下半年,我看了心理学、思维学、逻辑学等等思维学科,进一步了解了思维。与此同时,我也开始教徒弟编程,我的教法以实践带动编程语法和思想的学习,从投资游戏,股票,彩票,猜数字,老虎机等我曾经做过的游戏教起,又教了一些我曾经没做过的贪吃蛇,大富翁,找对,五子棋,黑白棋,推箱子等等游戏。到了2012年,在1-6月我教徒弟用软件工程方法来做项目并且研制一种适合于游戏开发的文档格式,做了扫雷,俄罗斯方块,空当接龙等游戏逐步完善文档格式。在7-8月以三国内政和战争为例,教了徒弟简单的OO,在9-12月,教了徒弟DX及其应用(如动画,碰撞检测,路线,旋转等等),以吃豆,坦克,打砖块,祖玛,纸牌等游戏,到2012年底已经做了29个游戏。而第30个游戏是我教徒弟的最后一个游戏,也就是战略三国4,于2013年1月1日开始开发。因此这次开发三国除了以上所说的众多意义外,还有个新意义,教徒弟中型项目的开发方法。由于是教徒弟做的,所以不会太难,模式是跟霸王的大陆差不多,只是在具体属性、指令和界面上有所区别,它是作为一个包含内政、战争的多势力的完整三国游戏。
|