خرید بک لینک

بازی های ساخته شده با پایتونلیست معروف ترین نمونه ها

بازی هایی مانند «ایو آنلاین» (EVE Online)، «دنیای تانک‌ها» (World of Tanks) و «تمدن چهار سید مایر» (Sid Meier’s Civilization IV) جزو چند مورد از مشهور‌ترین بازی های ساخته شده با پایتون هستند. در زمان توسعه بازی های پیچیده و حرفه‌ای بیشتر اوقات ممکن است از زبان‌ها و تکنولوژی‌های مختلفی استفاده شود. پایتون هم یکی از کاربردی‌ترین زبان‌ها در حوزه‌هایی مانند اسکریپت‌نویسی، ماد‌سازی و غیره است. بنابراین جای تعجب ندارد که در بخش‌های از بازی های مشهور و بزرگ هم زبان برنامه نویسی پایتون استفاده شده باشد.

بازی های ساخته شده با پایتون – لیست معروف ترین نمونه هابازی های ساخته شده با پایتون – لیست معروف ترین نمونه ها

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

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

در فهرست پایین، چند مورد از بازی های ساخته شده با پایتون را معرفی کرده‌ایم.

چند مورد از بازی های ساخته شده با پایتون

در ادامه مطلب تمام موارد بالا را یک به یک معرفی خواهیم کرد.

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

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

چرا از پایتون در بازی‌سازی استفاده می‌شود؟

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

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

گاهی از اوقات گفته می‌شود بازی خاصی با پایتون ساخته شده است. این عبارت می‌تواند حداقل سه معنی مختلف داشته باشد.

تصویری از انواع پلتفرمهای بازی های ساخته شده با پایتون

هرکدام از این رویکردها تصمیمی متفاوت هستند و چالش‌های مخصوص خود را دارند.

بازی «ایو آنلاین» (EVE Online) و «تمدن ۴» (Civilization IV) مثال‌های مناسبی هستند، چون در دو سمت متفاوت این معماری قرار می‌گیرند. برای مثال بازی EVE Online سال‌ها از پایتون در ساختار خود به صورت جدی و زنده استفاده کرده است. شرکت «CCP» نیز درباره پایتون «Stackless» و معماری این بازی توضیحاتی منتشر کرده است.

در مقابل، «تمدن ۴» نمونه‌ای واضح‌تری از کار با پایتون به عنوان لایه‌ای محدود برای اسکریپت‌نویسی و مادسازی است. این موضوع در مستندات API پایتون بازی «تمدن ۴» نیز توضیح داده شده است.

The Sims 4

بازی «The Sims 4» چهار یکی از محبوب‌ترین بازی های شبیه‌سازی زندگی در جهان است. این بازی نه تنها به خاطر گیم‌پلی جذابش مشهور شده، بلکه طراحی فنی آن هم توجه بسیاری از توسعه‌دهندگان را جلب کرده است. یکی از بخش‌های مهم این طراحی، استفاده از زبان برنامه‌نویسی پایتون است.

تصویری از لوگوی اصلی بازی سیمز۴

پایتون زبانی سطح بالا و خوانا است. این زبان از سبک‌های مختلف برنامه‌نویسی مانند «رویه‌ای» (Procedural)، «شی گرا» (Object-Oriented) و «برنامه نویسی تابعی» (Functional Programming) پشتیبانی می‌کند. در ضمن از پایتون به دلیل داشتن ویژگی‌های زیر برای اتصال بخش‌های مختلف نرم‌افزار نیز استفاده می‌شود.

در بازی The Sims 4، پایتون وظایف مختلفی را مدیریت می‌کند. برای مثال، از آن برای انجام کارهایی مانند موارد زیر، استفاده می‌شود.

چند مورد از مهم‌ترین کاربرد‌های پایتون در سیمز ۴

به‌روزرسانی پایتون در The Sims 4

