1398/3/26، 11:29 عصر
سلام به همه دوستان .
توضیحات مقدمه :
حدودا اواخر سال 94 بود که قصد داشتم یک بازی ساده 2 بعدی بسازم که ساختنش با یونیتی خیلی طول میکشید به همین دلیل دنبال راهی بودم تا این بازی ساده رو در سبک پلتفرمر رو بتونم خیلی راحت تر در حد 1 ماه وقت نهایتا بسازم .
با تحقیقاتی که کردم با برنامه هایی مثل کانستراکت 2 و گیم میکر در نهایت تحقیقاتمو تموم کردم ، از اون جایی که قبلا با گیم میکر کار کرده بودم علاقه ای به کار مجدد با این موتور نداشتم ، اما وقتی با کانستراکت 2 شروع به کار کردم این موضوع خیلی دلچسب شد به طوری که تمامی پروژه های 2 بعدی خودم رو بدون دستخورد با کانستراکت انجام میدم و از امکانات و کارایی اون خیلی راضی هم هستم .
اما اصل داستان من با کانستراکت از اوایل سال 95 شروع میشه و بعد که با انجمن کانستراکت 2 آشنا شدم .
حالا بعد از گذشت بیش از 3 سال از فعالیت در کانستراکت 2 به حدی رسیدم که میتونم به جرات بگم 90 درصد کانستراکت رو بلدم و اون 10 درصد رو هم میذاریم به پای نا آشنا بودن با بعضی از امکانات خاص کانستراکت که البته اونا مهم نیست ، برخلاف موتور های بازی سازی برنامه نویسی شده مثل یونیتی که شما اگر ی قسمت هایی رو بلد نباشید امکان داره به مشکل بخورید ، توی کانستراکت وقتی شما موتور کلی بازی رو یاد بگیرید دیگه امکان نداره هیچ وقت به مشکل بخورید ؛ برای خود من اینطوری بوده .
اما واقعا برام جالب بود ، در حالی که حالا به راحتی در هر بخشی از انجمن نظری برای گفتن دارم و کار کردنش برام آسون شده ؛ اما در این سال ها از ساخت پروژه هایی که داشتم و کار هایی که انجام دادم تجربه هایی به دست آوردم که واقعا جذاب بودن .
اولین تجربه و چالش جدی من ساخت بازی آنلاین نبرد مدرن بود ؛ واقعا برای ساخت این پروژه خیلی زحمت کشیدم ، علاوه بر اون باگ های متعددی که داشت واقعا دردسر ساز بود ؛ فقط ی سر زدن کوچیک به پست این بازی میتونید ببینید که چه باگ های داغونی رو بازی میخورد و چه اشکالات عجیب و غریبی پیش میومد ، با این حال هر مشکلی که برای بازی پیش میومد مسلما مشکلش حل میشد و طی دو نسخه آپدیت جدید همه باگ هایی که طی نسخه های اول و دوم داخل بازی بود رفع میشد .
با این حال به دلیل اینکه این بازی از نظر سناریو و گرافیک ضعیف بود عمل کرد اون اصلا قابل تحمل نبود ...
به طوریکه این بازی طی 5 . 6 ماهی که در حالت انتشار بود در حالی که ماهانه حدود 80 تا 100 هزار تومان خرج سرورش بود ، در این مدت تنها 900 هزار تومان درآمد داشت ، که طی این درآمد حدود 400 تومان هم برای تبلیغات صرف شده بود یعنی تهش حساب کنید میبینید ی چیزیم از جیب گذاشتم فقط مهرشو آزاد کردم
اما خب دلیل برداشتن این بازی از حالت انتشار فقط مسئله مالی اون نبود چون مشکلی از نظر مالی نداشتم که بخوام برای اون بردارمش ، یکی از مهم ترین مشکلات این بازی این بود که 5 . 6 ماه بود منتشر شده بود و دیگه نمیشد سناریو بازی رو دستخوش تغییرات بزرگ قرار داد ... یعنی واقعا نمیشد کاربرانی که 5 ماه با این سبک از بازی انجام داده بودند حالا بیایم و بگیم تا الان هر کاری کردید هیچ ! دوباره بیاید این سناریو جدید ! پس احتیاج بود کلا مشکل از ریشه حل بشه ، ریشه این مشکل فقط با حذف کلی بازی امکان پذیر بود تا حداقل اسم و رسم خودمو با ی بازی که در حد استاندارد های زیمباوه هم نبود به گند نکشم
مشکل دوم و بزرگ اون گرافیک گول زنک و درب و داغونش بود ؛ یعنی هرکی اینو میدید فارغ از اینکه بدونه چه زحماتی پشت این بازی بوده از گرافیک بچگانه و ضعیف اون خندش میگرفت .
برای اینکه گرافیک بازی رو عوض کنم حداقل نیاز به یک همکار گرافیست بود از اون جایی که پروژه شکست خورده بود از دوستان کسی حاضر به همکاری نشد و از طرفی اگر میخواستم گرافیست بدم طراحی کنه باید حداقل 800 . 900 هزار ت دیگه هزینه میکردم ، چون واقعا بازی احتیاج داشت که تمام گرافیک هاش از 0 ساخته بشه ، یعنی حتی UI
مشکل سوم ، مسلما موتور بازی سازی کانستراکت یک موتور بازی سازی دو بعدی با امنیت کلاینت پایین هست ، اگر شما بخواید یک بازی آنلاین با امنیت لازم و استاندارد رو بسازید باید اون رو در سمت سرور تقویت کنید و کلاینت رو فقط برای بررسی اطلاعات و دریافتشون طراحی کنید،توی بازی نبرد مدرن این موضوع رعایت نشده بود و اگر میخواستم رعایت کنم باز باید چند ماه وقت صرف میکردم که از اول بنویسم و دوباره طرح ریزی کنم ، یعنی بهتر بود اصلا ی پروژه از 0 جدید بنویسم تا اینکه بخوام اونو تغییر بدم از این طریق ...
مشکل چهارم ، باگ هایی بود که موتور بازی میخورد ، هر بازی ی موتور ( یا همون سیستم بازی ) داره که هرچقدر موتور این بازی بهتر نوشته شده باشه باگ های کمتری بهش میخوره ، اگر موتور بازی خیلی قوی باشه امکان داره حتی باگ هایی که گاها میخوره اونقدر مهم نباشه که بخواد اخلالی در سناریو بازی به وجود بیاره ؛ اما از اون جایی که سناریو اولیه موتور بازی توسط خود من نوشته نشده بود ، سیستم نوشته شده توسط فرد دیگر واقعا زاقارت بود ، یعنی نمیدونم فردی که میخواد سورسی رو بفروشه چطور میتونه انقدر آشغال سورس نویسی کنه ... خیلی از بخش های بازی به طور کلی سیستمشون مشکل داشت که اگر میخواستم اون موتور اولیه بازی رو هم کلا تغییر بدم بازم لازم بود چند ماه وقت صرف بشه ... حالا شما فکرشو بکن روی پروژه باید حداقل 1 سال وقت میذاشتی تا بشه اون چیزی که میخوای ...
این در حالی هست که اگر بخوام همونو از 0 شروع کنم ، کمتر از 6 ماه طول میکشه ، تازه اونم همراه با از 0 شروع کردن گرافیک هست ...
اما مشکل پنجم این بود که ساخت ی بازی به این بزرگی احتیاج به تجربه کافی داشت که متاسفانه در زمان ساخت بازی نبرد مدرن من حتی از امکانات کانستراکت به طور صد درصدی آگاهی نداشتم !!!
چیزی که واقعا حالا دارم توی پروژه های جدیدم از اون ها استفاده میکنم و فکر نمیکنم هر چقدرم روی نبرد مدرن کار میکردم میتونستم مثل الان تمیز درش بیارم ...
به عنوان مثال همونطور که بهتون گفتم امنیت کلاینت کانستراکت بسیار پایین هست ، اما توی نبرد مدرن برای اینکه شما بخواید یک آبجکت خریداری کنید مبلغ آبجکت داخل خود بازی و سمت کاربر محاسبه و کسر میشد و بعد به سمت سرور ارسال میشد
یعنی اگر شما میومدی این عدد رو معکوس میکردی و مثلا مینوشتی -9999999 میتونستی مقدار پول داخل بازیت کلا عوض کنی
مثل خیلی از بازی های آنلاینی که الان داخل همین کافه بازار و مایکت هستند که به همین شکل هک میشن
مشکل ششم که نگم برات
بازی نبرد مدرن واقعا احتیاجی به بودن مثلا 100 متغیر نداشت !!!
ولی جالبه بدونید این بازی حدود 100 متغیر داخل کانستراکت داشت ! یعنی اگر من 120 تا متغیر داخل سرور داشتم ، 100 تا هم داخل کانستراکت داشتم
واقعا چرا ؟؟؟ خب این برمیگرده به همون مشکلات قبلی ... این که اطلاعات داخل بازی پردازش میشدن
بعد صفحه لودینگی از بازی که توی هر صفحه رو مخ بود و حداقل 3 ثانیه طول میکشید تا روی ی گوشی معمولی بتونه اون همه متغیر لود بشه تا اگر درست لود میشد
هنوز اون مشکلات از قبیل تیر نزدن کاراکتر و یا 0 بودن امتیازات کاربر بعد از مسابقه و یا مشکل خنده دار تر از اون مشکل قاطی شدن متغیر شناسه با سطح بازی تک نفره ...
اصلا شناسه کاربر برای چی ؟
شناسه کاربر رو گذاشته بودم که کاربر رو راحت تر بتونم پیدا کنم ، اما خودمونیم اصلا این شناسه عددی رو کسی یادش میموند که مثلا اگر بازیش باگ خورد بتونه به راحتی اونو گزارش کنه ؟
تازه مشکلات رمز عبور و ورود و ثبت نام بازیکن که خیلی خنده دار بود ، مثلا اگر کاربری شناسه کاربریشو فراموش میکرد دیگه هیچ وقت نمیتونست اکانتشو برگردونه
بعد طی ی حرکت فوق العاده اومده بودم نام کاربری و رمز عبور کاربر رو گرفته بودم تا بهش شناسه کاربریشو بدم ، حالا اگر اگر شما رمز عبورتو یادت رفته بود و شناسه هم نداشتی دیگه ول معطل بودی
البته مسلما تمام مشکلات این پروژه به این مقدار بسنده نمیکنه و تجربیاتی که توی این 3 سال به دست آوردم به همینجا تموم نمیشه ، اما واقعا پست طولانی شد و واقعا فعلا حوصله نمیکشه که بخوام بیشتر از این توضیح بدم ، اما خب در کل شما هم سعی کنید تجربیاتتونو بیشتر کنید ، تجربه بیشتر مساوی با پروژه های بهتر در آینده .
موفق باشید
توضیحات مقدمه :
حدودا اواخر سال 94 بود که قصد داشتم یک بازی ساده 2 بعدی بسازم که ساختنش با یونیتی خیلی طول میکشید به همین دلیل دنبال راهی بودم تا این بازی ساده رو در سبک پلتفرمر رو بتونم خیلی راحت تر در حد 1 ماه وقت نهایتا بسازم .
با تحقیقاتی که کردم با برنامه هایی مثل کانستراکت 2 و گیم میکر در نهایت تحقیقاتمو تموم کردم ، از اون جایی که قبلا با گیم میکر کار کرده بودم علاقه ای به کار مجدد با این موتور نداشتم ، اما وقتی با کانستراکت 2 شروع به کار کردم این موضوع خیلی دلچسب شد به طوری که تمامی پروژه های 2 بعدی خودم رو بدون دستخورد با کانستراکت انجام میدم و از امکانات و کارایی اون خیلی راضی هم هستم .
اما اصل داستان من با کانستراکت از اوایل سال 95 شروع میشه و بعد که با انجمن کانستراکت 2 آشنا شدم .
حالا بعد از گذشت بیش از 3 سال از فعالیت در کانستراکت 2 به حدی رسیدم که میتونم به جرات بگم 90 درصد کانستراکت رو بلدم و اون 10 درصد رو هم میذاریم به پای نا آشنا بودن با بعضی از امکانات خاص کانستراکت که البته اونا مهم نیست ، برخلاف موتور های بازی سازی برنامه نویسی شده مثل یونیتی که شما اگر ی قسمت هایی رو بلد نباشید امکان داره به مشکل بخورید ، توی کانستراکت وقتی شما موتور کلی بازی رو یاد بگیرید دیگه امکان نداره هیچ وقت به مشکل بخورید ؛ برای خود من اینطوری بوده .
اما واقعا برام جالب بود ، در حالی که حالا به راحتی در هر بخشی از انجمن نظری برای گفتن دارم و کار کردنش برام آسون شده ؛ اما در این سال ها از ساخت پروژه هایی که داشتم و کار هایی که انجام دادم تجربه هایی به دست آوردم که واقعا جذاب بودن .
اولین تجربه و چالش جدی من ساخت بازی آنلاین نبرد مدرن بود ؛ واقعا برای ساخت این پروژه خیلی زحمت کشیدم ، علاوه بر اون باگ های متعددی که داشت واقعا دردسر ساز بود ؛ فقط ی سر زدن کوچیک به پست این بازی میتونید ببینید که چه باگ های داغونی رو بازی میخورد و چه اشکالات عجیب و غریبی پیش میومد ، با این حال هر مشکلی که برای بازی پیش میومد مسلما مشکلش حل میشد و طی دو نسخه آپدیت جدید همه باگ هایی که طی نسخه های اول و دوم داخل بازی بود رفع میشد .
با این حال به دلیل اینکه این بازی از نظر سناریو و گرافیک ضعیف بود عمل کرد اون اصلا قابل تحمل نبود ...
به طوریکه این بازی طی 5 . 6 ماهی که در حالت انتشار بود در حالی که ماهانه حدود 80 تا 100 هزار تومان خرج سرورش بود ، در این مدت تنها 900 هزار تومان درآمد داشت ، که طی این درآمد حدود 400 تومان هم برای تبلیغات صرف شده بود یعنی تهش حساب کنید میبینید ی چیزیم از جیب گذاشتم فقط مهرشو آزاد کردم

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

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

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

