اندیشه ها و نظرات یک برنامه نویس و بازی ساز



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

ما دو کار درست کردیم یک داشتن ایده ای با اندازه نسبتا مناسب و دوم تحقیقات جامع از تکنولوژی های مختلف ساخت بازی و ساخت MMO از جمله big world, Hero Engine, monumental engine و . اولش که خواستیم شروع کنیم فکر کردیم بخشای بلادرنگ رو با شبکه خود یونیتی که رکنت بود و بخشای دیگه رو با smartfox پیاده سازی می کنیم ولی به زودی فهمیدیم که نمی تونیم و رفتیم دنبال تکنولوژی درست. کلی گشتیم. اون وقت Photon دو محصول داشت و خیلی برامون مهم بود تکنولوژی کاملی باشه که با دو نفر برنامه نویس اصلی بشه باهاش همه چیو نوشت برای همین هر تکنولوژی که مثلا باید 100 تا فایل ادیت می کردی و به سه زبون توش کد می زدی رو حذف کردیم. کتاب سی شارپ گرفتیم programming C# 3.0 و کل مستندات یونیتی رو خوندیم و نفری یه بازی کوچیک ساختیم. آخر رسیدیم به تکنولوژی های شرکت MuchDifferent و حتی با خودشون هم رو بازی Badanamu کار کردیم و بعدا ها من بیشتر هم کار کردم. 


اشتباهمون در مورد تکنولوژی این بود که در باره بعضی چیزای دیگه مثل substance و تکنولوژی کش کردن داده در براوزر برای web player یونیتی زیاد وقت گذاشتیم و یک کمی هم رفتیم دنبال خرید تکنولوژی های گرونی که بالا اسم بردم قبل بررسی کامل که البته بررسی خوب مستنداتشون کلی بهمون چیز یاد داد. خیلی هم کلا به ابزار اهمیت می دادیم و مثلا یه ابزار نوشتیم از تو منو های یونیتی توابع SVN رو در اختیارمون می ذاشت و فقط یه روز نوشتنش وقت گرفت ولی خوب سرعتمونو می برد بالا و برای خیلی چیزای دیگه مثل ساخت prefab و قرار دادن object رو زمین و هم ابزار داشتیم و این بعد ها هم فکر کنم کم و بیش تو کار هردومون ادامه پیدا کرد.


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


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


 فرض کنید یه سیستم سکه هم داریم که اگه بین کاراکترایی که می تونن اونا رو بخورن و سکه ها برخورد اتفاق افتاد به تعداد سکه اونا اضافه می کنه. تو حالت معمولی یونیتی می اومدین و یه component تعریف می کردین به اسم Coin که هر وقت مثلا OnTriggerEnter صدا زده می شد و طرف مقابل بازی کن بود براش یه متدی صدا می کردین که سکه ها شو زیاد می کرد و اگه لازم بود جونش رو هم زیاد می کرد مثلا اگه 100 تا می شدن سکه ها. تو ECS میاید یه سیستم تعریف می کنید که همه entity هایی که coin بهشون وصله رو می گیره و بعد اگه یه کاراکتری بیش از حد بهش نزدیک بود میاد متوجه می شه که باید به اون کاراکتر سکه اضافه کنه و سکه رو از بین ببره. البته می تونید این کار رو به شکل برعکس هم انجام بدین که مثلا برای همه کاراکتر ها بگرده و اگه سکه ای نزدیکشون بود از بین ببره و بهشون اضافه بکندش.

اگه دقت کنید کل بازی این شکلی می شه که شما یه سری سیستم می نویسید که اول میان همه entity هایی که یه سری component خاص رو دارند پیدا می کنند و بعدش روی همشون یه منطقی اجرا می کنند. سوال اولی که پیش میاد اینه که بین این سیستم ها چه طور اطلاعات جا به جا کنیم و سوال دوم این که اطلاعات عمومی بازی که معمولا تو singleton ها بودن رو چه طوری بهشون بدیم و سوال سوماین که چه طوری بیایم اولویت اجراشونو مشخص کنیم و از همه اینا سختتر و مهمتر این که بهترین روش نوشتن چیه


