S.I.R 发表于 2008-8-2 13:50

人家说的是硬件机能,不是三红,你们懂不懂机能啥意思?

再说了HALF LIFE明明更猎奇。比卡马克的游戏吓人多了。

qieyifonger 发表于 2008-8-2 13:58

原帖由 G.W.尼米兹 于 2008-8-1 21:11 发表 http://bbs.saraba1st.com/images/common/back.gif

卡马克是程序员的神,口味重的可以在玩《沙耶之歌》时吃红色果冻:awkward:

C语言是卡马克发明的?计算机程序是卡马克发明的?神?

jinyuangungun 发表于 2008-8-2 15:08

原帖由 qieyifonger 于 2008-8-2 13:58 发表 http://bbs.saraba1st.com/images/common/back.gif


C语言是卡马克发明的?计算机程序是卡马克发明的?神?
你问问2狗卡马克干过什么

chenke 发表于 2008-8-2 15:19

胆敢质疑John Carmack的都给我背书去!

http://www.fs2you.com/zh-cn/files/30e9644a-3177-11dd-b8a7-0014221f3995/

:mad:

G.W.尼米兹 发表于 2008-8-2 15:21

原帖由 qieyifonger 于 2008-8-2 13:58 发表 http://bbs.saraba1st.com/images/common/back.gif


C语言是卡马克发明的?计算机程序是卡马克发明的?神?
我只知道quake3是历史上第一个不支持软件加速的FPS,能用来进行显卡测评,卡克是神倒是从别人那听来的(耸肩)
原帖由 chenke 于 2008-8-2 15:19 发表 http://bbs.saraba1st.com/images/common/back.gif
胆敢质疑John Carmack的都给我背书去!

http://www.fs2you.com/zh-cn/files/30e9644a-3177-11dd-b8a7-0014221f3995/

:mad:
还真翻出来了:o

[ 本帖最后由 G.W.尼米兹 于 2008-8-2 15:22 编辑 ]

S.I.R 发表于 2008-8-2 15:25

原帖由 qieyifonger 于 2008-8-2 13:58 发表 http://bbs.saraba1st.com/images/common/back.gif


C语言是卡马克发明的?计算机程序是卡马克发明的?神?
无论哪个神话里都有几个大神,一堆小神。您佬别要求太高。

chenke 发表于 2008-8-2 15:31

为什么卡马克是神

请程序员们读完下面这篇论文就知道了

:sleep:

chenke 发表于 2008-8-2 15:36

John Carmark 密码:0x5f3759df


有人在Quake III的源代码里面发现这么一段用来求平方根的代码:

/*================SquareRootFloat================*/

float SquareRootFloat(float number) {
    long i;
    float x, y;
    const float f = 1.5F;
    x = number * 0.5F;
    y= number;
    i= * ( long * ) &y;
    i= 0x5f3759df - ( i >> 1 );//注意这一行
    y= * ( float * ) &i;
    y= y * ( f - ( x * y * y ) );
    y= y * ( f - ( x * y * y ) );
    return number * y;
}

0x5f3759df? 这是个什么东西? 学过数值分析就知道,算法里面求平方根一般采用
的是无限逼近的方法,比如牛顿迭代法,抱歉当年我数值分析学的太烂,也讲不清楚
。简单来说比如求5的平方根,选一个猜测值比如2,那么我们可以这么算

5/2 = 2.5; 2.5+2/2 = 2.25; 5/2.25 = xxx; 2.25+xxx/2 = xxxx ...
这样反复迭代下去,结果必定收敛于sqrt(5),没错,一般的求平方根都是这么算的
。而卡马克的不同之处在于,他选择了一个神秘的猜测值0x5f3759df作为起始,使得
整个逼近过程收敛速度暴涨,对于Quake III所要求的精度10的负三次方,只需要一
次迭代就能够得到结果。

好吧,如果这还不算牛b,接着看。

普渡大学的数学家Chris Lomont看了以后觉得有趣,决定要研究一下卡马克弄出来的
这个猜测值有什么奥秘。Lomont也是个牛人,在精心研究之后从理论上也推导出一个
最佳猜测值,和卡马克的数字非常接近, 0x5f37642f。卡马克真牛,他是外星人吗?


传奇并没有在这里结束。Lomont计算出结果以后非常满意,于是拿自己计算出的起始
值和卡马克的神秘数字做比赛,看看谁的数字能够更快更精确的求得平方根。结果是
卡马克赢了... 谁也不知道卡马克是怎么找到这个数字的。

最后Lomont怒了,采用暴力方法一个数字一个数字试过来,终于找到一个比卡马克数
字要好上那么一丁点的数字,虽然实际上这两个数字所产生的结果非常近似,这个暴
力得出的数字是0x5f375a86。

