زندگی، فلسفه، تکنولوژی صنعت <- اندیشه ها، احساسات

۴ مطلب در دی ۱۳۹۶ ثبت شده است

چگونه می توانیم صنعت بازی سازی پویا و واقعی داشته باشیم؟

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

هر صنعتی مستلزم وجود چند چیز است. خدمات/محصول، مشتری/نیاز و در نتیجه آن بازار. برای به وجود آمدن خدمات و محصول نیاز به افراد مجرب و شرکت های خوب است که بتوانند آن ها را ارایه کنند و برای وجود نیاز و مشتری و در نتیجه بازار باید به جز داشتن محصول خوب، تفکر/فرهنگ استفاده از آن محصولات نیز وجود داشته باشد. چه بسا محصولات خوبی که وارد دنیای ما شدند و برایشان بازاری درست نشد و از بین رفتند و چه بسا انسان های با استعداد و تلاشگری که توانا بودند ولی نتوانستند در زمان و مکان خاصی بخشی از یک صنعت شوند. برای مثال افراد نسبتا زیادی در دهه هشتاد میلادی روی VR کار کردند و امید ایجاد صنعتی با بازار همگانی بوده است. نتیجه آن به دلایل نبود تکنولوژی مناسب و پشتیبانی شرکت های بزرگ و در نتیجه نبود مشتری بسیار متفاوت شد. هر چند VR کاربردهای خود را در آن زمان در نرم افزارهای شبیه سازی پزشکی و نظامی پیدا کرد و تحقیقات پایه آن روز در نهایت منجر به تکنولوژی نسبتا قابل دسترسی امروز شده است و حتی در گذشته در پارک های بزرگ مثل Disney land ها مورد استفاده قرار گرفته اما مثلا حتی در 5% خانه های کشورهای پیشرفته هم دستگاه VR موجود نبوده است. در این مثال مشکل تا حد بسیار زیادی تکنولوژی و قیمت تولید بوده است. در بسیاری زمان ها و مکان های دیگر سعی برای تولید صنایعی شکل گرفته که موفق نبوده اند ولی چون دلایلشان معمولتر و به دلیل نبود بازار و / یا نیروی کار مناسب و شرایط بد بوده است، داستان هایشان خیلی بازگو نمی شود. 

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

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

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

حال سوال کردن و پاسخ به آن خیلی هم سخت نیست که آیا ما در حال جذب استعداد های خوب از دانشگاه های خوب به سمت بازی سازی هستیم؟ آیا دانشجو های خوبی تربیت می کنیم؟ آیا ما به شرکت هایی که نشان داده اند می توانند بازی بسازند و یا تیم هایی که دارای demo/prototype خوبی بوده اند سرمایه تولید داده ایم و یا امکان کسب آن از راهی دیگر مثل VC ها را برایشان فراهم کرده ایم؟ آیا ما بازی سازان توانایی پذیرش کارآموز در شرکت و پذیرش ریسک زمانی و مادیش را داریم؟ آیا فضای کار ما برای ورود افراد جدید راحت و مناسب است؟ جواب برخی از این سوالات خوشبختانه مثبت و جواب برخی منفی است. بنیاد ملی بازیها کارهای خوبی در گذشته انجام داده است. بازیهای ایرانی را به نمایشگاه های خارجی برده، نمایشگاه های داخلی برای مردم برگزار نموده تا مردم با بازی ها آشنا شوند. برای ما تولید کننده ها TGC برگزار کرده است و در گذشته از بازی ها حمایت مالی درست و بر پایه استعداد تیم ها کرده است اما بنیاد در سهم خود کارهای اشتباهی مثل برگزاری برخی رویداد ها و دادن برخی بودجه ها به افراد نادانی که فقط حرفهای خوب می زنند و خرج برخی پول ها برای برخی پروژه هایی که معلوم بوده خیلی هم از آنها چیزی در نمی آید کرده است. بنیاد حمایت خود را به شکل وام تبدیل کرد که پذیرش ریسکش برای تیم های کوچک مثل ما ممکن نیست. ما توانایی ساخت بازی را داشتیم ولی روی پروژه های خارجی کار می کردیم چون نیاز به درآمد برای همه وجود داشت و جایی برای سرمایه گرفتن نداشتیم. البته شرایط الآن کمی برایمان بهتر است و به امید خدا به زودی دمویی آماده خواهیم داشتو در خارج و داخل به دنبال سرمایه خواهیم بود. کارهای دیگری مثل رده بندی بازی ها با پر کردن فرم در بازارها توسط توسعه دهندگان و ارسال عکس و فیلم بازی به بنیاد می تواند با هزینه بسیار کمتری انجام شود. طبعا دروغ گویی در این زمینه با پیگرد قانونی همراه خواهد بود.

