برنامه نویسی و نقش برنامه نویس در صنعت بازی های ویدئویی مثل شعبده بازی است. برنامه نویس ها با نوشتن جادو می کنند. آن ها با فرمول هایی که از کتاب ها یاد گرفته اند و دانشی که درک آن برای سایرین سخت است سرکار دارند. آنها یاد گرفتن هر کاری را بخواهند میتوانند با کامپیوتر انجام دهند. آن ها توانایی وادار کردن دستگاه های مختلف به کاری که میخواهند را دارند.
به طور کلی، برنامه نویس کسی است که با کد های داخل بازی سر و کار دارد. برنامه نویس کسی است که ریاضی و منطق را به دستورات و توابع تبدیل می کند. این نقش احتمالا مهم ترین نقش در یک تیم بازی سازی است. حتی با داشتن بهترین طرح بازی، گرافیک و صدا اما بدون کسی برای کد نویسی، بازی شما موجودیت پیدا نمی کند.
در اوایل بازی های ویدیویی، وقتی که بازی ها چیزی جز اشکال هندسی روی صفحه نبودند، برنامه نویس کل تیم بود، به عبارت دیگر در آن زمان یک برنامه نویس تمام بخش های طراحی و گرافیک را انجام می داد.
همچنان که صنعت بازی رو به جلو در حال حرکت بود، بر پیچیدگی بازی ها افزوده شد. برنامه نویس ها بیشتر بر روی کد نویسی تمرکز کردند. با گذر زمان نقش های مختلفی از برنامه نویس ها برای تیم های بازی سازی ایجاد شد. در نتیجه آن امروز ما نقش های مختلفی در برنامه نویسی می بینیم. نقش هایی مانند برنامه نویس فیزیک، موتور، هوش مصنوعی، شبکه و روند بازی.
یک تیم بازی سازی موبایل، به ندرت بیش از دو برنامه نویس برای توسعه بازی دارند. در این تیم ها معمولا طراحان بازی در قسمت های سبک تر اسکریپت به کمک برنامه نویس ها می روند.
ابزار برنامه نویسان
ابزار های اولیه برنامه نویس ها به سه دسته اصلی تقسیم می شود:
- زبان های برنامه نویسی
- نرم افزار توسعه یکپارچه
- سیستم کنترل ورژن
زبان برنامه نویسی به خودی خود موضوعی است که می تواند کل محتوای این مقاله را به خود اختصاص دهد اما ما در اینجا فقط به شرح بخش هایی که یک برنامه نویس بازی به آن ها آشنا باشد بسنده می کنیم. این بخش ها شامل: destructure, classes, inheritance, constructors و constant
محیط توسعه یکپارچه، نرم افزاری است که اجازه می دهد کد های پروژه داخل آن نوشته شود. در داخل بعضی از موتور های بازی سازی این محیط فراهم شده و برای سایرین امکان استفاده از محیط های کد نویسی ثالث نیز وجود دارد مانند ویژوال استدیو برای یونیتی. یا گیم میکر استدیو که فقط امکان کد نویسی در داخل آن وجود دارد. در کنار موتور های بازی سازی فریم ورک های ساخت بازی نیز وجود دارد که اگر برنامه نویسان توانایی کار با آنها را داشته باشند می توانند بازی هایی به مراتب با کیفیت و قدرت بیشتری نسبت به موتور های بازی تولید کنند. در زمینه موبایل فریم ورک libgdx یکی از قویترین های موجود در این زمینه است.
برنامه نویس باید بتواند در محیط کد نویسی، کد های تمیز و با کیفیتی را تولید کند. یک محیط یکپارچه حرفه ای امکانات مختلفی نظیر دیباگر، ابزار های طراحی رابط کاربری گرافیکی، کلاس ها، ساختمان داده، ابزار های جستجو داده و فراتر از آن را در اختیار برنامه نویسان قرار میدهند.
سیستم کنترل ورژن، نرم افزاری است که امکان مدیریت تغییرات اعمال شده بر روی اسناد و برنامه ها را می دهد. این نرم افزار ها نقش مهمی در کار تیمی ایفا می کنند. مواقعی که چند برنامه نویس بروی یک پروژه کار می کنند معمولا به چنین نرم افزاری نیاز پیدا خواهند کرد. توصیه می کنیم اگر شما تنها برنامه نویس تیم هستید همچنان از چنین سیستمی بهره بگیرید.
راحت ترین سیستم کنترل نسخه svn است و معروف ترین آن Git. لازم به ذکر است برای راه اندازه سیستم کنترل نسخه نیاز به سرور دارید.
دپارتمان کد نویسی
برنامه نویسان بازی های موبایل چندین وظیفه دارند که باید در یک بازی موبایل همه آن ها را انجام دهند. در ادامه لیست برخی از این وظایف آورده شده است:
- برنامه نویس موتور/ فیزیک: موتور بازی شامل مجموعه ای از کتابخانه هاست که به صورت موثر می تواند اجزای بازی را ایجاد کند و کنار هم قرار دهد. گرافیک، صدا، ورودی و کنترل بازی، ذخیره داده، شبکه و هر چیزی که ضروری است در داخل موتور بازی رخ می دهد. از آنجایی که امروز موتور های بازی سازی قدرتمندی وجود دارد به ندرت برنامه نویس، بازی را از صفر می نویسد.
- فیزیک: شبیه سازی فیزیک یک ویژگی رایج و مهم در بازی های سه بعدی امروزی است. موتور های بازی سازی، افزونه ای برای مدیریت فیزیک دارند که rigid bodies نام دارد(آبجکت های بازی زیرمجموعه فیزیک می شوند). از برنامه نویسان به ندرت تقاضا می شود تا یک موتور فیزیکی جدید بنویسید مگر این که درخواست دهنده در حال ساخت یک موتور بازی سازی باشد.
- هوش مصنوعی: بازی های موبایلی که ساخته می شوند قرار نیست برای بازیکنان بسیار سخت باشند همانطور که قرار نیست بازیکن را خسته کنند. علاوه بر این بازی های موبایلی به ندرت نیاز به الگوریتم های منطقی هوش مصنوعی خواهند داشت. هوش مصنوعی برای بازی های موبایلی از بسیاری از جهات نیاز به کار کمتری نسبت به بازی های AAA کنسول و دسکتاپ دارد.
- رابط کاربری: رابط کاربری بازی شما تاثیر بسزایی در تعامل بازیکنان دارد. کنترل های لمسی باید همان گونه که انتظار می شود کار کنند و واکنش گرا باشند. رابط کاربری باید اطلاعات مورد نیاز را روی صفحه به صورت کاملا تمیز و شفاف نمایش دهد. با بهبود رابط کاربری شانس فروش بازیتان را بالا ببرید.
- شبکه: با وارد شدن به عصر شبکه های اجتماعی و تقاضای کاربران برای به اشتراک گذاشتن، کمتر بازی موبایلی میبینیم که اجازه ندهد کاربران امتیازات را به اشتراک بگذارد. مدل کسب و کار free to play امروزه بسیار رایج است به همین دلیل توسعه دهندگان نیاز به داده های پویا برای انتقال بین سرور و بازی دارند. یکی از مباحث مهم شبکه امنیت اطلاعات است، ارتباط بین سرور و بازی باید ایمن باشد. برنامه نویسی شبکه یکی از چالش برانگیز ترین و سخت ترین بُعد ساخت بازی است.
مطلب پیشنهادی: داده محور بازی بسازید: شاخصهای تجربه کاربری (User Experience KPIs)
چگونه برنامه نویس شویم؟
جدای از داشتن هوش، برنامه نویسان باید دانش کافی از ریاضیات و جبر در فضای دو بعدی و سه بعدی داشته باشند. وکتور، زوایا، فواصل، منحنی ها و ماتریس باید غذای روزانه آن ها باشد.
برنامه نویس ها باید چندین زبان اسکریپت نویسی را بدانند، زبان هایی مانند C و C++ ،جاوا، سی شارپ و LUA. هر چه تجربه برنامه نویسان با موتور های بازی سازی و زبانی که کار می کنند بیشتر باشد، راحت تر می توانند توسط تیم ها استخدام شوند و کار کنند. برنامه نویسان باید کد نویسی موثر و بهینه را بدانند زیرا در بازی سازی کارایی کد و اجرای بهینه آن در دستگاه های مختلف حیاتی است.
کیفیت کار برنامه نویس یکی فاکتور های مهم موفقیت است.
توانایی حل مسئله در برنامه نویسی بسیار مهم است. طراح بازی مکانیک هایی طراحی می کند که برای برنامه نویس تبدیل مسئله هایی می شود که باید حل شوند. بهترین مسئله آنهایی هستند که چندین راه حل دارند. چنین امری برای یک برنامه نویس بسیار مهم است زیرا باید بین راه حل های موجود تجزیه تحلیل کند و یکی را به عنوان بهترین راه حل انتخاب کند.
تصوری که بسیاری از مردم از برنامه نویسان دارند این است که آن ها موجوداتی هستند که در تاریکی کار می کنند و ساعت های متمادی و در خلوت پشت کامپیوتر خود مشغول کد نویسی هستند. اما در حقیقت، توسعه نرم افزار موثر روی کار تیمی و ارتباطات تکیه دارد. برای برنامه نویسان حرفه ای توانایی ارتباط با سایر اعضای تیم و آدرس دهی صحیح مشکلات و تعیین برنامه زمانی اجباری است. در واقع در بسیاری از متد های تولید پروژه، اعضای تیم باید دائما با یک دیگر در تعامل باشند.
از دیگر ویژگی های مهم یک برنامه نویس خوب، حس سیری ناپذیر او در یادگیری و افزایش دانش است. برنامه نویس هایی که 30 سال تجربه دارند به شما می گویند که آنها همچنان در حال یادگیری هستند. برنامه نویس های بازی در یادگیری هیچ وقت به انتهای خط نمی رسند. با گذر زمان تکنولوژی های جدید ظهور می کنند، متدولوژی های جدید رایج می شوند و زبان های جدیدی برای ساخت بازی به کار گرفته می شوند. وقتی چیز جدیدی به وجود می آید، قرار نیست کسی به کمک شما بیاید و به شما کمک کند. شما باید خود محور یاد بگیرید. اگر میخواهید به آخرین دانش روز دست پیدا کنید باید منظم و همیشه مشغول یادگیری باشید.
مقاله مفیدی نبود …! برنامه نویسی و برنامه نویس رو خوب معرفی نکرد ( ریاضیات و جبر😳)
سلام فرشید جان؛ میشه بیشتر توضیح بدید چرا خوب نبوده؟
سلام
برنامه نویسی فقط ریاضیات نیست.
به نظر من که مقاله خوبی بود و یه معرفی اولیه از هر کدام از اعضای یک تیم بازی سازی می دهد به ما و برای اونایی که تازه می خان شروع کننن خوب بود .
سلام برای برنامه نویسی بازی باید الگوریتم نویسی بلد باشیم؟یا به اصطلاح الگوریتم نویسی برای اسکریپت بازی هست؟
سلام
توانایی حل مسئله و الگوریتم برای هر برنامه نویسی الزامی هستش اما برای شروع و تمرین نیاز چندانی ندارید
با سلام و تشکر بابت مقاله خوبتون
اینکه میگید برنامه نویسی ریاضیات و جبر و الگوریتم میخواد حقیقتا من تا جایی که کار کردم نیازی به این موارد ندیدم.. من خودم تا حدودی با سی شارپ و یونیتی آشنایی دارم و بازی های معمولی رو میتونم پیاده سازی کنم اما توش نیازی به جبر و معادلات پیچیده ای ندیدم..
برنامه نویس هایی که میخوان استخدام شرکت هایی مثل گوگل و مایکروسافت بشن خب باید ریاضی شون قوی باشه چون این شرکت ها خدای هوش مصنوعی ان.. ولی افراد دیگه چه برای بازی سازی، چه طراحی وب و… نیازی به ریاضی و جبر ندارن!!
بازم این ها نظر من بود تا جایی که دانش داشتم.. این که شما میگید باید ریاضی قوی داشت فرد تازه کار رو زده میکنه مخصوصا اگه رشته شون ریاضی نباشه یا دانش آموز باشن..
دوست من سلام، ریاضیات و الگوریتم بخش جدایی ناپذیر از بازیسازی هستند، شاید طراحی اپلیکیشن بازیها نیاز به ریاضیات نداشته باشند اما زمانی که بحث فیزیک یا شبیهسازی مطرح میشود معادلات مختلف راه گشا هستند.
در رابطه با الگوریتم هم، شما هر چه طراحی الگوریتمتون بهتر باشه، ساده تر میتونید مسائل را حل کنید و با شکستن تسک های بزرگ به ریز تسک ها کار را جلو ببرید و کیفیت بازی را افزایش بدهید.
مصرف کمتر از سختافزار، اجرای درست بر روی گوشیهای مختلف، عدم وجود افت فریم، امکان پاسخگویی به درخواست کاربران همزمان مختلف (در بازی آنلاین) تنها بخشی از اهمیت الگوریتم و توانایی حل مسئله در بازیسازی محسوب میشود.
ممنون از این که نظرتون را با ما به اشتراک گذاشتید، ما در بازیاتو سعی کردیم در مطالب عمومی تری مانند چگونه بازی بسازیم برای کاربران ایجاد علاقه کنیم اما در مطلبی که کمی تخصصی تر نقش برنامه نویس بازی را توضیح میدهیم لازم دونستیم که به صورت کامل به این موارد اشاره کنیم.
لطفا در ادامه هم با نظراتتون همراه ما باشید
دلیلش اینه کار جدی ای انجام نداده اید. در این روز ها شما حتی بدون برنامه نویسی هم می توانید برخی کارها رو بکنید و بازی بسازید ولی دلیل نمیشه شما برنامه نویسید یا اگر برنامه هم می نویسید برنامه نویس خوبی هستید.