18/11/2009
明天上午考高级编程,这个号称所有函数都是值,所有值都是对象的纯函数,纯面向对象语言Scala,竟然是洛桑联邦理工的教授在最近几年开发完成的。在某期校报的一篇文章中这样介绍Scala语言:“Twitter使用Scala作为后台部分的开发语言,开发人员反映使用Scala编程轻松而让人愉快”,文章中还称:“Scala将为Web2.0提供强大的推进力”。而这位教授在笑呵呵地给我们上了快十个星期的课之后,终于在明天要露出狰狞的面目,对我们进行期中考核。
我最近越来越觉得蜡笔小新是一部人民群众喜闻乐见的优秀动画作品。看似是用各种桥段拼凑起来的无厘头搞笑剧,其实却在忠实地反映着现实生活的方方面面:有时是对幸福生活的赞美,有时又是对世间冷暖的讽刺。
最后推荐一套叫做《技术史》(A history of technology)的书,总共七卷,可以在verycd上找到扫描版的pdf。原书由牛津大学出版,九几年的时候我国几所大学的教授合作完成了中译本。这套书介绍了从原始人时代开始到作者编写此书的时代为止,人类掌握的技术是如何不断进步。书中的技术涉及生产生活建造等各个方面,介绍相当全面详细,读起来很有趣。
嗯,《ツキアカリノミチシルベ》很好听。
07/11/2009
先就《还没有决定名字的网络游戏》的开发现状发一点牢骚。
第一次会议七人参加,第二次会议二人参加,第三次会议三人参加。没来参加会议的人到底是什么原因,怒气值不够放不出必杀了么?
像这样同学朋友通过网络聚集起来一起做一件事不可能有什么强制性的制约措施来让每个人都开足马力全力以赴,大家都是在靠热度做事。热度这东西很好,可以让人在干活儿的同时获得生理上的快感,唯一的问题是热度不持久,而且这个问题不是你每天灌两三瓶蓝色小药水就能解决的。
我不想说热度用完了就要用责任心来继续做下去什么的,这么说了就好像在说大家做事没有责任心一样。大家每个人都不容易,都有自己的事要忙。我只是觉得要找到一个稳定的团队,能够始终保持某种程度的效率把一件事做完实在是太难。
谢为然说你再去写篇日志找点程序员吧,随着会议讨论的深入,大家都发现有不少问题需要在程序上进行试验和尝试,而我现在还在测试网络连接方面的东西(比如用户验证)。于是我说,是啊,再来点程序员就好了,就要烤箱用200度预热15分钟之后再用180度烤30分钟加上奶酪胡椒粉的那种好了。
但是我真的不知道这篇日志该怎么写。
我很想把要求写得很详细,比如像这样:
一 共通要求:
1 C#语言
2 知道如何利用msdn网站或VC#附带的帮助文档查找函数及类定义
二 分类要求:
1 网络编程:socket编程经验 (主要任务是编写关于网络连接方面的代码,尝试实现各种游戏需要的功能)
2 游戏系统:对算法与数据结构掌握较好 (主要任务是编写游戏的主要逻辑代码,使用合适的算法与数据结构)
3 图形编程:2D图形API编程经验 (主要任务是尝试使用slimDX编写2D图形引擎)
但是根据以往的经验,这样的日志后面只会发现诸如“牛B”,“看不懂”一类的回复,所以日志不能这样写。
那么如果按照上次召募游戏策划那样的风格去写会怎样呢?
什么大家“一起燃烧青春热血”,“一起做有趣的事”,或者“只要有兴趣就行了”。结果就是大家刚来的时候热度满点,战斗力比超级赛亚人还要高几千万,一个星期以后热度耗尽,战斗力就算用上显微镜还要滴点苏丹红染染色才能找得到。
好吧,这其实还是一篇召募文。只不过就像命题作文题目明明是“一件难忘的事”,整片文章却在讨论什么样的事才能算是难忘的事,老师没有觉得你在无理取闹给你0分而是判你走题给你50分已经算相当客气。如果没有这样的觉悟的话,还是老老实实写点小明在公共汽车上给老人让座云云。
31/10/2009
今天把多人聊天的demo完成了,运行服务器端的程序之后,用户就可以使用客户端程序连接服务器,并和其他连接到服务器的客户端进行通信。
服务器接收客户端发来的消息,对其进行一些处理后再发送给其他客户端;客户端接受用户键盘输入的消息,将它发送给服务器,再从服务器接收来自其他客户端的消息,并把它显示在屏幕上。
到这里,关于网络连接、通信这些基础技术的尝试已经完成。接下来要做的是针对如何实现某些特殊的功能,进行进一步尝试。
下一个demo,我想重点考虑如何实现让多个玩家在同一个场景中互动。demo可以做成一个“玩家们在迷宫中探险”这样的小游戏。
对于多线程,我仍然有不少地方不明白。这次的问题是CPU的占用率。
我在服务器端的主线程中使用了一个while循环,在每一次循环中程序遍历所有与服务器相连的客户端,从这些客户端接收消息,再将服务器处理过的消息发送给客户端。消息的接收和发送都是以多线程的方式异步完成的。然后我运行这个服务器端程序,CPU占用率直接升到50%。
接着我换了一种代码的写法。我把刚才的整个while循环剪切粘贴到一个叫Update的函数中,然后新建一个线程,让这个线程去执行Update函数。而在主线程中,我还是写了一个while循环,但在这个while循环里,我放的是类似这样的代码:
String str = Console.ReadLine();
if (str.Equals("quit"))
{
break;
}
ReadLine是一个同步函数,他在读取到用户输入之前会阻塞当前线程。程序用这个函数读取用户输入后判断这个输入是否是字符串quit,如果是则退出循环,中止程序。然后我再次运行程序,奇怪的是,这一次CPU占用率完全没有明显的提升,和平时一样在5%以下波动。
第二种代码的写法和第一种相比,不但没有减少程序的工作量,甚至还增加了一点东西,但是CPU占用率反而变低了。这到底是何解?
我不记得是下学期还是明年,我们会有Concurrency这门课(我也不知道这个词该怎么翻译,大概就是“并行”之类的意思),也许到时候我能对多线程有更好的了解。
29/10/2009
又不是开心农场。
我在想如果把这一个多GB的图形资源丢掉,那么美工的成本就可以省出来用在系统设计上(不过好像3D模型一个也要好几个MB,所以估计也省不出多少成本来)。但是好的系统和好的画面哪个更能吸引玩家这个问题不容易得出结论。
程序方面这一个星期以来进展不大,又是在多线程的问题上遇到了困难。
异步函数本身不难理解,就是用线程池里面的一个空闲线程去做一件事情。但是这个异步函数还可以拥有一个回调函数,这就让人产生不少疑惑的地方。
网上找到的关于回调函数的说明大概有这么几点:
1 它和异步函数使用同一个线程,并在异步函数执行完毕后被调用;
2 它从异步函数那里接收一个实现了IAsyncResult接口的对象作为参数,这个对象有AsyncState和IsCompleted属性。AsyncState属性用来获取一开始传递给异步函数的那个Object对象,相当于起到给回调函数传递任意类型参数的作用。IsCompleted属性表示异步函数是否完成,由于回调函数必然在异步函数执行完毕后调用,所以在回调函数中这个属性肯定为true,这个属性的作用是当不使用回调函数时,可以在主线程里利用它判断异步函数是否执行完毕(不使用回调函数时,这个IAsyncResult对象可以通过异步函数的返回值得到)。
比如像这样(iar是一个IAsyncResult对象):
iar = xx.BeginXXX();
while (! iar.IsCompleted)
{
//更新UI并响应用户操作
}
现在仍然不太理解的是和开始异步的BeginXXX相对应的EndXXX的作用。msdn上查到的解释是等待异步调用的完成。
如果把这个函数放到主线程调用,那么它会在异步调用完成前阻塞主线程。问题是把这个函数放到回调函数里到底是什么意思?
如果说NetworkStream的EndRead函数还能返回读取到的byte数的话,像TcpClient的EndConnect这样什么都不返回的函数是怎么回事?
这次的demo估计还要过一段时间,我打算等完成多人聊天功能之后再让大家测试(之前试着写的一个demo线程之间的关系被我弄得乱七八糟,一运行就CPU占用率百分之百直接挂掉)。
另外就是希望这周的会议能在建筑的问题上取得进展吧。
20/10/2009
Civilization advances by extending the number of important operations which we can perform without thinking about them.
这是存在于一本二十世纪初数学教材中的一句话(我不是说我闲到有空去找一个世纪前的书来看啦,只是在其他书里面看到有人引用),把它抄下来在设计游戏的时候说不定能成为灵感的来源。
建筑判定的问题感觉相当难办,要判断人在不在建筑里,就要先判断这是不是一个建筑,麻烦得很,麻烦得很。
但是又想到,当初之所以会产生需要判断人在不在建筑里的问题,是因为我们打算给建筑增加一个隔断声音传播的特性。所以如果反过来想一想的话,假如我们不给建筑以隔音的特性,那么我们就不用再判断人在不在建筑里了。而一旦不需要判断人在不在建筑里的话,那些墙、柱子什么的是否构成一个建筑也不用判断了,因为只要设定墙的作用是阻断两个格子之间的通路,门的作用是存在打开和关闭两个状态等等如此的基本性质之后,建筑这个概念就可以忽略了。但这样随之而来的问题是,屋顶也变得没有用了。
嗯,再考虑看看。