در آخر بگویم که به نظرم مشخص است باید چه کارهایی انجام شود و برخی از آن ها که فرهنگی هستند بیشتر زمان برده و طول می کشند. چیزهایی در ذهن ما سازندگان و چیزهایی در ذهن مردم باید تغییر کند تا صنعت بهتر شود اما همین امروز هم با همین ذهن ها با مدیریت بهتر منابع می شود نتایج خیلی بهتری داشت. ما باید افرادی که فقط اطراف بازی هستند و بی جهت به عنوان مدیر پروژه و مثلا برگزار کننده فلان و ... خبرنگار نامناسب و بازی ساز الکی هستند از واقعی ها جدا کنیم و منابع را روی افراد دانا و درست کار صرف کنیم. هم تیم های جدید با استعداد قابل یافت هستند و هم بسیاری از افراد که یا مشغولند و یا تیم هایشان در گذشته از هم پاشیده موجودند. البته برخیشان به خارج از کشور رفته اند که غمی است و اندوهی که شاید تا همه چیز درستتر نشود به راحتی همه شان باز نگردند. باید بنیاد و ما سعی کنیم که با منطق و بررسی نظرات افراد شایسته و انجام کارهای عاقلانه محیط را برای تولید محصول با کیفیتتر آماده کنیم (رویداد level up کار بسیار مثبتی در این زمینه بود) و مردم را نیز با محصولات آشنا کرده و به صادرات محصول های با کیفیت کمک هم بکنیم. البته گاهی حرفهایی هم از زبان برخی گفته می شود که ما را به شک وامی دارد که آیا اگر با بنیاد کاری بکنیم مثل شرکت فن افزار به ناحق همه زحماتمان به پایه پولی که بنیاد به عنوان حمایت با سود بالا به آن ها داده، گذاشته می شود یا خیر؟ آیا بنیاد برای همین تولید نشده و کارش همین نیست؟ آیا فن افزار کوتاهی در تولید و فروش گرشاسپ کرده است و آیا سود بنیاد کم بوده است؟ من آخرین چیزی که در زمندگیم می خواهم این است که زحمت بکشم و به چیزی برسم و ده سال دیگر وقتی نزدیک چهل سالم شد کسی بیاید و بگوید که باعث موفقیت من او بوده و این باعث بودن را بیش از حد تاثیر واقعیش جلوه دهد. شاید موفق نشوم بهتر است. البته شکر خدا که راه برای انجام هر کاری زیاد است و ما همه با عشق وارد این کار شده ایم و به دوعوت کسی نیامده ایم که به ناراحتیش برویم و صفر تا صد کارمان تلاش و امید و تجربه خودمان است. دستمان به زانوی خودمان و امیدمان به خدا است و به آن چه خود می کنیم. اگر بنیاد خوب باشد و تصمیم های خوب بگیرد، برای همه خوب است و اگر بد باشد برای همه بد. من به شخصه تا به حال ارتباطی با کسی در بنیاد نداشتم و در گذشته یک بار برای برگزاری global gamejam با بنیاد تماس گرفتم و یک بار هنگامی که می خواستیم شرکت ثبت کنیم (البته حمایت های بنیاد موقعی که ما پول نیاز داشتیم دیگر موجود نبود). نه دشمنی با بنیاد دارم و نه دلیلی برای دشمنی با نهادی که برای این تولید شده که به امثال من کمک کند، اما اگر این نهاد این کار را نکند و به جای آن در توهم و ادعا درگیر باشد، ما باید از راه دیگری نیازهایی که بنیاد قرار است برآورده کند را برآورده کنیم، بازار بسازیم و فرهنگ بسازیم و بازی و این کار را خواهیم کرد چه بنیاد همراه باشد و چه نباشد. این ها را نوشتم که بگویم اگر بنیاد بخواهد کار جدی کند، هم کارها مشخص هستند و هم همه بازی سازان عاشقانه به آن کمک خواهند کرد و همه سود خواهیم کرد و ایران عزیزمان به جلو خواهد رفت. برخی هم ناراحت می شوند که بساط show هایشان و پول هایی که بی خود می گرفتند جمع شده که خوب ناراحت شوند. باید جمع می شده. امیدوارم که آینده مان را خوب بسازیم.