در یکی از به‌روزرسانی‌های بازی، سیستم پایتون The Sims 4 تغییر کرد. این تغییر روی افزونه‌هایی تاثیر گذاشت که با قالب «pyo.» ساخته شده بودند. بعد از این به‌روزرسانی، قالب «pyc.» جایگزین «pyo.» شد. به همین دلیل، بسیاری از مادهای اسکریپتی قدیمی دیگر کار نمی‌کردند. البته مادهایی که کاملا در قالب «package.» ساخته شده بودند، تحت تاثیر این تغییر قرار نگرفتند.

استفاده از پایتون در The Sims 4 نشان می‌دهد این زبان برای توسعه بازی، انتخابی انعطاف‌پذیر و کارآمد است. توسعه‌دهندگان بازی با کمک پایتون توانستند سیستمی پیچیده و قابل گسترش ایجاد کنند. سیستمی که هنوز هم با کمک کاربران و مادسازها رشد کرده و تغییر پیدا می‌کند.

چطور بازی سازی با پایتون را در فرادرس یاد بگیریم؟

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

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

در بخش بعد روش استفاده از زبان برنامه نویسی پایتون در بازی EVE Online را بررسی کرده‌ایم.

EVE Online

تصویر والپیپیر بازی EVE Online - بازی های ساخته شده با پایتون

بازی «ایو آنلاین» (EVE Online) نشان می‌دهد که پایتون فقط برای ساخت نمونه‌های اولیه یا پروژه‌های ساده و سرگرمی ساخته نشده است. نکته اصلی در این پروژه، معماری سیستم بود. شرکت «CCP Games» از پایتون در بازیی از نوع «MMO» بزرگ و آنلاین استفاده کرد.

هرچند بخش‌های حساس به عملکرد را با کدهای سطح پایین توسعه داده است. مطلبی که این شرکت درباره پایتون Stackless و معماری EVE Online منتشر کرده است، هنوز هم یکی از منابع مهم برای درک این نوع ساختار به حساب می‌آید.

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

این انتخاب در بازی های آنلاین دائمی منطقی به نظر می‌رسد، زیرا این بازی ها ویژگی‌های خاصی دارند که سه مورد از آن‌ها را در پایین نوشته‌ایم.

نکات مهم برای توسعه‌دهندگان ارشد

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

معماری چندزبانه زمانی موفق عمل می‌کند که هر لایه وظیفه‌ای مشخص و قراردادی ثابت داشته باشد. در مورد «ایو آنلاین» نکته مهم این نیست که «پایتون برای همه‌چیز به اندازه کافی سریع است». بلکه از پایتون در جایی استفاده شده که انعطاف‌پذیری، ارزش بیشتری دارد. این موضوع شامل موارد زیر است.

این موضوع شبیه آن است که موتور اصلی تا حد ممکن کوچک باقی بماند ولی لایه‌ای در سطح بالاتر برای قوانینی ایجاد شود که هر هفته تغییر می‌کنند.

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

تیم‌های علاقه‌مند به استفاده از این الگو بهتر است همان اصولی را بررسی کنند که در ابزارهای هوش مصنوعی برای کدنویسی پایتون و «طراحی پلتفرم‌های داخلی» (Internal Platform Design) رعایت می‌شود. دلیل این موضوع هم روشن است. لایه اسکریپت‌نویسی فقط زمانی مفید است که از دستورالعمل واضح و شفافی پیروی کند.

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

World of Tanks

تصویری از والپیپر بازی World of Tanks - بازی های ساخته شده با پایتون

بازی «دنیای تانک‌ها» (World of Tanks) نمونه‌ یکی از الگو‌های رایج در پروژه‌های حرفه‌ای است. در این الگو به‌جای کدنویسی هسته اصلی موتور بازی با پایتون از این زبان برای توسعه‌پذیر کردن سیستم‌های داخلی استفاده می‌شود.

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

