باگ عجیب یک بازی را با سرعت ۵۰۰۰ فریم بر ثانیه اجرا کرد

در دنیای برنامهنویسی، گاهی یک خط کد میتواند تأثیری غیرمنتظره بر عملکرد برنامه بگذارد، حتی اگر آن برنامه یک بازی ساده مانند 3D Pinball: Space Cadet باشد.
به گزارشهفت صبحباگ جالبی که اخیراً توسط یکی از برنامهنویسان سابق مایکروسافت فاش شده، نشان میدهد چگونه نبود یک محدودکننده فریم در Windows NT باعث شد این بازی کلاسیک با نرخ حیرتانگیز ۵۰۰۰ فریم بر ثانیه اجرا شود. این اتفاق نهتنها نگاهی طنزآمیز به گذشته دارد، بلکه اهمیت جزئیات در توسعه نرمافزار را نیز یادآور میشود.
3D Pinball: Space Cadet یکی از بازیهای کلاسیک سیستمعاملهای اولیه ویندوز است که نخستینبار در بسته Microsoft Plus برای Windows 95 عرضه شد و تا Windows XP همراه این سیستمعامل باقی ماند.
دیو پلامر (Dave Plummer)، برنامهنویس سابق مایکروسافت، در کانال یوتیوب خود اعتراف کرد که هنگام پورت بازی از Windows 95 به Windows NT، بهطور ناخواسته باگی را وارد بازی کرده که باعث اجرای آن با نرخ ۵۰۰۰ فریم بر ثانیه شده است. در پاسخ به پرسشی درباره اشتباهات برنامهنویسی در دوران فعالیتش در مایکروسافت، پلامر گفت که احتمالاً اشتباهات زیادی داشته، اما یکی از بهیادماندنیترین آنها مربوط به زمانی است که 3D Pinball را به Windows NT منتقل کرده است. او در این باره توضیح داد:
برای وارد کردن بازی، یک موتور جدید بر اساس موتور اصلی طراحی کردم تا مدیریت تصویر، صدا و سایر بخشها را انجام دهد. اما موتور من باگی داشت که فریمها را تا جای ممکن سریع رندر میکرد.
در آن زمان، پلامر از پردازنده تکهستهای MIPS R4000 با فرکانس ۲۰۰ مگاهرتز استفاده میکرد که نرخ فریم بین ۶۰ تا ۹۰ را ارائه میداد، اما چون محدودکننده فریم برای بازی در نظر نگرفته بود، با ورود پردازندههای قدرتمندتر در اوایل دهه ۲۰۰۰، بازی بهصورت مداوم یک هسته کامل پردازنده را درگیر میکرد و با نرخ ۵۰۰۰ فریم بر ثانیه اجرا میشد. در نهایت، همکار پلامر، ریموند چن (Raymond Chen)، این مشکل را برطرف کرد و نرخ فریم را به ۱۰۰ محدود ساخت تا از فشار بیش از حد روی پردازنده جلوگیری شود.
با وجود جدیت مایکروسافت در برخورد با باگها، این مورد خاص آنقدر بیخطر بود که باعث خنده تیم توسعه شد. این مشکل در دورانی که کامپیوترها دکمه توربو داشتند، چندان مهم نبود، اما با حذف این ویژگی و تغییر نحوه پردازش زمان در نرمافزارها، چنین باگی میتوانست تأثیرگذار باشد، هرچند در آن زمان پیشبینی چنین پیشرفتی در پردازندهها دشوار بود.