۲۶ دی ۹۶ ، ۱۹:۰۴ ۰ نظر موافقین ۰ مخالفین ۰
اشکان سعیدی مزده

گرفتن پروژه از خارج از کشور (بخش دوم)

در پست قبل راجع به این موضوع کمی می خواستم بیشتر به شکل عملی صحبت کنم. این که کارها رو از کجا می شه پیدا کرد و چه طور کار رو می شه گرفت که چون طولانی شد ننوشتم. تو این پست اونا رو توضیح می دم و این که باز هم می گم من کسی رو به انجام این کار تشویق نمی کنم. فکر می کنم باید اولویت نوشتن پروژه خود آدم باشه و با این کار می شه شرکت رو ماندگار کرد. این کار فقط برای زنده نگه داشتن شرکت مناسبه و ترجیحا باید مقدار پولی که می گیرید اون قدر باشه که به نوشتن پروژه خودتون کمک کنه و با پروژه خارجی تموم نشه.حالا در باره مکان های گرفتن کار بگم که همونطور که قبلا گفتم بیشتر تو انجمن های مربوط به خود شرکتا کار پیدا می کنید و تو آشنایی با آدم ها از طریق بیرون دادن demo/screenshot/blog/... ولی حالا فرض کنید کاری یافتید که می خواید بگیریدش. باید چی کار کرد؟ طبعا اولش یه پیام یا ایمیل به ارسال کننده کار می فرستید. معمولا خودشون روش ارتباط رو می نویسند. بعد معمولا ازتون زمان و قیمت می خوان ولی به جز اون ها خیلی خوبه که تو ایمیلی کوتاه توضیح بدید چرا برای اون کار مناسبید و دروغ نگید. تشخیصش با وناست که شما مناسبید یا نه. قطعا کارایی هم سطحتون پیدا خواهد شد. اولش هم قطعا خیلی بیشتر طول خواهد کشید. این رو باید بدونید که در بیشتر مواقعی که با کشور های اروپایی و آمریکایی کار می کنید، باید با طرف مقابل روی اسکایپ یا برنامه دیگری صحبت کنید. برنامه دیگر معمولا شامل google hangout و جدیدا slack می شه. 

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

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

گاهی ممکنه مشکلی پیش بیاد که از سمت مشتری باشه و دیر متوجهش بشه. خوبه که صبور باشید و این رو هم باید بدونید که ممکنه کسی پولتونو بخوره. من در ابتدای کار که تجربه کمتری داشتم این مشکل دو بار برام پیش اومد. یه بارش از شب تا صبح امتحان رو یه بازی turn based شبکه ای کار کردیم که چون fade to black گوش می دادیم اسمش شد fade to black و طرف گفت من اولین build رو تو Android ببینم باهاتون قرارداد می بندم. ما هم با فیلترینگ برای اولین بارمو ن یه build گرفتیم و براش فرستادیم و سه روز وقت طلف کردیم که تهش معلوم شد یارو تو دمو پروژه رو به سرمایه دارا نشون می داده پول بگیره. 

