《Silverlight.XNA(C#)跨平台3D游戏研发手记:(十一)3D SLG(策略战棋游戏)设计案例》.doc

《Silverlight.XNA(C#)跨平台3D游戏研发手记:(十一)3D SLG(策略战棋游戏)设计案例》.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Silverlight.XNA(C#)跨平台3D游戏研发手记:(十一)3D SLG(策略战棋游戏)设计案例》.doc

某天,当你一不小心发现已经够随心所欲的驾驭3D摄像机之时,任何类型的3D游戏都将成为囊中玩物,过往如烟。 回忆逝去的童年让我极度惦记的SLG策略战棋游戏,或许对于大多数玩家来说,它费时费力不被讨好;然而深邃的内涵和无限可能的战略战术始终占据着我内心很大一片天地。于是,在本系列前5节2D SLG知识原理的基础上, 萌发了移植一款基于平面的3D SLG Demo计划。 首先,什么是基于平面的3D SLG游戏?大伙不妨先看看以下几款该类型经典游戏巨作截图 - 《英雄无敌6》、《文明5》和《三国志11》: 无论地形单元格为四边形或六边形,其整体地貌都不存在高低起伏(No HeightMap);用游戏开发者的话说便是:三维空间中,一条轴用做旋转, 另外两条轴形成类似2D中的Canvs平面承载对象。这样的设计更像是一盘3D化棋局,地形好比棋盘盘面,角色仿若棋子,附带一个环绕棋盘的360°轨道摄像机,无论视野还是战术方略都能得到淋漓尽致的体现。 当然,除此之外,层次感更分明,基于HeightMap地形的立面3D SLG游戏亦备受日系游戏青睐,不乏大作,比如《火焰纹章 晓之女神》、《皇家骑士团:命运之轮》和《三国志战记2》等,该类型游戏通常需要辅以更加复杂而强大的地形编辑器,这些内容并不属于本节范畴,后续章节中若有时间再做补充: OK,做足了SLG游戏设计方面的知识准备,接下来我们要做的头等大事便是打开第4节的源码,神马差集运算、四叉树算法、蜂窝拓扑算法、A*算法等等统统一并拿来,将其中的Point改成Vector3(即原先的Point(X,Y)更换成Vector3(X,0,Y)),嘿嘿,原来编码也是可以这么浮云的。举个例吧,其中的DirectionScan方法在移植前后的对比: Shape3D ????///?summary ????///?3D图形(面)基类 ????///?/summary ????public?abstract?class?Shape3D?:?Object3D?{ ????????protected?Camera3D?camera; ????????protected?Texture2D?texture; ????????protected?BasicEffect?effect; ????????protected?short[]?indices; ????????protected?VertexPositionTexture[]?vertices; ????????public?Shape3D(ContentManager?content,?GraphicsDevice?device,?Camera3D?camera) ????????????:?base(content,?device)?{ ????????????this.camera?=?camera; ????????????effect?=?new?BasicEffect(device)?{?TextureEnabled?=?true?}; ????????} ????????string?_TextureName; ????????///?summary ????????///?获取或设置纹理资产名称 ????????///?/summary ????????public?string?TextureName?{ ????????????get?{?return?_TextureName;?} ????????????set?{ ????????????????_TextureName?=?value; ????????????????texture?=?content.LoadTexture2D(value); ????????????????effect.Texture?=?texture; ????????????} ????????} ????????public?override?void?Draw(GameTimerEventArgs?e,?ModelBatch?modelBatch)?{ ????????????effect.GraphicsDevice.BlendState?=?BlendState.AlphaBlend;?//设置透明覆盖(透明显示纹理alpha透明部分) ????????????effect.World?=?World; ????????????effect.View?=?camera.View; ????????????effect.Projection?=?camera.Projection; ????????????effect.CurrentTechnique.Passes[0].Apply(); ?

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档