1경 2332조 2424억 2221원을 다루는 게임을 만들려면? BigInteger (Unity,C#)

lhamed(60)
Published in
#kr
Words
210
Reading
1 min
Listen
Play
9y

대문.png

안녕하세요! 인디 게임을 개발하는 라메드 입니다!!!

오늘도 활기차게 인사드립니다.

오늘은 작업한 것을 기록하기도 하고, 나중에 보고 참고하기도 하고,

다른 분들에게 낯선 경험을 소개시켜드리려고 이렇게 포스팅합니다.


게임에서는 무한한 돈, 경험치등 을 가질 수 있을까요?

대부분의 유저는 "네" 라고 대답할 수도 있습니다.

하지만, 사실은 그렇지 않습니다.

그 이유는 게임 내에 사용되는 데이터는 그 한계를 가지고 있기 때문입니다.

KakaoTalk_Photo_2018-02-18-23-27-32_41.jpeg

위에 그려진 컵이 우리의 데이터를 담아줄 데이터 타입이라고 생각해봅시다.

컵에 넘치지 않을 정도로 데이터를 담으면 아무 문제가 없습니다.

KakaoTalk_Photo_2018-02-18-23-27-30_88.jpeg

하지만, 데이터 타입의 한계보다 큰 데이터는 이 데이터 타입(컵)으로는 나타내기가 힘듭니다.

그래서 컴퓨터는 자동으로 한계치를 , 가장 작은 한계치까지 넘겨 버립니다.

99까지 카운트 할 수 있는 자료형이라면, 100을 넣는 순간 1이 되어버리는 것이죠.

이를 "오버플로우"라고 합니다. (넘쳐 흐른다고 쉽게 생각하셔도 될 것 같아요! )

자주 사용하는 데이터 타입인 int는 2147483647 가 한계치라고 합니다 ㅎㅎ.

그래서 오버워치라는 게임에서, 계속해서 패배하다보면 점수가 0 점 밑으로 내려가게 되어

갑자기 만점인 5000이 되는 버그가 이슈가 되기도 했습니다. ( 이는 언더플로우 라고 합니다. )


이러한 버그들을 해결하기 위해선 어떻게 하면 될까요 'ㄴ'?

답은 의외로 단순합니다.

대빵 - 큰 범위를 가진 데이터 타입을 사용하면 됩니다.

그중 유명한 것이 BigInteger입니다.

(원래는 최신 버전의 C#에서 지원하지만, 유니티의 씨샵 버전이 낮기 때문에,
저는 https://github.com/keiwando/biginteger 에서 다운로드 했습니다. )

스크린샷 2018-02-18 오후 11.38.57.png

저는 이런 식으로 0000 마다 한국 식 단위를 붙여줘 보았습니다!

조경.png

아주 잘 작동합니다!

읽어주셔서 감사합니다 ^^~

1경 2332조 2424억 2221원을 다루는 게임을 만들려면? BigInteger (Unity,C#) | Ecency