Silverlight游戏设计(Game Design):(十三)帝国时代II (Demo) 之 “战争艺术”② 帝国时代是一部阐述世界战争发展史的游戏巨著讲究还原真实的历史战争场景其中的阵型系统为游戏的极大亮点之一玩家根据兵种的不同搭配上最合适的阵型时常能起到逆转乾坤的神效经典的如前枪中骑后投石强大的阵型加上玩家精确的微操能瞬间扫荡大规模敌军而毫发不伤。阵型系统不仅仅存在于即时战略游戏中在《三国志》、《信长野望》等SLG策略游戏中其同样是一者永远不可缺少的重要机制。本节我将在上一节搭建的《帝国时代》Demo的基础上引入比原著更加灵活多变的自定义阵型系统以让战争游戏更显真实与华丽。自定义阵型系统的灵感来源于国际象棋阵型好比“棋盘”作战单位好比“棋子”因此从结构出发我选择使用Grid作为构建阵型系统的最底层载体通过指定Row和Column即可随意布局棋子到指定方格内在本节Demo中我将“棋盘”摆放在HUD的中下方并限制其为一个4*12最大容纳48单位的表格型载体。有了“棋盘”当然还少不了“棋子”。“棋子”是一个图标于是我创建一个名为Piece的类该类包含一个图片控件和一个矩形方块控件(血条)上图为骑兵对应的“棋子”图标。接下来要实现自定义的棋子布局我们还需为这些棋子增加座位交互功能即点击其中一个棋子后该棋子为选中状态并与接下来点击的位置或另一个棋子进行位置交换代码很简单大致如下PiecehitPiece null;//点击的棋子///summary///单位位置更换////summaryprivatevoidimg_MouseLeftButtonDown(objectsender,MouseButtonEventArgse) {if(hitPiece null (int)((senderasPiece).Code) ! -1) {hitPiece senderasPiece;hitPiece.Effect newDropShadowEffect() { BlurRadius 8, ShadowDepth 0, Color Colors.Red };}elseif(hitPiece !null) {intoldRow Grid.GetRow(hitPiece);intoldColumn Grid.GetColumn(hitPiece);Piecepiece senderasPiece;intnewRow Grid.GetRow(piece);intnewColumn Grid.GetColumn(piece);Grid.SetRow(piece, oldRow);Grid.SetColumn(piece, oldColumn);Grid.SetRow(hitPiece, newRow);Grid.SetColumn(hitPiece, newColumn);hitPiece.Effect null;hitPiece null;}e.Handled true;}“棋盘”和“棋子”功能完成后我们最后要做的仅仅是将这套布局应用到游戏中的作战单位上。上一节中讲解了如何对单位进行范围选取每次选取后“棋盘”中所显示的即为选择的单位们所对应的“棋子”这里我通过一个DispatcherTimer每间隔1秒钟刷新一次“棋盘”中所有“棋子”的血条值当然这或许并非最好的解决方案但却是一则通用且简单高效的实现方式之一阵型系统的最终实现即是对所选取的作战单位按排列好的布局图进行走位Grid作为棋盘的优越性及简易性也将从中得以体现实现起来代码就更简单了……Pointp e.GetPosition(mainScene.Container);//单个精确移动,多个则按阵型移动if(mainScene.SelectedArmy.Count 1) {mainScene.SelectedArmy[0].MoveTo(p);}else{for(inti 0; i facePlate.formation.Children.Count; i) {Piecepiece facePlate.formation.Children[i]asPiece;if(piece.Code ! -1) {introw Grid.GetRow(piece);intcolumn Grid.GetColumn(piece);piece.CorrespondingSprite.Enemy null;piece.CorrespondingSprite.MoveTo(newPoint(p.X column * pieceSpace, p.Y row * pieceSpace));}}}……自定义阵型是阵型系统中的最高级别实际游戏开发中根据需要将“棋盘”定义为相应规格尺寸的Grid后即可衍生出更加丰富多变的固定或非固定阵型不仅大幅度增加游戏的趣味性与战略性同时也是设计师们对游戏艺术的不懈追求。以上为随意排列出的一些经典阵型不禁让我再次重温了一遍从小陪伴我长大的三国志系列。当然了实际中您可以根据兵种的近、远距离攻击属性及移动速度、相生相克等因素布局出更适合不同战役的阵型。战斗胜败的关键在策略而阵型就是其核心之一这就是战争艺术。在线演示地址http://silverfuture.cn作者深蓝色右手