در واقع حلقه اصلی بازی بدین شکل می شه که ما میایم یه سری سیستم رو به شکل job تعریف می کنیم و بعد به نوبت متد های Schedule اونا رو صدا می کنیم و dependency هاشونو که برمی گردونن به Job های دیگه می دیم. حالا بقیه مطلب رو یونیتی هندل می کنه و به ما می گه اگه مثلا روی داده هی همزمان دوتا جاب بنویسند و . بعد برای این که مثلا بتونیم کارمونو راحت کنیم باید بین این سیستم ها اطلاعات جا به جا کنیم که تو یونیتی با Native Array و رفقای Native دیگش انجام می شه. مثلا ما داده سکه ها و کاراکتر های نزدیک به هم رو که تو یه سیستم جمع کردیم به یه لیست اضافه می کنیم که به سیستم دیگه ای پاس داده می شه که همه اون سکه ها بعدش از بین می رن و اون سیستم میاد به همه اون کاراکتر ها امتیاز اضافه می کن ه و اگه امتیاز از 100 بیشتر شد یه جون اضافه می کنه. تفاوت این روش با سیستم های قدیمی که کد می نوشتیم دوتا چیز مهمه.

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

شاید چند سوال پیش بیاد که مثلا برخورد بین سکه و آدما تو ECS چه طور تشخیص داده می شه (تو مدلی که نخوایم از APIهای قدیمی یونیتی استفاده کنیم). دو راه هستش، یکی این که جای اشیا رو توی یه hash map قرار بدیم و بعد برای تشخیص برخورد ببینیم تو کدوم خونه های همسایه هر کاراکتر سکه ای هست که فاصلش از یه مقداری باهاش کمتره و راه دوم انجام raycast توسط job مربوط یعنی RayCastCommand هستش.

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

یه مساله دیگه که خوبه بدونید اینه که یونیتی همه سیستماشو یکی یکی به شکل jobified/ECS در میاره و از اون جا قابل استفاده می شه. مهم اینه که شما یاد بگیرید برای نوشتن کد با ECS باید به جای دیدن این که فلان object/component چه رفتارایی داره این رو ببینید که من به چه داده هایی نیاز دارم که این منطق رو اجرا کنم و چه عملیاتی باید روی این داده ها انجام بدم و برای ارتباط بین این عملیاتا کجا ها به ساختمان داده میانی اضافه نیاز هستش. مثلا برای ارتباط بین سیستم برخورد و سیستم از بین رفتن سکه و امتیاز دادن به داده میانی لیست/صف نیازه ولی برای این که بعد از زیاد شدن سرعت به دلیل خوردن Power up سیستم حرکت کاراکتر شما رو سریعتر حرکت بده نیازی به یه لیست نیست که همه کاراکترایی که سرعتشون اضافه شده باشه داشته باشیم چون سیستمی که داره اثر پاور آپ روی کاراکتر رو چک می کنه می تونه با علم به این که این power up از نوع تغییر سرعت هست بگه من اون entity هایی رو می خوام که کامپوننت سرعت دارند و کامپوننت آدم و بعد اونایی که تو لیست برخورد با پاور آپ سرعت هستند رو اون پاور آپ مربوط رو بگه براشون پاک بشه و بعد همون کامپوننت سرعت رو درجا سرعتشو مثلا دو برابر کنه و اگه تایمی هم داره اون رو هم ست بکنه که مثلا ثانیه x این سرعت بالا رفته. می تونیم سیستم دیگه ای داشته باشیم که همه کامپوننت های سرعت رو  چک می کنه و اگه از xشون 5 ثانیه گذشته باشه دوباره به سرعت عادی برشون گردونه.

یه مطلب دیگه مساله سختن/از بین بردن entity هست و اضافه/کم کردن component که همیشه باید روی thread اصلی انجام شه و معمولا وسط سیستم هایی که Multi-threaded هستند که بهشون JobComponentSystem گفته می شه قابل اجرا نیستند. به جاش یه بافری هست که توی اون سیستم پر می شه و بعد در دیر ترین زمان ممکن اجرا می شه.

