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

حسین حقایقی
حسین حقایقی
۳۲۶
مترجم

 

آیا از حسین حقایقی سوال دارید؟

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

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

مهارت‌های مرتبطی که به ذهنم میرسه عبارتند از :

1- انیمیشن: این فیلد خیلی گسترده هست و سبک‌ها و نتایج مختلفی داره: میتونید انیمیشن دو بعدی و موشن گرافیک بسازید با نرم‌افزار‌هایی مثل افترافکتس و یا انیمیشن و مدل‌سازی سه بعدی بسازید با نرم‌افزار‌هایی مثل مایا، بلندر، سینما فوردی، 3d max و غیره. انیمیشن دو بعدی و موشن گرافیک احتمال اینکه به طور مستقل کار کنید رو بیشتر میکنه و انیمیشن سه بعدی معمولا باید در یک استودیو باشین.

2- اگه به بیزنس علاقه داشته باشین میتونین مطالعات کسب و کار و بیزنسی داشته باشین (همانطور که احتمالا دروس مدیریتی و تجارت الکترونیک در دوره لیسانس داشتین) و به دنبال پیدا کردن شغلی در زمینه‌های بازاریابی و بیزنس شرکت‌های فناوری باشید. البته شاید به راحتی کار در این زمینه پیدا نشه و مجبور باشین مدرک MBA بگیرین (که باز هم تضمینی برای پیدا کردن شغل نیست). در کل وارد حیطه مارکتینگ و یا مدیریت بشید.

3- میتونین طراحی هم کنید و گرافیک دیزاینر بشید با یاد گرفتن نرم‌افزارهای مثل Photoshop و Illustrator.

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

5- تولید محتوا، دیجیتال مارکتینگ و مدیر شبکه اجتماعی: 

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

توصیه میکنم برای اطلاع از زمینه‌های کاری مرتبط با رشته‌تون یه سر به سایت جابینجا۵ بزنین و موقعیت‌های شغلی رو ببینید و متوجه میشید که چه موقعیت‌هایی هست تا بتونین تصمیم بهتری بگیرین.

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

تا اونجایی که من میدونم جوابکو با تکنولوژی React در فرانت‌اند طراحی شده و با این تکنولوژی شما میتونید یک Single Page Application (اپلیکیشن تک صفحه‌ای) بسازید. React از سیستم Routing خودش به اسم React Router و این سیستم به شما اجازه میده هدایت سمت کاربر یا Client side navigation داشته باشید و بر اساس Url انتخاب شده یک کامپوننت رو برای کاربر رندر کنید. در اپلیکیشن‌های تک صفحه ای نیازی به درخواست از سرور برای لود کردن اون کامپوننت نیست و این اتفاق سمت کلاینت میافته. اگر کنکجاو بودین بدونین دقیقا از نظر فنی چه اتفاقی میافته که کامپوننت‌ها لود میشن بدون نیاز فرستادن یک درخواست به سرور و اصلا این کامپوننت‌ها در ری‌اکت چی هستن، پیشنهاد میکنم چند ویدیو در یوتوب یا سایت‌های آموزشی درباره webpack، react و react router ببینید.

برای اینکه جواب بگیرین بهتره که ارور رو بنویسین یا عکس ارور رو بگذارید و بگین در چه محیطی دارین برنامه‌نویسی میکنین.

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

برای اینکار باید اول یک متریال بسازی و اون رو بزاری روی گیم ابجکت. کافیه سرچ کنی Unity Materials و فیلم های آموزشی رو از یوتوب ببینی . خیلی ساده اس

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

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

برای ساخت یک بازی مانند Clash of Clans شما نیاز به دانش گسترده در چند زمینه خیلی متفاوت و مختلف دارید. اول از همه توجه داشته باش که ساخت یک بازی خیلی خوب مانند کلش، نیازمند یک تیم از افراد متخصص هست. 
با فرض اینکه شما بازیتون رو کامل طراحی کرده باشین و از مرحله طراحی بازی گذشته باشین، حداقل توانایی‌هایی که شما نیاز دارین تا یک بازی خوب بسازین این سه مورد هست: 
1- طراح دو بعدی یا سه بعدی ( بستگی به نوع بازی دارد )
2-برنامه نویسی و توسعه بازی 
3- برنامه نویس سرور و دیتابیس 
توجه کن که استودیو‌های بازی سازی برای هر کدوم از این مهارت‌ها افرادی رو استخدام میکنند که فقط به طور اختصاصی اون کار رو بسیار عالی انجام میده و سال هاست تجربه اون مهارت رو داره و کسب این مهارت زمان بر هست و عملا یک حیطه شغلی برای فرد محسوب میشه که روز به روز باید فرد خودش رو پیشرفت بده و بهتر و بهتر بشه در مهارت خودش. 
 توصیه کنم اول از همه به این سوال در ذهن خودت جواب بدی که به روند بازی ساختن علاقه داری یا به پول در آوردن از بازی؟ 
