옛날에는 메모리 관련 문제가 많았다.
예를 들어서 페미컴의 렘은 2KB
1B = 8bit
1KB = 1024B
2 * 1024 * 8 = 16384
즉 총 16384개의 스위치를 사용할 수 있다.(bit)
그리고 이것을 8개로 뭉친 Byte가 기본 단위가 되는데
이렇게 하여
실제로는 주소 0000~7FF 까지 총 2048 바이트가 주어진다.
(실제 7FF 끝자리까지 사용한 경우는 거의 없음. 오류로 뻑나다보니)
이것이, 게임기가 기억할 수 있는 최대한의 자리다.
총 2048자리.
자 그럼 설명을 들어가자.
1 바이트(자리)가 나타낼 수 있는 최대 숫자는 얼마일까.
자잘한건 넘어가고.
컴퓨터는 2진수를 사용한다.
즉
11111111(2진수)(스위치8 개 1자리) = FF(16진수) = 255(10진수)
즉 바이트 하나만 사용했을때 최대 표기가 가능해지는 숫자. 이게 255 였다. 물론 이건 음수도 모두 포기하여 나오는 숫자.
그럼 65535 가 나오는 방법도 눈치가 빠른 사람은 짐작하리라.
11111111 11111111(2진수)(스위치16 개 2자리)= FFFF(16진수) = 65535
이렇게 된다.
즉 1 자리를 사용시 255
2자리를 사용시 65535
??? : 왜 저렇게 쪼잔한 숫자 사용함?
자리가 2048개나 되는데 화끈하게 65535 사용해도
저런 자리가 1024개나 있는거 아님?
자 그럼 설명해보자.
대표적인 RPG. 드래곤 퀘스트 3
이 작품의 아군은 총 넷이다.
그리고 스텟은
HP MP 힘 공격력 방어력 수비력 내성 체력 현명함 민첩함 운
HP MP를 제외한 각각 최대치가 255.
HP MP는 999다.
정확한 구현법은 달랐지만
일단 이것은 255로 표현이 불가능하다.
즉 두 자리를 먹어야 한다는 것.
HP 최대치 2
HP 현재치 2
MP 최대치 2
MP 현재치 2
8
그리고 힘,공격력,방어력,수비력,내성,체력,현명함,민첩함,운
이렇게 해서 9
캐릭터 하나만이 벌써 데이터를 17개를 먹었다.
기본 스텟만 해서.
여기에 표기되지 않는 스텟을 따지고 (속성 저항,브레스 저항 등)
배우고 있는 마법 같은 것 까지 따지면.
캐릭터 하나당 30 정도를 먹게된다.
그러면 파티원 수 4 * 30 = 120
순수한 파티원 스텟 만 해도 벌써 120 자리.
문제는 더 있다. 인벤토리는?
드퀘는 캐릭터당 인벤토리, 공용 인벤토리 시스템을 사용한다.
솔직히 기억은 안나지만
개인 인벤토리 10, 공용 인벤토리 40 이라고 치자.
여기서 아이템 슬롯은 보통 1 바이트를 차지한다.
보통 이런 경우 0000 = 약초, 0001 = 독 해독약초 이런식으로 기억하기 때문.
그럼 인벤토리로 10 * 4 + 40이 될까?
틀렸다.
해당 아이템 몇개를 가지고 있느냐도 체크해야되지 않는가.
그러면 10 * 4 + 40 * 2
120 + 120
240
플레이어 기본 능력치만 따져서 벌써 용량의 12%를 차지했다.
만약 여기서 스텟 최대치가 999 였다면? 9999 였다면?
그러면 이미 용량의 50% 가량을 캐릭터들 능력치만으로 가득 차게 된다.
물론 전투중에는 적들도 나온다.
스텟 최대치가 9999인 상황에서 적이 세종류면?
그대로 메모리가 뻗어버리는 대참사가 일어난다.
그만큼 게임이 빡빡했던 것.
가장 기본적인 스텟관리만 해도 12% 를 먹는 어이없는 상황이기에.
물론 그것 말고도 게임에서는 수없이 많은 수치를 기억해야된다.
이벤트가 깨졌는가?(확인 스위치 한개당 0.125자리)
(온 맵에 존재하는 보물 상자가 1000개면 그것만으로 125 자리를 먹는다!)
캐릭터가 어디 존재하는가?(맵 위치, X좌표, Y좌표)
지금 나오고 있는 텍스트는 무엇인가.
(당시 컴퓨터로 한글이 약했던 이유중 하나. 한글은 메모리와 용량를 너무 많이 먹는다.)
그렇기에 최대한 아끼기 위한 255, 65535가 대세가 된것이다.
아니면 보기에도 쉬운 99나 9999로 하거나(연산량을 늘어나지만, 사용하는 메모리 차이는 없으니)
물론 이걸 어떻게든 하기 위한 프로그래머들의 눈물겨운 작업정신도 있었다.
예시를 들어
스텟 최대치를 15로 하고
힘 = 15* 1
민 = 15 * 16
지 = 15 * 16*16
속 = 15 * 16*16*16
로 기억하면.
이렇게 하면 능력치 최대치를 2Byte 안에 몰아넣을 수 있다.
오또캐여?
물론 저렇게 보면 이해하기 힘들지 모른다.
그럼 바이트로 표시해보자.
FFFF(16진수)
첫자리가 힘
두번째 자리가 민
세번째 자리가 지
네번째 자리가 속
하는 식으로, 능력치 4개를 2바이트에 몰아넣을 수 있게 된다.
뭐 쨋건 옛날 사람들은 그렇게 메모리 깎는 장인이었다는 이야기다.
그걸 위해서 희생해야 했던 것이 숫자 최대치고.
물론 여기서는 메모리만 다뤘지만, 용량도 마찬가지다.
저런 수치 기입도 용량 최대치가 128KB(1Mb) 이런 시절에는 매우 빠듯했기에.
요즘?
요즘 메모리는 GB 단위라(당시의 100만 배 이상) 저런것보다는
프로그래밍 오류로 메모리가 줄줄 세거나 하는 것이 문제다.
(메무리 누수)(사용한 자리를 안빼고 뻐튕기는 문제.)
이제는 쥐어 짜내기보다는 그런 오류를 잡아야 하는 단계인 것.
(IP보기클릭)223.62.***.***
저래서 더 대단한 파판 3와 포켓몬스터 금은 그리고 진짜 불가사의한 슈퍼마리오
(IP보기클릭)59.5.***.***
그래서 스타 우즈맵 업글이 255업이 끝이였군
(IP보기클릭)211.34.***.***
저런 이유로 생겼던 수치제한이 JRPG에선 일종의 전통처럼 돼버려서 파판은 PS1시절까지만 해도 캐릭터 HP나 1타당 대미지가 9999가 한계였다.
(IP보기클릭)58.140.***.***
65535가 FFFF 잖아. 그런데 마이너스 플러스 다 써야 하는 경우는 FF7F 였었지. (Whex 는 두자리 단위로 거꾸로 입력)
(IP보기클릭)220.87.***.***
금은에 관동지방 끼워넣는걸 이와타 사토루가 며칠만에 뚝딱했다고 하지
(IP보기클릭)112.168.***.***
후속작에 전작 세계 통째로 끼워넣은것도 드퀘3 가 원조지. 마왕뒤에 대마왕있다는 요즘 아주 흔한 클리쉐를 최초의 반전으로 집어넣기위해 첫 마왕까지 컨텐츠를 어지간한 게임 하나 분량의 볼륨으로 컨텐츠를 잡고아넣고도 전작세계에 있던 대마왕 스토리를 드퀘1급 볼륨으로 추가로 더 넣음. 그거 용량 확보를 위해서 텍스트까지 죄다 압축해서 집어넣었다지.
(IP보기클릭)121.157.***.***
한글이 취약한 부분에 대해 첨언하자면 영어/일어의 경우 전체 글자수가 제한되어 있고 알파벳 식으로 더해가면 되는데 한글의 경우 자+모+자 조합자라서 이걸 메모리로 표현하려면 분량이 상당히 많이 나옴. 이 그림 정도만 조합시켜도 0x0BF0 정도 메모리를 쓰는데 이걸 한글화 하려면? 게임 내 텍스트는 싹 다 번역해서 메모리를 갈아엎어야 함...
(IP보기클릭)182.226.***.***
https://youtu.be/ZWQ0591PAxM 예전에 본거 찾았다 닌텐도용 게임 만들기. 실제로 끝까지 제작해서 카트리지까지 만들고 펀딩판매했던걸로 기억하는데 어떻게 됐는진 잘 모름 제약이 많음 특히나 여기선 주인공 크기를 16×16으로 하고싶었는데 용량제한으로 8×8로 만들수밖에 없었다든가 하는 그런 자잘한 타협도 들어있음
(IP보기클릭)211.177.***.***
반대임 -32768~+32767 +0이 양수범위에 포함되서 양수쪽이 1 작음 이게 리니지에서 라우풀과 카오풀 수치임
(IP보기클릭)211.36.***.***
이문제로 디아블로2 영어판과 한글판 권장사양이 달랐다 영어판128램 한글256램
(IP보기클릭)58.140.***.***
65535가 FFFF 잖아. 그런데 마이너스 플러스 다 써야 하는 경우는 FF7F 였었지. (Whex 는 두자리 단위로 거꾸로 입력)
(IP보기클릭)183.99.***.***
-32767 ~ +32768 | 20.05.15 06:23 | | |
(IP보기클릭)211.177.***.***
니트넷
반대임 -32768~+32767 +0이 양수범위에 포함되서 양수쪽이 1 작음 이게 리니지에서 라우풀과 카오풀 수치임 | 20.05.15 07:40 | | |
(IP보기클릭)183.99.***.***
그러게. 이걸 틀려버리네. | 20.05.15 07:46 | | |
(IP보기클릭)59.5.***.***
그래서 스타 우즈맵 업글이 255업이 끝이였군
(IP보기클릭)106.102.***.***
스타는 윈도우 기반이라 그럴 필요는 없었는데 개발시기가 도스에서 넘어가는 시기라서 그런가 과거 흔적들이 남은듯 255이상 필요한 경우가 잘 없기도 하고 | 20.05.15 08:23 | | |
(IP보기클릭)211.36.***.***
스타 맥뎀 65535 | 20.05.15 10:05 | | |
삭제된 댓글입니다.
(IP보기클릭)220.89.***.***
김굴단
뭐로 검색하면 좋은지 알 수 있을까요 | 20.05.15 04:52 | | |
(IP보기클릭)182.226.***.***
https://youtu.be/NB_VBl7ut9Y 나도 위에 저게 무슨 게임인지 알것같은데, 못찾겠고 비숫한거 올림 코모도어64라는 ibm pc 이전 컴퓨터용 게임 제작기 컴퓨터 램용량이 64kb인데 키입력 등등 해서 가용램 40kb언저리가지고 어떻게 게임을 만들 수 있는가에 대한 제작브이로그 | 20.05.15 05:23 | | |
(IP보기클릭)182.226.***.***
SnowRabbit
https://youtu.be/ZWQ0591PAxM 예전에 본거 찾았다 닌텐도용 게임 만들기. 실제로 끝까지 제작해서 카트리지까지 만들고 펀딩판매했던걸로 기억하는데 어떻게 됐는진 잘 모름 제약이 많음 특히나 여기선 주인공 크기를 16×16으로 하고싶었는데 용량제한으로 8×8로 만들수밖에 없었다든가 하는 그런 자잘한 타협도 들어있음 | 20.05.15 05:32 | | |
(IP보기클릭)110.132.***.***
오 | 20.05.15 08:24 | | |
(IP보기클릭)182.222.***.***
(IP보기클릭)14.39.***.***
(IP보기클릭)222.109.***.***
(IP보기클릭)223.62.***.***
저래서 더 대단한 파판 3와 포켓몬스터 금은 그리고 진짜 불가사의한 슈퍼마리오
(IP보기클릭)220.87.***.***
삼도천 뱃사공
금은에 관동지방 끼워넣는걸 이와타 사토루가 며칠만에 뚝딱했다고 하지 | 20.05.15 04:37 | | |
(IP보기클릭)112.168.***.***
삼도천 뱃사공
후속작에 전작 세계 통째로 끼워넣은것도 드퀘3 가 원조지. 마왕뒤에 대마왕있다는 요즘 아주 흔한 클리쉐를 최초의 반전으로 집어넣기위해 첫 마왕까지 컨텐츠를 어지간한 게임 하나 분량의 볼륨으로 컨텐츠를 잡고아넣고도 전작세계에 있던 대마왕 스토리를 드퀘1급 볼륨으로 추가로 더 넣음. 그거 용량 확보를 위해서 텍스트까지 죄다 압축해서 집어넣었다지. | 20.05.15 04:44 | | |
(IP보기클릭)115.93.***.***
둠도 신기하더라 | 20.05.15 05:39 | | |
(IP보기클릭)211.34.***.***
저런 이유로 생겼던 수치제한이 JRPG에선 일종의 전통처럼 돼버려서 파판은 PS1시절까지만 해도 캐릭터 HP나 1타당 대미지가 9999가 한계였다.
(IP보기클릭)182.228.***.***
그래서 다단히트 스킬이 지존기 9999×@로 데미지가 들어가니 막보스건 신이건 끔살 | 20.05.15 09:50 | | |
(IP보기클릭)210.103.***.***
(IP보기클릭)14.56.***.***
(IP보기클릭)119.64.***.***
(IP보기클릭)118.37.***.***
(IP보기클릭)183.96.***.***
(IP보기클릭)117.111.***.***
지금도 장비 장착 이런거는 01010101 이런식으로 두고 비트연산 하면서 많이 씀 심지어 편함 | 20.05.15 09:49 | | |
(IP보기클릭)14.45.***.***
(IP보기클릭)223.38.***.***
(IP보기클릭)110.35.***.***
(IP보기클릭)121.139.***.***
(IP보기클릭)182.228.***.***
그러면서 박쥐니 쥐니 잘 보이지도 않는 타격 판정 깔아놓던 똥겜들... | 20.05.15 09:52 | | |
(IP보기클릭)116.121.***.***
(IP보기클릭)125.129.***.***
진짜? 2진법을 안배운다고? | 20.05.15 05:04 | | |
(IP보기클릭)125.134.***.***
ㅇㅇ | 20.05.15 06:15 | | |
(IP보기클릭)220.77.***.***
(IP보기클릭)58.122.***.***
예전에 치트오매틱으로 캐릭터 수치 전부 65535로 바꾸던 기억이... | 20.05.15 05:32 | | |
(IP보기클릭)121.162.***.***
(IP보기클릭)125.136.***.***
(IP보기클릭)211.109.***.***
(IP보기클릭)121.157.***.***
한글이 취약한 부분에 대해 첨언하자면 영어/일어의 경우 전체 글자수가 제한되어 있고 알파벳 식으로 더해가면 되는데 한글의 경우 자+모+자 조합자라서 이걸 메모리로 표현하려면 분량이 상당히 많이 나옴. 이 그림 정도만 조합시켜도 0x0BF0 정도 메모리를 쓰는데 이걸 한글화 하려면? 게임 내 텍스트는 싹 다 번역해서 메모리를 갈아엎어야 함...
(IP보기클릭)182.228.***.***
그래서 애뮬로 구동가능한 시점에서야 한글화가...한글패치 된 애뮬 파일이 원어판 보다 용량이 컸음 | 20.05.15 09:55 | | |
(IP보기클릭)211.36.***.***
죄수번호-812885249
이문제로 디아블로2 영어판과 한글판 권장사양이 달랐다 영어판128램 한글256램 | 20.05.15 10:07 | | |
(IP보기클릭)58.76.***.***
알파벳이나 가나의 경우는 있는 폰트를 그대로 늘여쓰면 되기때문에 폰트가 잡아먹는 용량이 작았고, 일본어 게임의 경우 한자따위가 나오면 그나마 한글화 작업 하기가 쉽다고 하는 이유가 바로 저때문이었지. 한글은 쓸 수 있는 모든 글자를 다 표현하면 4000자가 넘어가고, 잘 안쓰는 문자나 사어같은걸 빼고나면 2500자 정도 되니까. 반면 영어의 경우는 대문자 소문자만 넣으면 되고, 일본어같은 경우도 가나 넣고 한자는 1500자정도 넣으면 끝이었기 때문에 한글보다는 사정이 훨씬 나았다고. 것땜에 당시 한글화 하던 사람들이 맨날 롬 확장하고 폰트 추가하고.... 그게 일이었다고. | 20.05.15 10:55 | | |
(IP보기클릭)61.79.***.***
디아2 했을당시 영문판하면 렉이 적은 이유가 그거였구나 | 20.05.15 11:05 | | |
삭제된 댓글입니다.
(IP보기클릭)106.240.***.***
일군
마장기신에서 기체 풀개조시 보너스가 있는데 네오그랑존은 개조 다 안해도 상한치를 채워서인지 풀개조가 안되서 보너스가 없었지. | 20.05.15 08:13 | | |
(IP보기클릭)220.70.***.***
(IP보기클릭)183.99.***.***
(IP보기클릭)180.70.***.***
(IP보기클릭)106.102.***.***
케찹이모잘라
아조씨 계산기는 썼어야지 ㅋㅋ 난 그세대까지는 아니라 도스에도 16진수 계산해주는 헥스에디터 썼었는데 | 20.05.15 08:26 | | |
(IP보기클릭)221.154.***.***
(IP보기클릭)222.108.***.***
ㅇㅇ 사실 쓰잘대기 없는데 까보면 굳이 바이트 나눠서 배정해놓고. 메모리 남아돌아도 그냥 습관처럼 남아있더라. | 20.05.15 07:26 | | |
(IP보기클릭)221.154.***.***
근데 확실히 수치가 커지면 좀 게임 밸런싱 측면에서 못만든 게임처럼 보이긴 해 조단위 데미지 뜨는 똥3 같은거ㅋㅋㅋ 숫자 너무 커지면 계산기 겜이라고 불리니까ㅋㅋㅋㅋ | 20.05.15 07:32 | | |
(IP보기클릭)121.157.***.***
그건 서버 패킷 크기랑 연관있어서 온라인 게임은 함부로 늘리기 힘듬 | 20.05.15 09:43 | | |
(IP보기클릭)211.36.***.***
옛날 저사양에서도 가능하다는건 서버에도 부담이 적은 데이터라는뜻이니 크게 바꾸긴힘들지 | 20.05.15 10:09 | | |
삭제된 댓글입니다.
(IP보기클릭)222.108.***.***
카사네 테토
보통 그런 숫자 나올 일이 인게임에서 없으면 그냥 놔두지. 워낙 높은 숫자라.... 하스도 일반적인 상황에서는 볼일 없어서 그냥 놔두다보니 실험에서는 오버플로우 뜨지만. | 20.05.15 07:57 | | |
(IP보기클릭)118.127.***.***
(IP보기클릭)106.102.***.***
(IP보기클릭)222.108.***.***
저때 쓴 기술들 찾아보면 기가 막히더라. 진짜 아이디어 어떻게든 짜내서 만드는 수준. | 20.05.15 08:29 | | |
(IP보기클릭)106.102.***.***
(IP보기클릭)121.175.***.***
(IP보기클릭)39.7.***.***
관련 있습니다. 단쿠가의 경우, 각기체와 합체유닛까지 5기, 콤바트라는 6기 였기 때문에, 전출 안보내면 오버 플로우 할수 밖에 없는 상황이었지요. | 20.05.15 11:35 | | |
(IP보기클릭)117.111.***.***
(IP보기클릭)123.143.***.***
(IP보기클릭)211.36.***.***
내 마음속 무한의 끝 최대수치 255 65535 | 20.05.15 10:15 | | |
(IP보기클릭)112.146.***.***
(IP보기클릭)14.14.***.***
(IP보기클릭)222.108.***.***
쓰는데 그냥 일반적으로 대충 쓰는것도 수치가 21억 4748만 3647 이 한계수치라서 어지간하면 보기 힘듬. | 20.05.15 10:45 | | |
(IP보기클릭)121.175.***.***
(IP보기클릭)14.38.***.***
(IP보기클릭)211.192.***.***
(IP보기클릭)61.99.***.***
(IP보기클릭)222.108.***.***
정말 아이디어 보따리 수준이였던 당시의 메모리 관리.. | 20.05.15 10:55 | | |
(IP보기클릭)175.223.***.***
(IP보기클릭)218.155.***.***
(IP보기클릭)110.70.***.***
(IP보기클릭)124.58.***.***