مسایل دیگه ای مثل barrier ها و این که مثلا اضافه /کم کردن component به entity از نظر performance چه باری داره و این که کلا entity ها و در واقع آرایه های component ها چه طور روی حافظه چیده می شند یا با کدوم API ها باید این کارارو بکنیم رو توضیح ندادم چون که اولا خسته هستم و دوما به نظرم مساله مهم اینه که یاد بگیرید چه طور فکر کنید که کد  ECS بنویسید و اون API ها رو به سادگی یاد می گیرید. خودم هم نوشتن sampleم یحتمل می ره واسه بعد GDC که نسخه نسبتا stableتری از اینا بیاد بیرون. الآن هم کاملا ممکنه و من کد های یونیتی رو به چیزایی که دلم خواست تغییر دادم ولی بخشای کوچیک ی گنگ هستند و تغییر کردن و چون فرصت کمه فعلا سراغ ساخت سمپل کامل نرفتم.


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


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

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

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


چه بسته هایی به فروش بالا خواهند رسید


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


من خودم موفقیت خیلی زیادی در فروشگاه نداشته ام و البته هیچ وقت هم بسته خیلی بزرگی که توقع فروش بالا از آن داشته باشم را نیز در فروشگاه قرار نداده ام. شاید بعد از یاد گرفتن ECS بسته های سیستم های مختلف با استفاده از آن را برای تفریح در این فروشگاه قرار دهم. نکته ای که خوب است بدانید این است که ممکن است برخی افراد به شما بگویند که assetهایشان فروش خیلی زیادی در فروشگاه یونیتی دارد در حالی که تعداد review ها و rating چیزی که در فروشگاه دارند آن را نشان ندهد. دقت کنید همیشه تعداد فروش هر بسته چندین برابر تعداد review ها و rating ها است ولی اولا در برخی کشورها مثل کشور ما خیلی از reviewها و rating]های تشریفاتی استفاده می شود و دوما به هر حال ممکن نیست بسته ای با 5 ریویو مثلا 10000 نسخه فروخته باشد و اجازه ندهید این تصور در شما ایجاد شود که یک بسته ساده می سازید و پول دار خواهید شد.

در صورت داشتن سوال یا نیاز به کمک در این باره می توانید به من ایمیل/پیام دهید.


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

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

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

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

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

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

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

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


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

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

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

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

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

ممکنه کارفرما شما رو به دلیل ترکیب این دو بخواد و یه سری عوامل دیگه مثل اخلاقتون و روش ارتباط/حل مشکلتون و که بیشترین حالت هستش. حالت وسط برای افراد خیلی خاصی اتفاق می افته و  برای ماها یحتمل فقط توی کشور خودمون فعلنا اتفاق بی افته.

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

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

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

ادامه مطلب

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

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

درست جلوی کامپیوتر بشینید(لینک هایی مثل این dev.bodycarephysio.com.au/how-to-sit-at-a-computer/
را ببینید). 

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

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

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

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

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


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

هنوز کاملا خوب نشده ام ولی به هر حال دکتری که پیش آن رفتم و نتیجه هم نسبتا مناسب بوده، دکتر پیمان بنکدار است. 

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


ما در شرکت دنبال 5 برنامه نویس خوب #C هستیم که به NET. آشنایی خوبی دارند و دوست دارند روی پروژه های جذاب کار کنند. شما روی چیزهای مختلفی از ابزار برای گسترش visual studio تا کتابخانه تولید برنامه های تحت وب و از ابزار های code generation تا بازی های جالب کار خواهید کرد.

کار به شکل تمام وقت برای حد اقل 5 نفر و همچنین به شکل پاره وقت هم موجود خواهد بود. بیمه و . هم طبعا به درستی انجام خواهد شد.

شرایط شما برای پذیرفته شدن

- آشنایی خوب با دات نت و سی شارپ

- شجاعت و علاقه به یادگیری تکنولوژی های جدید

- روحیه انجام کار (حتی اگر گاهی بخشی از کار خیلی جذاب نباشد کسی باید آن را انجام دهد)

- سعی برای رسیدن به اخلاق بهتر و ارزش های انسانی والا

- شفاف و صادق

در صورت توانا بودن، به شما برای یادگیری تکنولوژی های جدید وقت داده خواهد شد پس نگران این که مثلا تا به حال visual studio extension ننوشته اید نباشید.

چیزهایی که ما فراهم می کنیم.

- محیطی محترم و آرام، در صورت علاقه شما شاد و صمیمی

