顯示具有 轉貼 標籤的文章。 顯示所有文章
顯示具有 轉貼 標籤的文章。 顯示所有文章

2012年2月24日 星期五

[轉貼]如何学好3D游戏引擎编程

如何学好3D游戏引擎编程

管理提醒: 本帖被 gamengines 从 游戏引擎(Game Engine) 移动到本区(2010-11-04)
此文为转载,但是值得一看。
此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰
——阿哲VS自己 QQ79134054多希望大家一起交流与沟通
这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上。现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多。在我没遇到U3以前,一直研究WILDMAGIC,可以说是GAMEBRYO的前身吧,他们基本框架都差不多,是完全面向对象,代码容易读,但它发展存在严重的弊端,这个也是它为什么不是牛B引擎的原因。但从渲染和动画方面来看,U3的 MATERIAL TREE 和 ANIM TREEE 是2个飞跃的,当我对我自己引擎渲染材质和光照一筹莫展的时候,MATERIAL TREE带来的希望。对比 zfx (wildmagic)gamebryo 和ogre 还有U3,各有优缺点,而且你可以看到一个引擎发展,从一个以多边形为渲染单元,变成以mesh做为渲染单元(现在很少有引擎场景管理分割多边形来做的 我始终喜欢zfx引擎,它是00-02之间的引擎,完全让你可以理解那时候显卡不是很强的时候,一个引擎应该具备的特征。对于架构来讲,(wildmagic)gamebryo 和ogre 做的很好,u3的特点就是架构乱,没有什么可读性的技术文档,研究起来十分吃力。做为一个商业引擎,对于渲染方面,我认为(wildmagic)gamebryo 输给了ogre,框架设计还有弊端,ogre确实是一个好引擎。而U3对于渲染过程,光照,阴影,就是一帧的渲染过程,处理的十分得当。动态生成shader是一个引擎的发展的必然趋势,而往往动态生成最多的,也就是材质和光照,它们不能分开,分开谈无意义,MATERIAL TREE 我始终认为是个太好的想法了,任何特效不需要程序员过多参与,美术可以搞定一切,什么水,反射,折射,这些效果,编写起来易如反掌,还可以实时光看效果。其他动态生成,也就是根据配置不同,来做处理,动态编译shader弊端太大,不能做到所有,而且不灵活,如果动态生成和动态编译合起来,简直牛B透顶了。现在我的引擎已经有了MATERIAL TREE这个功能,ANIM TREEE在制作中。
这里面我重点谈的是图形方面,略带些动画方面,一个引擎最基本的是内核,包含内存管理,文件读写,资源管理等等吧,也十分重要,我的引擎这些写的都很简单,基本都是wildmagic里面的。
我总结3D引擎编程的4个阶段
第一阶段是了解3D原理和数学基础,大学里面学的线性代数,概率统计和高等数学完全足够,在3D中都有充分体现。最好自己能做一个软引擎,这样整个3D流水线自己完全可以掌控,然后在学DX之类的API很容易。
第二阶段不要看引擎,还是应该以实现各种效果和基本算法为基础,包括各种图形特效,场景管理,剪裁算法,各种动画算法,等等,所有那些单一的算法,如果这些都不是了解很好,那么做引擎时引擎框架的接口也不会设计好!再添加这些算法和效果时 会很困难,效率也不会很高。
第三阶段,就是看大量的引擎,对引擎有很深刻的概念,3D引擎只是引擎的一部分,引擎主要是框架,如果框架搭建好了,那么引擎的效率是很显著的,其他底层细节优化,也会有明显的优势体现。
第四阶段,再好的引擎没有成功的游戏支撑都是白费,你不仅仅是做引擎,而是做的有开发价值的引擎,可以很好的为游戏服务的引擎。
下面这段话写于一年半前~~


前言
本人不才,姑且以自己经验来谈如何学游戏编程,这个话题我酝酿了很久,它确实很难写,因为我也不是资深高手,才刚刚登堂入室,游戏编程大师功力一般都十几年左右,所以让我这样的小卒写的深入浅出更何谈容易,错误出现并不奇怪,高手见笑也在所难免,请大家指正,我会欣然笑纳。但这几年走过的路,让我知道这么学是正确的,大体过程经验告诉我,这样做是对的,高手的指引告诉我,这样做是对的。
这篇文章主要讨论如何学习游戏图形编程和游戏引擎编程,告诉没有接触游戏过编程或者现在关于怎么学好游戏编程还迷惑的PEOPLE所要走的方向,完全抛开技术和代码实现进行谈论。至于游戏逻辑这几年重点没有发到这个上面上,很难总结。
经验的限制,对于如何编写一个好的引擎(至于“好”这个词都是相对而言,能做的满意就是我所期望的),至今为止我还没有这个能力,但我相信经过我的努力,不久的将来,我会实现这个愿望,因为我的一个愿望就是实现一个好的引擎。

我从下面几个方面来说明如果学习,记住只是如何学习,要想学好就要靠你自己。
1。 你真的喜欢游戏编程吗?
2。 要了解游戏编程
3。 学会读书,自学与思考,交流与合作
4。 游戏编程需要的基础知识
5。 2D游戏编程
6。 3D游戏编程
7。 游戏引擎编程
8。浅谈游戏物理和AI


一。游戏编程,你真的爱她吗?
当你听完我的介绍后,你就要决定游戏编程是否适合你。
游戏编程可简单可复杂,简单的2D 《蛇吃豆》,复杂的现在流行的3D游戏。咱们不说简单的,因为你不想学习游戏编程就为了做一个简单的游戏。确实每个人对他所向往的东西都想彻底了解清楚,可是我给你的第一个警告,复杂的3D游戏,复杂到难以想象。

1 你思想需要改变吗?

打开话题,游戏是一个结合体,她是一个音乐,美术,技术,创意相结合的艺术品,你要用艺术的眼光去欣赏的,因为好的游戏是用艺术的眼光来设计,除了某国的网游不算外,很多经典的游戏流芳百世,成为真正游戏玩家佳话。
中国的游戏为什么这么落后,你要联想下,当年中国为什么会被八国联军所侵略。腐朽的思想是根本原因,从而导致了腐朽的社会制度。游戏行业也是这样,看待游戏的中国人,始终带着眼镜,用腐朽思想看待游戏,所以现在出现腐朽的游戏行业,导致中国游戏发展缓慢,有人曾经说中国游戏不久就赶超日本和美国,我认为是扯淡,而且不是一般的扯淡,具体原因后面我会详细说明。
从小的时候,国外的电子游戏产品就跑进了我的空间,废寝忘食的玩个没玩,因为耽误学习,从此电子游戏被老师和家长全部封杀,任何事物都有利有弊,鲁迅的《拿来主义》曾说过“去其糟粕,取其精华”。在中国,电子游戏被视为过街老鼠。确实要承认电子游戏有负面影响,但这些负面影响是谁产生的,本质上是我们自己,最后本来是精华的东西从我们身边擦肩而过,从小霸王以后的国外游戏机没有任何仿造,导致了游戏机技术从此断代,现在却又想起来赶超。
而现在,国人知道努力了,国家看到有钱可赚开始支持了,腐朽的游戏思想却还在蔓延,网络游戏就是这样环境下成长的新生儿,国内网络游戏每年要大批量生产,但存活的基本没几个。不能否定,没有利益的事情没人干,但你还不能否定,有些事情即使没有利益,但还是有人干,哪怕知道自己并不能得到什么。国内的人,很少是第2种人,他们把游戏做为赚钱工具,垃圾游戏隔三差五的纷纷涌出。相比来讲,我只拿日本举例子,虽然小日本和咱们有愁,但我们不得不承认小日本在游戏这方面思想层次完完全全超越我们,他们有严格游戏教育背景,他们做一款游戏,要按照严格的流程,从设计到编程,以至最后的测试,都有着干一行敬一行的精神,否则《生化危机》这样游戏你是永远看不到的。
所以你要改变自己的思想,游戏是一种艺术品,你要有一种艺术境界来去欣赏她。

2 你有毅力爱她爱到底吗?

也许我上面的话,你还能接受,残酷的在下面,以我的经验告诉我,如果你编程和游戏理论起步是零,你要对游戏编程达到略有小成的水平最少要4到5年,我比较蠢,花了6年。这6年来,几乎每天平均学习4-5个小时左右,当然假期都要算上。头3年半基本学习计算机基础知识,包括数学,数据结构,计算机体系结构,人工智能,汇编,编译原理,操作系统,网络,软件工程,离散数学,算法分析。我们大学4年基本就学这东西,这些都是基础,游戏编程都需要,还有一个就高等物理我没有学,导致我现在对于一些物理微积分方程很难理解,当然这里并不一定是问题,只要你肯努力,没有学不会的。完全把这些学好,花4年时间真的不容易。我曾经抱怨自己没保研而痛苦的经历考研,现在我却认为是值得的,我很难有时间在集中精力的复习这些专业课了,尤其是数学。
在游戏编程中,上面的基本知识都可以用到,所以我说游戏编程很复杂一点不假。就拿游戏中最难的部分——一个好的游戏引擎来说(这里说的好引擎),世界上能把她做出来的人很少,中国更是寥寥无几。
上面只是理论基础,要走进游戏编程最基本的。过硬的编程技能更是需要的,其实这些理论学习可以和编程相结合,在编程中学习理论,为了学习理论而增长编程经验。
有了基础,你才能进一步学习游戏编程,2D游戏和3D游戏理论都要学,这又要花费很长时间,这个是我下面要详细说的。
看完我写的,你可能心惊胆寒,所以你要爱她,深深的爱她,否则你承受痛苦的时候享受不到暗含的乐趣。

3 爱她请从游戏开始。

很多人可能不解,游戏编程为什么要从游戏开始,玩游戏时,有很多潜移默化的东西影响着我们编写游戏程序,很多灵感确实从游戏中得来。一般的游戏编程高手,都是从小由于游戏对他们巨大吸引,从而走上游戏道路,虽然不是绝对,但按统计学角度讲可以说是一个事实。一个不爱玩游戏的人,爱上游戏编程的几率是很小的。其实很多人小的时候都爱玩游戏,他们都是从游戏厅张大,只有一少部分,走向了游戏开发这个行业,他们之间有着明显不同,走向游戏开发的人,是真的被游戏背后那种神秘东西所吸引,并想要揭开它,而另一些人,则是完全迎合了游戏开发的需要——玩的高兴。
我想说的是,一个游戏编程高手,必定是一个游戏玩家,他们都是从玩游戏而爱上游戏,从而走上游戏编程道路。这条路充满了荆棘,不是一般人能走到最后的。所以你一定要爱她!
当然任何事情都不绝对的,你可能就是那不爱游戏但爱游戏编程(或者和游戏性无关的那部分编程)小概率的人。

二。游戏编程,你真的了解她吗?

游戏编程,这个概念包含了很多深层次的东西。

1.广义上,我给的定义是,游戏引擎开发和游戏逻辑开发。

游戏逻辑开发是集中力量只开发游戏中剧情部分,你只需要做的是什么时候显示什么,什么时候放出什么声音,什么时候通过网络传输什么数据,什么时候这个物体或者人物做什么动作。至于底层怎么显示,声音如何处理,网络如何传输,物体动作怎么实现的,你不用关心,关心这些的是游戏引擎。所以说游戏引擎负责技术方面,而游戏逻辑负责游戏文化内涵。
成功的游戏是以好的游戏逻辑为基础的,而游戏引擎并不是成功游戏主要条件,但好的游戏配上好的游戏引擎,确实会给人一种震撼,相比同样的游戏逻辑,好的游戏引擎显示效果会给人一种全新视觉和听觉感受。
至于游戏逻辑我不想过多解释,但并不是说游戏逻辑简单,游戏逻辑也可以复杂的要命,这取决与游戏复杂程度和游戏引擎与这个游戏的关联程度。为了解释这句话,我不得不从游戏引擎解释开始。
早期的游戏是没有游戏引擎这个概念,都是一个游戏一套代码,随着游戏越来越多,大家发现开发有些游戏中,有很多可重用的代码,逐渐把这些重用代码封状起来,这就是早期的引擎。对于引擎没有明确的概念,只有好坏和适应程度之分,所谓的好坏,就是引擎支持功能和显示特性等是否strong,而适应程度是指一个引擎是否适合开发这个游戏,开发这个游戏是否要自己再编写一些额外的代码。
我举个例子
如果我用开发混斗罗的引擎(假如它有引擎)来开发RPG,和开发RPG游戏的“RPG游戏开发大师”相比,我们还要做很多工作,才能完成玩法功能一样的游戏。
所以说很难有明确的界限划分这一堆代码是否是游戏引擎,但游戏引擎的任务是不用质疑的,它的任务就是尽量不用负责底层处理,而专心到游戏逻辑上来。

2.从狭义上分,我只分解游戏引擎部分,基本包括(1)游戏图形引擎(2)声音引擎(3)网络引擎(4)脚本引擎(5)GUI(6)人工智能引擎(7)物理引擎。

(6)(7)两个不是必须的,而前5个是一个好的游戏引擎要基本具备的,其实每个游戏引擎中都具备物理引擎,只不过很多游戏对于物理要求不是很高,所以就集成到了图形引擎中或者游戏逻辑中。
图形引擎是引擎中最难的,它基本要处理游戏引擎中70-80%的工作量,它的主要任务是负责图形高效显示,包括速度和精度。后面我会集中并详细解释。至于声音和网络引擎大家通过字面就可以知道它干什么。本人对声音处理和网络传输知道甚少,说出来只能误人子弟。

至于脚本我还略有研究,我想解释下什么是脚本,游戏中为什么用脚本。脚本有时很难给出一个定义,但大家都知道那些是脚本语言,我给出的解释是用软件 CPU(虚拟CPU)来运行的编程语言就是脚本语言,软件CPU和所说硬件CPU是对立的,也就是说脚本运行与否先是关联到这个虚拟CPU,在虚拟CPU上运行,然后再又映射到真正CPU,来真正运行。这个过程很抽象,我觉2个例子,第一个就是JAVA语言,它有一个虚拟机,这个虚拟机就是软件CPU。再举一个例子,我现在要编写这样一个指令、
PRINT S 这个指令表示打印S
S代表一个万能类型。
为了实现这个指令,你首先要有一个函数来负责处理打印
比如是这样的函数
void print(S)
{
cout<
}
这里只是伪代码,只是表示这个意思。
你首先要找出PRINT这个单词,读入到一个buffer1,然后把参数读入buffer2
if(buffer1 == PRINT)
print(buffer2);
这里段代码其实就是一个软件CPU,它负责虚拟运行PRINT S 这个指令。

那么游戏中为什么要用脚本呢!最简单解释就是灵活性好。拿一个RPG游戏例子来说,游戏中有大量物品,每个物品有大量的属性,如果我把这些属性值直接写到游戏中,每一个小小的改变就要编译整个游戏,花费很多时间,灵活性很差。
如果我把这些写到一个文件中,用脚本语言来编辑,只需要编译脚本文件就可以了,当然如果你脚本是解释型的语言,不用编译直接可以运行。
当然脚本还有很多好处,主要目的还是方便性和灵活性。
其实GUI(图形用户接口)是一个重要部分。3D游戏中,出现的是大量的3D模型,这些模型是先用文件的形式存放好的,而文件里面包括的是3D数据和这些数据的组织方式。
至于数据怎么组织是你引擎要规定好的,这样也方便读取,最后把3D数据加载到内存。现在问题是3D数据上,我们怎么能有效的得到这些3D模型的数据,手工写进文本里?我靠,那是奴隶社会,SB的做法。我想你不会这么做。人类很聪明,这就是为什么人把其他动物关进笼子里,而不是其他动物把人关进笼子里的原因。既然我们很聪明,就要想一个办法快速的定义3D数据,然后保存成文件。这样一个3D编辑器就产生了。3D编辑器就是类似于3DMAX那种,但引擎中的编辑器是有特殊目的的,使用者要按照引擎指定要求编辑3D数据,这样引擎高效的显示和处理数据比较容易,至于3D数据是怎么组织的,是一个设计上的问题,由你引擎来决定,设计好坏,决定你引擎加载数据是否容易,关系到最后渲染。所以一般好的游戏引擎都有自己GUI,但你也可以用3DMAX这样的软件,然后读3DMAX文件变成自己可以利用的数据形式。
说到这里,不知道上面的概念大家是否理解,我想如果你没接触过引擎,可能真的不理解。其实我很难用简短的语言把这么复杂的问题说清楚,如果有一天你把3D学的融会贯通,你发现我说的是对的。我不知道大家是否发现一个共性的问题,有时你读一本书,无论你怎么认真把它看完一遍,你都很难掌握里面的知识,当你再认真看第二遍的时候,你突然觉得这本书没有第一次看那么晦涩难懂。有些知识都是前后呼应的,它们之间相互联系,要想完整的理解它们缺一不可。游戏编程的知识也是这样。我前面介绍的如果你看懂了,那你perfect,如果你没有看懂,也不要灰心,这里介绍的只是一个大纲,让你对游戏编程有一个了解,最基础层面的了解。

三。游戏编程,你准备好了吗?

这个部分讲解如果你想开始游戏编程应该具备那些基础知识,这样你才能接下来游戏编程学习,当然下面的有些知识,我开始学习游戏编程时,也不是都具备,但这些知识都是很容易学的知识,如果你基础好,在游戏编程中随时学就可以,不耽误你学习游戏编程的进度。我在这段最后会指出那些是必须掌握的,因为这些知识如果你在游戏编程时学习再学,时间上真的不允许。


1。书,永远是你的好朋友!
书,是你了解她最直接途径,当然我说的书还包括所有游戏编程资料。书,有好有坏,想要深刻了解她,你必须挑选精妙的好书,而且还有循序渐进的,合理次序的去读它们。游戏编程书籍大量风起云涌的出现是在2000年以后,当然2000以前也有,只是很少一部分,从2000或者以前开始就研究3D游戏的中国大哥们,现在可以说是现在中国游戏行业的鼎梁支柱。现在出版有关游戏方面的书籍大约有200左右本,中国人自己原著的书几乎没有,大多数都是翻译国外的,就有几本翻译的质量很好(翻译大哥大姐确实很辛苦,我承认这点,但拜托你们翻译前要看懂再翻译,否则望文生义,不如让我们自己看英文原版)要么自己写的也是东挪西凑的,写出来估计是想骗钱,谁叫中国人这么老实,这么好欺负了。其中大部分书籍是3D游戏的,3D游戏确实要比2D游戏难一个数量级别,如果你足够聪明,其实这些书看个几十本,写出一个在中国可以立足的3D引擎足够了。但好象这样聪明的人真的很少,有黄金的这个地方大家都知道,可是前往这块宝地的道路太荆棘,很少有人走下来。
书,大家从出生时就接触,学会读书,这四个字,很少有人能领会,你看一本书,要么否定,要么肯定,如果你还是很迷糊,要么是书写的不好,要么就是你知识水平层次有限,要么就是你根本没学会读书。我在这里只说一句话“要读好书,思而不学则罔,学而不思则怠,温故而知新”,我想高手很容易体会这句话。
想要学好游戏编程,学会读书是你要掌握的,也是你获取知识最快的途径,开始时,建议还是读一些中文的游戏编程书,因为游戏编程中充斥大量术语和名词,没有任何游戏编程概念的人,直接看英文,即使你是老外,我估计你看一会就会爬在书上,眼皮一关,口水把它淹没了。
看书后,代码一定要仔细读,而且对于初学者一定要亲自去实现,这样你才能加深理解,有时看书看不懂,一看代码就全明白了。“纸上得来终觉浅,觉知此事必躬行”,我始终坚信这句话,只有你经历了,你才能感受,就象你没有失去过,就不会知道珍惜是什么东西。
我相信既然你都看到这里了,就应该知道我上面为什么给你打好的警钟。看完书,就要写代码,最好不要一味的效仿,要有你自己的独道之处,这样才说明你认真考虑了这个问题,你也真正了解了,这个问题是什么,应该怎么解决,怎么解决最有效果。
E文书,以后就要是你老婆(同性恋除外),天天都要见面,除非你离婚了,也就是游戏编程这个爱情你不想要了,你提前离开了这个努力走到最后才能见到美好果实的幸福家庭。中文翻译一般都很慢,中文翻译出来,国外这个技术基本过时了,而且有能力翻译的人本来就少,有时间干这事的说他有病,也不足为奇,因为翻译一本太浪费时间了。所以要适应去看E文,现在没钱,就看电子的,很多国外新书,没有电子的,但电子的够我们初学的人玩很长时间,等有钱了,就直接去买国外正中的洋版,然后弄到家中,天天啃,工作时也啃,人家都会说你很有激情的。看电子的如果闲麻烦,就打印下来,打印下来还是花不了几个钢币的,和买一本中文差不多(大家不要哭穷,一本好书100元我认为很值得,里面技术如果你掌握了,你想想,大把大把的票子就进你口袋里,很多人买来不看,天天还抱怨书贵。)
这几年来,我读过很多游戏编程方面的书,中文的基本都读过了,现在我一直在读E文书,有时到觉得看中文有些不适应,还有好多好书,我还没有读。读E文书时,如果没读懂,自己一定要去网上查查相关资料,然后集中精力把它弄懂,现在很少有看不懂的E文游戏编程书(知道我6级没过的,别用砖仍我),有些还是看不懂,确实自己水平有限,但不是因为英语问题,关于高深而复杂数学问题,即使翻译成中文,我也很难看明白。
我在后面会把所有好的游戏编程书籍都列出来,告诉大家那些可以买到,那些只有电子的。不好的书,我就不列出来了,只会浪费大家以后的时间。
2。游戏编程所需要的基础知识

我这里介绍下要做一个好的,称职的,游戏程序员所需要。学习就和盖楼一样,要想上层建筑牢固,你就要有坚实的基础,我这里介绍的基础是你从事游戏编程最基础,基础的不能再基础的东西。
2。1 数学
数学是游戏中支柱,没有了它,任何都不要谈,在你编写你游戏的时候,你就会知道,世界抽象成一堆数学是多么的神奇,突然你会觉得以前枯燥无味的数学现在是一顿大餐,但这个是霸王餐。国外人写关于引擎方面书的人,都可以说是数学高手,他们理论和实践都很厉害,让我崇拜的不得了。大学里是你学好数学的最好机会,一定要弄明白它的现实意义,任何理论都不是凭空出来的,它一定有现实基础,这个现实基础,就可以帮助你很好理解这个理论。
2。1。1高等数学——微积分理论
在游戏引擎中,很多游戏特效都是通过微积分方程来解得的,高度仿真是现在游戏的追求,真实感越强就需要越多的计算量。极限,一元微积分,多元微积分,级数,微分方程等等在游戏图形图象和物理上都有明显体现。有时一个硕士或者一个博士为了拟真一个效果要花费几个月或者几年的时间,做为一个游戏程序员,微积分到达什么层次我很难给出定义,但起码如果别人给出了原理我们能看明白,并把它实现,我觉得就很可贵了。
2。1。2线性代数和空间解析几何
在大学课本中,空间解析几何是放在高等数学书里面讲的,但游戏中,它和线性代数放到一起我认为更加合适。线性代数所有知识都要掌握,在游戏中它们比微积分体现的更淋漓尽致,理解上我个人认为相对微积分更容易。
空间解析几何主要讲向量,平面,线,体,这些东西并通过线形代数矩阵进行空间变换,最后达到游戏想要的目标。
2。1。3四元数
这个在大学里面不学数学的,估计很少有人接触,它也是来用来变换空间,理解起来不是那么容易,但最常用的就是用四元数来表示旋转。
我这里只是一概而过,上面任何知识在游戏中都有应用,但大学里的数学不是为了游戏而开设的,所以和游戏中用的数学在知识分列和讲解上还是有很大差异,尤其是线性代数和空间解析几何,不用担心,我在后面介绍给大家一些好的游戏书籍,对大家学习游戏编程和有帮助的。
2。2语言
编写游戏c和c++是你首选,相对来讲C++是你更应该掌握的。
2。2。1 其他语言为什么不是当今流行的编写游戏程序语言?
VB,JAVA,C#,等等其他语言,并不是说它们不能做游戏,它们能做,由于语言本身设计机理的限制,只能做一些对游戏速度要求低的游戏,对于运行速度要求高的游戏,它们被判成死刑。当然这个也取决于硬件的发展,以前8bit FC游戏都用C语言和汇编来写,现在由于硬件速度提高,用VB,JAVA,C#来写这些游戏运行也是可以的,例如现在兴起的WebGame(网页游戏)。但如果你真想做游戏的话,你一定想要了解现在最流行游戏编写,C和C++是你最好的选择,也是你走上真正的游戏编程道路的重要武器。
2。2。2 C和C++应该选择那一个?
C和C++,这里面我还要说一说,我个人更看好C++。大家都知道C是面向过程的,而C++是面向对象的,虽然C++的面向对象特性还不是很完善,但出于对大型软件设计上的考虑,因为游戏引擎是大的工程,框架设计远远要比编程重要,一般框架设计用面向对象方式更直接,所以C++比C更有优越性性,而且如果你合理用好C++,并不见得C++比C速度慢。有时一个软件架构和软件运行上问题,很难取舍,对于大应用程序来说,都是一点点牺牲速度来获得好的架构,是利大于弊的事情,这里确实体现软件工程的重要性质。
2。3。3 汇编,很重要吗?
汇编语言也是你要掌握的,你说你语言学的好,但却不会汇编,是一个天大的笑话。现在很少有汇编高手能写出比编译器优化出来的汇编代码运行效率要高,因为语言的不同,思考问题的方式就会有不同,就象最早纸带机上的原语言一样(可计算性与计算复杂性就讲这东西)。如果游戏都用汇编来写,写代码效率很低,所以我们都用高级语言来写,同时还要与底层有密切联系的,C和C++担任大部分工作量。对于游戏速度频颈问题,有时我们用C和C++即使优化很多,代码精简很多,算法也改良很多,但由于语言本身设计上问题,和高效汇编来编写还是有不同的,这时就要是汇编高手来做速度最快,内存和寄存器使用最少汇编程序。所以汇编还是很重要的。
2。3。4 其他CPU硬件指令
这里只是说 INTER 和 AMD CPU 都支持的指令集,也是最常用指令集。
MMX和SSE SSE2是游戏编程中最常用的指令集,这个指令集是 SIMD(single instruction multiple data),也就是单指令多数据流指令集,一个指令可以处理多个数据流运算。汇编CPU指令,一个指令只能执行一个数据流运算。
例如:
汇编中
ADD EAX,EBX
这是一个加法指令,EAX,EBX是寄存器,是32位的。这个指令就是 EAX = EAX + EBX。这个过程只有一个数据流相加。
而SIMD思想是,如果现在有2个指令
ADD EAX,EBX
ADD ECX,EDX
能不能让他们一起执行?所以SIMD 指令提供这样的功能,他用很大的寄存器,前一部分装EAX值,后一部分装ECX值,再用一个寄存器,前一部分装EBX,后一部分装EDX.
SIMD 寄存器分成2部分[1部分][2部分]
SIMD ADD 指令 积存器1 ,积存器2
运算过程为 寄存器1 [1部分] = 寄存器1 [1部分] + 寄存器2 [1部分] ;
寄存器1 [2部分] = 寄存器1 [2部分] + 寄存器2 [2部分] ;
这2个运行是在一个SIMD积寄存器用硬件来执行ADD 同时运行的。
这里只是说了SIMD思想,现在简单介绍下 MMX,SSE,SSE2。
MMX寄存器是32位的,所以它可以执行4个8bit数据同时运算,也可以执行2个16bit数据同时运算,具体要看使用哪个指令,在早期没有SSE指令时,就用MMX,但MMX有缺点,它和FPU(浮点运算单元,专门执行浮点数运算)共用同样寄存器,所以当你指令有中断,从浮点运算跳到MMX运算,要告诉CPU,从MMX跳到FPU 也要告诉CPU,这样数据要临时保存,降低了处理速度。早期2D游戏经常用这个。
现在SSE,SSE2有自己单独的寄存器可以使用,而且它们是128位的,支持4个32位整数或者浮点数同时运算。
这些指令都没有分支,所以使用时效率要我们掌握,因为执行都是并行的,一个指令完成多个计算,所以即使你编写SIMD代码很差,速度也会提高几倍,游戏中经常用SIMD处理颜色和数学运算问题。在游戏速度瓶颈地方用这样的代码,公德无量。

2。3。5 ASM SHADER语言 和 高级SHADER 语言
开始学游戏编程时,这个知识不一定要具备,因为你不了解3D流水线内部细节学起来还是比较困难,所当你做完“软引擎” 了解3D流水线,在学这个语言很容易,接下来的语言发挥,就靠你自己了。
早期的游戏,所有的图形图象处理基本都由CPU来完成,然后把处理完的数据传到显存,用显卡来显示。现在的设计理念尽量解放CPU,把与图形图象有关的运算用显卡来完成。但早期显卡只支持固定流水线,所谓的固定流水线就是所有3D数据处理过程都是事先用硬件实现好的,这个过程是一个大过程,里面封状了很多小过程细节,用户只需要输入数据,显卡负责输出数据,至于用户无法干预这个大过程,小过程更是接触不到。再说的通俗一点,一个空间3D三角形要想显示到计算机屏幕上,基本要经历2个大过程,顶点处理和象素处理,顶点处理封状了很多空间变换的小过程,象素处理包括象素混合小过程。这个过程是不可以访问的,我们只能通过显卡提供的接口来控制,而且改变方式很单一。(刚接触这些可能不明白,现在你知道的不用太详细,就知道大过程是不可以干预的就可以了,或者是只有很少一部分可以干预)为了让图形图象处理更加完善话,让人们可以参与到整个3D流水线中,实现更多丰富的效果,显卡开始出现GPU单元(图形处理单元),这时的3D流水线从固定流水编成了可编程流水线,有了早期的GPU 指令,大家都称为 SHADER指令,也就是ASM SHADER,和汇编一样,这些指令都是和GPU指令一一对应的,随着硬件更新,GPU越来越强大,支持指令越来越多,ASM SHADER 从1。0 到 1。4 ,到现在3。0版本。由于ASM SHADER 用起来不方便,就象我们用汇编写程序一样,所以又出现了高级SHADER语言,有DirectX3D下支持HLSL(high level shader language)和 OPGL下支持的GLSL(opengl shader language)这些语言都是面向过程。由于硬件设计限制,这些语言不能象C语言那样随意使用,SHADER语言有自己的使用规范,大家学习时一定要弄明白3D流水线内部实现过程,再使用SHADER简直很容易。
还有一个要说的是,GPU现在还不支持分支预测,但GPU编程语言现在已经提供了丰富的条件判断,条件判断还是会影响到速度的。

重点你要掌握的是,数学,c和c++,汇编,数据结构,基本掌握的是计算机体系结构,离散数学,编译原理,计算机网络,操作系统,软件工程,数据库,人工智能。可以说这些是计算机最基础的学科,你只有掌握了它们,无论你专研计算机哪个领域,你的基础都是足够的,游戏编程中这些学科都可以用到,我们不用每个学科都精通的要命,我们要精通的是游戏编程,也就是接触到和游戏相关的,我们有这些基础完全可以看懂,然后我们在用自己时间来去专研这些学科在游戏领域的应用。

四。游戏编程,她的大门已经为你打开。

1。 颜色之迷

计算机怎么显示图形的,这个你必须要弄明白,计算机显示彩色图象是经历了一个什么样的发展过程。
1。1 象素和屏幕显示点
计算机显示一个图象是由象素组成,我们通常说的分辨率就是屏幕上显示多少个象素。如果一个屏幕最大可以支持1024*768那么它也可以支持800*600,当你屏幕分辨率是800*600时,一个象素占据了屏幕多个屏幕显示点,也就是说,只有当你分辨率调节到最大时,屏幕显示点和象素点才是一一对应的,至于一个象素占据多个屏幕显示点后颜色怎么显示这个是硬件的事,我也不是很了解。象素都是2进制存储,然后由硬件根据显存中当前象素值,根据颜色显示模式的设定,来显示指定颜色。
1。2 颜色组成和模式
计算机要显示颜色,每个象素都有自己的颜色,通常颜色有3种模式,一个是调色板模式,一个是16bit模式,一个是32bit模式,我这里说的通常,早期也有4bit模式,我要讲出里面的细节,让看的人真正理解,不是死记硬背,你就会发现实质上只有2种模式,一个是调色版模式和bit显示模式。
我先介绍位显示模式,从4bit开始,早期颜色显示很单调,硬件只支持16个颜色,当然这16个可以是黑白的,也可以是彩色的。总之硬件就支持16个颜色。所以用4bit表示4bit 2进制正好可以代表16个。
随着硬件发展支持的颜色越来越多,发展到16bit,16bit开始有了严格限制,颜色是有三种色彩基元组成,也就是红绿蓝,人送江湖称号RGB,16bit分成1555格式和565格式,1555就是1位给ALPHA(表示透明)分给RGB分别5bit,5bit可以表示色彩基元颜色是32种,RGB组合起来就是15bit,就是2的15次方,可以表示很多颜色了。而565格式没有ALPHA位置,直接分给RGB位数为565,也就是绿色多了一位,传说中,专家说人眼对绿色明感,所以给绿色多分了一位。
而32bit分给 ALPHA 和 RGB 分别是 8888,每个都是8bit。
其实标准的颜色都是每个分量都是8bit,每个色彩基元都是256种,而16bit模式不能显示出真实世界色彩。
调色板模式一般都是针对每个分量是8bit,也就是颜色组成是32位的。调色板模式有一个映射表数组,这个映射表数组每个元素都存放的是32位的颜色,而显存存放的是一个索引,但硬件读出显存当前象素值时,然后用这个值当作索引去映射表数组里面查对应的颜色,然后显示到屏幕上。
相比较而言,调色板模式是最早期的,例如早期FC 8bit机 每个象素只占8bit,只能表示256种颜色,而我们彩电可以表示很多颜色,为了节省显存,增加处理速度,还显示出多种颜色,FC用调色板模式,而我们想换颜色时,其实只换调色板映射表数组某一个值就可以了,索引都不用变,毕竟索引是写在显存中的,一般改写显存还是速度很慢的。16bit模式也是在处理速度上,节省存储空间上得以应用。毕竟这些显示模式都是为了应付以前硬件速度太慢而设计的,现在一般都用32bit模式。而且无论颜色基元的数字越大表示这个基元颜色越浅。
还有一个要说的就是ALPHA,这个分量是表示透明度的,这个分量如果是8bit,那么它可以表示256种透明程度,255表示不透明,0表示完全透明。
现在大家知道你设置屏幕或者游戏时1024*768*32 什么意思了吧!每个象素占32bit,屏幕显示1024*768个象素。

1。3 颜色的运算
计算机支持颜色运算都是无符号颜色运算,颜色没有负数,而且颜色运算有CLAMP和MOD
如果每个颜色占8bit,颜色表示范围为0-255
这里CLAMP指的是
if(x<0) x=0;
if(x>255) x=255;
这里MOD指
if(x>255) x = x%255;
Color1(a1,r1,g1,b1) Color2(a2,r2,g2,b2)
颜色加减都是向量加减,每个分量做加减
1。3。1颜色加法
Color3(a3,r3,g3,b3) = Color1(a1,r1,g1,b1) + Color2(a2,r2,g2,b2)
a3 = a1 + a2;
r3 = r1 + r2;
g3 = g1 + g2;
b3 = b1 + b2;
颜色加法一般都用CLAMP
1。3。2颜色乘法
Color3(a3,r3,g3,b3) = Color1(a1,r1,g1,b1) * Color2(a2,r2,g2,b2)
a3 = a1 * a2;
r3 = r1 * r2;
g3 = g1 * g2;
b3 = b1 * b2;
颜色乘法一般都用MOD
颜色加法和乘法在象素混合效果上经常用,有时为了到达一个效果,加法和减法混合用,至于什么时候用加法,什么时候用乘法,没有严格的规定,还是要看效果,一般对于全局光照模型颜色之间要用加法的,但其他光照模型可能不同,纹理混合或者纹理和颜色混合,加法和乘法都有各自用途。
2。Directx OpenGL到底用来干什么?

这里只说他们支持图形和图象部分,其他部分不说。
很多人都听过这2个名词,其实他们是一个函数库,这个函数库为我们做了一些最基本的和底层打交道的处理,其他它们还提供了一些常用的3D函数库,算是一个2次开发,其实2次开发一般和底层没有关系,所以在游戏引擎中很多都自己来做,微软做了很多2次开发,可以算是一个引擎。我前面说了,引擎没有明确概念,只有适应程度之分,用它这个提供的来做游戏,还是差很远,做小游戏当然没问题。
我主要说说和底层打交道那部分,DX和OPGL最大功劳在于充分调度和发挥了显卡性能,把显卡的特性用接口的形式提供出来,他们各自都有自己的管理层次,管理方法,管理管线,至于怎么管理,我也不是很清楚,但当你使用和显卡资源相关的API时,你要仔细看这个函数各个参数说明,它会根据你的指定,来管理显卡。但他的管理只是一部分,还有很大一部分要引擎里面自己处理。
如果你不想自己写驱动的话,那么你还想控制显卡,你就要用这些API,D3D(DX中主要处理3D的)和OPGL使用上还是有很大不同,所以学习他们也还要花费一些时间。我当初学习时,由于不了解3D渲染流程,学起来特别困难,很难看懂,我就放弃了他的学习,学习制作“软引擎”(用CPU来实现显卡提供的硬件功能),然后再学D3D,很容易的。有时后放弃是为了选择更好的,并不是真正的放弃。
至于学习D3D还是OPGL,我个人认为无所谓的,但好象OPGL越更新越混乱,没有DX那么清晰,我也是听别人说的,毕竟我不是很了解OPGL。

3。游戏编程中的常用术语

游戏编程充着大量常用术语,我不打算把它们都列出来,实在太多,我想对于初学者是来说,我希望,你在学习游戏编程时,自己多查下资料究竟这些术语都有什么含义,记住一定在学习游戏编程时去查,也就是说,针对问题去查,而不是在没有遇到任何问题时去查。其实我们的教育有个弊端,任何知识我们学了,不知道怎么用。其实很多知识都是我们遇到问题时再去查资料,去找解决方式,而不是在不知道这个解决方式用来解决什么的情况下吓学。
最好大家把这些术语的中文和英文名称看见都能知道是怎么回事,因为你到以后看英文书时,如果你知道这个术语的含义,看起来会很容易。


五 游戏编程中的2D游戏,你首先要做到的。

通往神殿的第一个考验就是这个,不知道你是否能走下来,相信自己会成功,你的信念一定要不可动摇,当你走过这段路的时候,想想你现在所得到的,付出的其实不算什么。
很多人可能会问,我想做3D游戏,2D游戏学它干什么。其实3D游戏处理可以分成2个部分,一个是3D空间数据处理,经过纹理映射把象素写到屏幕缓冲,接下来其他特效处理都是归结到2D问题。
所以你想真正了解游戏图象处理过程,还是要学2D的。2D原理相对3D来说简单很多,学起来也不是很难。我建议去看《WINDOWS游戏编程大师技巧》里面的代码都读明白,它用C语言实现一个小的游戏引擎,我希望你用C++封状成类的形式,重新按照自己规划来实现,最后做出个游戏。用引擎做出的游戏和直接做游戏还是有很大区别的,这样你引擎也就符合引擎的概念,代码重用性更强。这本书用的DirectX中DDraw接口来实现的,你一定要了解你使用的工具,它能用来干什么,它不能用来干什么,这样你才能很好的游戏编程。如果你不了解C语言,怎么用C语言编程,都是一个道理的。我不想在过多详细介绍DDraw为我们提供了什么特性,你自己去看书。
2D游戏中,最常用的概念就是贴图,把一个图象贴到另一个上。2D游戏中一种处理模式是在各个图片上的处理,还有就是在象素上的处理,其实这些都可以归结到象素上的处理,象素处理,就是处理显存数据。
颜色模式,《WINDOWS游戏编程大师技巧》这本书讲的很详细。
2D动画系统,《WINDOWS游戏编程大师技巧》这本书没有详细介绍,但你看它的代码,代码写的很清楚而详细,你就知道的。
GDI 我不知道大家听说过没有,它是WINDOW自带的图形图象接口,我希望大家也能了解下,当时我是GDI和DDRAW一起学的,然后分别做了引擎,2个引擎接口也一样,游戏移植非常容易。

一个最重要的问题就是调试,8BIT模式下的游戏,用编译器带的单步调式是不可能的,我机器死机N回。我现在也没有发现好的办法,最好的办法就是自己做一个LOG日志系统,把所有调式信息都写到文件里,用任务管理器把当前程序关掉,然后看文件写的信息。
2D游戏制作细节我没有详细介绍,毕竟我不是在讲怎么制作2D游戏,我是讲你应该注意什么,怎么学,我想《WINDOWS游戏编程大师技巧》会给你想要的一切。当然我在学这本书前已经有了一些2D游戏基础,以前用VB做过游戏,用GDI也做过,所以学起来还算容易,如果你以前没有任何游戏编程基础就直接用DDraw,那么我希望你多下点工夫,把它制作游戏的流程都搞清楚,记住什么时候用自己的双手做出了自己2D游戏,你才算2D游戏编程过关了。这本书仔细看吧!直到把它所有的精髓都掌握。
还有一个要说的就是,图象处理常用算法,大家可以多看看图象处理的书,游戏中特效经常用到,其实如果你真想一心搞3D,2D上做一个坦克大战这样的游戏就可以了,很多2D处理详细东西,在学3D游戏时,都可以接触的。
六。游戏编程中的3D游戏,考验你耐力和勇气的时候到了!

前面你所遇到的一切都是小小测试,证明你有能力接受这个挑战,在3D游戏这个广阔无垠的天地里,它比2D游戏更有让你想象余地的空间,因为3D游戏不仅仅包括2D游戏所有,而且还包括很多其他东西。努力吧!朋友们,无论遇到什么挫折,都不要放弃,因为她最后会给你想要的。
我不知道其他人学习3D游戏是一个什么样的过程,这里我只介绍我自己的学习过程,因为我是从挫败中走过来的。
开始学3D,脑袋里一片模糊,只有一点点大学里学的计算机图形学相关的知识,我不得不说学校里讲的计算机图形学和游戏还是大相径庭的。
(这里允许我抱怨一下,国外很多大学都开设了3D游戏编程的课程,而且很专业,我看过老外的PPT。相对于国内,也有些,但不专业,我说游戏学院骗钱你不要打我,它确实能让你找到工作,但你做的永远是下手,学不到底层的东西。我看过游戏学院开设的课程,没有一个是有技术含量的,用“外包”形容在贴切不过。道理也很简单,中国现在牛人很少,我说搞引擎的高手全国有1000人都是保守的,真正能搞出名堂的,也不多于200人,这200人里面学习游戏编程经验10年就很多了,中国3D游戏起步很晚,相对国外,中国人爱跳槽的习惯,让任何公司都没有技术积累,发展更是困难,所以人才积累的少,而且这些人都很忙,在加上现在学校教育约束,即使他们想去高校教授游戏课程也是不可能,何况人家都不愿意去,这样中国积累的人才更少)

所以你要系统学习游戏中图形学理论。
这里我经历了游戏学习编程一次比较大的挫败,当时自己是初学者,问过很多人学3D,应该从什么入手。很多人都说从D3D开始入手,于是我做了。我不得不说的是,如果你不了解3D流水线过程,学D3D简直是看天书,当时我以为自己反复的看书,写程序,最后会理解的,浪费了我大量的时间,最后还是无法灵活掌握D3D,如果你无法掌握D3D,想做游戏可能真的很困难。我终于认识到,我选择的路是错误的,那些所谓的高手难道就学D3D学过来的?那么他们花费的时间是可想而知的。因为有些细节你无法掌握,你使用时就觉得匪夷所思。
《3D游戏编程大师技巧》这本书是每个学3D的人都应该看的,这本书把显卡硬件实现的功能都用软件来做,真正让你理解一个3D东西到最后的屏幕显示,是一个什么样的过程。作者实现了一个软引擎,软引擎就是所有的3D功能都是用代码自己写的,没有用什么显卡来做处理的引擎。这本书是一个经典巨著,如果你想学3D,即使死也要把这本书弄明白,这样不辜负作者写这本书留下的汗水,写一本书,尤其这么PERFECT,太不容易了,国内人翻译的也很出色,感谢他们。

《3D游戏编程大师技巧》继承了《WINDOWS游戏编程大师技巧》里面2D函数,然后3D功能以及流水线和引擎都是自己完成,这本书的代码量要有十几万,我当时用C++重新封装了《3D游戏编程大师技巧》代码,自己设计了一个面向对象固定流水线模式,代码量13W左右,这个过程很艰辛,这本书我看了2遍,最后一共零零散散花费了大约9。10个月的时间。你会感觉你立刻升级了,HP,MP,CP都增长了,当然也包括RP,哈哈!(不知道这些术语的,大家多玩玩RPG游戏吧!)
好东西去追求,不要怕浪费时间,浪费精力,你想想,你得到的最后会大于你的付出,这些都不算什么。很多人问我怎么学3D,我建议他们不能着急,要从学《3D游戏编程大师技巧》开始,大约要8,9个月时间,把每个细节都弄明白,闭上眼睛,怎么实现就很清楚,书上每一页写什么都很明确。他们都觉得浪费时间,那么这样是永远学不好的

1 3D数学是你要攻克的
虽然你数学学的好,但国内的教科书还是和游戏中用的有些不同,毕竟没有上过专门讲解游戏中数学知识的课程。这需要你系统学习游戏编程中数学,3*3矩阵为什么有的人用,而有的人用4*4矩阵,为什么有的用矩阵转置有的用矩阵的逆。《3D游戏编程大师技巧》这本书介绍的很详细,还有一本书就是《3D数学基础:图形与游戏开发》很不错(有中文的),先系统学习下,然后在学习游戏编程时,不懂的时候,再回头看看这些书,把所有的东西都彻底弄清。你如果数学基础好,学这些都很容易,以后游戏编程中最深奥的地方之一就是数学。

基本上我总结下,你要知道的是:
向量 4维 和 3维向量有什么不同
矩阵 4*4 和 3*3 矩阵有什么不同
四元数
ELUER角
以后有机会深入研究碰撞中的各种算法,还会遇到很多关于数学的问题,上面只是渲染有关系。
2 3D流水线的实现过程
我无法用言语来表明这个过程的重要性,整个3D流水线是是3D游戏的脊柱,你的基础知识牢固与否,主要看你这里。3D流水线每一个细节我希望大家都要搞清楚,这个过程对初学者是要花费大量的时间专研与琢磨,D3D的固定流水线都是由硬件完成,如果你的硬件不支持,它会用软件模拟,好,关键就在这里,软件模拟是怎么回事,而《3D游戏编程大师技巧》的流水线是自己用C语言写的,也就是用软件完成,这样你能了解整个流水线的细节,同时你在学D3D时,对照着来学,你会发现,D3D学起来很容易。现在D3D和硬件都支持可编程流水线,而且DX10没有固定流水线,所有变换过程都用SHADER语言控制显卡完成,这个过程是3D流水线的缩影,所以3D流水线的重要性是是可想而知的。
我说了这么多,3D流水线对你是一个新鲜的名词,我也没有去解释它,我不想去解释,完全留给你自己去,我始终坚持着,我只告诉你去的路,路上有什么困难,应该怎么走,你自己去体会这条路上的酸甜苦辣。我希望大家多花些时间在这上面,真真正正的自己写代码实现一下,基础对你真的很重要,记住我说的话,很多人学习时,认为自己理解了,没有去实现,其实还是那句话“纸上得来终觉浅,绝知此事必躬行”,相信我,没错的。
基本上我总结下,你要知道的是:
3D中的顶点结构,每个分量都用来干什么,三角形是基本渲染单元。
模型空间——》世界空间——》相机空间——》投影空间——》屏幕空间——》光栅化 这个过程和运行原理
材质究竟是什么?
常用的宏光照模型原理,光源类型
光源和材质和法向量关系
光照在哪个空间去执行(其实不是很严格)
纹理寻址,纹理映射方式,纹理混合,纹理过滤。
1D 2D 3D CUBE 纹理
Z 1/Z缓冲
2种相机模型
ALPHA 透明
关于光栅化三角形要特别注意,他最后混合纹理和光照颜色和ALPHA透明,还要判断深度缓冲,最后是插值填写每个象素。
3 D3D究竟要如何学习
《3D游戏编程大师技巧》和D3D流水线过程还是有些差别的,比如在投影矩阵上,其实它们都是大同小异,只不过表现形式不同,原理都一样。我希望大家自己可以找出来,深刻理解里面原理。
还有一个重要的东西,就是哪些是D3D开发游戏必须有的,哪些是D3D自己扩展的。必须有的,就是同硬件打交道的部分,而D3D中自己扩展了很多库函数,例如数学库,这个完全可以没有,我们自己来实现,还有D3D中的EFFECT接口,它自己定义的。X文件所有函数接口。也就是说,你要理解,哪些是游戏开发中必须有的,哪些是游戏开发中自己完全可以不接触底层来实现的。
游戏编程中有3个缓冲区,颜色缓冲,深度缓冲,模板缓冲,前2个《3D游戏编程大师技巧》中,都详细的介绍,而模板对初学者可能很晦涩,大家先弄明白模板的机制,然后多看些例子,我想你会深刻理解它的含义的。
D3D的学习,可以看D3D SDK的例子,也可以找一些书籍,很多的。

基本上我总结下,你要知道的是:
D3D提供基本常用底层接口,那些是是D3D为了编程必须提供的,那些是不用提供的,比如数学库我们完全可以自己写。
D3D顶点 索引BUFFER
颜色缓冲,模版缓冲,深度缓冲 以及对这些缓冲的操作
目标渲染对象、
D3D 中的3D流水线
单通道渲染,多通道渲染。
熟练操作上面的所有,这些都足够了,其他的都是D3D中多余的,如果你要自己做引擎,很多都要自己实现,当然初学者可以就用它扩展的函数库,也很方便的。

4 其他要知道的游戏知识
下面知识都属于很强的游戏技术范畴,他们只属于单单游戏中技术支持,引擎就是用合理的方式,把所有3D相关包括流水线和下面这些都整和到一起,但这种整和是有效的管理。
场景管理算法 :BSP OCTREE QUADTREE PORTAL PVS
动画系统 :骨骼动画,蒙皮骨骼动画,渐变动画,和这些动画的混合
阴影 :阴影体 投影阴影 阴影影射
剔除算法 :包围球 OBB AABB BHV算法
LOD系统 :视点无关LOD 视点相关LOD
广告牌 :跟踪相机方向 和 只围绕y轴旋转 粒子系统
这些是比较常用的,常常碰到的,根据基本的颜色运算,空间运算还能衍生出很多游戏特效,等待你自己去看书,去解决。



七。3D引擎编程,令你的挑战达到了极限
就象我前面说的,引擎没有严格定义划分,但对于当代的引擎,似乎大家都趋向于越好的东西,越健壮的支持,才称上引擎。现在游戏玩家对画面拟真程度要求很高,这就要求引擎能更好的处理3D世界中大量数据,一个好的引擎,起码要做到以下几点(引用《3D.Game.Engine.Architecture.Engineering.RealTime.Applications.with.Wild.Magic》里面的话)
1。如何把3D世界中大量数据,让它实时快速处理。
2。引擎中的渲染器(用来管理数据,进行渲染处理的)接口应该怎么定义。
3。如何让使用引擎的人,能很容易的使用引擎。
4。当引擎中添加新特性时,如果让引擎改动最小。
我感觉这4句话,概括的很精辟,如果让我来概括,好象我现在还没这个能力。这是一个当代引擎的新的定义,虽然不是全面,但它一语道破天机,如果你的引擎能达到上面4点,我想它已经足够的优秀,同时说明你也很优秀了。下面我就分别解刨这4句话,让大家对引擎有一个深刻的了解。我只是分析,这4句话要求高手才可以完全去达到,我现在还不具备这个能力,所以只能帮大家分析。
1。如何把3D世界中大量数据,让它实时快速处理。
3D世界中充满了大量得数据,有效的处理只可以看见的,能感受到的就可以了。
3D引擎中,很多时候都在处理剪裁和剔除的问题,把不可见的或者和碰撞无关的数据用最快的方法弄掉,不让它进入显卡,一切还是停留在3D空间中。剪裁,剔除还有碰撞处理,永远是3D引擎中最常见的话题,现在有很多成型的方法,大家自己通过学习就可以了解的。
2。引擎中的渲染器(用来管理数据,进行渲染处理的)接口应该怎么定义。
即使你把3D数据给了显卡,还是不能达到最快显示,我们要把这些数据分类,重新组织,这里面还涉及到存储管理的问题。你的渲染器的接口要定义的和底层提供的DX或者OPGL相通,因为最后你要调用的是这2个库里面的函数。
3。如何让使用引擎的人,能很容易的使用引擎。
这是一个经验问题,一个软件设计给用户使用,怎么让用户很容易上手。但无论什么样的用户,你必须对3D有了解才可以使用,否则神仙也没法完成这个引擎。
4。当引擎中添加新特性时,如果让引擎改动最小。

经常说的一句话就是“计划没有变化快”,怎么能让引擎跟上时代的步伐,当硬件有革新,我们引擎就有革新,出现新的处理方法,引擎也要改进,用户需求改变,引擎接口也要改变,我们要求引擎的所有改动最小,这样才是一个完美的引擎。
引擎是软件设计+算法+编程的结合体,难点在软件设计上,一个好的引擎,代码几百万很正常,没有一个好的设计来规范它们,混乱是不可避免的。

对于一个引擎,从设计到编程都很重要,一个人完成一个好的引擎是不可能的,多人协作来完成引擎,在大家相互配合的同时,每个人对自己的要完成的任务必须精通,还要有人协调这些工作。
好的引擎,要有一个抽象层次,然后是渲染API层次,还要支持多操作系统平台,我在这里没有过多介绍各种技术细节,因为很多细节在书中都可以找到,加上你的聪明,很多技术算法可以自己创造的。
对于游戏中大量算法,引擎中到处都是,碰撞,场景管理,光照,纹理混合,动画系统,粒子系统,内存管理,资源管理等等大家要多实践,多思考,多看书,多看资料,把握每一个细节,把握每一个整体。看书时要带着问题去看,同时也要带出问题,因为没有一个方法是完美的,必定会有或多或少的缺陷。

现在开源的引擎确实不少,其实程序员都有一个共性,看别人代码有时不如自己写,确实这样,有时只看代码去体会别人的思想真的很难,但有时为了去学习也要硬着头皮去看的,跟踪代码。开始时,如果你不了解引擎究竟是什么,这时最好集中看一个开源引擎,一定要把它的工作原理都弄明白,这样你会得到很大的提升,你就会明白引擎是什么,为什么不用D3D直接编写游戏,还有一点就是,有机会一定要去实现,这样你的体会会更深。

八 浅谈物理与人工智能

这2个都不是中国游戏中的优势,它们和图形一样,要求一定能力积累才可以胜任。如果我没有预测的话,未来中国游戏中大量的需求将来自物理和人工智能,传统的网络RPG会慢慢不能满足大家需要,而被时代所抛弃的。

这2方面的编程我只是略知一二,还算一个小白,在此简单谈谈。
10。1 物理
游戏中大部分物理模拟都集中在力学和运动学上,本来它们就是一个整体。因为最后效果是大家看到的,而看到的都是物体在屏幕上的移动,所以所有的计算最终都归结到物体移动上。
因为游戏毕竟是游戏,人也毕竟是人,没有必要模拟的那么精确,同时人也是感觉不出来的。
所以要想做好物理上的编程,必须对力学和运动学有系统的了解,高中学的力学部分还不是很足够,对于旋转部分,也就是处理力矩和转动惯量上,高中物理书都没有讲(我那时是没有讲,而且很多直线线形运动方程推倒其实是用微积分推倒的,高中书上都没有明确推倒)
物理上的模拟也没有逃脱物理计算基本规则,先是受力分析,然后计算合力,计算加速度,计算速度,最后计算位置,也可能涉及到动能和动量等知识,还有些流体力学等等吧。
物理其实处理的问题基本就是检测物体碰撞,碰撞后的反映,物体运动情况。
至于理论,大家弄本大学物理,力学部分就足够,如果数学好的话加上高中的物理知识,应该学起来不难的。
《游戏开发物理学》这本书很好,可惜绝版了,但有电子版的,也有中文版。
10。2 AI
相对物理的编程书籍来说,AI的书很多。
AI是研究生必须学的课程,包括传统的AI和计算智能。游戏中常用的传统AI包括自动机理论,A* 算法,回溯,图搜索,剪枝等等吧。计算智能包括的是:遗传算法,模糊计算,人工神经网络。
我答UBI笔试的时候,里面很多题都是A*算法,可见FPS游戏中大量存在的都是AI的路径搜索问题,让电脑更加智能。
AI的游戏编程书很多,我就看过几本。《WINDOWS游戏编程》中有一部分讲的AI,《游戏开发中人工智能》 《游戏编程中的人工智能技术》这3本都有中文的,而且都有大量的实例,对于那些大量理论的书籍来说,看看它们还是很通俗的。还有很多好书,都是英文的。

from: http://www.gamengines.com/article-549.html

2011年10月2日 星期日

Never7問題~~關於泉美(逸美)線~實在不太瞭

CURE B結局 為什麼逸美不知道星沙的事情?為什麼變成石元城倒在那裡??
一開始玩的那6天到底是怎樣?
1.為何他會做夢?
2.為何優夏也做夢?
3.按照逸美CURE AB線 他說:[雖然和義彥串通好騙石元 但是實際上一次也沒騙他]
如果沒騙 他怎會染上幻想綜合正症?照理說應該要有欺騙到 才可能誘使他得到幻想綜合症阿
4.逸美在墓園說的話實在讓我不懂 到底有沒有時光倒流?
我的幾個推理如下
(一).石元染上了幻想症 然後經歷到逸美的死 此時他已經相信[他是存在無線輪迴中]
也相信他能夠回到1號從頭來過 由於第3現象 使得他的幻想成真 結果他真的時光倒流
也真的處於無限輪迴中 然後試圖改變逸美命運
這就可以解釋他怎麼會作夢 因為他經歷過 還有 他的預知也是因為他經歷過
但優夏的夢?逸美為何也回到過去?這次兩人記憶這麼清晰?
以上是根據逸美在墓園前半段說的

(二).石元染上了幻想症 經歷到逸美的死 這時候他"相信"自己能夠改變造成逸美死的歷史
於是他把周圍的世界"改變"了 回到4月1號 他把死的逸美"改變"成活的逸美
然後企圖重新經歷這幾天 但是這次不讓逸美死 就好像玩遊戲 死了就讀取 過了就繼續玩一樣
這樣看來 他並不是回到過去 時間根本沒有倒流 只不過世上的景物到退回6天前的樣子而已
然後他重新過了一次6天(這是第二輪 也是遊戲一開始玩的6天) 但是由於他這"第二輪"只留存
一點點記憶 沒能成功的逆轉逸美的死 結果 再度妄想著世界回到1號 這次他殘留了全部的記憶
但.. 為何逸美記憶也留著?如果他要逆轉逸美的死 照理說 他只需要留住自己的記憶就好了..
以上根據逸美墓園後半段說的..

逸美在墓園說的分成3部分 第一部份說時光倒流了(推理1)
第二部份說時光倒流是石原欺騙他自己的手段(推理2)
第三部份...說他自己也被石原傳染了幻想綜合症
而且也創造了事實 還看到了石元的死...這部分我已經完全不能理解了!

================================
還有個說法支持時光倒流
根據那個少年 他和病人堅信不死這回事 使這件事便成了事實
還有那"同時存在與不存在的貓"實驗

如果[看到逸美死的時候]=[打開盒子看貓的結果]
而他選擇了[逸美不死的歷史] 好比是選擇了[貓還活著]
那他是不需要在經歷那6天的阿!
跟貓的實驗一樣 他不需要經歷過去 他只是[用意志改寫了歷史 造成現在不同的現實]
那麼石元所需作的事情就是 他"相信"他過去作了不同事情 導致逸美現在突然活過來了
於是逸美就會從屍體>變成了活人

但是實際狀況不是如此 他還是重新經歷那6天了
所以說 最合理的說法依然是
他相信自己可以回到過去>>>於是他回到了過去
他相信自己處在輪迴中>>>於是他處在輪迴中
但如果是這樣...記憶的問題 逸美說的話..很難搭的上..
照這樣看來 最難解釋的 還是記憶問題..


唉~想的頭好痛!
最害怕的事情莫過於 其實劇本根本沒這麼完美 一開始就存在著漏洞..
到頭來還是不能像EVER17那麼完美...











我很少看到有人對Never7作如此疑問呢...
感覺上如果先玩過Ever 17應該會相對的比較容易接受Never7的Cure Level 0才是

其實1與2遊戲中都有說明
"你沒辦法知道你所經歷的是不是真的是第一次輪迴"
既然沒辦法肯定
之前有過的體驗可以像作夢一樣,這點應該可以比較讓你接受
再第二次輪迴開始之時,優夏一樣還是衝進來對吧?

3的部分,實際上,的確一次也都沒騙過他
所謂的綜合幻想症,必須有先讓人相信的基礎,才能引發事實的可能
可是誠的每一次[預言]都是確切的在發生

引用一下精華區中的Cure Level 0吧

在幻想綜合症報告和 " 薛丁格的貓 " 以及泉美的一系列說明後
有兩個選擇擺在了石原面前,也就是擺在了玩家面前:

A:暫時接受遊戲中的一切吧,這一切也許都是真的呢。
B:不, " 幻想綜合症 " 什麼的,我?不承認!我一定要看到事情的真相!

很顯然,這就是遊戲中的Cure A和Cure B路線了

A路線,接受了眼前的一切,相信了自己的幻想可以改變現實
於是幻想成為了現實,主角為了所有人的幸福而努力,而故事最終也圓滿收場。

B路線,堅信自己眼前的一切都是幻覺,堅信自己在做夢而最終可以醒來
而最終主角醒來了,眼前的一切都成為了幻覺,主角也隨之死去

然而,無論玩家相信與否,Cure都在以其自身的形式發揮著作用

相信的話, " 幻想可以改變現實 " 的幻想就成為了現實,所有人最後都可以幸福

不相信的話,“一切都是幻覺”的幻想就成為了現實
主角在心理上的滿足中死去了,還以為自己發現了一切的真相……

換而言之,N7的Cure A和B路線並沒有 " 幻想 " 和 " 現實 " 的區別

兩者都是幻想,兩者也都是現實。區別就在於你如何去看待了
這也正是其被稱為A路線和B路線,而不是 " Illusion路線 " 和 " Truth路線 " 的原因。

最終的大結局建立在Cure A之後,正是呼應了泉美的那句 " 與真實相比,更重要的是是否相信 "
而結局中所暗示的輪迴,也隱喻了“Infinity”這一無限輪迴的開始。
可巧的是N7的副標題恰恰是 " The end of Infinity " 大概也正是應了那句 " 一切的結束就是一切的開始 " 吧

因此不管你相不相信,Cure都可以在某種形式之下被實現

[轉貼]TB详解、BW、北斗、虚空

原作者:インフィニティ
出处:http://bbs.kid-game.net/dispbbs.asp?boardid=139&replyid=155133&id=27000&page=9&skin=0&Star=1

今天为了著作同人的需要突然想起一篇文章有TB如何传播等重要信息。经过一番寻觅终于发现了……以下内容为此贴原作者的翻译。从什么地方翻译出来的……待定~



--------------------------------------------------------------------------------


ティーフブラウ(Tief Blau) てぃーふぶらう

在热水喷出孔生活着的,致死性比率极高的恶性病毒。 Tief Blau在德语中有[深蓝]的意思。

【症状】发热、发冷、头痛、呕吐、抽筋、食欲不振、腹泻、腹痛等等。之后就是口腔、牙龈,结膜、鼻腔、皮肤、消化管等全身性出血而死亡。轻度症状时看起来就和感冒的症状类似。即使暂时感觉症状减轻,也会突然急剧产生严重的症状。发病后死亡率高达85%以上。和有名的Ebora病毒齐名(感染“Ebora”后的死亡率为90%。它能在十天内迅速破坏人体组织). 依照病毒的危险程度来划分的话,这个Tief Blau病毒和Ebora病毒都因为致死率高,感染速度快,而被划分为最高等级的级别4。顺便说一下爱滋病毒因为感染性弱而属于级别3。

【潜伏期】

通常为2~7日。

【感染途径】游戏中没有提及。

【治療法】

没有决定性的治疗方法。橙色药水也只能暂时起作用。但是,由因为CURE的作用而驱逐了体内的Tief Blau的月海的血液精制而成的疫苗是唯一有效的治疗手段。

【歴史】

Leiblich制药因军事利用的目的而设立了IBF。根据INFINITY的年表IBF最初建造的时间是1999年4月。那么恐怕最初发现Tief Blau病毒也是这之前的事了。正文中,L-MRI的扫描结果是『Tief Blau 2017-Rev.17』。那么可以猜想「Rev.17」的「Rev」是「Revision」的意思。也就是说在2017年事故发生为止,可能为了能够把它作为兵器,或者是提高它的杀伤能力,Tief Blau被操作过17回(16回?)了吧。因为2017年的泄漏事故Tief Blau在全世界肆虐。但因为它的潜伏期短和极高的致死率,在感染其他人前宿主就先死亡的情况居多,虽然病毒在短时间内扩张,但到2019年的时候被感染的病例已明显减少。 2024年WHO宣布Tief Blau彻底根绝。牺牲者据说有数千人至数万人。

----------------------------------------------------------------------------------------------------

ブリックヴィンケル(BlickWinkel) ぶりっくう゛ぃんける

存在于4次元,一切都是谜。和存在于3次元的人不同,可以在时间轴上自由移动。为了援救可可和武,它的力量是必需的。它是知晓一切的存在,虽然有一部分事实被它误解。严格说的话是处于能够知晓一切(看)的位置比较正确。「Blickwinkel」这个单词的意思是「視点」。可是在这里W是小写。但这也许并不是什么值得注意的问题吧。其中的「Blick」在德语中的意思是「視線」的意思。、「Winkel」有与「角度」有关的各种意思。所以「Blickwinkel」或许有「从头到尾~」的意思。不过「Blickwinkel」能够从头到尾俯览3次元空间,拥有与3次元空间内截然不同的角度的视线……这和最初说的「Blickwinkel」是「視点」的事结合考虑的话,「Blickwinkel」也许能够意译成「第3視点」吧?虽然不知道实际上正式设定时是怎么翻译的,在可可篇中大家在浮岛上对话的时候,優春的台词中有「第3視点――ブリックヴィンケル(Blickwinkel)――」这样的话,所以「Blickwinkel」也许就是「第3視点」的意思吧。

-------------------------------------------------------------------------------------------------------------

北斗(ホクト)这个名字的由来 (首先要说明,虽然ホクト的汉字是北斗,可在日文版中却是使用ホクト作名字)原来是「北斗」的意思。而且,更有一位叫做妙見菩薩的,北斗七星神明化的神存在。这位神明,眼睛非常美,他的双眼能够看清事物的真相。也许是这一点和第3視点的印象重合……

-------------------------------------------------------------------------------------------------------------

虚空界

「海月の虚空に秋涼し時鳥」「ホクト残す海過ぎし時に通ず」

在这里,为什么要说「虚」「空」指的是空而不是单一个「空」字呢?在日语字典中,虽然虚空这个单词并没有强烈体现出空的印象,但是,另一个单词---「虚空界」却可以说明。这个「虚空界」在佛教语言中是「在世界原本的样子里无所不在的点」的意思。正好切合了无所不在的空的印象。虽说虚空这个单词的意思确实是有象征空的意思,但或许这个俳句里包含的不只是「虚空」这个意思,可能也包含了「虚空界」的意思。

代码中的XXX todo fixme 的意义

2008年01月25日 Friday 于 4:42 pm · 发表在: 随笔

特殊注释:

1 todo

表示需要实现,但目前还未实现的功能

2 XXX

勉强可以工作,但是性能差等原因

3 FIXME

代码是错误的,不能工作,需要修复

Until

Until

作词/作曲:未海 编曲:豆田 将
歌:中山 爱梨沙

闻こえますか 仆の声が
君の事を そっと想う季节が続く

それは决して 悲しい物じゃなく 强くて优しい
こんなこんな 远い场所から 歌ってるよ

君のことが忘れられない 仆は大人になって子供になってく
いつかどこかで出逢える日など 来ない方がいいよ
きっと あの日みたい 恋してしまう

黄金色に 光るススキの海
见つめていた あのときの君の横颜

それは はかない 时の中で见えた 永远の様さ
こんな仆に 教えてくれたあの気持ちを

君のことを忘れないよ 仆はいろんな人と出会ってくけど
いつかどこかで思い出の中笑う君がいるよ
ずっと変わらないよ仆の心に

そして仆は 果てしないこの旅を続ける
思い出たちを优しい歌に変えて

君のことが忘れられない 仆は大人になって子供になってく
いつかどこかで出逢える日など 来ない方がいいよ
まだ 君のことを忘れないよ 仆はいろんな人と出会ってくけど
いつかどこかで思い出の中笑う君がいるよ
ずっと変わらないよ仆の心に
++++++++下面的翻译是自己翻的,可能有不对的地方++++++
聼的见吗 我的声音
对你的事 悄悄地持续在想你的季节

这绝不是悲哀的事 而是坚强的温柔的
从如此如此遥远的地方 为你歌唱

忘不了你的事 不管我将成长还是年幼
不知何时何地会相遇的日子 还是不要来的好
因为我 一定 又会爱上你

在闪这金色光芒的芦苇的海边
我目不转睛地望这的 那时你的侧脸

这是在脆弱的时空当中我看过的所谓的永远
是你教会了这样的我那样的感情

不会忘了你噢 虽然我已邂逅过太多的人
不管何时何地在我的记忆中 都有著微笑的你
我的感情永远不会改变

於是我继续永无止尽的旅程
曾经的记忆都变成温柔的歌

忘不了你的事 不管我将成长还是年幼
不知何时何地会相遇的日子 还是不要来的好
还是不会忘了你噢 虽然我已邂逅过太多的人
不管何时何地在我的记忆中 都有著微笑的你
我的感情永远不会改变
--------------TRANSLATED BY TOSHIYAMI

2011年10月1日 星期六

[轉貼]君が望む永遠 導讀

淺談「你所期望的永遠」

「君望永遠」( 以下通稱『君望』) 是 2001 年推出的 PC 18 禁遊戲,後來陸續推出移植 PS2 和 DC 的全年齡版本以及一個外傳短篇遊戲和一個惡搞短篇遊戲,週邊商品也不斷推出,並於 2003 年再度推出新增劇情的 DVD 版,可見其人氣之高。

「君望」動畫化之後,不管是在日本、大陸還是台灣,均引起了相當熱烈的討論,當然,其中也包括了對於角色喜好漫天怒罵的筆戰 ( 汗 ),不過這也代表了這部動畫相當的引人注目,不管是已經玩過遊戲的還是沒玩過的人……。

Dragon 寫「君望」一系列的文章的時候,「君望」已經在日本完結快一年了,為什麼現在才要寫呢?除了一些個人因素之外,又剛好時逢台灣有代理商引進「君望」的動畫, 於是 Dragon 又把以前已經看完的「君望」再整個看過一遍,整個思緒又湧上來了,於是就決定動筆囉!

「君望」這一系列的文章含有非常強烈的主觀意識,也由於 Dragon 沒有玩過遊戲的關係,某些部分只能靠著網路和相關書籍上的資訊得知,知道的東西也比較侷限在動畫,因此接下來的幾篇內容將會著重在動畫,進行方式則是以聊天的方式來進行。不過 Dragon 會盡量在能力範圍內,將動畫沒有交代清楚的地方說清楚,也會說明遊戲的一些劇情和其他種種。

希望某些已經對遊戲熟透的人不要因此而覺得本文無聊啊 ( 汗 ),也希望已經看完「君望」動畫的人,不要又開始抗議啦 ( 汗 ),畢竟這是一部曾經被吵翻天的作品,我也只能將我真實的感受和看法寫出來,希望大家能原諒我的任性 ( 笑 )。

快樂的校園生活

鳴海孝之是白陵大學附屬柊學園一個即將面臨大學聯考的高三生,和平慎二以及校內的游泳主力選手速瀨水月三個人是死黨。某一天,水月將她的朋友涼宮遙介紹給孝之,在水月的穿針引線之下,這個害羞內向的女孩在幾天後便對孝之告白了,雖然孝之在迫於形勢下答應交往,然而彼此之間尷尬的氣氛卻使的兩人形同分手。

在水月的告知下,孝之才知道遙在一年級的時候就已經開始喜歡他了,了解到遙的深情之後,孝之主動提出交往要求,兩個人的戀情也不斷急速加溫,在孝之見過了遙的妹妹茜以及她的父母之後,兩個人的感情更趨穩定,一切看起來似乎是那麼地順利……。

就在一個美好的夜晚,孝之、遙、水月、慎二,四個人在孝之平常喜歡待著的一個山丘上,拍下了他們的第一張合照,也為他們彼此之間的友情寫下見證,然而命運卻使的這張照片成為永恆……。

人事全非的三年後……

在暑假即將結束的某一天,孝之和遙相約出去約會。孝之在趕去的途中巧遇水月,在水月的要求下,孝之便買了一只戒指作為水月的生日禮物,然而當遲到的孝之趕到現場後,卻只剩下一攤血泊和悽慘的車禍現場……。

對於遙的意外,孝之相當的自責,一直認為是他沒有及時趕到的錯。接下來的一年裡,孝之便一直過著渾渾噩噩的生活,每天唯一的寄託便是去醫院探望昏睡的遙,在這段期間裡照顧著他的水月,終於壓抑不住隱藏在心中的感情,盡數向孝之傾吐……。

時間又過了兩年,孝之成為了一間餐廳的服務生,水月則放棄了游泳而成為一位 OL,兩個人過著半同居的生活,就在他們兩人感情漸趨穩定的時候,茜打了一通電話過來告知一個消息,那就是三年前因為車禍昏迷的搖醒過來了,但是她的記憶仍停留在三年前……。

趕到醫院探望遙的孝之,出現在他眼前的,是一個骨瘦如柴、臉色蒼白的長髮女孩,看到了如此憔悴的遙,孝之終於忍不住內心的激動,握著遙那病厭厭的纖細小手,放聲的哭了出來……。

一個是曾經熱戀過、內心對她抱有虧欠的女孩,一個是在自己最脆弱時支持自己、甘願捨棄一切的女孩。在這兩個無法決定輕重的女孩之間,孝之面臨了他人生中一個重大的抉擇,他將何去何從呢?

註:動畫在遙昏睡三年的這段期間是採用倒敘的手法,在第五話時才開始敘述,Dragon 為了文章的通暢性,故不以動畫的方式而以順序的方式寫之,希望不會造成某些人的困擾。

-------------------------------------------------

「你所期望的永遠」之我見

撼動內心的作品

「君望」動畫因為設定和現實生活相當接近的關係,讓人很容易融入劇情之中,我從第一集開始,便一下子被拉回到高三的生活中,看到了他們的樣子,真的是有著很深的感觸,成天只知道玩樂的孝之,輕鬆之餘不忘努力向上的優等生慎二, 對於游泳有著遠大目標的水月,懷抱著美麗夢想的遙。在接下來的故事裡,這樣的設定也在不知不覺下融入到劇情之中,相當的生活化,和其他對於日常生活輕描淡寫或是偏離寫實的作品大不相同。

正因為這樣貼近生活的設定,讓人很容易融入角色之中,進而能更加體會到角色們心中的種種思緒,悲傷、自責、矛盾、嫉妒、心痛、困惑、背叛,角色們的種種負面情緒,很自然的衝擊著內心。

面臨著社會人就業問題的餐廳服務生孝之,捨棄一切、只剩下孝之可以依靠而在遠離自己夢想的職場辛苦工作的水月,前途看似一片光明的大學生慎二,成為柊學園游泳社新一代主將的茜,失去了三年光陰、不屈不撓向命運挑戰的遙,隨著劇情的進展,每一個角色的轉變都不斷的撼動著人們的內心,處在人生轉折點的大學階段、和他們年齡相仿的我,更能夠感受到他們對於未來的不安和無法完成夢想的悔恨,以及對於人生所發出的辛酸和無奈。

我衷心的推薦剛從高中畢業的人一定要看看這部作品,相信對於人生、對於未來,會有一番不一樣的感受。
 

溫柔,也是一種殘酷……

鳴海孝之,曾有人說他是史上最優柔寡斷的男主角,在網路上的漫天戰火中,他也是被批評的最難聽的一個人。遙有遙命 ( 汗 ),水月有水月派 ( 汗 ),連爭孝之的資格都沒有的純情女茜都有為數不少的支持者,但是鮮少聽到有人理性的跳出來為孝之說一句公道話的。

在故事一開始,便已經或多或少的能感受到孝之的個性,不積極、生活散漫、缺乏目標,乃至於優柔寡斷,當初遙在開始交往後問孝之喜不喜歡她的時候,孝之說「不知道」而讓遙傷心落淚,後來 還是在水月的二度刺激下他們的戀情才能順利突破的。

到了三年後,時常把「沒關係」掛在嘴邊的孝之那若離若及的態度,甚至嚴重的傷害了一直陪伴在他身邊的水月,長久以來暗戀著水月的慎二也狠狠的揍了他一頓。「就是因為你總是那副死樣,大家才會這麼痛苦!」慎二這句話剛好刺中了孝之的要害。

然而,孝之也不是真的這麼優柔寡斷,「好溫柔呢,太溫柔……也是一種殘酷」就像茜說的,孝之太溫柔了,他希望大家都不要受到傷害,然而現實的情況卻不允許他這麼做,他沒有辦法同時顧及兩邊的感受,到頭來,只是加深了對兩邊的傷害。最後,遙對孝之……這個她認為世界上最溫柔的人……說出了「」……。

「明明不想傷害別人,卻還是背叛了遙,也傷害了水月,連茜也……」孝之傷痛的道出這句話。雖然許多人看不慣他的行為,然而,若相同的情況發生在你身上,你會怎麼樣做出最完美、最不會傷害大家的決定呢?
 


你所期望的永遠

在「淺談「你所期望的永遠」」一文中,曾提到一張成為永恆的照片,那是他們四個人友情的見證。事實上,在遊戲 裡除了那一張照片外,在其中一個結局,他們四個人後來又回到了那座山丘上拍了一張照片,腦筋動的快的人一定猜到了吧,這是大家重逢的結局,然而動畫卻不是做這個結局。

自認背叛了遙、對遙有所虧欠的水月,說她已經沒有辦法做遙的朋友了。希望大家的友情能持續下去、不想就此決裂的遙,最後也說了她還是做不到……繼續當朋友……。

雖然很多人對於這樣的結局有所遺憾,也有人說動畫的表現手法比遊戲更黑暗、否定了他們的友情、過分強調最終會破局的局面,然而我卻不這麼認為。以另一個觀點來說,動畫只是採取了比遊戲更加細膩而深刻的手法來敘事,因為動畫必須有唯一性,因此不可能兼顧到所有的結局 。我在上面也說了,動畫在設定上相當的貼近一般人的生活,也因此增加了許多人生和社會的黑暗面,但那絕對不會抹煞掉他們之間的友情。

他們的友情從來都沒有被否定過,只是現實令他們無法理所當然的重聚在一起,過去發生的事也不可能就此一筆勾消,只要心中還存有對其他人的芥蒂或虧欠,他們就無法很自然的在一起,分開……或許是最好的選擇吧……。但是有一點可以肯定的是,他們的友情還是存在著的,否則水月就不會一直覺得自己背叛了遙,遙也不會成全孝之和水月了,因為遙知道,水月為了孝之,已經犧牲的太多太多了……。

數年後,遙終於如願以償的出了一本繪本,圓了當年想要當繪本作家的夢想,書名叫做「 ( 真正的寶物 )」。裡面的主角白貂阿春,每天都辛苦的用全身的力氣以她那小小的身軀努力翻過高大的山丘,某一天她在山頂遇見了三隻白貂,並和他們成為了好朋友,但是他們後來卻為了樹上唯一的一顆果實吵了起來,結果山丘上又只剩下阿春一個人了,阿春變的好寂寞、好想見大家一面,最後,阿春終於找 到了真正的寶物,她一直相信大家總有一天能再相聚,於是,阿春還是和往常一樣,每天都辛苦的用全身的力氣以她那小小的身軀努力翻過高大的山丘……。

阿春 ( 春,日文音 haru ) 正是遙 ( 日文音 haruka ) 的寫照,那一顆果實指的就是周漩在他們之間的「愛情」,而「真正的寶物」指的就是他們之間的「友情」。遙一直希望大家總有一天能再度重逢於那個山丘上、彼此心無芥蒂的在一起生活,回到以前高三時那個樣子,事實上,他們每一個人都是這麼希望著的,想起以前的生活,每一個人無不心生感嘆,然而 ,遊戲裡的那第二張合照,只怕是永遠不可能實現了吧……。有些人認為遙選擇了「友情」為「真正的寶物」是太傻了,「友情」能怎麼樣?失去了所愛的人還這麼希望著,不是傻是什麼呢?但是「愛情」又能怎麼樣呢?讓他們彼此 這樣地痛苦,最後連再相見的勇氣都沒有,能說這樣是最好的嗎?

「三年……能改變很多事……」這是他們心中共同的想法。時間是最溫柔的,但也是最殘酷的,因為,幸福往往無法持續,在多變的時間之中,人們總是要不斷面臨各種變化並作出抉擇。「你所期望的永遠」是什麼呢?當你深入其境時,會做出怎麼樣的選擇呢?
 

總有一天還能相見吧,在那個山丘上……

「君望」TV 的聲優並沒有因為從遊戲改編的關係而更動,這是相當難得的,對於玩過遊戲的人來說也是一大福音吧,不過可別因為聲優名單裡某些名字不同而覺得奇怪,聲優有數個別名在 18 禁遊戲裡是司空見慣的事。不過事實上,也只有栗林實 ( 飾演:涼宮遙 ) 和淺井清己 ( 飾演:大空寺 ) 是用自己出道時的名字參與演出的。至於飾演鳴海孝之的谷山紀章,因為這個角色在遊戲裡並沒有聲優,故不在此討論範圍內。

栗林實因為演唱 PC 版 OP「Rumbling Heart」而一炮而紅,接下來的 DC、PS2、DVD 等各版本的 OP 也都由她演唱,除了 DC 外,其餘主題曲的歌詞皆由她所寫,這是深入遙的內心世界和「君望」劇情的栗林實,完全為「君望」所寫的歌詞。

TV 的 OP 和 ED 更是由演唱的栗林實親自作詞作曲。老實說,每當 Dragon 看到 OP 時,常會情不自禁的流下眼淚呢,那個歌詞和畫面,真的是相當的觸動人心。在第二話遙出車禍之後的那一段畫面,放送的 ED 便是 PC 版 OP「Rumbling Heart」,也是相當的切合當時的情境,直至最終話時訴說著大家未來所放送的 ED,則是遊戲的 ED「君望永遠」,若是有玩過遊戲的人,相信會更有感觸吧!

OP 的最後一句歌詞是「總有一天還能相見吧,在那個山丘上……」,多麼簡單而意義深遠的話啊!尤其是在遙出車禍後的第三 話才開始播放, 這種感覺更顯強烈。山丘依舊,但早已人事全非,一切都沒有辦法回到原來的樣子了,這樣一個小小的願望,不知何時才能實現呢……。
 

劇場

從第三話開始,動畫結束了遊戲的序章,開始進入三年後的故事,劇情也變的沉重起來,OP 和 ED 也開始播放,同時,在每話最後也開始播放令人會心一笑的「劇場」來替代下集預告,除了放鬆心情,一方面也 可能是為了讓沒看束了遊戲的序章,開始進入三年後的故事,劇情也變的沉重起來,OP 和 ED 也開始播放,同時,在每話最後也開始播放令人會心一笑的「劇場」來替代下集預告,除了放鬆心情,一方面也 可能是為了讓沒看到下集預告的人比較猜不出以後的劇情,因為動畫的劇情走向夾雜了遊戲的數個路線。

在沉重的劇情下,「劇場」的存在就顯的格外的輕鬆,也能夠作為調適心情的良藥,劇中的大空寺和玉野本來就是「笑」果十足的角色,時常和孝之打打鬧鬧,總是會忽然冒出來的崎山店長也經常發揮了意想不到的「笑」果,可以說孝之打工的那間叫「 ( SKY TEMPLE )」的餐廳,不管是對劇中或是觀賞的人,都能在其中獲得「休息」。

「劇場」有時會以相當無厘頭的方式表現出來,有時會搞點 kuso 的同人,有時會利用劇中的情節來作怪,真的是相當有趣。

個人覺得比較遺憾的是,遊戲中著名的「遙傳說」沒有做成動畫,這是單純笨拙的遙從小時候到高三之間所發生的糗事,若是能比照「劇場」的方式製作數集的短篇,相信也會非常有看頭的。不過在第六話時,孝之倒是聊到了其中一個「傳說」,若是看到那邊的人可以注意一下,孝之說的遙的糗事,就是遊戲中所謂的「遙傳說」喔!目前已確定 DVD 中並沒有額外製作的「遙傳說」,以後就只能從遊戲的 CG 和設定資料集看見遙這樣可愛的一面了,我想這個製作成動畫的希望就就此打住吧……。
 

身邊的各位和其他種種……

在孝之待的 SKY TEMPLE 裡,有著如父親一般的崎山店長,還有做事總是常出紕漏的大空寺和玉野。

崎山店長在一開始常會忽然冒出來,和一搭一唱的大空寺以及總是會將場面搞的很好笑,不過後來也漸漸的表現出他照顧後輩的一面。他有一個女兒,跟遙一樣必須躺在病床上過日,因此他總是以看著女兒的眼神看 著大空寺和,對孝之似乎也是視如己出,甚至將他推薦給總公司的人。在動畫裡,崎山店長是原創的角色。

大空寺在店裡是出了名的潑辣,待客態度很差,又常常不工作,甚至還常常誤導身邊的 ( 汗 ),只有孝之才能對付他,大家都對他們這對冤家是感到既好笑又有趣。動畫裡並沒有說明大空寺的來歷,因此沒玩過遊戲的人可能會對她有手下一事感到好奇。事實上,她是一個大財團的千金,因為父親想要她體驗社會經驗而讓她去 SKY TEMPLE 打工。大空寺對孝之似乎有著一份感情,不過孝之本人沒有察覺就是了。

水月畢業後放棄了游泳,而到了一間羽澤商業貿易公司工作,很幸運的,她有一位相當照顧人的上司石田小姐,能夠容忍水月在工作上經常發生的錯誤,也時常會對水月提出自己的見解 。因為石田小姐她有一段惱人的婚姻,正面臨著她想提出離婚的情況,因此水月這個年輕人的樣子看在眼裡,自己也不是不能體會。在動畫裡,石田小姐是原創的角色。

遙靜養的櫸綜合病院,出場的則有遙的主治醫師香月,和個性看起來有點輕挑的星乃文緒以及體型看起來像個小孩子的天川螢這兩個護士。

香月醫生的人生經驗看起來相當的豐富,舉手頭足間都充滿了成熟女性應有的社會歷練。她時常會給身邊的人一些建議,也時常會發出令人深思的話語,像是時隔兩年後再度看到孝之和水月,一句「你把頭髮剪短了嗎?」和「你最後還是沒有去考試嗎?」這種旁人看似稀鬆平常的話,卻令水月和孝之愣了一下。

文緒和天川是很要好的朋友,兩個人在醫院裡總是形影不離。每次孝之來的時候,文緒總是會稱他為男朋友,真不曉得文緒在想什麼 ( 笑 )。而天川不只體形像小孩子,說話時也很有趣,文緒時常會逗著她玩。但是動畫中並沒有交代天川為什麼後來要辭職養病,原因是天川患有先天性心臟病,因此發育的並不好,體型才會像個小孩子。在最終話遙出院慶祝時,文緒哭著說「天川也會很高興吧!」,因為那個時候天川已經不幸逝世了,動畫或許是有些顧慮,才會僅作出這短短的一句話來作為天川路線的 動畫收尾吧!

希望大家能回想一下我在前面提過的,動畫因為具有唯一性,不可能兼顧到遊戲所有的結局,因此不得不作出選擇,並擷取了幾個路線的劇情加以整合,還新增了許多原創劇情,使故事更加貼近一般人的生活。像是空白的三年,遊戲裡並沒有交代,當初遊戲要出新增劇情的 DVD 版時,本來有很多人期待會交代那段空白的,但最後並沒有實現,所幸動畫做了出來,並巧妙的交代日後孝之會到 SKY TEMPLE 打工的契機。此外,相當生活化的「君望」動畫,也很積極的在營造社會的寫實面,但是在感情沉重的劇情之中可能不容易被發現,大家不妨仔細觀察一下。雖然劇中描寫的是日本泡沫經濟後所產生的種種,但是身處台灣的人,尤其是高中畢業後這個 人生轉折階段的人看了,相信也會有很深的感觸吧!

短篇遊戲

除了原本的故事外,「君望」還出了茜的外傳短篇遊戲和大空寺的惡搞短篇遊戲。茜和大空寺這兩個人原本就是除了遙和水月之外,人氣相當高的角色, 而茜更是被許多支持者認為是除了遙和水月之外,女主角的不二人選,因此以他們為腳本而製作短篇遊戲,感覺上也是理所當然的事。

茜的外傳短篇遊戲「」,是一部以名為剛田城二的人作男主角的搞笑故事。剛田的臉非常的搞笑,活像是某熱血漫畫裡出現的男主角,聲優則由以飾演熱血笨蛋出名的關智一擔任。故事是以剛田追求茜的故事為主,其中還有一段他們兩個人的談話被人 奉為經典,可惜 Dragon 無緣一見。截至 Dragon 完成這篇文章時,這部外傳已經有了動畫化的計畫,至於會以什麼樣的形式推出就不得而知囉!真是令人期待啊!

附帶一提,「君望」結束後,其製作公司「age」後來又推出了一部遊戲「」,故事地點也是「君望」的白陵大學附屬柊學園,而茜正是裡面的其中一個角色,時間則設定在茜高三的時候,正好是「君望」中遙昏睡三年後的期間,「」的時間也是設定在這個時候。

大空寺的惡搞短篇遊戲「大空寺危機一髮!」,似乎是拿「聖鬥士星矢」在開玩笑,其他則沒什麼好說的,感覺上比較沒有存在的必要 ( 汗 ),看到了那些 CG,真是無言以對……。更奇怪的是,我好像還在裡面看見了「七龍珠」的悟空,難道這是我的錯覺嗎……。
 
-------------------------------------------------------
誰是最可憐的人
網路上的討論,除了對於角色的喜好和劇情的轉折之外,也曾出現過誰比較可憐的討論,不過大都集中在遙和水月的身上。這次我想對劇情核心中的五個人,孝之、遙、慎二、茜、水月,做一次集中的分析,然後再說出我所認為最可憐的人。希望不認同的人,也能耐心的看完喔!

鳴海孝之

史上最優柔寡斷的男主角 ( 笑 ),早在三年前就曾以一句「我不知道」傷害過遙,三年後的今天,更因為他的舉棋不定和搖擺態度,傷害了許多人。最後,他甚至大罵自己是畜生,無法原諒自己的過錯,無法原諒那什麼人也不願意傷害的溫柔……。

因為和遙熱戀的關係,導致遙後來遭逢不幸,也讓原本因為遙而想繼續升學的孝之斷送了未來的前程,過著渾渾噩噩的生活。後來好不容易有了水月這個支柱,卻因為遙醒了過來而產生巨大的變化 。為了心中的責任而每天去探望遙,卻又要忍受著茜的冷言諷刺和水月的不信任,見到了遙,心中的那份難過又無法言喻,每天就這樣過著內心交戰的生活。直到孝之和遙彼此互道「」之後,心中的其中一塊大石 總算是放了下來,但是對於遙, 流著淚的孝之感到更愧疚了,以後勢必要帶著這份愧疚繼續走下去。

不過一直被說是優柔寡斷的孝之,總算是能夠勇敢的面對自己的心,以及面對著一直抱有虧欠的遙,這對他來說無疑是一個重大的轉折點。「如果來得及,我想撫平她的傷口,縱使…耗盡一生」孝之終於向遙說出來了,也展現出他不願意再繼續傷害水月的決心。

此外,他在打工的 SKY TEMPLE 也遇到了一些貴人,一直像個父親關心著他的崎山店長,以及和他像一對冤家的大空寺,均幫助過他,讓他的心倍感溫暖。或許孝之在愛情上並不是那麼成功,但是在做人方面,他的溫柔確實得到了一些人的支持,並獲得了回應。
 


涼宮遙

一個相當單純的女孩子,原本應該和孝之過著幸福快樂的生活,並為了成為繪本作家而努力,卻因為一場車禍而昏迷了三年,失去了三年寶貴的光陰,也失去了所愛的人……。

「鳴海並沒有錯,看到她那個樣子誰都會……」茜這樣說並沒有錯,因為就連水月看到遙這麼楚楚可憐的樣子心中也不禁為之一動,女性的本能反應告訴她不可以讓孝之繼續去探望遙。看到遙這個樣子,看看大家為了隱瞞時間已經過了三年以及孝之和水月的事,再看看遙那天真無邪的笑容,心中真的會有一股酸意湧上來,怎麼看都覺得遙真的是太可憐了。

「我所認識的遙是個無憂無慮、膽小、溫柔,一直生活在自己的夢中、和現實世界絕緣的女孩,但現在卻全身是汗,為了能再次走路而拼命」看到遙努力復健的模樣,孝之有感而發,卻 因為茜的一句「你真的如此認為嗎?」而感到困惑,聽到了遙在病房裡的哭聲,孝之才猛然驚覺事實並非如此,「還我三年時間,還給我啊!」這時的遙,看起來是那麼的無助……。

即使如此,失去了三年光陰的遙,還是勇敢的走了過來。鼓起勇氣向孝之說,並在復健完成後接受著眾人的祝福出院。沒有放棄夢想的遙,最後更如願以償的成為了繪本作家。遙的堅強,看起來是那麼地惹人心疼,卻又令人對她肅然起敬。
 


平慎二

高中便決定要以白陵大為目標而繼續升學,就讀白陵大學附屬柊學園的慎二,是個成績優秀的學生,雖然總是和不愛唸書的孝之混在一起,似乎也有些戀愛經驗,卻懂得潔身自愛,並時常鼓勵孝之一起考進白陵大。以前便暗戀著水月,但是一直沒有表示出來 。比起愛情,慎二更重視友情,當初除了水月,慎二也在一旁幫助孝之和遙的戀情,不是為了他希望能和水月在一起,而是他真心的想幫助孝之和遙。

這三年來,慎二在大學裡相當活躍,也有了一個感情穩定的女友,但仍忘不了水月,即使如此,他依然支持著孝之和水月,並不時的給予建言。在水月最脆弱的時候,慎二義無反顧的帶走了水月,後來更狠狠的揍了孝之一頓,他只希望孝之和水月能合好如初,並且希望水月能夠永遠幸福……。 「我不行!除了你!誰都不行啊!到底我和你有什麼不同!為什麼!」聽到孝之說要把水月交給他照顧,慎二的憤怒一拳又一拳的打在孝之身上,聲音聽起來是多麼的悲憤、多麼的失落……。

遙出院的時候,雖然孝之和水月並沒有出現,不過慎二還是有到場祝賀,他和其他人一樣,仍然很珍惜彼此的友情。我想,日後遙、茜和孝之、水月之間聯繫的橋樑,就落在慎二身上了吧。

動畫裡並沒有透漏日後慎二過著什麼樣的生活,只知道他仍然和那個感情穩定的女友在一起,不過在遊戲裡,他則是成為了一個上班族,辦公桌上則放著當年他們在山丘上的第二張合照。和孝之、水月、遙、茜比起來,慎二顯然是生活過的最平順的人吧!
 


涼宮茜

和害羞內向的遙呈現強烈對比,小遙三歲的茜是個活潑調皮的游泳健將,因而相當崇拜水月,個性也和水月相當合得來,被孝之評為「水月第二」。經過了遙的事件後,讓 調皮的茜有了一些成長,一年後,在得知水月和孝之開始半同居的生活後,那份厭惡使茜顯的更加成熟。然而,那份厭惡不只是因為孝之和水月背叛遙的關係,其中還夾雜了不為人知的感情……。

當初,對於內向的遙有了孝之這麼一個男朋友的時候,茜相當的高興,雖然常常捉弄他們,還直呼孝之為「哥哥」,但是仍然察覺不出茜有任何異樣。三年後,當茜又看到孝之和水月走在一起的時候,說出來的話盡是 苛責和諷刺,不僅深深的刺進了孝之和水月的心,也刺痛了她自己……。其實,在憤怒之餘,茜何嘗不知道孝之和水月的處境呢?只是為了壓抑心中不能夠傾吐的感情,茜一直藉由責罵孝之和水月來逃避。

「我…在姊姊醒來以前,非常盡力地照顧著她,但這並不全為了姊姊,而是因為我覺得…如果姊姊醒過來,你會很開心,那樣的話,你就又會像以前一樣對我展露笑容……」茜的一席話,透露出了她對於孝之的感情,雖不知是什麼時候開始的,但可以肯定的是在孝之頹廢的那一年裡,茜一直是用這樣的心情來看待孝之的。茜一直隱藏著這份感情,全因為遙的關係,看到孝之和水月背叛了遙,一個是姊姊最愛的人,一個是姊姊最好的朋友,心中的憤怒自然不言而喻,但是對她自己而言呢?一個是她最愛的人,一個是她最崇拜的學姊。這種雙重的打擊,一直讓她相當痛苦。

但是,在茜逐漸解除自己的心防,並把所有的話都說出來後,終於能夠用更加體貼的態度去面對孝之和水月。和放棄游泳的水月不同,茜一直在精進自己的泳技,日後她也一舉成名,完成了水月當初無法完成的夢想。 在一篇採訪報導中茜說到:「曾經有一位前輩教我游泳是件多麼了不起的事,為了能夠趕上她,我一直努力著,因為有她,我才會有今天這樣的成就,一直到今天她仍然是我的人生目標,或許今後我也會一直在她身後努力追趕、往前游」,茜的真心告白,讓水月流下感動的眼淚,希望未來,茜能夠親自和水月一起分享她的榮耀與喜悅。
 



速瀨水月

水月原本是柊學園游泳社的主將,學校因為她的活躍而計畫要興建溫水游泳池,更有企業欲支持她畢業後繼續一展長才,前途可說是一片光明,但是卻發生了遙的事情。畢業後,為了照顧頹廢的孝之,她捨棄了一切,成為了一位 OL,後來甚至被孝之接受,開始了兩人半同居的生活。

網路上,有些遙命的人是把水月罵的相當難聽的,連「賤女人」這樣的詞都出現了……。然而,若是設身處地為她想一想,又怎麼能夠以這樣惡毒的話來形容她呢?在遙和孝之交往期間,隱藏在心中對孝之的感情令水月的游泳成績相當不穩定,經常被教練責罵 。遙出車禍後,水月在一次大賽中成績更是一落千丈,被教練罵的相當難聽,游泳社裡的其他成員也說她是因為迷戀男人而變成這樣的,深愛著游泳的水月,也只能流著淚,黯然離去……。

和孝之的半同居生活,看似幸福,水月心中仍隱藏著不安,因為孝之的態度並不明確,房間又維持著三年前遙還沒有出車禍的樣子,水月一直都看在眼裡。有時,水月還會夢到遙、夢到她在游泳的事,對於遙,她一直有著一份愧疚,每次看到有人在游泳,心中更是有一份難以言喻的失落感。直到遙醒過來,那份不安更加擴大,甚至到了歇斯底里的程度,她無法忍受孝之在每天去探望遙的情況下還對自己冷言冷語,這令她不斷的懷疑孝之是不是還愛著遙,甚至乎…懷疑孝之根本沒愛過自己……。背叛了遙、捨棄一切的水月,臉上原本就沒有真正燦爛的笑容,遙醒過來後,水月每天更幾乎是滿臉愁容,工作時經常發呆、出錯,幸好她有一位善解人意的上司,總是在旁邊拉她一把,然而這卻無法解決水月心中的結。

「喜歡孝之,有那麼錯嗎?放棄游泳,有那麼錯嗎?隱瞞著遙,有那麼錯嗎?我錯的那麼厲害嗎?」崩潰的水月,流著淚哽咽的對慎二說出了這句話。比起遙,水月更加的痛苦,痛苦在於三年來一直無法解開的心結,痛苦在於最需要幫助的時候孝之卻對遙倍加關心而對自己相當冷漠 ,痛苦在於孝之選擇她之後還必須一直懷著這份對於遙的愧疚和孝之生活下去。最後,孝之選擇了和水月在一起,對於失去一切的水月來說,這或許是上天賜與她的一份禮物吧……。
 
最可憐的人是……

孝之對於遙有所交代,並決心全力彌補水月受傷的心靈,也在大家的幫助下有了一份穩定的工作。失去三年光陰的遙,與自己的愛人訣別後重新振作起來,並達成了成為繪本漫畫家的夢想。慎二和他交往多年的女友感情穩定,並且學業有成。茜成為了日本泳界的新星,完成了她、也完成了水月無法達成的夢想。水月則是在最後,和所愛的人在一起。

看到這裡,大家覺得我認為最可憐的人是誰呢?猜到了嗎?那就是失去最多的水月。就像水月自己說的,除了孝之,她已經一無所有了, 捨棄了游泳,捨棄了朋友,捨棄了一切,以後更要一直帶著愧對遙的心和孝之生活著,更不用說還有再見面的可能了。

關於這點,網路上討論的很兇的,Dragon 敢在自己的網站上挺水月,老實說也是做好了相當大的心理準備 ( 爆 ),誰是最可憐的人真的是見仁見智。不過認同的人也好,不認同的人也罷,希望曾為此爭吵的人,能靜下心,好好的想一想,若是同樣的情況發生在自己身上,會做出怎麼樣的決定呢?你所期望的永遠,又是什麼呢?