امیرحسین فصیحی
امیرحسین فصیحی
خواندن ۲ دقیقه·۵ سال پیش

خطانامه ۲ - نساختن تست خودکار

با بزرگ‌تر شدن پروژه‌های بازی، تست آن‌ها نیز دشوارتر و حساس‌تر می‌شود. هر چه به انتهای پروژه نزدیک‌تر می‌شویم نیز اهمیت این تست‌ها طبیعتا مهم‌تر می‌شود. بازی‌هایی که فضای حالت بزرگی دارند، همچنان کار تست را دشوارتر می‌کنند به این دلیل که زمان زیادی لازم است صرف شود تا قسمت‌های مختلف بازی دیده شود و مطمین شویم مشکلی وجود ندارد. احتمال زیادی هم وجود دارد که بعضی حالت‌ها هرگز در تست دیده نشود.

چالش تست بازی فرزندان مورتا علاوه بر طولانی بودن مسیر اصلی بازی (حدود ۱۴ ساعت)، این است که محتوا به‌صورت procedural تولید می‌شود و ممکن است شما همه حالت‌های چیده شدن مرحله را در تست خود نبینید.

بعضی از تست‌ها حتما باید توسط یک کاربر انجام شود ولی بعضی از آن‌ها را می‌توانیم به‌صورت خودکار انجام دهیم و نتایج را ببینیم. استفاده از Unit Testing در ساخت نرم افزار رایج است ولی تست‌های با ارزش‌تر بازی، نیازمند سیستمی است که کلیت بازی را بتواند تست کند و نه فقط یک ماژول را. به عنوان مثال کاراکتر شما را از ابتدای مرحله تا انتهای مرحله به‌صورت خودکار هدایت کند. اینگونه تست‌ها برای مطمین بودن از integrity بازی و عدم وجود حالت‌هایی که منجر به crash و یا hang در بازی بشه بسیار مفید است. طبیعتا جایگزین تست‌های دیگر نیست. یکی از حوزه‌های جدی دیگری که ساخت تست خودکار برای آن مفید است بحث بالانس بازی است.

در اواسط پروژه ساخت بازی گرشاسپ، یک سیستم تست خودکار درست کردیم به نحوی که گرشاسپ را از ابتدای مرحله اول تا انتهای بازی حرکت می‌داد و به این شکل مطمین می‌شدیم که یکپارچگی بازی بهم نریخته است. معمولا صبح‌های زود و یا شب‌ها دیروقت، کامپیوترهای متعددی در حال اجرای خودکار بازی گرشاسپ بودند. همچنین این امکان وجود داشت که Debugger به بازی متصل شود و در صورت بروز مشکل، برنامه نویس بتواند دقیقا محل و دلیل روی دادن آن را بررسی کند. این سیستم تست به پروژه گرشاسپ کمک بسیار بزرگی کرد و امروز که به آن فکر می‌کنم تصوری ندارم که اگر نبود چه اتفاقی روی می‌داد.

در پروژه Shadow Blade، به دلیل کوتاه بودن بازی و ساده بودن ساختار مراحل، نیازی به ساخت تست‌های اینگونه نبود. (البه تصور می‌کنم که با کمی فکر کردن همیشه می‌توان به نیازهایی رسید که با تست خودکار کیفیت را بتوانیم بالا ببریم) ولی در پروژه فرزندان مورتا جای اینگونه تست‌ها خالی است و همواره وجود انباشت کارهای لازم برای پروژه و درگیری اعضای تیم باعث شد که اولویت این کار پایین برود. به احتمال زیاد اگر یکی از نیازهای پروژه را قربانی ساخت این سیستم می‌کردیم، فرآیند تست راحت‌تری را تجربه می‌کردیم.

پیشنهاد جدی این است که اگر پروژه شما می‌تواند از تست‌های خودکار بهره‌مند شود،‌ خیلی زود به سراغ ساخت آن بروید، حتما زمان خیلی زیادی را در آینده ذخیره خواهید کرد.

اگر تمایل دارید در مورد استفاده از تست‌های خودکار در بازی League of Legends بدانید، این مقاله را مطالعه کنید:

https://technology.riotgames.com/news/automated-testing-league-legends

بازیسازیتست خودکار
از اعضای فن‌افزار
شاید از این پست‌ها خوشتان بیاید