班门弄斧一下,从技术角度分析下这游戏的一些问题吧。其实主要是大家都在反映的卡顿方面的问题。
个人认为,游戏优化方面,其中一点就是要针对内存进行内存优化。特别是这种无缝地图的开放世界,内存优化尤其重要。而内存优化又需要注意以下方面:
① 内存释放
首先,需要做内存释放的功能。例如怪物死亡后,需要将这个怪物资源占用的内存释放掉,腾出空间给其他资源和数据;再例如玩家从A场景进入B场景,那么就需要将A场景资源占用的内存释放掉。某些游戏玩了一段时间就感觉卡顿,就是因为没有及时进行内存释放,导致系统资源占用内存越来越多,结果就导致游戏运行过程中极其的卡顿,甚至游戏崩溃。
而计算机内存毕竟是有限的,如果没有相关内存优化功能,就算玩家用的是顶配电脑,也会因为游戏时间过长,而导致游戏出现严重卡顿,甚至系统崩溃的现象。
为什么河洛群侠传在游戏进行了一段时间后感觉很卡,必须玩了一段时间后退出游戏,再进入才感觉不会卡?个人推测就是因为没有做相关内存释放的功能。
② 内存池
其次,频繁的进行内存释放和资源加载也会造成卡顿。因为在内存释放的瞬间数秒内,因为内存的大量释放和数据清除,会造成系统的暂时卡顿,资源加载也同样如此。而内存池的作用,就是将玩家经常要加载的资源放到这个池子里面,避免经常释放资源占用的内存和加载资源,而造成系统资源的浪费和系统卡顿现象。
而一般游戏在进入一个场景前,需要先进行LOADING载入,而载入阶段就是释放之前场景资源和数据占用的相关内存,并且加载新场景资源的时机。前面也说了,内存释放和资源加载时会造成短暂的系统卡顿,而通过LOADING条载入的时候进行内存释放和资源加载,玩家就不会在进入新场景后体会到这种卡顿,从而给了玩家较好的游戏体验。这也是为什么很多游戏都会有载入阶段的缘故。
而具有开放性和无缝地图特性的游戏,因为场景都是无缝地图,对内存的占用要求会非常高,导致程序不好优化。因为玩家从当前场景前往新场景时,当前场景的内存不能随便释放掉,因为地图是无缝的,玩家回来很方便也很快,一旦清除当前场景资源和数据占用的内存,万一玩家突然因为什么原因又回来了呢?到时候加载都没时间加载(因为没有LOADING载入时间)。就算临时加载,又会导致场景的卡顿现象,总之比较麻烦。
所以这类游戏,不仅仅需要做内存释放的优化,还需要做内存池的功能。通过内存池,将最近用到的资源、经常用到的资源放入到内存池内,当需要调用和加载相关资源和数据时,系统直接读取内存池内的数据,这样就可以做到瞬间加载相关数据和资源,而不会造成系统卡顿现象。
例如这个场景经常会出现5种怪物,那么如果将这5种怪物的美术资源和数据存放在内存池,就不需要频繁的释放该资源占用的内存,并且在平时也就不需要再频繁的加载这5种怪物的资源,从而可以有效的降低卡顿现象。
而河洛的《河洛群侠传》,这游戏是无缝的开放式场景,这就导致对系统内存的占用会非常高。很多人反馈此游戏在平时游戏过程中都有卡顿。个人推测是由于没做内存池,导致需要用到资源时不得不临时进行资源加载导致的。
当然以上都是个人班门弄斧,毕竟不是真正的程序员,若有错误请见谅。
个人认为,游戏优化方面,其中一点就是要针对内存进行内存优化。特别是这种无缝地图的开放世界,内存优化尤其重要。而内存优化又需要注意以下方面:
① 内存释放
首先,需要做内存释放的功能。例如怪物死亡后,需要将这个怪物资源占用的内存释放掉,腾出空间给其他资源和数据;再例如玩家从A场景进入B场景,那么就需要将A场景资源占用的内存释放掉。某些游戏玩了一段时间就感觉卡顿,就是因为没有及时进行内存释放,导致系统资源占用内存越来越多,结果就导致游戏运行过程中极其的卡顿,甚至游戏崩溃。
而计算机内存毕竟是有限的,如果没有相关内存优化功能,就算玩家用的是顶配电脑,也会因为游戏时间过长,而导致游戏出现严重卡顿,甚至系统崩溃的现象。
为什么河洛群侠传在游戏进行了一段时间后感觉很卡,必须玩了一段时间后退出游戏,再进入才感觉不会卡?个人推测就是因为没有做相关内存释放的功能。
② 内存池
其次,频繁的进行内存释放和资源加载也会造成卡顿。因为在内存释放的瞬间数秒内,因为内存的大量释放和数据清除,会造成系统的暂时卡顿,资源加载也同样如此。而内存池的作用,就是将玩家经常要加载的资源放到这个池子里面,避免经常释放资源占用的内存和加载资源,而造成系统资源的浪费和系统卡顿现象。
而一般游戏在进入一个场景前,需要先进行LOADING载入,而载入阶段就是释放之前场景资源和数据占用的相关内存,并且加载新场景资源的时机。前面也说了,内存释放和资源加载时会造成短暂的系统卡顿,而通过LOADING条载入的时候进行内存释放和资源加载,玩家就不会在进入新场景后体会到这种卡顿,从而给了玩家较好的游戏体验。这也是为什么很多游戏都会有载入阶段的缘故。
而具有开放性和无缝地图特性的游戏,因为场景都是无缝地图,对内存的占用要求会非常高,导致程序不好优化。因为玩家从当前场景前往新场景时,当前场景的内存不能随便释放掉,因为地图是无缝的,玩家回来很方便也很快,一旦清除当前场景资源和数据占用的内存,万一玩家突然因为什么原因又回来了呢?到时候加载都没时间加载(因为没有LOADING载入时间)。就算临时加载,又会导致场景的卡顿现象,总之比较麻烦。
所以这类游戏,不仅仅需要做内存释放的优化,还需要做内存池的功能。通过内存池,将最近用到的资源、经常用到的资源放入到内存池内,当需要调用和加载相关资源和数据时,系统直接读取内存池内的数据,这样就可以做到瞬间加载相关数据和资源,而不会造成系统卡顿现象。
例如这个场景经常会出现5种怪物,那么如果将这5种怪物的美术资源和数据存放在内存池,就不需要频繁的释放该资源占用的内存,并且在平时也就不需要再频繁的加载这5种怪物的资源,从而可以有效的降低卡顿现象。
而河洛的《河洛群侠传》,这游戏是无缝的开放式场景,这就导致对系统内存的占用会非常高。很多人反馈此游戏在平时游戏过程中都有卡顿。个人推测是由于没做内存池,导致需要用到资源时不得不临时进行资源加载导致的。
当然以上都是个人班门弄斧,毕竟不是真正的程序员,若有错误请见谅。