找回密码
 注册
X系列官方授权正版
搜索
查看: 1426|回复: 2

[求助] 求问一个地图大小的问题

[复制链接]
发表于 2016-11-24 22:31:16 | 显示全部楼层 |阅读模式
最近刚换了电脑,内存已经上升到16G,可以选择10*10星区和1000恒星了吗?
貌似最近使用之后玩到中途就错误跳出,是我的内存还是不够吗?
发表于 2016-12-7 01:24:01 | 显示全部楼层
总之把黑锅扔给汉化字体就行了。。
回复

使用道具 举报

发表于 2017-2-20 00:28:01 | 显示全部楼层
本帖最后由 问题大条了 于 2017-2-20 02:40 编辑

你就是32G也没卵用,游戏程序给内存堆栈给了个固定数值,又因为是单字节游戏,这个固定数值较短,超过必溢出,这是游戏的程序语言所限定的。这是缺陷没法改,最新版不知道有没有改善,如有也是只能改善而已,并不能从根本上解决。大概也就增加个类似边界检查机制的方式。

通常不能支持双字节的游戏都容易内存溢出。主要原因支持不了多长的内存寻址,尤其是限定了多少内存的游戏,而汉化偏偏又加重了这种可能性(汉字双字节我不解释)。。。

因汉字而跳出有2个原因,1是字库不全(有些汉字还是能用却不会跳出的,想来想去只有字库不全的原因),为何说舰船设计图不能用汉字,就是这个原因。
比如我用标枪、军刀、短剑、战斧、三叉戟这些名字分别为巡航舰、护卫舰、驱逐舰、巡洋舰、主力舰命名。标枪、军刀、短剑完全可用,战斧的斧与三叉戟的叉戟这3个字一定会崩溃!

2是舰船造出来后是复数的,就像一张格子表,分成2列,前1列是舰船设计图的名字,后1列是舰船制造的数量。即使汉字完全可用,但也不能太长,如果太长,且容我解释。
宇宙的汉化是外挂式,而不是修改启动程序从而支持双字节,而暗影以下(包括暗影)是修改了启动程序的。所以绝不会因为舰船设计图有汉字而跳出。在此我感谢那些为遥远的世界汉化做出贡献的人们。所以我玩的时间最长的就是暗影最终版。

PS:修改调用汉字字库,调整字体宽度等等,但不能完全避免跳出,这个游戏能不能修改内存堆栈上限这个我真不知道。我能知道的是上古卷轴5是可以修改内存堆栈上限从而避免MOD过多造成跳出,后来这个修改方法直接被官方挪用在了后继版本-黎明、炉火、龙裔与传奇。

说这个外挂式汉化吧,当用完全可用的汉字(以标枪这些字为例)为舰船命名时,由于太长,超出游戏所限定的字节,就会写超,写到舰船数量堆栈上。比如【标枪级巡航舰三叉戟888-1000】意思是当前所选择的战舰是标枪级巡航舰,名称为三叉戟888号,总数量是1000艘。但如果名字太长,就会写到写数量的内存堆栈上。

先打个比瑜,借钱帐单。如果是【张3借李4-1000元】.还钱是没有问题的。由于借款人与被借款人的名字太长,于是变成:【张333333借李444444元】.因为字节限制,【张333333借李444444-1000元】中的{-1000}被【张333333借李444444-1000元】中的{44444}覆盖了。那么问题就大了,南非要还444444元。。。

换成游戏中,因为名字太长,【标枪军刀短剑级巡航舰三叉戟888-1000】变成了【标枪军刀短剑级巡航舰三叉戟8880】,其中{-1000}的{-100}被{叉戟888}的覆盖了,多的那个0并没有擦除,于是,CPU需要更新数据时,地址是找到了,名字也是对的。但数量这个格子的数据却完全变了。所以当寻址准备返回时,就发现数据对不上,本来是1000艘的,为何变成了8880艘?于是寻址无法返回。崩溃无可避免。

这就是内存溢出的大概原理。解释起来真的很麻烦的。所以,很多人回答为什么会跳出,就说是游戏本身程序原因的根本所在。事实上,我为了解释,修改了一遍又一遍。

注:这只是个简单的解释而已,事实上。。。更复杂。
回复 1 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站