اکثر کسانی که یه مدت بازی سازی رو یاد میگیرند به خاطر این هست که به این نگاه میکنند که یک استودیو با یک بازی به موفقیت مالی خیلی بالایی دست پیدا کرده. اگر فقط هدفت درآمد بالا باشه، از سن 12 سالگی خیلی کارها و سرمایه گذاری‌هایی مهارتی بهتری میتونی کنی تا درآمد بالایی در آینده داشته باشی ( بازی سازی مستقل اصلا گزینه خوبی برای درآمد زایی نیست ). 
برگردیم به کلش، استودیو سوپرسل، سازنده بازی کلش، تیم بازی سازی ابتدایی اش حدود 6-7 نفر بودن، قبل از ساخت این بازی چندین بازی ناموفق ساخته بودن و قبل از موفقیت در کلش چندین شکست رو تجربه کردن. این مورد که قبل از ساخت یک بازی خوب حداقل چند مورد شکست وجود داره در تمام بیزنس‌ها و بازی‌ها عادیه. موفقیت توی ساخت یک محصول خوب فاکتور‌های مختلفی داره که جای بحثش در این پاسخ نیست چون خیلی طولانی میشه. 
من توصیه میکنم اگه به ساخت بازی خیلی علاقه داری و به مهارت‌های مرتبط با بازی سازی علاقه داری یکی رو انتخاب کنی و در اون متخصص بشی تا در آینده بتونی یه تیم دور خودت جمع کنی و بازی ای که دوس داری رو بسازی یا اینکه به استخدام یک شرکت بازی سازی در بیای که بعید میدونم حقوق بالاتری نسبت به بقیه شغل‌های فنی داشته باشی چون استودیو‌های بازی سازی ایرانی سود چندان زیادی ندارن (حداقل فعلا). برای اینکه دیدی بهتری داشته باشی سعی میکنم این سه رسته اصلی که بالا نوشتم رو بازتر کنم تا بفهمی به کدوم بیشتر علاقه داری:

1- طراحی دو بعدی یا سه بعدی : ساخت کاراکتر‌های دو بعدی یا سه بعدی، انیمیشن بازی‌ها، طراحی منو‌های بازی، داستان بعضی ( گاهی اوقات ) و همینطور ساخت محیط بازی 
2- برنامه نویسی یا توسعه بازی :ساخت گیم پلی بازی، برای مثال برنامه نویسی اینکه اگر این دکمه رو پایین نگه داری کاراکتر بازی دو واحد به سمت چپ بره یا بپره یا بشینه. اگر بازیکن به این قسمت از محیط بازی برسه بره مرحله بعد، اگه تیر بخوره انقدر آسیب ببینه و ....

3- برنامه نویسی و تنظیم ارتباطات اینترنتی بازی شما : رابطه بین داده‌های رد و بدل شده بین هر کاربر بازی و سرور و یا بین کاربران ( با توجه به معماری بازی ) 

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

به یافتن ریشه لغات ریشه‌شناسی یا Etymology میگن. برای این کار می‌تونید سرچ کنید مثلا "Egypt Etymology " و سایت‌های زیادی هستن که ریشه لغت رو به شما میگن. مثلا من طبق سوال شما Egypt رو سرچ کردم و نتیجه این شد: 

Old English Egipte "the Egyptians," from French Egypte, from Greek Aigyptos "the river Nile, Egypt," from Amarna Hikuptah, corresponding to Egyptian Ha(t)-ka-ptah "temple of the soul of Ptah," the creative god associated with Memphis, the ancient city of Egypt.

ترجمه : در انگلیسی باستان لغت egipte به معنای مصری‌ها از لغت فرانسوی Egypte گرفته شده که آن لغت از لغت یونانی Aigyptos به معنی رود نیل گرفته شده و آن نیز از hikuptah که معادل Ha(t)-ka-ptah در زبان مصری است که به معنای معبد روح پتاح، خدایی که در فرهنگ مصر به عنوان سازنده شهر باستانی ممفیس مصر تلقی میشه هست.

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

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