یه بار دیگه هم بودش که طرف دو هفته خودش نمی تونست پروژه رو نصب کنه و قبلی رو می دید  و هی فکر می کرد باگ داره و آخرش وقتی پروژه برای مشکل وقت کنسل شد بقیه پول ما رو نداد. البته تو این کیس ما هم تو تخمینمون خیلی اشتباه کرده بودیم.

نکته دیگه ای که باید حواستون باشه، برای پروژه هایی که ساعتی بهتون پول نمی دن هست. تو اونا باید تخمین خوبی بزنید و کلا تخمین زدن  نرم افزار سخته، بازی از اونم سختتره. کتاب demystifying the black art of software estimation آقای استیو مک کانل رو پیشنهاد می کنم. 

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

اگه شما دنبال کار نرفتید و اونا اومدن سراغ شما (چندین سال طول می کشه که این طور بشه) معمولا شرایط بهتره و معمولا هم کار رو می گیرید مگر این که یکی از طرفین توقعات عجیبی داشته باشه. در مورد شخصیت هم بگم که سعی کنید از آدمای نسبتا معقول و کسایی که شغلشون همین هست کار بگیرید. هندل کردن کارفرمایی که این شغلش نیست و سرمایه گذاری فان یا رویاییشه و یا کسی که مثلا برای یه شغل دیگه یه برنامه سه بعدی می خواد ریسک رو می بره بالا. البته من کار این طوری خوب هم انجام دادم ولی باید حواستون به میزان دانش و سرمایه طرف مقابل باشه. 

امیدوارم این پست مفید بوده باشه و امیدوارم بتونید رو پروژه های خودتون کار کنید

۲۲ دی ۹۶ ، ۲۲:۱۸ ۲ نظر موافقین ۰ مخالفین ۰
اشکان سعیدی مزده

گرفتن پروژه از خارج از کشور

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

پیش زمینه

پس از شکل گیری علاقه من به بازی سازی که البته بخشی از زمینه یادگیری سریعش را یک پروژه پیشنهادی از یک معلم فراهم کرد من با دوستانم چند بازی کوچک در Game Maker 6 ساختیم و پس از آن هم در اوایل دوره دانشجویی به دنبال ساخت بازی خودمان بودیم. برای کسب درآمد کنار تحصیل هم به کارهای شبکه مشغول بودیم که البته کمابیش انجام می دادیم و جدی نبود. بعد ها هنگام تولید اولین پروژه بزرگمان که به شکست انجامید برای کسب درآمد در انجمن های یونیتی به دنبال پروژه گشتیم و کم کم انجام پروژه های مشتری به جد آغاز شد.


چرا باید پروژه دور کاری انجام دهیم؟

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


نکات مثبت و منفی انجام پروژه مشتری

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

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

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

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


تجربیات من در گرفتن پروژه

قلم این بخش کمی امری است، شما موقع خواندن در نظر بگیرید که من نظرم را می گویم و فکر نمی کنم که این درستترین نظر است.

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

هنگام گرفتن پروژه از خارج از کشور گرفتن پروژه برای کل تیم فنی و هنری و طراحی کار مشکلی است و معمولا برای انجام این کار به نمونه کار تیمی و رفتن به کنفرانس ها نیاز دارید. من برای تیمی کار می کردم که خیلی از پروژه های prototype مورد نیاز War Gaming را انجام می داد ولی تیم ما بازی های زیادی در کنسول و PC ارایه کرده بود و در صنعت دارای network قوی بود.

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

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