神OP,外加连续三话都保持同样的高水准,不可谓不是本季动画的神作之一。我本来只是因为看了之前的禁书目录,所以打算看看试试,结果这一部的质量竟然比禁书目录要高出许多(难道是我的错觉吗 =3=)。追看确认。
另外求此图的高分辨率版。
上周末玩了一下信长之野望天道,用1546年的织田家,先灭了松平(因为之前不小心把德川家康的老子砍了,结果德川跑去今川家了)、筒井,接着又在1552年灭掉今川(这下终于收到德川,但是今川义元被武田挖走了……),织田家已经拥有六座城,三十万兵力。然后我就让电脑自动打,电脑一路高歌猛进,打了三十年统一全倭岛(在电脑进攻最后一座敌方城池的时候重新控制织田家,最后仍然算你完成了统一,可以看到结局动画并获得统一奖励)。
17/10/2009
第一次开会难免手忙脚乱,出各种状况,但总体来说今天的会议还算比较有成果。
下面是会议的内容提要:(如果需要完整的会议发言记录,请联系郭跃尘)
一 一个格子有多大 => 一个玩家占一格 => 玩家移动时重复输入指令很麻烦 => 玩家可以普通移动或在区域间传送 => 玩家可以事先设定好移动路线
二 说话声音可以传多远 => 大喊,普通,小声分别对应三种声音传播距离
三 可以隔离外界声音判定的会议室 => 没有特殊建筑,建筑的用途由玩家自行决定 => 建筑的大小由玩家自行决定 => 将建筑抽象成墙,柱子,顶,和门 => 如何判断玩家位于建筑内部还是外部 => 如何判断地图上的墙,柱子,顶,和门是否构成一个建筑
四 物品私有还是公有 => 由玩家自行决定部落的所有制=> 玩家只能使用被玩家带在身上的物品,玩家可以捡起任何不在其他玩家身上的物品 => 建筑物是否也有所有权 => 任何人都可以进入门没有上锁的建筑 => 部落可以指定对于偷窃行为的处罚措施 => 游戏中没有系统级别的私有财产设定,玩家只能尝试采用各种行动来保护自己的私有财产
五 如何防止游戏外交流 => 没有地名,部落名,和玩家名 => 玩家之间如何互相识别 => 玩家脸部特征,身材,衣着,装饰品
之前的一篇日志里提到了“命令行模式下如何能够在玩家输入信息的同时显示新接收到的消息”这样一个问题。这个问题现在已经解决,具体方法是这样:
在主线程中使用Console.ReadLine以阻塞的方式接收用户输入,在从线程中接收网络中的消息,然后配合Console.MoveBufferArea函数进行消息的显示。
解决这一问题后,就可以在命令行模式下实现一些简单的图形化。比如用各种符号来表示不同的物体,从而显示玩家周围的情况。
关于内网主机做服务器的问题,今天从高手处问到的结论是,目前没有什么比较简便的软件实现方式。要实现的话,都要对接入公网的那台机器做改动,也就是说首先就需要一个做改动的权限。
那么等到以后demo完成,进行测试的时候,我尽量每天开机,但是开机时间不能保证,一般是在GMT+1的下午和晚上,国内的话应该已经半夜了。
12/10/2009
没办法,本来这些东西都准备作为保留节目,在《关于大型多人在线火箭推动式榴弹程序现状之分析及新可能性之探讨》中呈现给大家的,但现在为了这一篇召募贴的需要,就让我提前拉开幕布吧(坚定的眼神望向远方)!!
我想要做一个网络游戏,所以在这里发一篇共同制作人召募贴。我会先说明召募的条件,然后再介绍一下这个我想要做的网游,最后讲一讲加入共同制作的人需要做的工作。
那么以下就是召募条件。
1 你不需要会编程。真的真的,哪怕从没听说过编程二字都没有问题。
2 你不需要是那种什么游戏都能立刻理解系统,轻松掌握诀窍的骨灰玩家。你可能会问,那我要不要写一篇500字的关于游戏产业现状或者对某个游戏的关卡设计进行分析的小论文?答案当然是不用。
那么说了这么多不用不需要,唯一一点必须满足的条件是什么呢?那就是:
3 在看完了下面对于这个游戏的介绍后,你要觉得“嗯,好像还挺有意思的”或者“哎呀,这样的游戏我真想早点试试看哪”。
如果以上三点都没有什么问题的话,那么欢迎和我联系。
下面就来说说这个游戏的大致情况。
我之所以想做这么一个游戏,主要是觉得现在的网游已经陷入了一种单调的套路中,大家都在做同样的东西。
网络游戏玩的到底是什么?我的看法是,网络游戏提供给玩家一个向别人炫耀的平台,玩家在这个平台上向其他人炫耀自己的等级,自己的装备,然后就是什么声望,荣誉之类的东西。玩家在网络游戏中做着和单机游戏同样的事情——用时间换取自己角色的能力提升,唯一的不同就是现在你可以让其他人都知道自己的角色能力提升了,或者获得好装备了。
以上几点,难道就应该是网络游戏的定义吗?我觉得这里面还是有可以改一改的地方的。
首先就是让网络游戏拥有和单机游戏截然不同的玩法,玩家要做的不再是打怪练级或者刷各种东西,和其他玩家一起去完成某件事情才是能体现网络特性的玩法。其次是改一改可以炫耀的东西,不管是等级、装备或者声望,这些都是可以通过时间换取的,等级只要杀怪做任务就行,装备只要刷副本杀Boss就行,这样一来各位玩家炫耀的其实只是自己的耐心和毅力而已。如果我们让玩家的角色会真正死亡,然后把可以炫耀的东西改成角色在游戏中的经历怎么样?角色脸上有一道很长的刀疤,那么这位角色大概是经历过恶战的勇士;角色的胸口挂着一段罕见的骨质饰物,估计这位角色应该是位打倒过各种奇虫异兽的出色猎手。
也就是说玩家不再用游戏时间来炫耀自己的耐心,而是和其他玩家一起,用角色仅有一次的生命,去体验游戏中的各种事情。这就是我想要在将要制作的游戏中体现的要素。
而游戏的具体内容大概是这个样子。
游戏发生在远古时代,原始人类组成了一个个部落艰苦地生活着。玩家需要扮演某一个部落中的某一个原始人,和自己的族人一起战胜由其他玩家组成的部落,最终在这场生存的竞争中存活下来。
游戏中没有任何由系统制定的社会管理系统,玩家在部落中担任何种分工,部落中的资源要怎么分配,以及部落成员采用何种管理制度,这些都要由玩家之间自行讨论决定。
游戏中也没有任何npc角色。玩家的任何行动都将改变这个世界。玩家可以探索世界,发现新的资源,发现其他部落。玩家可以制作工具武器,发现新的科技。玩家可以在世界的任何一个地点建造房屋,围墙,或是为自己的族人们提供一个安全的避风港,或是为采集距离较远的资源建立一个中转站,或是为了进攻其他部落建立一个临时营地。每一个角色在世界中都是微不足道的一份子,同时又在为改变这个世界默默地贡献着力量。
目前需要做的工作主要是游戏系统的设计。这个游戏目前还只是一个如同草稿纸上的涂鸦一般的初步构思,我有了一些想法,但是具体要怎么把这些想法实现出来,还需要大家的热情和力量。
游戏中要有哪些猛兽,有哪些可利用的资源,又有什么科技可以研究,有什么建筑可以建造,这些都需要进行设计。还有就是怎么样提供一种机制,让玩家可以自行产生属于自己部落的社会管理系统,比如说要怎么样让玩家从公有制发展到私有制,或者玩家愿意始终保持公有制的形式。需要设计的东西还有很多,这里只是举几个例子。
那么差不多就是这样。
二零零九年十月十二日
《还没有决定名字的网络游戏》制作委员会
11/10/2009
今天终于下定决心开始写代码了,可以说这是五月病症状有所缓解的好兆头么?
考虑到十一月初有期中考,虽然不是决定性的一击,但也影响到期末的bonus,所以这次的《石头剪刀布OL》还是慢慢来。
今天主要尝试了建立简单的TCP连接,并在两台主机之间发送信息。写完demo找几位同学测试了一下,发现凡是内网用户都不能作为TCP连接的服务器端,但是他们可以作为客户端去连接一个拥有外网ip的用户(我在宿舍用无线上网居然还能分到一个外网ip,全世界总共2^32个ip地址就被我占掉一个,在这一点上不得不承认瑞士很牛叉)。
(在写这篇日志的时候突然想到,如果两个内网用户和同一个外网用户分别建立连接之后,外网用户可以把内网用户建立连接时使用的外网ip地址和端口号分别发回给内网用户,然后这两个内网用户是不是就可以使用这个ip地址和端口号来直接建立连接了呢?在计算机网络的书里面写了,NAT其实是利用端口号来进行ip地址的扩展的,主机的内网地址和管理内网的服务器的外网地址以及这个服务器的一个端口号有一一对应的关系,那么有了这个端口号是不是就可以实现连接呢?)
接下来的一段时间仍然是进行未掌握技术的尝试,大概有以下这么两点:
1 实现多客户端对单一服务器的连接
*服务器如何检测客户端是否已经断开连接(网上的结论是用C#的话没有直接的函数能够实现这项功能,解决的方法是服务器端定时向客户端发送确认信息,如果收到客户端回应就表示客户端仍然连接,否则表示连接已经断开)
*各个客户端之间如何通信(也就是说服务器端需要提供一种标记客户端的机制,等于是给每个客户端一个名字。这一套标记要能让连接到服务器的每一个客户端知道,而且还要根据客户端的连接情况时刻保持更新)
2 实现命令行环境下的多线程消息收发机制
如何在用户输入信息的同时显示新接收到的消息(把程序图形化就不会有这方面的问题了,但是和C#搭配的图形API我只会用XNA,而用XNA的话就要先安装一大堆微软的补丁才能运行程序)
完成以上尝试之后,就要对代码进行整理,重写,并封装,做成一个可以重用的如dll之类的东西。
再往后才是设计游戏,写游戏本身的代码。这部分工作其实是有可能和上面的那些尝试工作一起进行的,比如你是个双头巨人,然后某个法师好心给你用了个奇迹术让你不再弱智,同时你全身挂满各种+1、+2直到+5智力的斗篷或是戒指项链护身符。但是在现实世界里,这些都不可能发生,唯一可能的只有去绑架一个会写程序的游戏策划来,然后再骑马滴XX灌XX地调教他,让他死心塌地地从了你,从此两人就一直幸福地生活下去,不对,是从此他就帮你毫无怨言地做策划,写试玩demo。
明天要看数学了,还有vhdl的作业(要做一个ALU和一个内存),还有Scala的编程项目,还有……
不能再列举下去了,一项一项列举出来只会发现时间完全不够用,一件接一件地去做才是把事情全部做完的正确方法。
07/10/2009
难怪有时候wifi会在已经连接网络的状态下提示“无线网络已连接”。
又到秋风送爽的时节,作为祖国的花朵,新世纪的阳光好少年,此时此刻我沐浴在祖国六十年生日的和谐光辉下,浑身power max。
关于这一季动画的扫雷请看这里,这位同学的口味和我惊人地相似,可以说我基本差不多完全同意他的看法。天体战士桑雷德出第二季了,华盟字幕组迟迟没有动静,于是我最终选了元火字幕组,因为据说这些人是北大动漫社的。
嗯,顺便说一句,我的专家级扫雷最好成绩是一百七十九秒。
计算机网络讲完了应用层的种种协议,下周应该就要开始socket编程了。到时候欢迎没有被NAT遮挡,拥有外网ip地址并且使用windows操作系统的同学来帮助我测试demo,先做一个《石头剪子布Online》好了。
学校的上机作业都要求用Java来写,但是考虑到Java程序难以实现“双击运行”,在测试的时候可能会遇到一点困难。所以游戏方面的demo打算全部用C#来写,这样的话基本上只要是windows系统,运行应该都没有问题。
06/10/2009
a short-sized sock, typically worn by Internet specialists.
这是今天计算机网络课堂小测验中一道问什么是Socket的问题的A选项。
开学第四个星期了,这学期本来每人只要选一门课就够了,结果我多选了两三门,一个星期的课时就从早上到晚上排得满满当当。
高达蛋蛋补完了,感想是不愧于新世纪高达之名的作品。第一部给人的感觉有点莫名其妙,但实际上故事从第二部才真正开始。不过既然这样为什么不把第一部的内容再精简一点,用两三集一口气解决掉不是可以让整部片子更紧凑一些吗?
这学期买了四本书了,好贵。
一本是计算机网络,这门课我期待已久,所以老师说了参考书名之后,没有犹豫一下课就去书店把书买到手,现在每天坐地铁都抱在手里看。第二本是计算机结构,据说做CPU是在第二学期,心想不能轻视,于是又买了。第三本是高级编程课的参考书,我本来以为这门课是要开始讲C或者C++,结果讲的是一门叫Scala的语言,之后好像还要学Lisp。第四本是线路信号,感觉这门课应该在去年上信息学之前上,很多原来模模糊糊的概念到上这门课的时候才发现原来是这么一回事。
最后就是如题的预告,大概一两个星期后完成。
29/08/2009
回到瑞士三个星期了,和同学一起搞网站,和妹子出去玩,再顺便办各种手续。
关于这个ToMyLab,我是负责网页设计的,这几天一直在看CSS的书,终于小有成果:

本来排版用的是绝对定位,后来发现用了绝对定位那个在页面最下面的版权申明条不好搞。因为内容区域和边栏区域的长度都是不确定的,而且也无法确定哪一边更长一点。最后改成了float定位,问题解决。
但是这个页面在使用ie6打开的时候,无法居中,其他格式都正确。
学校那边我试着去申请做助教,前几天刚发出申请书,希望能够被选上。助教的工资是一小时二十四瑞郎,一个星期去四个小时的话就是九十六瑞郎,一个月按照四个星期算,就有三百八十六瑞郎。嗯,我看看,第一个月买psp3000,第二个月买ndsi......不对不对,这些钱当然用来付房租。
今年和妹子继续瑞士游。先去了意大利语区的Lugano,在旁边的一个叫Melide的小镇上有一个瑞士微缩园,里面是瑞士各地著名建筑的微缩模型,介绍用的小册子还可以用作瑞士旅游指南,挺有意思的。之后去了旅游胜地Zermatt,穿着一件长袖T恤坐火车上到山顶才发现这里只有七摄氏度,去年去了一次Zermatt以西一个叫Grimentz的小镇,那里温度并不太低,而两地又靠得很近,我就以为Zermatt也差不多。
这两天心血来潮重新开始打三国志英杰传,玩到郭图张郃追刘备的那一战,刘备二十五级,其他全员二十级左右,而之前离队的关羽已经将尽三十级,张飞也有二十四五级的样子。我看网上说这一关可以在一开始直取左上方树林,在那里和敌人开战,最后把郭图混乱掉再让刘备逃跑赚五十点经验。我照着试了两把,结果在树林里被郭图的火龙计烧得死去活来。再到网上仔细一看,写攻略的那人的截图里面,全员三十级左右,我可是每关把策略值用光了还用自己和敌人的军乐队补策略继续牵制激励假情报拼了命在练级的呀,绝望了……
马上要搬家了,还在同一幢建筑里,只是换了一间房间。房间里有厨房和冰箱,但是没有洗脸台,没有镜子没地方挂毛巾,晾衣服似乎也有点困难,这些问题要想法解决。今天下午加晚上要全力以赴,争取一天搞定。
SOS团终于从循环中解脱出来,开始拍摄ミクル大冒险。这次的循环也算是一大奇观了,前显然不见古人,后也未必会有来者。
化物语继续看下去觉得还可以,习惯了风格就好了,故事还蛮有意思的。
Suara的新专辑不错,可以听的歌挺多的,早上起来打开电脑就用千千静听放歌,然后刷牙洗脸吃早饭。
01/08/2009
大家好,我们又见面了,我是前资深乱按型格斗玩家。
在这一讲中,我们将在上一讲介绍的硬直和硬直取消系统的基础上,更进一步地介绍一些仅由两招(即由后一招取消前一招)组成的连招。
那么闲话少说,就让我们赶紧开始吧。
0 波 –> 必杀波的简易出招法
在上一讲的最后我们提到了一个用必杀波取消波产生的连招,不知道大家练习得如何了。
如果有谁还不能成功发出这一连招的话,那么我有一个好消息要告诉他,对于这个连招来说,除了按照出招表上的按键指令输入外,其实还有一种简易出招法。这个方法就是连续按两次下前拳。先按下前拳发出波,紧接着再按一遍下前拳,隆就会摆出必杀波的架势,发出必杀波。
使用了这个简易出招法后,相信大家即使手指速度并不太快,但只要按键准确就也能轻松发出这一连招。
1 简易出招法成立的原因
上面介绍的连招简易出招法是不是非常实用呢?本来需要按三次下前指令,现在减少到只需要按两次。而且由于两次输入的是完全相同的指令,这个连招练习起来应该也很好上手。只要按键的时候不慌,把每个键都准确按下,这个连招的成功率可以轻松达到百分之九十以上。
那么说到底为什么这个连招会存在这样的简易出招法呢?难道是游戏里的bug?
关于这个问题,我在网上并没有找到什么详细的解释,那么根据自己的猜测,大致可以这样理解:
玩家首先按下了下前拳,系统判定角色将发出波,但这时系统并没有将玩家刚刚按下的下前方向删除掉,这两个方向按键仍然保留在按键队列之中。于是当玩家再次按下下前拳时,和之前保留在按键队列中的下前方向结合在一起,就变成了下前下前拳的必杀波。
这个解释并没有什么根据,只是在逻辑上感觉这样子可以说得通。在街头霸王四中,还有很多招式或连招拥有简易出招法,如果能够熟练掌握这些小技巧,玩家就能够大幅度地提升各种招式的出招成功率,从而也就能间接地提升自己的游戏水平。
2 2D格斗游戏战术理论
在继续下面的内容之前,我想有必要先提出这样一个问题:2D格斗游戏到底是一种什么样的游戏,也就是说对战的双方较量的到底是什么。
说实话,像我这种被大家所熟知和喜爱的资深乱按型格斗玩家,在之前的格斗生涯中从未认真考虑过这个问题。因为乱按流的的精髓与真谛就体现在一个“乱”字上,如果把这种理论味道极重的问题想清楚了,反而会对乱按流技术的发挥产生影响,无法打出一个资深玩家的真正水平。
所以我也是最近才开始考虑这个涉及到格斗游戏本质的问题,根据我的理解,我认为2D格斗游戏其实是一个寻找机会给予对手尽量多的伤害的游戏。
玩家双方在游戏中你来我往,这之中某一方就可能出现破绽,另一方此时就要抓住破绽,尽可能多地给对方造成伤害。哪一方更善于发现并利用对方的破绽,哪一方能够在抓住破绽后一次造成更多的伤害,哪一方就更有可能赢得游戏的胜利。
根据这个理论,我觉得练习格斗游戏应该先练习各种连续技,掌握造成伤害的能力,培养基本功,之后再通过实战练习把握机会的能力,从而进一步提高实力。
3 前重拳 –> 升龙拳
现在让我们再来学习一个简单的连招。
前重拳是可以被升龙拳取消硬直的,根据这一点,就有了前重拳接升龙拳的连招。
升龙拳的按键方法是前下前拳。在靠近对手的时候,先按前重拳,这本身是一个两连招。接着在两击都命中对手拳头将要收回时按下前下前拳,隆就会跟着发出升龙拳,全部命中后一共是三连招。如果角色当前拥有至少一格或者更多的气,则在发升龙拳时可以同时按下两个拳(指按下轻中重拳中的任意两个按键),这样就会消耗一格气发出EX版的升龙拳。EX版的升龙拳是两连招,于是整个连招合在一起就能达到四连招。
这个连招完全命中的话可以对对手造成四分之一多一些的伤害,相当可观。如果接的是EX版的升龙拳,伤害似乎仍然是比四分之一稍多一些,所以实战中可能不值得花费一格气去使用EX版的升龙拳。
4 升龙拳的简易出招法
发出升龙拳需要按四次不同的按键,对于手速慢一点的玩家来说如果单独发可能还好,但是在发上面的连招时要用升龙拳取消前重拳,这时可能就会有点来不及。
其实升龙拳也是有简易出招法的:连续两次同时按前和下两个方向键,再按拳。这样发升龙拳就变成连续按两次相同的按键再加一个拳,确实简单不少。这里唯一要注意的是,前和下两个按键要确实同时按下。
另一种简易出招法是:按住下方向保持蹲位,然后连续按两次前,再按拳。和第一种简易出招法一样,出招按键都变成了连续按两次相同的按键再加一个拳。但是这种方法的特点是可以让角色在保持蹲位时也能立刻发出升龙拳。
5 蹲重拳 –> 升龙拳
除了前重拳外,蹲重拳也是可以被升龙拳取消的。
让角色靠近对手后,保持蹲位出重拳,然后发出升龙拳就可以打出两连招。如果用EX版的升龙拳取消则一共是三连招,不过和第三点介绍的连招一样,三连招造成的伤害并不比两连招要超出多少,都是差不多四分之一多一些,所以消耗一格气出EX升龙拳可能还是不太划算。
在使用这一连招时还有一个小技巧。因为蹲重拳只是一击,所以留给玩家按升龙拳的时间比较少,可能即便使用了简易出招法,升龙拳也会很难出成功。
对于这个问题,我们可以这样做:先按住下保持蹲位,然后连续两次同时按重拳和前方向键,最后再松开下方向键。因为是连续按两次相同的键,连招应该就能比较容易地发出了。
这一讲我们重点介绍了利用升龙拳取消两种重拳产生的连招,以及它们相应的简易出招法。
两个连招都能一次对对手造成超过四分之一的伤害,可以说效果相当不错。但是这里仍然存在一个问题,那就是两种连招都需要以靠近对手为前提,如果距离对手过远,则第一下的重拳就不能命中,当然也就不能再用升龙拳取消了。那么到底要如何快速接近对手呢?
我是前资深乱按型格斗玩家,我们下一讲再见。
31/07/2009
格斗游戏如果仔细玩的话,其实也很有意思,问题的关键在于要如何从乱按流入门。
唉——我作为一名从FC街头霸王时代就一直执着地使用着乱按流的资深乱按型格斗玩家,最近却不得不很遗憾地告诉大家,唉——从此格斗界又少了一名乱按流的顶尖高手。
格斗游戏入门有很多难点,其中最重要的一点在于那些已经入门的玩家急于让大家知道自己已经入门,所以故意摆出一副专家教授的姿态。
倒地起身不叫倒地起身,要叫“受身”;有节奏地快速按键不叫有节奏地快速按键,要叫“目押”。
说完了日语还要接着说英语。前冲不叫前冲,要叫“Dash”;取消硬直不叫取消硬直,要叫“Cancel”。
说完英语还不够,还要拿阿拉伯语当饭后甜点。前下前不叫前下前,要叫“626”;后下后不叫后下后,要叫“424”。
好好的汉语不说,非要每句话里带这么点外语,入门能不难么?
以上是一些牢骚话,下面我讲一讲这几天玩街头霸王四游戏的一些感想,与大家分享游戏的入门心得。
0 选一个容易练习的角色。
先选一个比较容易练习的角色,就选那种不用什么连招也能打的像我这种资深乱按型格斗玩家最喜欢用的角色好了。
一般来说,一款格斗游戏其背景故事的主角都是这种类型的角色。
对于街头霸王四来说,我们可以选择隆(或者叫Ryu,小白)作为练习角色。
1 记住角色的招式。
找到这个角色的出招表,对照出招表,将每一招都演练一遍。习惯看出招表演练然后背记招式永远是入门的第一步。
一般一个角色的招式最多不会超过三种出招模式,比方说一个下前拳,一个下后腿,再一个前下前拳,其他招式都是在这些招式的基础上变化一下拳腿按键得到的。
同样的下前,加轻拳和加重拳就会得到不同的招式效果。在演练招式的时候可以把几种组合都试一试。
有时按下招式的键之后会发现角色什么都没有做,在排除按键错误的情况下,可能是敌我双方的距离太近或太远。有些招式要求双方的距离要足够近,比如那些摔投类的招式。出现这种情况的时候,可以让角色向对方靠近一点再试。
这一步主要是熟悉角色的招式,要能够知道这个角色都有哪些招式可以用,这些招式的对应按键是什么,有效攻击距离有多少。
2 硬直和取消
第二步是要了解两个术语,一是硬直,二是硬直取消。
在第一步演练招式的时候,大家应该可以注意到一点就是,连续按两遍同一招式的按键后,似乎并不能让角色连续发出两遍同一招式。这是因为,根据游戏系统的设定,在一个招式结束之后会有一段时间角色不接受玩家的大多数按键指令,也就是说,在这一段时间里,大多是招式的按键是无效的。这一段时间就被称作硬直。
注意刚才在解释硬直概念的时候,我说的是在硬直时间内,角色不接受大多数招式的按键指令,换句话说,有一部分招式的按键指令,即使在前一个招式的硬直时间中也能够被接受。在前一招式之后紧接着使用这种特殊的招式的话,前一招式的硬直时间就会直接消失掉,这种特殊的招式就会直接被角色使用出来。这样一种令硬直时间消失的小技巧就叫硬直取消(或者直接简称为取消)。
但问题是,并不存在一种通用的能够取消全部招式硬直时间的特殊招式,同时也不存在一种通用的能够被全部招式取消其硬直时间的“前一招式”。即是说,取消硬直的后一招式和被取消硬直的前一招式通常呈一一对应的关系,只有特定的招式才能被某个特定的招式取消硬直。
而所谓的连招就是以取消硬直为基础诞生出来的技巧,利用招式的硬直取消特性,让招式之间不存在明显的间隙,一招紧接着一招发出,从而实现对对手的连续打击。
3 波加下重腿
隆对付电脑有一个比较实用的战术就是波加下重腿。
当电脑距离自己较远时,就用下前拳发蓝色波球进行攻击。如果对手近身,则按下方向键令角色蹲下,然后按重腿可以将对手绊倒。绊倒对手后立即向后再次拉开距离,继续用波攻击。
这个战术练习熟练后,在对付低难度电脑时经常能让自己不受任何伤害地击败对手。
4 训练模式
街霸四中带有一个训练模式,在这一模式中,我们可以进行各种练习。
这里需要说一下的是训练模式的几个参数选项。在进入训练模式后按下ESC键,然后选择Training Option,进入训练模式选项画面。
前面几个参数用来设置电脑对手的行动方式,这里要把Guard设置为Auto,即自动防御模式。在这个防御模式下,电脑角色不会防御我方的第一招,但是在之后的一段时间内电脑角色会尽可能地防御我方接下来的招式。使用这个设定的目的主要是为了练习连招,如果连招使用成功的话,电脑角色会无法进行防御,所有的招式都应该成功命中。如果在连招的过程中电脑角色防御住了我方的招式,那么我方的连招肯定出现了失误。
接着把显示按键的选项设为On,即打开按键显示功能。此时游戏画面的左上方会显示出游戏捕捉到的玩家按键情况,有助于玩家检验自己按键的准确性。
5 隆的简单连招:波 –> 必杀波
进入训练模式并按照上述第四点的方式设定选项后,我们来试着使用一个简单的连招。
波:下前拳
必杀波:在蓝色气槽拥有四格气时 下前下前拳
先按下前拳,紧接着快速按下下前下前拳,这里要求按键速度够快并且准确,如果按键正确的话,角色会在发出波之后紧跟着摆出必杀波的架势,然后发出必杀波,两颗蓝色波球会先后击中对手。如果这两个招式分开发出的话,第一下的波能够击中对手,但是第二下的必杀波却会被对手防御住。
第一次讲座的内容就到此为止,第五点中介绍的连招其实要发出来还是有一定难度的,关键是按键的速度和准确性。如果按照我上面说的方法能够成功发出这一连招的话,那么恭喜你,你拥有成为像我这样资深玩家的潜力。不过如果实在发不出来也不要紧,因为在下一讲中,我将介绍一种让招式更容易发出的技巧。另外,我还将介绍一些稍为复杂一点的连招。
好,我是前资深乱按型格斗玩家,大家下次再见。
28/07/2009
小镇恢复正常了。在恢复期间,小镇开放注册会员的功能,之前在渔场没有把握住机会的同学切莫再错过。
妹子今天路考。下午发短信问她情况如何,她说过了,但是被抽中夜考,我说加油一定能过。晚上又发来一条短信,说没过加三个点。我想了半天回了一条“总结经验,争取下次考过”
妹子会不会觉得我的回复太冷淡啊 =3=
瑞士一同学在去年抱回一只四核处理器,4G内存的SunFire服务器后蠢蠢欲动了整整一年,终于在上个星期六组织大家在skype上开了个会,正式开始建站。
星期天他发邮件给我说已经在服务器上布置好CMS,还做了一个讨论用的论坛。


业余游戏制作最大的难点就是游戏的图形素材,新一期《游戏机实用技术》的光盘中赠送了一款由游戏制作爱好者耗时三年完成的格斗游戏。
制作工具是2DFM,游戏中的角色全部采用真人拍照完成。
新的灵感是作业本中的战争,在作业本上进行的策略游戏,用铅笔画出建筑和作战单位,用尺子测量射程和移动距离,然后用橡皮去摧毁敌人。
24/07/2009
上次的小谜题不知道是否有人已经有答案了呢?
提示是一部推理电视剧,南京十八频道应该播过。
星际争霸2的配置要求是3G赫兹频率CPU,2G内存,1G显存,乖乖不管是家里的台式机还是笔记本都对付不了了。
一只带摇杆的USB手柄至少三十块,哪怕是些杂牌子的,罗技的要卖到两百多,吓了一跳。
23/07/2009
唉——
好久不见,大家身体都还好吗?
不知各位对这一季的动画有什么感想,说起来本次的关键是方向键失灵的游戏手柄。
顺便说一句,本人的专家级扫雷记录是一百七十九秒。
我是阳光好少年。
——猜猜看以上是在模仿谁?
下面进入正题:
Needless 四星
热门连载漫画改编,热血的超能力战斗外加无厘头搞笑,推荐
蓝花 三星
描写少女之间恋爱的百合片
充电娘 二星半
AT-X的大尺度杀必死,男主角加妹妹加青梅竹马加两位充电娘组成的后宫片
海猫鸣泣之时 三星半
孤岛上的连续杀人事件,看点在于最后的事件真相,推荐
公主恋人 二星
公主,女仆,婚约者,傲娇娘,后宫片鉴定完毕
Canaan 四星
动作枪战片
三集结束剧情进展并不快,是否精彩要看之后的发展,推荐
狼与香辛料II 三星
看过第一季的可以考虑继续看下去,毕竟萌狼萌不萌也是仁者见仁
简明易懂的现代魔法 二星半
属性不明,似乎重点是少女魔法战斗
Kanamemo 三星
一家社长是小学生的报社,讲述社员每天送报的快乐生活
化物语 二星半
唉——偷吃马头牌冷狗的犯人就是你,路人甲先生
东京M8 三星半
东京发生八级地震,姐弟二人与偶然遇见的年轻姐姐的绝地大冒险,推荐
海物语 二星半
人鱼妹妹无意中释放了被封印的邪恶力量,于是巫女变身为超能力战士拯救世界
精致的画面是看点
17/07/2009
loop仍然在继续,虽然每集都有一点点的小不同。
前几天向父母招供了女朋友的事情,他们就说,都是独生子女,要学会互相体谅,也要学会互相合作。
小镇论坛被墙有一段时间了,但是在google reader上每天还是能看见十条左右的更新,难道这些人都是从境外访问的么?
今天实习的时候把Moira看完了,又打了一会儿东方。本来还有点顾忌,结果根本没人来说上班时间不能干闲事。以后我就上午扫片,下午打飞机好了。
11/07/2009
今天见到了幼驯染,是上幼儿园时住在我家对门的货真价实的青梅竹马哟。
小时候两人一起玩过家家,一起模仿电视剧,但好像每次都是她被我弄哭之后跑回家。
上小学之后她搬家了,就没怎么再见过面。今天再见到的时候,人家已经是亭亭玉立的青春美少女了。
嗯,放到游戏里面,这也得是个Flag吧。
早上去新街口的新华书店和大众书局买书,买了两本关于Java EE的书,准备实习无聊的时候看。围棋手筋大全也好不容易买到了,两个书店里关于围棋的书都没有什么好的,全是些随便找点题目凑在一起编成的围棋入门之类的书。
晚上扫片看《海物语》,妈妈站在后面看了几分钟说,怎么都是长腿女孩子,我说,嗯。
10/07/2009
七天家里蹲结束,我跑去实习了。
公司位于南京大学校园内,叫作苏富特(soft)——旗下的一家子公司“富越科技”。公司主要接手日本方面的外包项目。除了公司的名字走日系路线之外,公司里电脑的操作系统是统一的WindowsXP日文版,所有项目的文档资料一概使用日文,代码里面给变量命名要用日文罗马字,写注释要用日文,于是理所当然所有员工在刚进入公司的时候要接受日文培训。
我第一天去上班是这周二,我在实习简历上面写自己有三年C++经验,二年Java经验,以及一年半C#经验,并且会使用DX,OpenGL等各种图形API,可以阅读英法日三种外语的文档,所以感觉相当有自信。结果晨会的时候项目小组长问我:你有没有写过Flex?
我:啥?
小组长:那有没有写过JSP?
我:就是那啥做网页的?
小组长:厄,那既然你写过Java,会不会用FrameWork?
我:F…FrameWork?
于是接下来的一整天我就坐在电脑面前把一份十几页纸的文档翻来覆去看了四遍,滚你妈的。
第二天我学乖了,带了一本编程书去。但是没想到书不够厚,结果翻来覆去又看了四遍。
第三天终于让我看项目源代码。这个项目是一个在线公司事务管理系统,后台服务器端使用Java编写,前台客户端使用Flex和ActionScript编写。
项目小组目前进度缓慢,因为他们认为日方给出的“仕样书”和“详设”尚有不明确的地方(比如画面上按钮一按下后,按钮三应该处于什么状态,画面的焦点应该在哪里等等),需要进一步确认。
第四天旁边办公室的一个女孩过来说,你把这些员工档案登录到excel文档里面。我说,哦,好的。
公司刷指纹考勤,早上八点半之前到,晚上六点下班,中午十一点半到一点是吃饭时间。
办公室是一个大房间,里面用隔板隔出了一百来张办公桌,坐得满满当当全是人。我第一天去的时候找不到空座位,小组长让我用一台被用作办公室服务器的电脑,第三天连那台服务器都被人占去,我只好用一台根本不能上网的作为内部SAP的电脑。我想那好我来自己写点代码吧,结果打开我的电脑一看,除了Office套件和用作SAP的软件之外,没有其他东西了。下星期我要带自己的笔记本去,虽然禁止连入公司网络,但至少软件我可以随便装,中午休息的时候还可以扫扫片。
说起来今天在录入员工信息的时候,发现竟然有1989年生人在去年入职,签了三年的工作合同,1988年的更是一大把。再过两年公司岂不是都要开始招90年以后的了?
嗯,说起来这次的泳装和浴衣的样式又变了。
28/06/2009
昨天下午到的,然后按照规定接下来的七天要在家中隔离观察,过了这七天以后才能出门。
msn在更新版本。