یعنی اگر شما میومدی این عدد رو معکوس میکردی و مثلا مینوشتی -9999999 میتونستی مقدار پول داخل بازیت کلا عوض کنی
مثل خیلی از بازی های آنلاینی که الان داخل همین کافه بازار و مایکت هستند که به همین شکل هک میشن

مشکل ششم که نگم برات

بازی نبرد مدرن واقعا احتیاجی به بودن مثلا 100 متغیر نداشت !!!
ولی جالبه بدونید این بازی حدود 100 متغیر داخل کانستراکت داشت ! یعنی اگر من 120 تا متغیر داخل سرور داشتم ، 100 تا هم داخل کانستراکت داشتم

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

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

هنوز اون مشکلات از قبیل تیر نزدن کاراکتر و یا 0 بودن امتیازات کاربر بعد از مسابقه و یا مشکل خنده دار تر از اون مشکل قاطی شدن متغیر شناسه با سطح بازی تک نفره ...
اصلا شناسه کاربر برای چی ؟

شناسه کاربر رو گذاشته بودم که کاربر رو راحت تر بتونم پیدا کنم ، اما خودمونیم اصلا این شناسه عددی رو کسی یادش میموند که مثلا اگر بازیش باگ خورد بتونه به راحتی اونو گزارش کنه ؟

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

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

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