نوشتن بلاگ و پاسخ گویی به وسالات دیگران به شکل کامل و عمیق به شناخته شدنتان کمک می کند ولی نمی دانم اگر به این کار علاقه نداشته باشید چه قدر خوب می توانید آن را انجام دهید. من اولین پستم برای گاماسوترا را طی دو ماه و آخر شب ها نوشته و پاک نویس کردم (به ساعت این پست هم نگاه کنید :) ). داشتن برخورد مناسب و نظرات جالب و کلا ارتباط خوب و روابط عمومی بسیار کمک می کند ولی اگر کاری را مصنوعی انجام دهید سریع مشخص شده و به ضررتان تمام می شود. هیچ کس از همه کارهای دیگران ذوق نمی کند. خودونی بگم ادا در نیارید :) 

شما در برخی کارها ضرر خواهید کرد. من در ابتدای کار به دلیل بد تخمین زدن خودم یا ناتوانی تیممان در انجام کاری یک پروژه را کنسل کردم و یک پروژه به مشکل خورد که هم ناتوانی و تخمین اشتباه ما بود و هم کار نابلدی کارفرما. یک ماه تمام کارفرما نمی توانست بازی را روی iPhone خود نصب کند و نسخه قدیمی را می دید و در نهایت از پروژه 10000 دلاری فقط 4500 دلار به ما رسید که البته آن روزها پول خوبی بود و ما هم دفتر گرفتیم و هم کارمان را جدیتر ادامه دادیم. طول می کشد تا بتوانید کارها را خوب تخمین بزنید و قبل از زیاد شدن مهارتتان پروژه های بزرگتر را نگیرید و یا از با تجربه ترها کمک فکری بگیرید. 


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

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

گرفتن پروژه از کارفرماهای کشورهای فقیرتر معمولا ساده تر است و مهارت کمتری لازم دارد ولی کیفیت پروژه ها هم پایینتر است و معمولا رزومه خوبی برایتان نیست. آن را فقط در ابتدا و هنگام ضرورت انجام دهید. کشورهای آسیای شرقی به جز ژاپن و کره جنوبی و کشور های دیگر آسیایی و آفریقایی از این دسته هستند. گرفتن کار از آمریکا هم به دو دلیل سختتر از اروپاست. یکی ممنوعیت قانونی آن ها و دوم اختلاف ساعتی که می تواند تعامل را سخت کند. البته بسته به این که تیم سازنده اصلی در غرب یا شرق آمریکا باشد ساعاتی که با هم بیدار هستید و کار می کنید می تواند بین 2 تا 6 ساعت از روز باشد (فرض کردم تا 10 شب حاضرید بمونید سر کار).

از سایت هایی که پروژه ها در آن ها قرار می گیرند فقط upwork/oDesk خوب هستند که اگر کسی از خارج برایتان حساب باز نکند که بتواند ثابت کند در آن کشور است به راحتی بلاک خواهید شد. معمولا بهترین کارها را از انجمن های نرم افزارهایی که با آن ها کار می کنید و جاهایی مثل بخش شغل های stack overflow خواهید گرفت زیرا اعضای اصلی صنعت بیشتر در این مکان ها دنبال نیرو می گردند. در باره مدل سازی و آرت ظاهرا موضوع مقداری متفاوت است که من اطلاع چندانی از آن ندارم. معمولا کسانی در odesk و ... کار قرار می دهند که بیرون صنعت هستند و یا برای سازمانشان / مدرسه شان نیاز به بازی دارند و یا پولی دارند و دوست دارند بازی بسازند و دانششان به زیر صفر میل می کند و گاهی شیرجه می زند که بسیار خطرناک است.


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

۱۵ دی ۹۶ ، ۲۳:۴۹ ۲ نظر موافقین ۰ مخالفین ۰
اشکان سعیدی مزده

voxel چیست؟

