옛날 게임들이 최적화가 지리는 이유

옛날 게임들이 최적화가 지리는 이유

간략한 요약

이 비디오에서는 게임보이와 같은 구형 콘솔에서 프로그래밍할 때 개발자들이 직면했던 제약 사항과, 이러한 제약 사항을 극복하기 위해 사용했던 최적화 기술에 대해 설명합니다. 메모리 관리, 곱셈 및 나눗셈 연산 구현, 비트 연산을 통한 효율적인 상태 관리 등의 내용을 다룹니다.

  • 8KB 램의 한계 극복을 위한 메모리 최적화 기법
  • 곱셈/나눗셈 연산 부재 시 효율적인 연산 구현 방법
  • 비트 연산을 활용한 상태 관리 및 비교 연산 최적화

인트로

게임 실행에 필요한 램은 게임 데이터를 CPU가 처리할 수 있도록 저장하는 데 필수적입니다. 최신 게임은 많은 메모리를 사용하지만, 과거에는 메모리 용량이 매우 제한적이었습니다. 예를 들어, 포켓몬 레드 게임을 실행하던 게임보이는 CPU 성능이 낮고 램 용량이 8KB에 불과하여 개발자들이 고도의 최적화 기술을 사용해야 했습니다.

포켓몬 도감 최적화

포켓몬 도감 기능은 만난 포켓몬을 기록하고 카운팅하는 기능입니다. 1세대 포켓몬은 총 151마리인데, 각 포켓몬의 만남 여부를 기록하기 위해 일반적인 방법(True/False 형태)으로 저장하면 151바이트의 메모리가 필요합니다. 이는 게임보이 전체 메모리의 2%를 차지하므로 비효율적입니다. 따라서 개발자들은 1바이트를 8개의 비트로 쪼개어 각 비트에 포켓몬의 만남 여부를 저장하는 방식을 사용했습니다. 이렇게 하면 19바이트 정도로 기능 구현이 가능해져 메모리를 절약할 수 있습니다.

곱셈, 나눗셈 구현

최신 컴퓨터는 CPU 내에 곱셈 및 나눗셈 부품이 있지만, 과거 CPU에는 이러한 부품이 없어 코딩 시 곱셈 및 나눗셈 문법을 사용할 수 없었습니다. 따라서 곱셈을 구현하기 위해 덧셈을 여러 번 반복하는 방식을 사용했습니다. 하지만 큰 숫자를 곱할 때는 반복 횟수가 늘어나 성능 문제가 발생했습니다. 이를 해결하기 위해 개발자들은 이진수 변환과 비트 연산을 활용한 효율적인 곱셈법을 개발했습니다. 이 방법은 곱할 숫자가 커져도 반복 횟수가 고정되어 CPU 부담을 줄일 수 있었습니다. 2를 곱하는 연산은 비트를 왼쪽으로 한 칸 이동시키는 방식으로 처리하여 효율성을 높였습니다.

상태이상 관리

포켓몬의 상태 이상은 총 5가지가 있으며, 각 상태 이상 여부를 메모리에 저장해야 합니다. 메모리 절약을 위해 1바이트를 8개의 비트로 쪼개어 각 비트에 상태 이상 여부를 저장했습니다. 이렇게 하면 메모리 절약뿐만 아니라 비트 연산을 통해 상태 비교 연산을 빠르게 수행할 수 있습니다. 예를 들어, AND 연산자를 사용하여 포켓몬이 마비 또는 중독 상태인지 한 번의 연산으로 체크할 수 있습니다.

결론

과거에는 제한된 램과 CPU 성능으로 인해 개발자들이 메모리 관리와 연산 최적화에 많은 노력을 기울여야 했습니다. 하지만 현대에는 CPU 성능이 향상되고 메모리 용량이 충분해져 코드 최적화의 필요성이 줄어들었습니다.

Watch the Video

Share

Stay Informed with Quality Articles

Discover curated summaries and insights from across the web. Save time while staying informed.

© 2024 BriefRead