این سری آموزشی برای کسانی است که با برنامه نویسی پایتون آشنایی دارند و علاقمند به گسترش دانش خود در بازی سازی هستند. در این دوره، با مقدمات بازی سازی با pygame، که یک کتابخانه پایتون است، آشنا می شویم و سپس دانسته های خود را در قالب چندین پروژه پیاده خواهیم کرد.
مهمترین سرگرمی همه ما در کودکی بازی ها بوده اند. بازی ها به ما کمک کرده اند تا مهارت های فیزیکی و فکری خودمان را گسترش دهیم. بازی ها بهترین شبیه سازی از دنیای واقعی هستند که می توانیم زندگی کردن را در آن ها تمرین کنیم. حتی رفتار کردن با دوست و دشمن را نیز به ما می آموزند. آن ها بهترین، جذاب ترین و در عین حال موثرین ترین روش برای آموزش مهارت ها هستند.
وقتی بازی مورد علاقه خود را انجام می دهیم وارد دنیای دیگری می شویم؛ دنیایی که شاید در آن لحظه برای ما واقعی تر از دنیای خودمان باشد. خود را جای شخصیت های آن ها می گذاریم، جای آن ها می جنگیم، عشق می ورزیم، شکست می خوریم و پیروز می شویم. در این دنیا همه ناممکن ها ممکن می شود و شاید برای همین، دل کندن از آن ها سخت است.
بازی ها قدمتی به درازای تاریخ دارند و در همه فرهنگ ها و ملت ها دیده می شوند و نشان دهنده فرهنگ و افکار هر ملتی هستند. بازی ها دارای قوانین ویژه ای هستند. این قانون ها آن ها را از دیگر بازی ها متفاوت می کند. به عنوان نمونه قوانین بازی شطرنج با بازی دوز متفاوت است و هم چنین شکل آن ها نیز با هم تفاوت دارد. بازی ها با اهداف گوناگونی انجام می شوند مانند سرگرمی، زورآزمایی، آموزشی یا کسب درآمد و غیره. بازی ها ترکیبی از هنر، خلاقیت، ادبیات، روانشناسی و حتی دانش ریاضی و فیزیک نیز هستند. آن ها متکی بر مهارت های فکری، فیزیکی و یا شانس هستند؛ مانند بازی هایی که با تاس انجام می شوند.
می توان برای هر بازی سه چیز را در نظر گرفت:
می دانیم که بازی ها به طور کلی دو دسته هستند: بازی های کامپیوتری و بازی های دنیای واقعی. همه بازی های کامپیوتری به طور مستقیم و نامستقیم با کدنویسی ساخته شده اند و همه کدها با یک زبان برنامه نویسی نوشته و اجرا می شوند. در این مقاله قصد داریم بفهمیم که چگونه می توان با زبان جذاب و پرکابرد پایتون بازی بسازیم.
برای ساخت بازی با پایتون راه های زیادی وجود دارد. از آن جا که همه ما کوتاه ترین راه را بیش تر دوست داریم، در این سری آموزشی pygame را خواهیم آموخت.
Pygame یک کتابخانه منبع باز Python برای ساخت برنامه های چندرسانه ای است. هم چنین pygame یک wrapper یا بستار کننده Python برای کتابخانه SDL است. SDL سر نام Simple DirectMedia Layer است. کار SDL این است که دسترسی به سیستم های سخت افزاری چندرسانه ای سیستم مانند صدا، فیلم، ماوس و صفحه کلید را فراهم می کند. برای آشنایی بیش تر با SDL می توانید به لینک مراجعه کنید. pygame یک کتابخانه ترکیبی از C ،Python، Native و OpenGL است. ویژگی مستقل از سکو یا cross-platform بودن SDL و pygame اجازه می دهد برای هر پلتفرمی، بازی ها و برنامه های چندرسانه ای بنویسیم.
pygame در مقایسه با سایر کتابخانه های پایتون برای بازی سازی دارای مزیت های است:
همان طور هم که در پیش گفتم تنها راه برای بازی سازی با پایتون pygame نیست. می توان از کتابخانه های زیر هم برای این کار استفاده کرد.
Kivy :Kivy یک کتابخانه پایتون منبع باز و مستقل از سکو یا cross-platform برای توسعه سریع برنامه ها است. Kivy روی لینوکس، ویندوز، سیستم عامل X، اندروید، iOS و Raspberry Pi اجرا می شود و می تواند از بیش تر پروتکل ها و دستگاه ها از جمله WM_Touch، WM_Pen، Mac OS X Trackpad و Magic Mouse، Mtdev، Linux Kernel HID و TUIO استفاده کند. برای آشنایی بیش تر با Kivy روی لینک کلیک کنید.
Panda3D :Panda3D یک موتور منبع باز و کاملا رایگان برای بازی های سه بعدی، تجسم سازی، شبیه سازی، آزمایش و موارد دیگر است. Panda3D شامل ابزارهای خط فرمان برای پردازش و بهینه سازی است. Panda3D از بسیاری از کتابخانه های third-party معروف مانند Bullet، Assimp، OpenAL و FMOD و موارد دیگر پشتیبانی می کند. برای آشنایی بیش تر با Panda3D روی لینک کلیک کنید.
برای آشنایی بهتر و گسترش دانش خود در pygame می توانید کتاب های زیر را بخوانید:
تصویر این کتاب ها در زیر آمده است.
در پایان باید به این نکته اشاره کنم که برای آغاز این سری آموزشی باید یک درک مقدماتی از پایتون و مفاهیم آن داشته باشید. همچنین باید پایتون را در سیستم خود نصب کرده باشید. در صورت تمایل به یادگیری مفاهیم ابتدایی پایتون، می توانید دوره ویدیویی آموزش مقدماتی پایتون را که بصورت رایگان در سایت روکسو منتشر شده است، مشاهده کنید.
نکته بعدی این است که pygame با بیش تر نسخه های پایتون کار می کند. در این سری آموزشی از پایتون نسخه 3. 8. 3 استفاده شده است.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.