الگوی توسعه بازی World of Tanks بسیار مهم است. زیرا بسیاری از تیم‌های توسعه محصول می‌توانند از آن استفاده کنند. اینجا دیگر با داستان «استفاده از پایتون برای همه‌چیز» روبه‌رو نیستیم. بلکه موضوع اصلی، «استفاده از پایتون در بخش‌های مشخص و حساب‌شده» است.

این نوع بازی ها از پایتون برای موارد زیر استفاده می‌کنند.

سه وظیفه اصلی پایتون در بازی «دنیای تانک‌ها» (World of Tanks)

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

توسعه‌پذیری کنترل‌شده در بازی‌سازی با پایتون

وقتی به بازی های محبوب ساخته شده با پایتون نگاه می‌کنیم، الگوی مشترکی به نام « توسعه‌پذیری کنترل شده» (Controlled Extensibility) دیده می‌شود. در این روش، لازم نیست که کاربرانبه همه بخش‌های سیستم به شکل کامل دسترسی داشته باشند. فقط بخشی از زمان اجرای برنامه در اختیار آن‌ها قرار می‌گیرد. آن‌هم هم فقط در حدی که برای منطق رابط کاربری، قوانین بازی یا رفتار مادها کافی باشد.

این رویکرد چند مزیت مهم دارد.

با این حال، نگهداری این نوع سیستم‌ها همیشه ساده نیست. زمانی که بخش اسکریپت‌نویسی پروژه بزرگ‌تر می‌شود، پایداری API-ها هم اهمیت بیشتری پیدا می‌کند. چون کوچک‌ترین تغییر می‌تواند روی بخش‌های مختلف پروژه تاثیر بگذارد. تیم‌هایی که از این روش استفاده می‌کنند، معمولا ابزارهای کمکی فرایند توسعه را هم بررسی می‌کنند.

برای مثال می‌توان به ابزارهای هوش مصنوعی مخصوص برنامه‌نویسی با پایتون اشاره کرد. زیرا در پروژه‌های به شدت وابسته به اسکریپت‌نویسی، مقدار زیادی کد کمکی و ابزار مخصوص توسعه تولید می‌شود. همه این بخش‌ها باید مرتب، خوانا و قابل نگهداری باشند.

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

Sid Meier’s Civilization IV

یکی از پوسترهای بازی Sid Meier’s Civilization IV

بازی «تمدن چهار سید مایر» (Sid Meier’s Civilization IV) یکی از گزینه‌های مهم در بین بازی های ساخته شده با پایتون است. این بازی یکی از بهترین نمونه‌های استفاده از پایتون به عنوان لایه اصلی برای اسکریپت‌نویسی در گیم‌پلی و مادسازی به‌ شمار می‌رود.

در تمدن چهار، پایتون به بخشی از معماری عمومی بازی شده است. شرکت «Firaxis» از پایتون به عنوان زبان اصلی موتور بازی استفاده نکرده است بلکه پایتون را در بخش‌هایی به کار برد که بازی های استراتژی بیشترین تغییرات را در آن‌ها دارند. این بخش‌ها شامل موارد زیر هستند.

تمدن چهار یکی از بازی های ساخته شده با پایتون است. پایتون در این بازی وظیفه کمک به انعطاف‌پذیری بیشتر بازی را بر عهده دارد.

برای توسعه‌دهندگان سینیور پایتون، بازی «تمدن چهار» (Civilization IV) به همان دلیلی جذاب است که سیستم‌های سازمانی مبتنی بر پلاگین جذاب هستند. تیم توسعه، API سطح بالایی طراحی کرده‌اند تا افرادی خارج از تیم توسعه موتور بازی هم بتوانند به صورت موثر با آن کار کنند. با طراحی این مرز‌بندی، لایه اسکریپت‌نویسی دیگر فقط بخشی از جزئیات داخل پروژه نیست. بلکه به رابط رسمی و قابل نگهداری تبدیل شده است.