در چند وقت گذشته بیش از پیش با موجودیتی به نام voxel کار کرده ام و گاه گاه مطالبی راجع به آن در تویتر فارسی خودم و یا تویتر انگلیسیم به اشتراک گذاشته ام. سوالات فردی در تویتر من را بر آن داشت که کمی راجع به آن ها در یک پست توضیح دهم.
یک واکسل توضیح دهنده یک نقطه در فضای سه بعدی است. مثل پیکسل که یک نقطه در فضای دو بعدی یک تصویر را شرح می دهد، واکسل هم یک نقطه در فضای سه بعدی را شرح می دهد. معروفترین بازی که از این مفهوم استفاده می کند Minecraft است اما voxel ها لزوما نباید مربع باشند. توضیح یک واکسل می تواند شامل نرمی سطح و normal های آن نقطه از سطح و حتی مختصات UV برای texture باشد. voxel ها برای تعریف یک شکل در فضای سه بعدی مورد استفاده قرار می گیرند. برای نمایش معمولا با الگرویتمی یک سیستم بر پایه voxel را به مدلی بر پایه مش های معمول (بر پایه polygon) تبدیل می کنند و render می کنند. در واقع در یک مدل بر پایه voxel به جای تعریف یک سری polygon که شکل را تشکیل می دهند از مقدار دادن به خانه های یک grid سه بعدی استفاده می کنید. دقت کنید که این خانه ها الزاما نباید مکعب باشند.
شاید از خود بپرسید چرا باید مدل و فضا را در فضای voxel تعریف کنیم و هنگام نمایش به mesh تبدیل کنیم. voxel ها به جز بازی ها در نرم افزارهای پزشکی و ... نیز کاربرد دارند. دلایل مختلفی برای جذاب بودن voxel ها در domain های مختلف موجود است. در بازی ها اگر شما قصد داشته باشید که با کد و به شکل procedural دنیای بازی را تغییر دهید و مثلا به کاربر امکان کندن زمین یا ساختن سازه را بدهید. voxel ها کار ساخت ابزار برای کاربران را بسیار ساده می کنند و هم پیاده سازی شما بسیار ساده می شود و هم کاربران بسیار ساده با ابزارهایتان ارتباط برقرار می کنند. ساخت همه ابزارهای voxel based بر پایه مش های معمولی هم ممکن است اما این کار بسیار سخت و پیچیده می شود.
همچنین اگر شما بخواهید بر اساس یک الگوریتم دنیای خود را تولید کنید و مثلا کوه و دره و رود و ... بسازید. voxel ها از بهترین روش های برای نگهداری داده مربوط به دنیا برای تغییر ساده و تبدیل ساده به mesh هستند.
جذابیت دیگر voxel ها این است که به راحتی می توانید voxel های دورتر از دوربین را با detail کمتری برای کاربر به مش تبدیل کنید و همچنین می تواین به سادگی با داشتن یک درخت octree و ماتریس خلوت voxel ها ، تشخیص دهید با در نظر گرفتن موقعیت فعلی کاربر باید کدام بخش از دنیای واکسلی را به مش تبدیل کنید.
واکسل ها به جز این جذابیت ها دارای مشکلاتی هم هستند. اگر شما بخواهید دنیایتان را از تعداد زیادی voxel بسازید نیاز دارید که حافظه زیادی را برای voxel ها مصرف کنید و همچنین کار با آن ها در game enegine های آماده معمول دارای چالش هایی است زیرا این برنامه ها برای تولید مش و کلا محتوا در real-time بهینه نشده اند. مثلا در UE4 و Unity شما نمی توانید در thread هایی به جز thread اصلی بسیاری از کارها مثل تولید mesh مربوط به سیستم collision را انجام دهید و فقط می توانید آرایه vertex ها را در threadی دیگر بسازید و برای تبدیل آن به مش و نسبت دادنش به scene باید منتظر وقت خالی در thread اصلی بمانید و آن را بلاک کنید. همچنین واکسل ها پشتیبانی خوبی از انیمیشن اسکلتی ندارند و شما نمی توانید به راحتی یک مدل را در فضای واکسل انیمیت کنید و از آن رندر بگیرید. به روز کردن مش برای هر فریم بسیار کند است و الگوریتم های موجود دیگر هم بهینه نیستند (sub-optimal هستند).
۰۲ دی ۹۶ ، ۱۶:۳۹ ۰ نظر موافقین ۰ مخالفین ۰
اشکان سعیدی مزده