برای یادگیری هر زبانی شما نیاز دارید اول مهارت‌های ورودی (خواندن و گوش دادن) رو تقویت کنید تا دانش زبانی به حافظه شما منتقل بشود تا بعد بتونید از اون دانش کسب شده در مهارت‌های خروجی (صحبت کردن و نوشتن) استفاده کنید. من پیشنهاد میکنم طولانی مدت در شرایطی قرار بگیرید که ورودی زبانی به ذهن شما بده و در عین حال از اون دانش کسب شده استفاده کنید تا به اصطلاح خارجیا Second Nature بشه و به طور اتوماتیک صحبت کنید. برای رسیدن به این هدف،  توصیه می‌کنم فیلم و سریال انگلیسی با زیرنویس انگلیسی ببینید و حتما به کلاس‌ زبان‌های ترمیک طولانی مدت برید (ترجیحا فشرده نباشه، زبان چیزی نیست که یک شبه بشه یاد گرفت). 

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

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

خلاصه بخوام بگم هر تلاش طولانی مدتی برای یادگیری زبان، زبان شما رو بهتر میکنه.

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

برای جواب این سوال بهتره که یکم درباره تاریخچه این دو بدونیم: 

جاوا اسکریپت یک زبان برنامه‌نویسی هست که اولین اسمش Mocha بود، سپس به Livescript تغییر نام پیدا کرد و نهایتا اسم جاوا اسکریپت انتخاب شد. 

از Brendan Eich خالق جاوا اسکریپت خواسته شده بود تا برای Netscape یک زبان مشابه Java برای وب خلق کنه. از اونجایی که جاوا پیچیدگی‌های زیادی داشت، او تصمیم گرفت که یه زبان ساده‌تر درست کنه که افراد تازه کار هم بتونن به راحتی با اون برنامه بنویسن. یه نمونه از این سادگی‌ها استفاده اختیاری از نقطه ویرگول بعد از هر statement بود. به دلیل محبوبیت زبان جاوا در اون زمان  تیم بازاریابی Netscape تصمیم گرفت از Sun (مالک جاوا) اجازه بگیره که از اسم جاوا استفاده کنند در نام گذاری این زبان، واسه همین اسم جاوا اسکریپت انتخاب شد. به فاصله یکی دو سال مایکروسافت از این زبان در اینترنت اکسپلورر استفاده کرد و اسم اون رو گذاشت Jscript. نهایتا زمانیکه Netscape تصمیم گرفت پروژه مرورگرش رو تعطیل کنه، تصمیم گرفت استانداردی درست کنه که مسیر جاوا اسکرپیت رو تعیین کنه و اسم اون استاندارد اکما اسکریپت هست.

 تا سال 1999، سه نسخه این استاندارد منتشر شد و به مدت ده سال به سکون رفت و نسخه بعدی رو در سال 2009 منتشر کرد (5th Edition) و آخرین نسخه آن تا به امروز نسخه 2017 - 8th Edition هست.

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

نرم افزارهای زیادی برای ساخت بازی وجود داره، اما نمیشه گفت کدام مورد بهترین هست. ساخت یک بازی خوب شاید خیلی به نرم افزار (Game Engine) ربط نداشته باشه و بیشتر به توسعه دهندگان مربوط میشه، این که اونا با چه ابزاری راحت‌ترن کار کنن و تجربه بیشتری دارن با اون انجین. خیلی از شرکت‌های بزرگ بازی‌سازی انجین بازی سازی خودشون رو دارن و برای هر بخش از کار حتی موتور‌های جداگانه دارن. استودیو‌های کوچک‌تر و مستقل (Indie) که اون امکانات رو ندارن معمولا از انجین‌هایی مثل Unity 3D و Unreal Engine استفاده میکنن. و باز بین همین دو انجین معمولا اون‌هایی که بازی موبایل میسازن یونیتی رو ترجیه میدن و شرکت‌هایی که بازی‌هایی با قدرت پردازش سنگین انیمیشن رو دارن و یا نیاز به امکانات شخصی‌سازی شده  بیشتری دارن از Unreal استفاده میکنن. اما سوال اساسی این هست که شما هدفتون دقیقا چی باشه. اگر بخواهید بازی سازی یاد بگیرید بهتره با Unity شروع کنید، چون آموزش‌های فوق‌العاده و فراوانی براش وجود داره و شرکت‌هایی که توی ایران کار میکنند روی بازی‌سازی معمولا با یونیتی کار میکنند. میتونید یه سر بزنید به سایت Gamejobs.ir۹۳ و قسمت آگهی‌های مرتبط با برنامه نویسی رو مشاهده کنید، متوجه میشید که روی چه گیم انجینی وقت بزارید.

تا یک دهه پیش، استودیو و افراد مستقل نمیتونستن به راحتی وارد این صنعت بشوند و انحصار دست غول‌های بازی‌سازی بود که سرمایه و نیروی انسانی زیاد و موتور بازی خودشون (In-house)  داشتند، همیشه شعار شرکت یونیتی این بوده  که We want to democratize game development. یعنی ما درصدد این هستیم که توسعه بازی رو برای همه در دسترس قرار بدیم. 

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