یکی از کتابخانه‌های بسیار مناسب برای بازی‌سازی در پایتون، کتابخانه Pygame است. در فرادرس روش ساخت بازی ماشین با پایتون توسط این کتابخانه را آموزش داده‌ایم. در صورت تمایل به بررسی این برنامه و کدهای بازی می‌توانید مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.

اهمیت مرزبندی میان موتور بازی و لایه اسکریپت‌نویسی

در هر بازی استراتژی نوبتی، بخش زیادی از منطق بازی بیشتر از قدرت «برای پردازش برنامه» به سرعت «برای توسعه و تغییر» نیاز دارد. قوانینی مانند سیستم مبارزه، رفتار دیپلماسی، اسکریپت‌نویسی سناریوها، مدیریت رویدادها و محتوای مادها سریع‌تر از بخش‌هایی مثل رندر یا الگوریتم‌های پایه مسیریابی تغییر می‌کنند. برای توسعه این لایه سطح بالا پایتون انتخاب مناسبی است.

البته این موضوع تا زمانی درست است که موتور بازی مسئول سیستم‌های حساس به عملکرد باشد و لایه اسکریپت‌نویسی تنها قوانین و منطق رفتاری را مدیریت کند.

این تقسیم‌بندی به کار مهندسی واقعی نیاز دارد.

بازی Civilization IV نمونه قدرتمندی از این مدل محسوب می‌شود. بازی ساخته شده با این تصمیم بسیار بیشتر از چیزی که به طور معمول در سیستم‌های بسته دیده می‌شود، فعال و زنده باقی ماند.

هر سطح توسعه‌پذیری مناسب معمولا به سه بخش اصلی نیاز دارد.

در واقع هدف این نیست که بگوییم پایتون در بازی‌سازی از دیگر زبان‌ها بهتر عمل می‌کند یا برای مثال اسکریپت‌نویسی با پایتون از اسکریپت‌نویسی با زبان برنامه نویسی «Ruby» قدرت‌مندتر است. بلکه باید ببینیم آیا برنامه نوشته شده می‌تواند به سوالات زیر پاسخ بدهد یا نه.

بازی Civilization IV تا حد زیادی این تعادل را به درستی برقرار کرد. پایتون به این بازی انعطاف‌پذیری بالایی داد و باعث شکل‌گیری جامعه فعال مادسازی «تمدن چهار» شد. در مقابل، هزینه این تصمیم مدیریت و نگهداری مداوم API-ها بود.

زمانی که بازیکنان توسعه ابزارهای خود را روی لایه اسکریپت‌نویسی آغاز می‌کنند، مسئولیت توسعه‌دهندگان بازی سنگین‌تر می‌شود. از آن پس توسعه‌دهندگان بازی متعهد شده‌اند که از تمام توابع، رویدادها و مدل اشیا در دسترس مادسازها پشتیبانی کنند.

در نهایت توجه کنید که برای افزایش عمر بازی با کمک لایه اسکریپت‌نویسی باید با API مانند محصول واقعی و مستقل رفتار کنیم. نه اینکه آن را به چشم میانبری موقت برای توسعه بازی ببینیم.

Doki Doki Literature Club

تصویری از والپیپر Doki Doki Literature Club - بازی های ساخته شده با پایتون

بازی «!Doki Doki Literature Club» نماینده دسته متفاوتی از بازی های ساخته شده با پایتون است. در اینجا از پایتون فقط به عنوان ابزاری برای ساخت لایه اسکریپت‌نویسی داخل موتور اصلی بازی استفاده نشده است. این بازی از طریق «Ren’Py» ساخته شد. Ren’Py موتوری مبتنی بر پایتون است که ساختار کاملی برای توسعه بازی های داستان‌محور در اختیار تیم‌ها قرار می‌دهد.

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

چند مورد چالش‌های بازی‌های داستان‌محور

موتور مبتنی بر پایتون در زمان پیاده‌سازی این ساختارها عملکرد خوبی از خودش نشان می‌دهد.

موتورهای مبتنی بر پایتون در چه شرایطی مناسب هستند؟

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

