【原】一年前做的小游戏,WeirdTank
大二的时候做的,接触XNA后做的第二个游戏。
当时看了一个叫Phun的物理演示工具,觉得非常有意思,就想把物理效果加入到2D游戏里。设计WeirdTank时接受第一次失败的教训,系统设计的很简单,纯2D贴图,只有单机模式,先把最简单的Demo实现了再说。事实证明我们的水平也就仅仅做完这些(WYH同学画地形的时候还是偷偷用了点3D的概念~)。
引擎的设计用了很多时间,不停地修改类的接口。刚刚学习设计模式,刻意的把一些模式套用进去,最后的结果还是很乱,有些代码依然是复制粘贴的。
现在看来,游戏程序就不该有复杂的继承关系……
物理引擎选用开源的Farseer Physics。Farseer Physics是设计给XNA和Silverlight用的,现在版本是2.1.1,已经很完善了。我们用的时候还很不稳定,帮助文档也不全,只能边看源码边查物理引擎的资料。最痛苦的是最后平衡性调不好,连物理量的数量级的不知道……
Farseer Physics的设计使用了Box2D引擎的一些东西,Box2D是用C++编写的一个非常强大的跨平台的2D物理引擎,作者叫Erin Catto,查物理引擎的资料的时候看到了他在GDC的演讲,后来才知道人家是暴雪的物理模拟师……
Farseer Physics的截图:
Box2D的截图:
我们的WeirdTank还是在微软项目评审中骗了个小奖,其实我觉得也不算骗,做游戏本来门槛比较高,学ASP.NET两个月能做个小站了,学游戏两个月很难出作品,至少游戏美工就比网站美工难找。当然,本来就只提交了个Demo的半成品,结果已经不错了……
几张当时的截图:
关节的动作是给结点施加力矩计算出来的。
爆炸后散掉的敌人的零件:
WYH同学做的简易的地图编辑器……
PS:这些天又在考虑把2D物理加到网游中,做一个赛车游戏,呵呵,有空写写策划案,现在找工作压力好大……