» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] 谈谈“虚拟内存”对游戏运行的作用

没那个告诉你, 堆栈区还虚拟的。。。


TOP

引用:
原帖由 喋血战狼 于 2009-6-26 12:46 发表

30FPS只是游戏的最基本要求吧  低于这个帧数眼睛就要看出卡了
   难道不一30FPS为最低标准??
     20FPS??
      15FPS??
难道你又要我重复一次?
前面就说了,把用于实时呈现图像的数据暂存, 那是脑残行为。 游戏设计者也不会这么脑残。再有内存中还有很多东西不是用于实时的。



TOP

引用:
原帖由 喋血战狼 于 2009-6-26 12:56 发表
连串口通信的基本步骤都没弄明白就来出题
    一个字节数据在缓冲区没读出来  能接下一个数据么  
       单片机C51   还给我弄出了缓冲数组
         你又吓的我魂飞魄散
          刚真被你唬住了 单片机砖家啊 ...
(从SBUF中读出来), 放入unsigned char temp_sbuf中
你眼睛瞎了啊。 举这个例子还不是为了说明你的荒谬吗。


TOP

N个项目都用了单片机, 你个连单片机课程都没学完的还跑来嘲笑我, 唉, 如今的学生就是毛糙, 也难怪,我去招人的时候根本就不要应届生。

TOP

引用:
原帖由 测试一下 于 2009-6-26 13:05 发表


的确指出你脑残之处并不需要多高级...
欠骂兄, 连LZ自己都承认那段说错了, 你就不要再来显摆了, 骂你还真是降低我的档次。

TOP

引用:
原帖由 喋血战狼 于 2009-6-26 13:09 发表

我觉得我已经讲的很清楚了
   我不知道你为什么非要放到unsigned char temp_sbuf??故意让别人覆盖  然后我就错了???搞笑了
    “那就肯定要占用内存,也就是说那些不常用的也要保存”
       对于一个游戏 ...
我觉得我已经讲的很清楚了
   我不知道你为什么非要放到unsigned char temp_sbuf??故意让别人覆盖  然后我就错了???搞笑了
    “那就肯定要占用内存,也就是说那些不常用的也要保存”
       对于一个游戏来说  只要最近要用的资源和最近不用的资源
       首先我不知道你计算一个最近不用的资源干什么??什么样的东西在游戏中药保存10分钟
      没说要提前计算, 而是你当期计算了,而且以后还要用。
      那我穿版读地图一次  前面计算作废????
      我退一万步说  ,你所谓的最近不常用的东西  要用了  CPU就等着他从硬盘读出来??
      读结果容易, 还是读代码再计算结果容易?

TOP

引用:
原帖由 喋血战狼 于 2009-6-26 13:14 发表
还有  你还没回答我
  当你花大力气计算10分钟以后才要的东西时候
     现在该怎么办??遇到这种情况把画面停住等计算完??
    或者前10分钟不干其他的等前10中出现的10分钟后需要的东西??
   那10分钟后又 ...
你脑子也太不好使了。很少有情况会提前10分钟计算,但是当前必须计算的东西的结果,10分钟后可能还要用。你是不是觉得,干脆永远不要算好了?

[ 本帖最后由 ffcactus 于 2009-6-26 13:22 编辑 ]

TOP

引用:
原帖由 喋血战狼 于 2009-6-26 13:25 发表

我靠  你这个不是含血喷人么
  你一开始说可能会发生
    然后扯了一大段
  后面又说时常会发生
    然后又扯了一大段
  现在又变成很少有情况了
我怨气冲天啊
我最开始举个例子, 我喜欢了用什么“可能”啊,“或许”啊这种词, 不行吗?
未必你的脑子只能停留在我举的例子上, 而不能理解我举的例子的含义? 你不能透过现象看本质?
说那么多, 无非就是表达:
1, 在内存一定的情况下, 用低效率的方法保存不常用的数据, 给常用的数据腾出空间, 这样在一定的效率范围内, 你的内存“看起来”会多点,同时也尽量兼顾了效率这个因素。
2, 虚拟内存可以让很多不常用的数据、或需要调用很大程序才能算出来的数据,临时保存到其他地方,这样直接读结果,比读程序再计算结果效率高,在结合1去理解这样做的其他好处。


