浅析Sol Survivor

    3月份新出了一个塔防游戏,叫做 Sol Survivor (唯一幸存者)。我也试玩了一下,被其精美的画面和优秀的引擎所深深吸引。它的塔很丰富,有专门对空的,也有专门对地的,还有空地结合的。从攻击上来说,专门性的输出要比全面性的高。而且二级塔也远比一级塔的攻击力要来得高,甚至头几关有一关是必须要只用一个塔来守才能获得增加英雄的奖励(通关以后英雄是全的)。从攻击范围来说,大范围的输出一般都是有时间间隔,输出值也比近程输出要低。但是只有远距离的塔中拥有整个游戏中唯一的忽略外部防护能力的塔。从附加属性来说,有电流攻击、激光攻击、减速、反隐、散射。不是每种功能都必须用到才能通关,但是合理的运用可以减少造塔的数量和有效防住敌人。本人比较热衷于生存模式,就是小兵无限出的那种,而且越出越难打的。基本上能防到12分半,然后就很难突破了。大概也就是个入门选手的水平。:-)
    毕竟这是个专业性的论坛,编程知识也少不了讲讲。这款游戏是利用Microsoft XNA专业游戏编程的开发环境。这方面作者也是稀里糊涂的,所以就不讲了。主要还是游戏内部的设计。值得庆幸的是,这个游戏并没有完全加密,所以我们可以用.Net Reflector来查看内部的运行机制。
    在整个游戏中,所有的武器 Turret 的初始化参数设置都来自于 Cadenza.AutoScripts 的 Turrets_CampaignTurretStats。哪个武器的属性不明白,可以直接来这里查查看。:-)在这里面可以看到所有武器的属性都通过一个 TurretStats 来设置。从这里,我们就可以看到这个游戏里的武器都支持什么类型的攻击。( 其实我们也可以把这个dll改了。。。然后做出自己的 Super Turret,然后还不花 Mass 。 -_-! 太恐怖了,不能往下想了。。。 ) 也就是说 Cadenza.AutoScripts.dll 只是完成了一个基本的配置功能。而且还是写死在程序中。( 这个配置文件 4.47MB,够恐怖了。 ) 当然如果你仔细看,里面还有地图信息和各种游戏参数。( 如果你有耐心的话可以一个一个慢慢看。。。 -_-! ) 这就告诉我们一个非常有用的信息,如果你想游戏小巧,不用每个地图都图形化 Map ,用固态配置文件是比较好的选择。当然这方面同样优秀的暴雪公司的优秀产品 War3 也是一个利用配置文件减少单个地图制作的难度的。不过。。。这个 Sol Survivor 更变态些,把所有的物件都写成矢量运算的,这就使得每次运行游戏刷新页面的都是CPU在计算每个点的像素。真是变态至极,无怪乎这个游戏需要非常优秀的显卡。可能就是因为这个吧。
    Cadenza.SolSurvivorLibrary.dll 这个DLL绝对是值得好好研究的。所有游戏中实现的武器的动作,以及物体间的交互作用都是在这里面完成的。我只是粗略的看了一下。发现还是有很多地方值得学习的,因为既然入了程序员这行,还是比较向往简洁和高效的编程模式的。再简单介绍一下其他动态链接库吧:Lidgren.Library.Network 提供局域网连接的基库。 Cronus.dll 图形处理的基库。 steam_api.dll 、 steamworks.dll 、 steamworkswrapper.dll 是一个整体,由于 steam_api.dll 是非.Net编的 ( 具体是什么,自己查吧 ;-) )所以要调用就需要一个 .Net 的对应库。而之所以分成 steamworks.dll 、 steamworkswarpper.dll 可能是因为在使用过程中发现一些功能不能混淆,所以就把他们给分开咯。简单点说就是为了把功能分开放而已。 SolSurvivor.exe 比较有意思,因为它的初始化能够判别是否加了程序侦听功能,然后启动调试部分,而且还有错误处理模式。
相对于这个游戏,我只是简单地把各个程序的功能列举出来而已,其中还有非常多优秀的编程理念在里面。看到这么漂亮的代码,确实像罗百吉唱的《真爱》里说的,“我无法再等候,不够永远爱死不够”。:-) 这个游戏是纯英文的,还有很多国内玩家没能像我一样体验到这个游戏的乐趣。还是比较遗憾的。今天先这样了,后半夜就这样没了,时间过得真快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值