بازی !Doki Doki Literature Club به طور عملی نشان می‌دهد که انتخاب موتور بازی باید بر اساس نوع بار کاری انجام شود.

بازی های داستان‌محور یکی از واضح‌ترین دسته‌هایی هستند که پایتون برای توسعه حرفه‌ای آن‌ها کاملا مناسب است.

Long Live the Queen

لوگوی اصلی بازی Long Live the Queen

بازی «عمر ملکه دراز باد» (Long Live the Queen) نشان می‌دهد ساختارهای داستان‌محور مبتنی بر پایتون تا چه اندازه قابلیت گسترش دارند. با افزایش مسیرهای شاخه‌ای داستان، این ساختارها همچنان عملکرد مناسبی از خود نشان می‌دهند.

بازی Long Live the Queen یکی دیگر از گزینه‌های مهم در بین بازی های ساخته شده با پایتون است. چون نش ان می‌دهد پایتون فقط برای نمایش دیالوگ استفاده نمی‌شود. چالش اصلی در اینجا رندر نیست. مسئله مهم، هماهنگ‌کردن شبکه‌ای پیچیده از موارد زیر است.

چند مورد از چالش‌های اصلی پایتون در بازی Long Live the Queen

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

این مسئله برای توسعه‌دهندگان ارشد اهمیت زیادی دارد. زیرا نشان می‌دهد پایتون فقط ابزاری ساده برای اسکریپت‌نویسی نیست. بلکه می‌تواند نقشی شبیه به موتور تخصصی مدیریت منطق بازی هم داشته باشد.

ارزش اصلی این روش در خوانایی و نگهداری‌پذیری آن قرار دارد. طراحان می‌توانند رویدادها و شرط‌های جدید را سریع‌تر اضافه کنند. از طرف دیگر، مهندسان هم تا زمان منظم بودن API-های مربوط به آمارها، «Flag»-ها و «Trigger»-های رویداد می‌توانند سیستم را به راحتی مدیریت کنند.

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

درس‌های طراحی نرم‌افزار از بازی Long Live the Queen

به طور کل می‌توان گفت که بازی Long Live the Queen به عنوان نمونه‌ای از طراحی نرم‌افزار اهمیت دارد. چون همین مسائل در خارج از دنیای بازی ها نیز وجود دارند.

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

همین اصول طراحی در توسعه ابزارهایی مانند موارد زیر نیز استفاده می‌شود.

Frets on Fire

منوی اول بازی Frets on Fire - بازی های ساخته شده با پایتون

بازی «Frets on Fire» نمونه‌ای کلاسیک از بازی های اوپن سورس و سبک مبتنی بر پایتون است که کدهای قابل فهمی دارد. کدهای این بازی را می‌توان به سادگی اصلاح کرد و تغییر داد.

ویژگی مهم بازی Frets on Fire در آنجاست که بهترین روش استفاده از پایتون را در بازی ها نشان می‌دهد. نکات مهم این بازی از نظر توسعه را در فهرست زیر نوشته‌ایم.

این تفاوت از نظر معماری، اهمیت زیادی دارد. در بعضی پروژه‌ها، پایتون روی موتور‌هایی از جنس زبان «C» یا «++C» قرار می‌گیرد. بنابراین از پایتون فقط به عنوان لایه‌ای برای اسکریپت‌نویسی ماموریت‌ها، هوش مصنوعی یا مادسازی استفاده می‌شود. اما توسعه‌‌دهندگان Frets on Fire استراتژی دیگری را در پیش گرفته‌اند. در اینجا پایتون فقط ابزاری برای کدنویسی بخش‌های اطراف موتور بازی نیست. بلکه بخش بزرگی از خود بازی را اجرا می‌کند. برای بازی های ریتمیک با مکانیک محدود و قوانین قابل پیش‌بینی، چنین تصمیمی منطقی به نظر می‌رسد.