[ 本帖最后由 ffcactus 于 2009-6-26 13:41 编辑 ]

TOP

一般这种保存运算结果的东西不会乱丢,至少该是丢堆栈段吧  或者是把保存结果的地址放入堆栈段
这是你说的, 我可能理解错了, 我以为你说把地址放入堆栈 = 这只要把地址放入堆栈就可以了,(原始数据可能被覆盖)
所以我才举的那个例子。
顺便指出, 堆栈不是你这么用的。

我实在想不通 一个搞了几个项目的人 会说只有地址回找不到数据
会返回缓存区指针 然后找以前的数据  然后在理直气壮的指责我错了


[ 本帖最后由 ffcactus 于 2009-6-26 13:42 编辑 ]

TOP

最后一次回答你的问题, 你要再不开窍也就罢了。
我总结下你的逻辑吧

    第一:你承认硬盘传输速度又瓶颈的
    是有瓶颈, 既然你知道了有瓶颈,如果我们只要结果,哪读100MB的程序,计算出1MB的结果快, 还是读1MB的结果快?
    第二:你承认虚拟内存的使用效率不如内存
    虚拟内存的效率是不如内存, 但是内存的大小是固定的,而程序需要多少内存与很多因素有关,最明显的, 与当前用户的操作有关,那么当用户的操作使得程序内存超过已有内存, 是蓝屏好,还是稍微卡一下好?
    第三:你不否认任何算法都不能100%的命中(理想模型除外)
    算法保证不会把那些实时性强的挪出去, 你也可以根据要求,自己定义, 让它不被挪出去。
    第四:你不否认呢任何算法都不能避免抖动  (理想模型除外)
    轻微抖动总比你直接卡死好, 也比你玩“FC游戏”好。再说, 一定就会卡吗, 那些无逢读盘时间的游戏设计得好的话, 也卡吗?
然后你就很无耻说了句 SO WHAT??
    以上四点,一个做了几个项目的人还好意思说SO WHAT??

一旦不命中(任何算法都不能避免的问题),就要去硬盘读取数据,让CPU死等在那  丢帧停顿都有可能

这个情况下  还能说虚拟内存对PS3的性能有提升???未必性能提升就一定要求不卡? 你现在的PC玩个游戏偶尔也卡, 未必它性能比小霸王都不如?一个无论如何都有可能照成游戏不能流畅运行的技术  居然被这么推崇
我在第一页就说了   对于单个任务  一旦使用了虚拟内存  效率肯定会降低(多少不论)
我也在第一页说了,不满意的话你可以不运行, 你可以去买内存, 但是让它运行, 只是慢点, 比根本就不让它运行要强得多。这个技术给你提供条件,设计人员可以用,可以调试改进, 觉得效果不理想也可以不用,但是它不可能成为绊脚石。某些人杞人忧天大可不必。对于游戏机这种几乎90%的时间需要现成的数据和资源的神奇的高科技(扯淡 大家无视)
最好的方法是,在限定范围内使用内存,而不是考虑用硬盘去扩展内存

无赖的很没水准啊你   天姐至少很用忽悠的方法在关键技术死不松口

而你把一切都承认后,还死扛不放 没意思了
智商太低, 这么简单的道理也不能理解, 哪也没意思了。
大家纯粹看戏来了

[ 本帖最后由 ffcactus 于 2009-6-26 15:12 编辑 ]

TOP

引用:
原帖由 上海恐龙 于 2009-6-26 14:33 发表
我艹,我就问一句话

电脑怎么可能知道十分钟以后需要什么计算结果???

比如CS,十分钟以后你鼠标朝着什么方向,有什么样的敌人,电脑难道可以预先计算出来?

