데브허브 | DEVHUB | 옛날 게임들이 최적화가 지리는 이유 (포켓몬 레드)옛날 게임들이 최적화가 지리는 이유 (포켓몬 레드)
- 옛날 게임들은 램과 CPU 성능이 극도로 제한적이었기 때문에 개발자들이 하드웨어의 한계를 극복하기 위한 고도의 최적화 기술을 사용했습니다. 🎮
- 포켓몬 도감의 포켓몬 조우 여부를 저장할 때, 각 포켓몬당 1바이트를 할당하는 대신 1바이트를 8개의 비트로 쪼개어 약 1/8 수준의 메모리(151바이트 -> 19바이트)로 효율적으로 저장했습니다. 💾
- 구형 CPU에는 곱셈/나눗셈 연산 장치가 없어, 개발자들이 직접 비트 연산과 시프트를 활용한 효율적인 곱셈 알고리즘을 구현하여 반복 횟수를 최소화했습니다. ✖️
- 특히 2를 곱하거나 나누는 연산은 비트를 왼쪽 또는 오른쪽으로 한 칸 이동시키는 것으로 처리되어 CPU에서 매우 빠르게 수행 가능했으며, 이는 2의 제곱수가 자주 사용된 이유입니다. ↔️
- 포켓몬의 상태 이상(마비, 중독 등) 또한 각 상태를 별도의 바이트로 저장하는 대신, 하나의 바이트 내에서 각 비트에 할당하여 메모리를 절약했습니다. 🩹
- 비트 연산자(AND)를 활용하여 여러 상태 이상 여부를 단 한 번의 연산으로 빠르게 확인할 수 있도록 자료 구조를 설계하여 비교 연산의 효율성을 극대화했습니다. ⚡
- 이러한 최적화 기법들은 제한된 자원 속에서 게임을 구동하기 위한 필수적인 노력으로, 현대에는 발전된 하드웨어와 컴파일러 덕분에 개발자가 직접 신경 쓸 필요가 줄어들었습니다. 🚀