Lomont为此写下一篇论文,\"Fast Inverse Square Root\"。

我把这个函数用C#就行了一下改写:
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace ConsoleApplication1
6{
7    class Program
8    {
9      static void Main(string[] args)
10      {
11            Console.WriteLine(\"Carmark\'s method:\");
12            Console.WriteLine(SquareRootFloat(3.0f).ToString());
13            Console.WriteLine(\"Use Math.Sqrt() method:\");
14            Console.WriteLine(((float)Math.Sqrt(3.0)).ToString());
15            Console.Read();
16      }
17
18      private static float SquareRootFloat(float number)
19      {
20
21            long i;
22            float x, y;
23            const float f = 1.5F;
24            x = number * 0.5F;
25            y= number;
26            unsafe
27            {
28                i= * ( long * ) &y;
29                i= 0x5f3759df - ( i >> 1 );//注意这一行
30                y= * ( float * ) &i;
31            }
32            y= y * ( f - ( x * y * y ) );
33            y= y * ( f - ( x * y * y ) );
34            return number * y;
35      }
36    }
37}
38

第32、33行用了两次牛顿迭代法,以达到一定的精度,当然你也可以自己控制精度,求出来的是y的平方根的倒数,所以最后返回为number*y.

SquareRootFloat函数最关键的一句就是 i=0x5f3759df-(i>>1);
以下是对它的部分解释:

牛顿迭代法最关键的地方在于估计第一个近似根。如果该近似根与真根足够靠近的话,那么只需要少数几次迭代,就可以得到满意的解。

接着,我们要设法估计第一个近似根。这也是上面的函数最神奇的地方。它通过某种方法算出了一个与真根非常接近的近似根,因此它只需要使用一次迭代过程就获得了较满意的解。它是怎样做到的呢?所有的奥妙就在于这一行:

i = 0x5f3759df - (i >> 1);        // 计算第一个近似根

超级莫名其妙的语句,不是吗?但仔细想一下的话,还是可以理解的:float类型的数据在32位系统上是这样表示的。

bits:31 30 ... 0
31:符号位
30-23:共8位,保存指数(E)
22-0:共23位,保存尾数(M)

所以,32位的浮点数用十进制实数表示就是:M*2^E。开根然后倒数就是:M^(-1/2)*2^(-E/2)。现在就十分清晰了。语句i>>1其工作就是将指数除以2,实现2^(E/2)的部分。而前面用一个常数减去它,目的就是得到M^(1/2)同时反转所有指数的符号。

G.W.尼米兹 发表于 2008-8-2 15:39

这楼越发的神棍,不,专业了:sleep:

jinyuangungun 发表于 2008-8-2 15:43

原帖由 chenke 于 2008-8-2 15:36 发表 http://bbs.saraba1st.com/images/common/back.gif
John Carmark 密码:0x5f3759df


有人在Quake III的源代码里面发现这么一段用来求平方根的代码:

/*================SquareRootFloat================*/

float SquareRootFloat(float number) {
    long i;
...
果然又给翻出来了
:cruel:
听说这个算法在linux下速度比math.h更慢

chenke 发表于 2008-8-2 15:47

翻到一篇旧新闻,现在看很有意思

Doom 3 Super Edition for PS3

By James Orry - 26/09/2005 - 11:49am GMT

John Carmack has said he would like to make a Doom 3 super edition for the PlayStation 3.

Speaking to US magazine GameInformer, Carmack said of an idea to bring Doom 3 to the PlayStation 3: \"One idea we\'ve been sort of tossing around that is just a random idea is possibly doing some kind of super edition of the Doom 3 stuff for the PS3.\"

Carmack didn\'t exactly give any details as to what a \"Super Edition\" of the game would entail, but we assume he means something more than bundling the game with a bonus DVD of behind the scenes footage. Despite these comments, Carmack told the magazine that he prefers developing on the Xbox 360, much like Tomonobu Itagaki, head of Team Ninja has said.

http://www.videogamer.com/news/0-0-2007-1534.html

:awkward:

G.W.尼米兹 发表于 2008-8-2 15:50

原帖由 chenke 于 2008-8-2 15:47 发表 http://bbs.saraba1st.com/images/common/back.gif
翻到一篇旧新闻,现在看很有意思

Doom 3 Super Edition for PS3

By James Orry - 26/09/2005 - 11:49am GMT

John Carmack has said he would like to make a Doom 3 super edition for the PlayStation 3.

Speakin ...
这是什么:o

英文无能,大意为啥?

vhf 发表于 2008-8-2 16:38

潜猴谍影 发表于 2008-8-2 18:00

原帖由 MARK2 于 2008-8-2 00:07 发表 http://bbs.saraba1st.com/images/common/back.gif

荣誉勋章、半死不活的爹也是他
使命召唤1用的也是Q3A改良引擎

酒多是我爹 发表于 2008-8-2 18:10

原帖由 jinyuangungun 于 2008-8-2 08:56 发表 http://bbs.saraba1st.com/images/common/back.gif
求原文
老卡向来只用opengl
怎么可能喷出这种话

doom3开始就用d3d了

G.W.尼米兹 发表于 2008-8-2 18:55

原帖由 vhf 于 2008-8-2 16:38 发表 http://bbs.saraba1st.com/images/common/back.gif
意思就是纸里不住火,任你当时把机能吹得多高,时间一长就露馅了。
原来卡克也是PC党,一句话就把家用机战翻了:P

vhf 发表于 2008-8-2 18:57

G.W.尼米兹 发表于 2008-8-2 19:07

原帖由 vhf 于 2008-8-2 18:57 发表 http://bbs.saraba1st.com/images/common/back.gif
PS3代表不了家用机
他有肯定xo360和任地狱么:o

再者,哪个家用机没吹嘘过机能(好吧,也许掌机没有)

[ 本帖最后由 G.W.尼米兹 于 2008-8-2 19:08 编辑 ]

酒多是我爹 发表于 2008-8-2 19:12

奶粉公主吹机能n64级别

vhf 发表于 2008-8-2 19:13

G.W.尼米兹 发表于 2008-8-2 19:27

话说s1有卡克的戏服么:awkward:

vhf 发表于 2008-8-2 19:32

精钢魔像 发表于 2008-8-2 20:04

卡马克几个成就:

1、386时代实现媲美超任的卷轴效果(指挥官基恩)
2、提出引擎概念。然后出现了引擎授权这种营业模式(指挥官基恩)
3、参与设计了第一人称射击这种新的游戏模式(wolf3d)
4、电子竞技和电子竞技大赛的推动者(doom)
5、真实3d实现,将opengl加速带入游戏业(quake)
6、各种真实渲染效果(quake-现在)
7、20岁出头成为百万富翁
8、30出头入选互动艺术与科学名人堂
9、喷d3d,某种程度上促进了3d api的发展...

精钢魔像 发表于 2008-8-2 20:08

再补2条

10、官方支持mod设计(doom)
11、公开关卡编辑器,公开游戏源代码(doom-现在)

eva02eva02 发表于 2008-8-2 20:08

用CG来代替的机能的家用机又不是一天两天的事了:smoke:

qieyifonger 发表于 2008-8-2 21:07

看了这个神神叨叨的帖子让俺想起了以前一个十足90后脑残发布的所谓十大天才程序员排名,哈哈哈哈,完全无视诸多计算机界的先驱,建立了计算机软件理论基础的不是神?卡马克是神!开发了第一个计算机操作系统的不是神?卡马克是神!编写了第一个游戏的不是神?卡马克是神!

以上~~~

精钢魔像 发表于 2008-8-2 21:22

建立计算机软件理论基础(谁和我讲讲这是什么)也好,开发了第一个计算机操作系统也好,编写了第一个游戏也好,大众才不关心

就好像没人关心第一个做指南针的家伙是谁一样

vhf 发表于 2008-8-2 21:32

bbceve 发表于 2008-8-2 21:49

这年头卡马克都被人喷了。Doom启示录在大陆没销路?

酒多是我爹 发表于 2008-8-2 22:04

yagami0079 发表于 2008-8-2 22:09

程序员索青:~( 泪流满面

vhf 发表于 2008-8-2 22:10

Laplace 发表于 2008-8-2 22:13

原帖由 bbceve 于 2008-8-2 21:49 发表 http://bbs.saraba1st.com/images/common/back.gif
这年头卡马克都被人喷了。Doom启示录在大陆没销路?
中文正版叫doom启世录,谢谢。

酒多是我爹 发表于 2008-8-2 22:15

vhf 发表于 2008-8-2 22:18

酒多是我爹 发表于 2008-8-2 22:21

我就这意思
38的cs销量赶不上128的厕所3的零头

chenke 发表于 2008-8-2 22:23

原帖由 酒多是我爹 于 2008-8-2 17:10 发表 http://bbs.saraba1st.com/images/common/back.gif


doom3开始就用d3d了

只是声音API部分用了DX9

dboy99 发表于 2008-8-2 22:43

83年:猫叔的的超级玛丽
92年:铃木的vr赛车
93年:卡神的doom
:mask:

孙X 发表于 2008-8-2 22:44

vhf 发表于 2008-8-2 22:53

页: 1 [2] 3
查看完整版本: 索饭们,愤恨吧!