实际上你稍微鼠标一动,整个结果就要重新计算 ...
你咋也能和LZ一样,只能扣字眼理解呢?
你就不能理解成“稍后可能会要”?

TOP

引用:
原帖由 喋血战狼 于 2009-6-26 15:35 发表

稍候可能会要的
  我什么稍候不处理现在处理??
    说数据太大,稍候处理不过来
      那现在就大量处理数据
        现在的工作怎么办???卡主??停住 ???死机 ???蓝屏???
   其实就是 小卡一 ...
我觉得你今后还是不适合继续从事你现在所学的专业。你的思维太缺乏逻辑,条理也不清晰。
居然问出这么多愚蠢的问题, 另在下感到非常的诧异。
你的脑子未必真的是卡壳了?
在正常运行下的结果这个结果的得出可能是前面花了不少资源, 不少时间得出了的这样结果虽然不是经常使用,但是如果丢弃则需要重新计算来过。现在内存非常紧张,为了给其他更加重要的信息腾出内存空间,把这一结果保存到硬盘上可以在系统负载比较小的情况下作这个工作 等你下次要用的时候,再从硬盘调用,这样做既不消耗实际内存,也不用重新耗费资源和时间去重新计算,这样只会使得游戏更加流畅,不卡。到你你的大脑里, 这一做法反倒是让游戏卡了。 真实太有才华了。

TOP

引用:
原帖由 上海恐龙 于 2009-6-26 16:02 发表


你自己可以计算一下,如果说计算机预估“稍后可能会要”用到比目前画面上下左右各大1倍的画面,时长持续1秒钟的画面,其计算量是多少

按照720P的标准,24位色,30帧流畅度

1280^2*720^2*24*30^2=18,345,88 ...
难道你脑子里除了画面就还是画面, 游戏又不是播片, 还有那么多东西需要计算处理, 你以为内存中所有的东西都是为了你现在看到的当前画面?

TOP

引用:
原帖由 上海恐龙 于 2009-6-26 16:14 发表


那我倒不明白了,除了画面之外,还有什么东西要用“虚拟内存”可以更快处理的

AI?那我们也可以来算啊

如果说AI仅和地图坐标有关,当前地图是256*256*256的标准网格,AI的选择枝有3种(这TM已经是SB的不能 ...
我就举HALO的例子吧。
假如现在正在打仗,表现这个场面中某些事物是DVD中200M程序运算出来的结果, 可是接下来有一段过场,为了让过场更华丽,需要很多内存,那么就可以暂时把内存中表现前面场景中的某些信息临时挪走。你过场完了,再读回来, 这样你无须重新加载300M的程序去计算,只需加载计算结果就可以了。

比如你跟敌人交战,敌人的AI,贴图,等等都需要占用内存,这些信息是硬盘中200MB的程序运算的结果,你把敌人消灭后,有来的是机械兵,它的AI、贴图等等又需要另外一个200MB的程序来实现。你把机械兵消灭后,前面的敌人又出现。
你当然可以每次都这么加载来加载去, 不过显然这是最愚蠢的做法,你大可把中间结果临时保存,下次要用的时候再调已经好了的东西。这样你不但速度更快, 还可以利用内存干其他的事,或许还可以把画面做得更好。

TOP

引用:
原帖由 喋血战狼 于 2009-6-26 16:16 发表

   我更觉的诧异
      一个明显不合适游戏这种需要大量现成数据的算法   而且你明明知道会卡 会造成瓶颈
       你不是想办法在规定内存内优化  而是宣言什么虚拟内存来粉饰  
         对于游戏来说  如果需求 ...
我举了那么多运用的例子,你举了什么, 除了三番五次的YY卡啊卡的, 什么30FPS, 一个毛的证据都拿不出来。你若能证明游戏软件对内存中所有的数据都是极快的调用, 哪我自然无话可说, 可问题是你能证明吗? 事实是如此吗?

TOP

发新话题
     
官方公众号及微博