- پروژه هایی open source که نام شما در GitHub در پروژه خواهد بود

- پروژه های جذاب و چالش برانگیز

- آزادی عمل مناسب و mentoring و کمک در صورت نیاز

- امکان رشد علمی

- حقوق مناسب، بیمه و .


در صورت علاقه به من ایمیل بزنید ashkan.saeedi.1989@gmail.com یا info@nooparmygames.com و یا در تلگرام(Ashkansm@) با من در ارتباط باشید.

لطفا نام، رزومه، و دلیل علاقه خود به کار را برایم ارسال کنید.


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

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

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

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

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

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

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


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

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

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

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


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

من دوباره کتاب theory of fun رو خوندم و یه سری ویدیو از یه سری دیزاینر معروف دیدم که در بارش این جا گفتم. شروع کردم به فکر و قبلش هم با یه سری تکنولوژی جالب بر پایه واکسل ها آشنا شده بودم به اسم voxel farm که دوست داشتم ازش استفاده کنم. اول این که بعد چند سال داشتم بازی برای خودم می ساختم و به علاوه بازی دیگه ای رو الگوی شروع و تغییر قرار نمی دادم. تو دو سه بازی قبلی که سعی کرده بودیم تو تیمایی که بودیم بسازم همیشه مثلا می گفتیم بیاید یه بازی عین تانک میکرو بسازیم و بعد شبکه ایش کنیم و فلان بهش اضافه کنیم و یا یه بازی شبیه فلان بازی با این امکانات فلان بازی دیگه. انجام این کار معنیش این بود کار تولید خیلی کندتر از اون حالتایی که گفتم پیش می رفت.

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

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

تو این گیر و دار به یه ایده بازی دیگه فکر می کردم که یه جورایی از papers please و یه سری بازی دیگه الهام گرفتم و در باره شبیه سازی یه سیستم بود که توش شما با کودکان کار و انتخابای اخلاقی سر و کار داشتی و . این بازی هنوز ممکنه ساخته بشه و یه مساله اخلاقی داشت که آیا درست هست که راجع به یه مساله اجتماعی بازی بسازم که تجاری هست و ازش پول در میاد و بخشی از اون پولا از حس نسبت به مثلا کودکان کار به دست میاد؟ 

مساله دیگه ای که خیلی جدی باهاش مشکل داشتم چون بازی دیگه ای رو الگو قرار نداده بودم انتخاب حس و تم کلی بازی بودش. مثلا وقتی به اون بازی با مکانیک بر پایه ساخت با واکسل می ساختم، این که آیا المان های پازل زیاد کنم بر حسب فیزیک یا المان های RPG بیارم و یا مثلا المان اکشن توش بذارم جواب دادن بهش سوال آسونی نبودش. این سوال که مثلا آدمی که با building حال می کنه ترجیحش کدوم این المان ها هستش. من نمی خواستم Minecraft v-next بسازم که مثلا رزلوشنش بالاتره. این مساله تصمیم راحتی هست اگر یا شما بازی خاصی تو ذهنتون بوده باشه که همیشه می خواستید بسازید (این ایده ها معمولا ترکیب ایده های بازی های گذشته هستند و گیم دیزاینرای تازه کار به خصوص از این ایده ها دارند، وما بد هم نیست) و یا یه بازی دیگه رو الگوی خودتون قرار دادید. مساله این بود که من فکر می کردم مثلا black and white یهو از کجا ایدش اومده و یا mario و . حتی مثلا یه اسلاید بود از Raph Koster که همه مکانیک های موجود رو توش نوشته و هی فکر می کردم که یه چیز جدید چی در بیارم که خوب اون کار خیلی سخت بود و خیلی از این کارا و ایده ها وقتی قرار باشه کار جدیدی انجام بشه باید با یه نگاه خاص از زاویه خاص پیش بیاد و یا تو تجربه ساخت اتفاق رخ بده.

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

اگه سوالی هم هست و چیزی رو باید بیشتر توضیح بدم بپرسید.


تبلیغات

آخرین ارسال ها

آخرین جستجو ها

آموزش تک آشپز دزیره فعالیت های یک دختر کلاس هشتمی آپادانا سازه learnwordpress مثل باد سریال های ترکی در حال پخش کلبه عطر