مزیت عملی این معماری، سرعت بالای تغییر و توسعه در آن است. مواردی مانند «زمان‌بندی ورودی‌ها» (Input Timing)، «پردازش نت‌ها» (Note Parsing)، «جریان رابط کاربری» (UI Flow) و «مدیریت محتوا» (Content Handling) زمانی راحت‌تر بررسی می‌شوند که کدهای پروژه کوچک باشند. آنقدر کوچک که توسعه‌دهندگان به راحتی بتوانند ساختار کلی آن را در ذهن خود نگه دارند.

در اینجا زبان پایتون بخشی از «قابلیت نگهداری» (Maintainability) محصول است و نمی‌توان به آن فقط به عنوان لایه کمکی برای اجرای منطق محتوای داستان بازی توجه کرد. کتابخانه‌های بازی‌سازی پایتون به خوبی از این سبک توسعه پشتیبانی می‌کنند. به‌کارگیری ابزارهایی مانند «Pygame» و «Panda3D» مقدار کد مورد نیاز برای آزمایش حس بازی، زمان‌بندی و فرمت‌های محتوا را کاهش می‌دهند.

نقش پایتون در معماری بازی Frets on Fire

بازی Frets on Fire شامل سه الگوی مهم است که توسعه‌دهندگان ارشد باید به آن‌ها توجه کنند.

البته این رویکرد محدودیت‌هایی هم دارد. برای مثال، ممکن اشت پروژه به موارد زیر نیاز داشته باشد. شاید برطرف کردن این مشکلات با کمک پایتون چندان ساده نباشد.

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

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

اگر چالش اصلی پروژه، سرعت توسعه، قابلیت تغییر و ساده نگه داشتن ساختار بازی باشد، پایتون می‌تواند بخش بزرگی از پروژه را مدیریت کند. حتی بیشتر از چیزی که بسیاری از تیم‌ها انتظار دارند. اما اگر چالش اصلی به مقیاس موتور بازی مربوط شود، بهتر است پایتون در لایه‌های کناری سیستم قرار بگیرد. در این حالت، API-های دقیق و مشخصی بین لایه اسکریپت‌نویسی و بخش‌های حساس به عملکرد طراحی می‌شوند.

The Temple of Elemental Evil

پوستر اصلی بازی The Temple of Elemental Evil

پوستر اصلی بازی The Temple of Elemental Evil

بازی «معبد شیطان بنیادین» یا «The Temple of Elemental Evil» نشان می‌دهد که چگونه می‌توان از طریق نگهداری لایه اسکریپتی مبتنی بر پایتون و بازسازی آن توسط جامعه کاربری، عمر بازی را افزایش داد.

بازی The Temple of Elemental Evil در استیم یکی از بهترین نمونه‌های استفاده از پایتون برای افزایش عمر بازی فراتر از دوره تجاری اولیه آن محسوب می‌شود. موارد زیر، شرایطی ایجاد کردند که جامعه کاربران بتوانند سال‌ها به نگهداری و توسعه بازی ادامه دهند.

این همان ارزش استراتژیکی است که بسیاری از تیم‌ها آن را دست‌ کم می‌گیرند.

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

عمر طولانی‌تر از طریق سیستم‌های قابل بررسی

زمانی که بازی موارد زیر را (از طریق پایتون) در اختیار کاربران قرار می‌دهد، فضای بیشتری برای توسعه و تغییر ایجاد می‌شود.

در نرم‌افزارهای قدیمی، این موضوع به دست یافتن به نکات مثبتی مانند گزینه‌های زیر کمک می‌‌کرد.

در بخش فنی این موضوع هم درس مهمی وجود دارد. در توسعه بازی با پایتون، رویداد «مدیریت برخورد» (Collision Handling) فقط به بررسی ساده هم‌پوشانی مستطیل‌ها محدود نمی‌شود.

یکی از روش‌های رایج این است که ابتدا شیء با کمک بردار جابه‌جایی حرکت داده شود. سپس مستطیل یا Mask آن به‌روزرسانی شود. بعد از آن نیز برخوردها با تابع «pygame.sprite.collide_mask» بررسی شوند.

