برو به محتوای اصلی

مهدی محمدی
مهدی محمدی
۱۱۲
برنامه نویس، توسعه دهنده بازی

علاقه‌مند به کامپیوتر، برنامه نویسی و تست امنیت بازیها و نرم‌افزارهای آفلاین
برنامه نویس سی‌شارپ و توسعه دهنده‌ی بازی با موتور بازی‌سازی Unity3D
معتقدم آینده رو ما شکل میدیم  :)

آیا از مهدی محمدی سوال دارید؟

همین الآن عضو شو و به صورت ناشناس یا عمومی سوالتو از مهدی محمدی بپرس!

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

برنامه CloneCD.
من یادمه وقتی حدود 6 سالم بود (سال 81) یکی از اعضای خانواده ما از کلون سی‌دی برای رایت استفاده میکرد. تصویر اون گوسفنده روی آیکون برنامه و صدای پایان رایت CloneCD برام خاطراتی رو زنده میکنه.
و Nero هم هست. این 2 تا سالیانه که دارن استفاده میشن و به نظرم پرچمدار هستن.

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

"اچ‌تی‌ام‌ال" و "سی‌اس‌اس" لازمه‌ی طراحی سمت وب هستن که اگر نباشن، طراحی وب معنی نداره. اما برای ورود به این حوزه، به تنهایی اصلا کافی نیستن. همونطور که یک آشپز خوب باید غذاش خوش‌رنگ باشه و طراحی غذاش از لحاظ ظاهری چیزی برای گفتن داشته باشه، یک طراح وب خوب هم باید CSS و HTML و فریم‌ورک‌های این دو را بلد باشد و بتواند در عمل پیاده کند. اما باید یادآور باشم که صرفا ظاهر کار باعث نمیشه تا شما یک طراح وب باشید. یک طراح وب خوب، یک برنامه‌نویس خوب نیز هست. منظورم برنامه‌نویس زبان‌های دیگری همچون javascript (سمت کلاینت)، PHP (سمت سرور)، ASP (سمت سرور) یا حداقل یکی از انواع و اقسام زبان‌های دیگر طراحی وب و فریم‌ورک‌های اینهاست (حداقل یکی در هر حوزه مثل کلاینت یا سرور). درواقع، CSS و HTML پایه است و هرکسی که وارد طراحی وب میشود، باید آنها را فراگیرد. همین مسئله در مورد زبان‌های دیگری که بالا اشاره کردم نیز صادق است. باید در هر حوزه، حداقل یکی را فراگیرید (چه بهتر که با فریم‌ورک‌هایش باشد).
نظر شخصی من این است که باید روحیه سازگاری با تکنولوژی داشته باشید. این مطلب روشن و واضح است که در آینده، تکنولوژی طراحی وب، دچار تغییرات میشود و شما به عنوان کسی که میخواهید در این زمینه فعالیت کنید، هر چندوقت یکبار نیاز دارید که خود را به‌روز کنید. البته نگران نباشید. این تحولات، به یک باره اتفاق نمی‌افتند و گذر زمان است که ذره ذره این تغییرات را به وجود می‌آورد. پس اگر علاقه دارید، باید بطور دائم کار انجام دهید تا علاوه بر از یاد نبردن مطالب گذشته، مطالب جدیدی را نیز بیاموزید. من 3 سال پیش سمت وب و PHP کار میکردم که به دلیل ادامه ندادن در آن حوزه، الآن PHP، HTML، CSS، jQuery و کاربردهای javascript در سمت وب را بیش از 90% از یاد برده‌ام. 
شما درباره آینده شغلی طراحی وب سوال کردید. من آینده را ندیدم و نمیتوانم همه احتمالات را در نظر بگیرم و پیش‌بینی و پیشگویی کنم. اما به همین زمان که نگاه کنیم و با توجه به نیازهای موجود، طراحی وب بازار کار خوبی دارد تا حدی که میتوان به آینده آن امیدوار بود. میتوانید به عنوان فری‌لنسر کار کنید یا در یک شرکت استخدام شوید یا شرکت خودتان را راه‌اندازی کنید یا... بستگی به خودتان دارد که در این زمان و در آینده چه برنامه‌هایی دارید.

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

به صفحه ویدیوی مورد نظر خود بروید و لینک صفحه را تغییر دهید. بدین صورت که بجای youtube بنویسید ssyoutube یعنی حروف ss را به اول سایت یوتیوب اضافه کنید و به لینک جدید بروید و آنجا صفحه‌ای باز میشود که میتوانید با انواع کیفیت‌ها، ویدیوی مورد نظر خود را دانلود کنید.

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

ساده‌ترین راهش، استفاده از کلس PlayerPrefs است.
برای مثال، برای ذخیره یک متن داریم:
PlayerPrefs.SetString("myKeyName", "myValue")
برای بازیابی متن قبلا ذخیره شده، از هرجای بازی که خواستید، این را داریم:
string val = PlayerPrefs.GetString("myKeyName" [, "myDefaultValueIfKeyNotFound"])
پارامتر دوم، اختیاریست.
این کلس، برای ذخیره و بازیابی int و float و bool هم کارایی دارد.

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

