开发者网络

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 101|回复: 1

游戏开发中,程序如何计算巨大的伤害数字,如超过long int ...

[复制链接]

2

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-1-12 17:15:25 | 显示全部楼层 |阅读模式
现在游戏中的数字往往非常大,几亿,几兆屡见不鲜。而游戏的伤害压缩往往仅在显示层面,如一万亿的数字显示为一亿,那么底层仍然要计算如此庞大的数。
据我所知,一些游戏已经出现过数字溢出的问题,如DNF曾经在90版本出现过附加伤害溢出问题(21e bug):当附加伤害伤害超过约21e时,总伤害反而大幅减少。推测原因是附加伤害使用int32类型存储,数据范围是-2,147,483,648 ~ +2,147,483,647。
据我所知,大多数编程语言提供的标准数据类型,最大整型是int64与unsigned int64,uint64最大表示整数是3.402823669209385e+38。而linux环境gcc提供了int128等,c#,rust等也提供了int128。而int256,或是BigInteger的实现往往依赖于高精度算法,处理速度较慢。
我想知道对于那些使用天文数字的游戏,数据类型是如何选择的。
回复

使用道具 举报

0

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 昨天 06:10 | 显示全部楼层
路过 帮顶 嘿嘿
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-6 13:42 , Processed in 0.081427 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表