این روش در زمان مدیریت شکل‌های نامنظم و «حرکت‌های سبک پلتفرمر» (Platforming Movement) دقت بیشتری دارد. این مثال کوچک نکته مهمی را نشان می‌دهد. پایتون می‌تواند از منطق‌هایی با قوانین پیشرفته در گیم‌پلی پشتیبانی کند. البته به شرطی که توسعه‌دهندگان فقط به ساده‌ترین الگوهای آموزشی متکی نباشند و از ساختارها و انتزاع‌های مناسب استفاده کنند.

یادگیری درست پایتون مقدمه‌ای برای یادگیری بازی سازی

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

وب‌سایت آموزشی فرادرس، فیلم‌های بسیار خوب و با کیفیتی را برای آموزش مفاهیم این زبان برنامه نویسی تهیه کرده است. چند مورد از این فیلم‌ها را در ادامه معرفی کرده‌ایم.

برای مشاهده گزینه‌های بیشتر می‌توانید به وب‌سایت فرادرس مراجعه کرده یا با کلیک بر روی تصویر زیر، فیلم‌های مورد نیاز خود را مشاهده کنید.

از منطق بازی تا مستندسازی

درس مشترک این بازی ها ساده است. در حوزه بازی‌سازی، پایتون زمانی بهترین عملکرد را دارد که تیم‌ها از آن به عنوان لایه کمکی استفاده کنند.

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

نکته مهم دیگری هم وجود دارد. زمانی که پایتون را در اختیار کاربران یا توسعه‌دهندگان قرار می‌دهید، در واقع سیستمی می‌سازید که افراد مختلف به آن وابسته می‌شوند. مهندسان گیم‌پلی، «سازندگان ماد» (Modders)، طراحان فنی و حتی تیم‌های پشتیبانی، همگی باید بر اساس رفتار این سیستم و مستندات آن کار کنند.

در صورت رویدادن هر کدام از اتفاقات زیر، وجود لایه اسکریپتی به‌جای مزیت به مشکل تبدیل می‌شود.

API-های اسکریپتی فقط زمانی مفید باقی هستند که مستندات آن‌ها همزمان با کد تغییر کند. معماری بازی و نظم در مستندسازی به هم وابسته هستند. تیم‌هایی که برای «Build» و «Release» به «CI/CD» اهمیت می‌دهند، به مستندسازی مداوم رابط‌های توسعه‌دهندگان هم باید توجه کنند.

مرد و زن در حال انجام بازی ساخته شده با پایتون هستند.

اگر برنامه نویسان بتوانند همزمان با تغییرات کد در همان فرایند، مستندات صحیح و به‌روز تولید کنند، قبل از تبدیل شدن ناهماهنگی در مستندات به مشکل در پشتیبانی، می‌توان آن را متوقف کرد.

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

در جدول پایین به شکل خلاصه تمام بازی های معرفی شده را با همدیگر مقایسه کرده‌ایم.

جمع‌بندی

در این مطلب از مجله فرادرس چند مورد از بازی های ساخته شده با پایتون را بررسی کرده‌ایم. پایتون در بازی‌سازی حرفه‌ای بیشتر به عنوان لایه‌ای کمکی و توسعه‌پذیر استفاده می‌شود، نه موتور اصلی بازی. بازی هایی مانند EVE Online و تمدن چهار، دنیای تانک‌ها و !Doki Doki Literature Club نشان می‌دهند که پایتون در بخش‌هایی مانند اسکریپت‌نویسی، مادسازی، ابزارهای توسعه، منطق گیم‌پلی و سیستم‌های محتوایی عملکرد بسیار خوبی دارد.

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

مصطفی رشیدی

برچسب: نویسنده: خنجی تاريخ: دوشنبه 22 تير 1405 ساعت: 18:01

صفحه بندی

خبرنامه