reactive dropdrop7怎么玩玩单机

    前面我写过7篇文章粗略的介绍了一下Rx及其方方面面。Rx是一个好东西不然我也不会费这么大的力气来写这些东西。本文打算初略的讲一下传统异步编程方法的缺点,以及为啥Rx能够给异步编程带来新的体验。最后我听译了一篇关于Reactive Extension的非常好的一篇演讲,并制作了中英文字幕。希望大家看完这篇文章之后能够对Reactive Extension能够有比较深的印象,并在实际编程中遇到比较纠结的异步编程问题了能够想到Rx。
1. 传统异步编程存在的问题
    异步编程比较困难,这一点讲过很多次,在这里就我的理解有以下几点。
1.1 异步编程的方式太多,缺乏统一性
    在.NET下面做异步编程其实有很多种选择的,如果基于事件的异步编程,经典的Begin/End异步方法对,以及针对以上两种存在的问题改进的和,还有F#中的,以及C#5.0中引入的。方法多吧,这些方法在不同的场合具有不同的优缺点,但是要全部掌握对于一般的编程者来说比较难,缺乏一种统一的方式将这些异步编程方法统一的概况进来。
1.2 代码破碎,本地性不好
    传统的异步编程方式迫使我们将逻辑分拆为两部分,而大家一般对线性的处理方式比较熟悉,相信大家比较熟悉基于事件的异步编程方式,一般地,你需要注册一个事件,这个事件处理方法通常和注册事件的代码不在同一个地方。在Begin/End异步方法对中,你也需要发起一个Begin异步方法,然后在其回调方法中,调用End方法。这通常会破坏代码的本地性,而且,如果你需要在Begin方法中传递一些参数的话,你还需要进行类型转换。在C#2.0中的闭包,匿名委托, C# 3.0中的lambda表达式,使得你可以在调用回调方法的地方传进去一个异步方法,这样在一定程度上减少了代码的破碎性,但是如果需要在异步方法中再次调用另外一个异步方法,那么代码就会比较难以维护了。再者对异步进行异常处理也是很麻烦的事情,你不得不在每一个地方都写上try catch。
1.3 异步方法难以进行组合
    传统的异步编程也难以对方法进行组合,比如说要实现鼠标拖拽(Drag and Drop)这个功能,他涉及到多个事件,你需要记录很多个中间状态。而不像我们熟悉的LINQ那样对事件像对数据那样进行管道(Pineline)操作。
2. 什么是Rx
    Rx提供了一种新的组织和协调异步事件的方式,极大的简化了代码的编写。Rx最显著的特性是使用可观察集合(Observable Collection)来达到集成异步(composing asynchronous)和基于事件(event-based)的编程的效果。Rx有一些几个特性,这一点在文章中也讲过:
组合(Composing): Reactive Extension的首要目标之一就是将多种异步操作组合起来是的代码更加简单。要做到这一点,数据流必须定义清楚,这样代码就很清晰集中,使得异步操作代码异步处理代码不会充斥整个应用程序。
异步(Asynchronous): 虽然Rx不仅仅能处理异步操作,但是使用Rx,大大简化了异步操作的实现,并且代码容易理解进而容易维护。
基于事件(Event-based): Rx简化了传统的异步编程方式,在后面的文章中我们会看到拖放(drag and drop)模式的实现
Observable集合(Observable collections): Obervable Collection是Rx的核心,它是一种集合,集合的元素在第一次访问的时候可能还没有填充。它对与Rx的重要性类始于Enumerable集合对LINQ的重要性。
3. Rx给异步编程带来的新体验
3.1 统一了异步编程方式
    对于基于事件的异步处理,我们可以调用Observable的FromEventPattern方法,如我们如果想监听某个对象的MouseDown事件, 使用Reactive Extension则可以像这样写:
IObservable&MouseEventArgs& mouseDown = Observable.FromEventPattern&MouseEventArgs&(this.myPictureBox, &MouseDown&)
.Select(x =&x.EventArgs);
    这样就将一个Image的MouseDown事件转换成了一个IObservable&MouseEventArgs&对象,然后我们再调用这个对象的Subscribe方法就可以进行事件注册,异常处理了。
    同样,对于Begin/End异步方法对,也可以调用Observable的FromAsyncPattern的方法,这样你也就可以对该事件进行各种操作了。
WebRequest request = WebRequest.Create(&&);
IObservable&WebResponse& webRequest = Observable.FromAsyncPattern&WebResponse&(request.BeginGetResponse, request.EndGetResponse)
3.2 良好的编程体验,代码本地性好
    比如上面的例子,如果要异步请求并接着处理返回的请求,那么可以直接紧接着后面对该事件进行操作:
IObservable&String& result = webRequest.Select(res =&
using (var stream = res.GetResponseStream())
using (var sr = new StreamReader(stream))
return sr.ReadToEnd();
    你可以就像写同步代码那样写异步代码,不需要强行的把异步方法写成一个主体一个回调,使得代码更加的紧凑和容易维护。
3.3 可以方便的对异步事件进行组合操作
    Rx可以使得可以使用类似LINQ的语法对事件进行操作,比如现在要实现一个功能:在一个form上有一个textbox,现在要监听textbox的事件,并且要在用户输入停止后1秒钟才发起事件。如果您使用Rx,则可以写为:
// 取得TextBox控件的TextChanged事件
IObservable&String& textChanage=Observable.FromEventPattern&EventArgs&(textBox, &TextChanged&)
.Select(_ =& textBox.Text)
.Throttle(TimeSpan.FromSeconds(1)); // 等待1秒钟如果没有别的变化则使用最近的变化值
    这个逻辑在实际中是很常见的,比如你需要根据用户的输入去进行webservice请求,如果用户输入的很快,且频繁更改输入值得话,如果不进行过滤,会进行很多不必要的请求。上面这段代码则很好的满足了要求,如果您用传统的基于事件的方式实现该逻辑的话,我想是非常麻烦的。
    另外一个例子:比如说,你在form上有一个图片,你想实现Drag and Drop功能,如果使用Rx的话,代码如下:
var mouseDown = Observable.FromEventPattern&MouseEventArgs&(this.myPictureBox, &MouseDown&)
.Select(x =& x.EventArgs.GetPosition(this));
var mouseUp = Observable.FromEventPattern&MouseEventArgs&(this.myPictureBox, &MouseUp&)
.Select(x =& x.EventArgs.GetPosition(this));
var mouseMove = Observable.FromEventPattern&MouseEventArgs&(this.myPictureBox, &MouseMove&)
.Select(x =& x.EventArgs.GetPosition(this));
var dragandDrop = from down in mouseDown
from move in mouseMove.StartWith(down).TakeUntil(mouseUp)
select new
x = move.X - down.X,
y = move.Y - down.Y
dragandDrop.Subscribe(value =&
Canvas.SetLeft(this.myPictureBox, value.x);
Canvas.SetTop(this.myPictureBox, value.y);
可以看到代码风格是很线性化的,表面上没有回调,没有破碎的代码。可以很方便的对事件进行Pineline的操作。如果上面这部分逻辑您使用传统的方法实现的话,需要保存一系列状态,比如说什么时候开始,什么时候结束,开始和结束的位置等等,而且注册事件会使得代码比较散,可读性不如Rx的好。
4. 一些资源
    为了帮助大家更好的了解Reactive Extension,我翻译了一篇在Channel9 上的演讲,,个人觉得讲得非常好,对IObservable接口如何有IEnumerable演变,以及Rx如何帮助我们简化异步编程都有很详细的讲解。如果您感兴趣的话,可以直接在Channel9上看。当然,我花了很长时间听译并试着翻译了整个视频,有些地方听的不是很懂,不过应该不影响您理解,并制作了,您可以到上下载高清视频,然后结合中英文字幕看,我也将该高清视频和字幕压制到一起并上传到youku上了,可能不会很清晰,还是强烈建议您Channel9下载下来看。
    当然,除了这个非常好的介绍Rx的演讲之外,下面的一些英文资料也很有参考价值:
Rx team blog
如果您不喜欢看英文的话,下面的一些也很有参考价值:
1. CSDN上一位网友翻译的几篇的,个人觉得很好:
2. 上面这些都很好,当然我之前也写了几篇介绍Rx,您要是觉得有时间的话,也不防瞧一瞧:
最后,希望这些能够给您了解Reactive Extension及对异步编程新方式带来一定的帮助。
阅读(...) 评论()《Alien Swarm:Reactive Drop》评测 太空版求生之路
游戏介绍:
Valve 相信知道的玩家并不陌生,该工作室曾出品过经典的《半条命》系列以及《求生之路》系列,并大受好评。而今天要评测的《Alien Swarm:Reactive Drop》也是Valve 出品的,一款免费生存射击游戏,分为单人与多人联机两种模式。
《Alien Swarm:Reactive Drop》是《Alien Swarm》(《异形丛生》)的一个MOD,提供包括简体中文在内的20多种语言。MOD最新版于4月21日上架Steam平台。在游戏里,玩家依旧扮演IAF 陆战队队员,组团抵御异形的攻击并从外太空殖民地杀出一条血路,逃出生天。相比1代地图关卡的数量略少,这次MOD除了新增地图外,还有新增的游戏模式,异形生物以及枪械,最重要的是加入了创意工坊的支持。更加丰富了游戏的可玩性。
玩过V社游戏的玩家会发现主菜单的设计风格和一款名叫《求生之路》的游戏很相似啊。游戏采用第二人称上帝视角的模式。
主界面设计——V社风格
全景展现的游戏场景:
由于在游戏中会遇到一些机关需要技术队员才能操作,而进行操作还要花一些时间,很容易在这时出现来自四面八方入侵的异形,其他队友则进行掩护抵挡异形的进攻。
这时上帝视角的作用就发挥出来了,在上帝视角下既能确保工程师操作时的安全,又能环顾抵御周遭异形的进攻。而且更容易发现武器道具。
人物简介:
人物选择界面中,游戏提供了队长、支援兵、医疗兵及工程师4种职业,共8名可选角色。每种职业都拥有各自的独特优势。例如Sarge和Jaeger,他们都是军官,不过进行技能对比会发现Sarge的领导能力最高,复仇者散弹枪威力和爆炸杀伤力偏弱。而Jaeger则相反。这些技能区别,在人物选择上也是需要考虑的。
军官:团队合作的领导核心,给队友下达命令。正确领导会让队友减少伤害。而一些决策上的失误,也将导致任务的失败。
医生:团队奶妈。医疗能力强,可携带多种医疗设备。
技术人员:掌握核心科技,为团队带来技术保障的同时还能利用探测仪更早发现潜伏的敌人。四种职业形成互补,且缺一不可。
特殊武器专家:提供高威力输出,团队护盾。
8名可选角色,技能各异
游戏系统:
任务菜单:
在人物选择的界面里有一个任务详情,点击进去后,可以明显的了解本次任务目标、地图图示以及任务选项。
任务选项提供难度、猛攻、“友军伤害”、challenge(挑战)四个选项。
猛攻:控制游戏中异形的数量,启用时,异形数量会大幅增加,难度激增。这个选项适合在多人联机中使用,不推荐在单人模式中启用。
友军伤害:顾名思义就是射击友军会伤血。很微妙的设定。
任务选项设定
武器系统:
游戏中,官方提供的武器种类很多。特别是在DeathMacth地图里,这是一个新增的多人PVP地图,到处都能看见可用的的道具。
DeathMacth地图——随处可见的武器装备
角色只能带两把武器,一把主武器和一把副武器。并可以携带一样装备。在游戏中,拾取的武器道具将会替换当前的装备配置。而一些武器只能由特定角色使用,比如医疗箱只能让医疗兵使用。通过等级的提升,可以解锁武器装备。
限定武器——只能特定角色使用
等级提升——可解锁武器装备
查看地图:
本作中查看地图是非常重要的。很庆幸游戏里可以显示地图并且查看,因为游戏的每一个关卡设计都很复杂,如果没有地图显示,很容易在游戏中懵逼,造成游戏卡关。
随时查看地图以免迷路
资源的匮乏:
其实游戏中资源并不算多。因为在开始任务之前,每一名角色携带的资源已经足够了。而携带类型可以通过玩家进行更改,最终决定的装备配置也会决定任务的成败。很可能过程中,弹药用尽,而队友又没有装备补充弹药箱,这时的任务基本已经失败了。
永久死亡:
玩过《求生之路》的玩家都知道在抵达安全屋的路程中,如果有队友阵亡,玩家可以用心脏起搏器拯救队友,或者通过途中的求生屋把队友救出来。而在《Alien Swarm: Reactive Drop》中,如果中途队员阵亡,将面临着队友真正死亡,途中没有任何复活道具可以复活队友。而掉落的特殊道具将无法拾取。(如果奶妈(医疗兵)挂了,那就惨了。)
游戏玩法:
单人模式——人物随意切换考验任务完成能力
单人模式中,你可以随意选择人物开始游戏,甚至能够选择一人开始游戏。而最多可以选4人加入。在一些特殊任务里,系统会提示需要必须的武器和人物才能开始游戏。
进入游戏之后,玩家可以随意切换操作的队员,并且能给队友下达指示。
可给队友下达指示
在进行单人游戏时,需要注意的是:切换后的队员不会主动跟随队伍,而是在原地停留。这时需要我们给队员下达跟随的命令,才能让停留的队员跟上队伍。
还有一点则是最重要的,那就是友军伤害。在任务设置中可以看到,当你要去关闭的时候,会发现“友军伤害”那一栏给的选项就两个:“正常”和“写实模式”,无非就是血量伤害的多少,根本没有关闭选项。这样的设定很无奈,特别是怪物围攻的时候,每次射击时还要找好位置,不要误伤到友军,而你会发现不管怎么躲,还是会伤到队友,而队友也会伤到你,这就很尴尬了。(虽然他们不是故意)索性瞎JB乱打吧。这一条可沿用于联机模式。(滑稽)
多人模式——逗比甩锅不幸躺枪
本作中的多人模式既是欢乐逗比的存在,又是坑货的聚集地。笔者在入手游戏后,进行了一次多人联机,4人组队开始游戏。进入游戏后,由于系统“友军伤害”的设定,还没走几步,后面队友开始互射了,笔者眼睁睁的看着这群逗比各种滑稽。。。
上面提到的只是个别情况。真正的联机合作会认真很多,虽然还是会误伤友军,不过大家会尽量避免。在多人模式下,游戏会更加有趣,团队协作也会更容易。游戏支持最多8人联机游戏,人多力量大,也不怕自己会被怪扑倒。因为怕的还是队友。。。
在选择多人联机时,建议大家都去通一次单人模式,这样会对地图熟悉一些,在联机时也就不会花更多的时间去找路了,还会减少坑死队友的几率。
创意工坊——更多的地图挑战
其实在本作中,提供的地图关卡已经很丰富了。不过加入了创意工坊后会让游戏内容更加充实,能随时体验到MOD制作者的个性地图,完成风格不同的挑战。玩家再也不用担心不够玩了,当然还是要好好感谢那些在创意工坊默默付出的玩家朋友。
更多的游戏体验
合理掌握作战技巧很重要:
团队合作是本作的主要核心,单枪匹马的个人英雄主义在这里根本不起作用。不管你是单人游戏还是多人联机,请注意不要一个人带头冲锋,因为你根本不可能靠一己之力消灭所有异形,而且还会被异形围攻至死。另外“枪打出头鸟”,则是会被队友打死。所以请紧密的围绕在团组织周围。
扮演工程师除了破解门锁外,还有一些系统破解有一定的难度。在单人模式下,可以让AI来完成。多人模式就要考虑考虑了。需注意的是一些特定关卡工程师是必须的,一旦在游戏中阵亡,任务都要重新开始。
游戏场景比较黑,主要是为了渲染场景的恐怖氛围所带来的紧张与不安。在人物装备配置上,一定要考虑携带一些信号火炬,不然游戏里的黑真心是什么都看不清楚。
焊接自动门是一个不错的选择。不过在进行焊接时,要考虑清楚会不会对自己造成威胁,虽然在异形数量很多的时候可以暂时抵挡异形的攻势。但是自己也会变成瓮中捉鳖,无法逃脱。
游戏中武器上弹有个进度条,当进度条走到白色方块位置时按下换弹键(R),可以实现快速上弹。没有按到就会减慢上弹速度,且移动速度也会受到影响。这一点很像《战争机器》里的设定。
在没有用完弹药的情况下上弹,会直接浪费掉一整个弹匣。所以一定要把弹药消耗完再上弹。
抓住时机可实现快速上弹
《Alien Swarm: Reactive Drop》是一款不错的合作求生游戏,相比《求生之路》系列来说,《Alien Swarm》有着自己的特色:将恐怖生存延续到了遥远的外太空,无脑的丧尸替换成了更加危险奇异的异形生物。四名队员的合作将决定任务的成败。团队合作更加讲究严谨性,娱乐性减少了。(如果你想让游戏变得欢乐,那也是可以的,就看怎么坑队友了。)
当然这款求生游戏也会存在一些不足,特别是自带的官方中文并不完整,希望可以继续完善一下,另外则是在一些场景交互上有点BUG,稍微影响了游戏体验。不过总体的优点大于缺点,给玩家带来了欢乐,这就是一个成功的游戏。还等什么呢,快去体验队友互虐的快感吧。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。催更聊天群
视频地址复制
Flash地址复制
Html地址复制
离线看更方便
用或其他应用扫描二维码
大家如果想一起玩的话欢迎加群来一起玩~
steam上看到的新游戏,好像是老游戏的重置版,最大联机人数从4变成了8 延迟也很低,挺好玩的
难度还是挺大的吧,需要配合
一开始还有点不适应,后来就发现tmd这游戏近战无敌,一拳一个异形甚至好几个异形
然后就...近战打爆一切了
广播电视节目制作经营许可证:(沪)字第1248号
| 网络文化经营许可证:沪网文[6号 | 信息网络传播视听节目许可证:0910417 | 互联网ICP备案:沪ICP备号-3 沪ICP证:沪B2- | 违法不良信息举报邮箱: | 违法不良信息举报电话:转3
网上有害信息举报专区: |

我要回帖

更多关于 dropflip一打开怎么玩 的文章

 

随机推荐