برای شروع بازی‌سازی:
- اگر علم برنامه‌نویسی ندارید یا از برنامه‌نویسی خوشتون نمیاد، میتونید از موتور بازی‌سازی Construct 2 شروع کنید که نیاز چندانی به برنامه‌نویسی ندارد. در این مورد پیشنهاد میشه که با ساخت بازی‌های کوچک و تستی شروع کنید و آموزش‌های موجود در Youtube و سایت‌های ایرانی construct2.ir۱۵ و si2.ir۹ را حتما دنبال کنید.
- اگر علم برنامه‌نویسی دارید یا به برنامه‌نویسی علاقه‌مندید و یا برایتان فرقی ندارد و میخواهید بازی‌های با کیفیت بالاتری بسازید، پیشنهاد بنده، موتور بازی‌سازی Unity3D (برای ساخت بازی‌های با کیفیت 2 بعدی و 3 بعدی) و موتور بازی‌سازی Unreal Engine (برای ساخت بازی‌های با کیفیت 3 بعدی) و یا حتی Game Maker (برای ساخت بازی‌های با کیفیت 2 بعدی) میباشد. و درسته که یک عده میگن یونیتی 20 درصد برنامه‌نویسیه و 80 درصد کار با انجین (موتور بازی‌سازی) اما اشتباه میکنن. شما اگر میخواهید یک بازی حرفه‌ای بسازید، در یونیتی، حداقل، 50 درصد کدنویسی آن هست (طبق تجارب بنده). من زمانی که شروع کردم، 1 سال بود که طراحی وب کار میکردم (js و css و html و php). اون زمان یونیتی هنوز از javascript پشتیبانی میکرد (الآن فقط از سی‌شارپ پشتیبانی میکنه) و بنده هم چند ماه با یونیتی و زبان js اش کار کردم. زمانی که تصمیم گرفتم تا حرفه‌ای‌تر کار کنم، js رو کنار گذاشتم و برای اولین بار به سی‌شارپ مراجعه کردم. از اون زمان حدود 3 سال میگذره و الآن به حدی رسیدم که در یونیتی میتونم یه بازی در حد عناوین مطرح در مارکت‌های اندرویدی رو برنامه‌نویسی کنم. این نتیجه‌ی علاقه و کار دائم با انجین یونیتی هست. در کل برای شروع نیازه تا اول وارد محیط اون نرم‌افزار بشید و سعی کنید در محیطش چرخ بزنید و هرچند برنامه‌نویسی بلد نباشید اما با تنظیمات و امکاناتش بازی کنید تا با آنها آشنایی اولیه پیدا کنید. فیلم‌های آموزشی هم فرشته‌های نجات هستند که در صورتی که باعث تنبلی‌تان نشود، حتما نگاه کنید و بهره ببرید. من خودم بیشتر سعی کردم با تجربه جلو برم تا فیلم آموزشی. و در کل، تعداد فیلم‌های آموزشی یونیتی که مشاهده کردم، از انگشتان 2 دست هم کمتر است.
این هم یک آموزش جامع و رایگان یونیتی که دوست خوبم آقای امیرحسین رجب‌زاده تولید کرده: این لینکش۷ و اینم لینک فهرست تیترها و موضوعات۱۱ آموزش مذکور.
کلاس‌های آموزشی هم باید موجود باشه که بنده بی‌اطلاعم و پیشنهاد هم نمیکنم (به نظرم خودساخته بودن خیلی بهتره).

در مورد سوال آخرتون:
بستگی داره که شما در ساخت بازی قراره چه نقشی رو ایفا کنید. اگر شما میخواهید یک بازی رو به تنهایی بسازید، نقش داستان‌نویس، گیم دیزاینر، طراح گرافیک، طراح مدل 3 بعدی، برنامه‌نویس، آهنگساز و... رو یا خودتون باید ایفا کنید یا با دیگران همکاری کنید و یا نتیجه نهایی هریک از این نقش‌هارو از جایی کپی‌برداری کنید. مثلا برای آهنگ بازی، دست به دانلود فایل‌های آهنگ آماده و مناسب، در سطح اینترنت، بزنید. اگر هم خودتون قراره همه این کارها یا بخشی از آن (به جز برنامه‌نویسی و کار با انجین) را انجام دهید، طبیعیست که به نرم‌افزارهای دیگه هم مثل فوتوشاپ و 3DMax و... نیاز دارید. اگر خودتان عضوی از یک تیم شدید که این مهارت‌ها را داشت، کافیست به وظیفه خودتان که کدنویسی و کار با انجین میباشد پرداخته و از کار در کنار یک تیم خوب، لذت ببرید.
این هم یکی از بزرگترین گروه‌های شغل‌یابی بازی‌سازها: لینک گروه۱۰

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

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

با javascript میشه کارهای فوق العاده‌ای کرد! تاحالا شده بخواین یه امکانی که روی یک وب‌سایت قرار نداره رو بهش اضافه کنین؟ با js میتونین اون امکان رو (در صورتی که طرفِ کلاینت باشد) اضافه کنید!
به عنوان مثال، میتوانید رباتی طراحی کنید و از طریق مرورگر، به یک وب‌سایت بچسبانید تا اعمالی که با هوش مصنوعی بر روی آن پیاده کرده‌اید را انجام دهد. یا ممکن است تم یک سایت برایتان عذاب‌آور باشد در حالی که نمیخواهید از امکانات آن سایت بی‌بهره باشید. از همین روشی که ذکر کردم، میتونید تم اون سایت رو تا مدتی که نام class‌ها و id‌های تگهای html آن سایت تغییر نکند، به شکل دلخواه خود در آورید! حتی میتونید رباتی طراحی کنید که برای شما یک بازی آنلاین تحت مرورگر را انجام دهد (با بررسی شرایط و اعداد و ارقام و هوش مصنوعی مثلا بگوید فلان دکمه را در فلان زمان کلیک کن. یا حتی با دستورات شرطی که اگر فلان مقدار این بود، فلان کار رو انجام بده). جالب است که بدانید یکی از دلایل قرار دادن captcha، جلوگیری از همین مورد است.

مهدی محمدی
مهدی محمدی، برنامه نویس، توسعه دهنده بازی

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

رسیدیم به آخرش!