ساخت انجین بازی Game engine

saalek110

Well-Known Member
چند روز با unity کار کردم.
دسترسی سریع و کامل:
فکر می کنم هر شکلی رسم می کنیم مثل unity بعدا باید سریع قابل دسترس باشه و قابل جابجایی و چرخش و حذف و دوبله شدن و غیره باشد.
هیچ چیزی نباید از کنترل خارج باشد.

قابل جدا شدن و ذخیره به عنوان یک پروژه:
و هر پروژه هم قابل save در پوشه مخصوص خودش باشد.
و بشود تمام اشیای یک پروژه را از بازی ساز جدا کرد و در پروژه و پوشه خاص خودش ذخیره کرد.
یعنی محدوده ((بازی ساز)) و ((بازی)) کاملا از هم جدا باشد.

استقلال هر شی:
و هر شکل هم کاملا قابل جدا کردن از شکل های دیگر باشد و مستقل باشد.
دسته بندی:
ولی تعدادی از اشیا باید در یک دسته هم قرار بگیرند. مثلا اجزای یک کلبه باید همه در یک دسته قرار بگیرند که بشود کل کلبه را جابجا کرد یا کپی از کلبه گرفت و غیره.

تکمیل تا انتها:
همچنین فکر می کنم تا بازی ساز کامل نشده نباید مشغول ساخت بازی شد. چون سختی ها باعث خوابیدن کار می شود.
 
آخرین ویرایش:

saalek110

Well-Known Member

توضیحی در رابطه با بازی‌های دو بعدی​

بازی‌های دو بعدی همان‌طور که از نامشان پیدا است، دو محور حرکتی دارند. معمولا چنین بازی‌هایی دارای تصویری تخت بوده و بنابراین بازی‌باز نیز می‌تواند به چپ و راست یا بالا و پایین، حرکت کند. یکی از نمونه‌های این بازی‌ها، Celeste است.

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

در بسیاری از بازی‌های دو بعدی، اشیا در قالب یک sprite (یک بلوک از پیکسل‌ها) حضور دارند. در واقع یک تصویر کوچک بر روی تصویری بزرگ‌تر، ترسیم می‌شود. به دلیل دو ‌بعدی بودن فضا، هر sprite دارای مختصات X/Y مختص به خود است، بنابراین محل دقیق قرارگیری آن مشخص می‌شود. این‌ها تصاویر دو بعدی هستند، بنابراین برخلاف بازی‌های سه بعدی، نمی‌توانید آن‌ها را از زوایای مختلف مشاهده کنید.

همچنین دوربین در بازی‌های دو بعدی نیز بسیار ساده است. در واقع دوربین مستقیما از کنار بازی، به آن نگاه می‌کند. بنابراین خبری از چشم‌اندازهای بازی‌های سه بعدی نیست. برخی از عناوین دو بعدی از افکتی به نام پیمایش اختلاف منظر (parallax scrolling) بهره می‌برند. در این تکنیک، پس‌زمینه نسبت به پیش‌زمینه، در سرعتی متفاوت پیمایش می‌شود، بنابراین به نوعی بازی‌باز دچار توهم عمق می‌شود. به همین دلیل، کنترل کاراکتر بسیار ساده‌تر می‌شود.


a8.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member

توضیحی در رابطه با بازی‌های سه بعدی​

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

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

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

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

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

 
آخرین ویرایش:

saalek110

Well-Known Member

ژانرهای دو بعدی محبوب​

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

پلتفرمر (Platformer)​

پلتفرمر یکی از رایج‌ترین‌ سبک‌های بازی‌های دو بعدی است. از آنجایی که باید فقط به انتهای یک مرحله برسید، پس دویدن و پریدن در دو جهت عمودی و افقی، چیزی است که از گیم‌پلی چنین بازی‌‎هایی انتظار می‌رود. در این زمینه برای نمونه می‎توان به Sonic the Hedgehog و Rayman Legends اشاره کرد.

مبارزه‌ای (Fighting)​

امروزه بازی‌های سه بعدی مبارزه‌ای نیز وجود دارند، اما نمونه‌های کلاسیک در گرافیک دو بعدی ظاهر شدند. در چنین عناوینی، شما و حریفتان در یک صحنه قرار داده شده و جهت‌های حرکتی شما نیز به جلو، عقب و پریدن به بالا، محدود می‌شوند. در این سبک نیز می‌توان به Street Fighter و Mortal Kombat اشاره کرد.

معمایی (Puzzle)​

“کنار هم قرار دادن سه آیتم” و یا “رفع مسدودی” را می‌توان از سبک‌های محبوب بازی‌های معمایی کلاسیک دانست. این بازی‌ها معمولا فضای دو بعدی دارند، زیرا به جز جابجا کردن قطعات، انتظار دیگری از گیم‌پلی آن‌ها نمی‌رود. معمولا بازی‌های معمایی سه بعدی، پیچیده‌تر بوده و شامل معماهای مبتنی بر حرکت نیز می‌شوند. در این سبک نیز می‌توان به Tetris و Bejeweled اشاره کرد.

 
آخرین ویرایش:

saalek110

Well-Known Member

ژانرهای رایج سه بعدی​

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

شوتر اول شخص (First-Person Shooter)​

از آنجایی که شوترهای اول شخص، مبتنی بر نگاه شخصی بوده که یک اسلحه در دست دارد، پس تنها در حالت سه‌ بعدی می‌توانند منطقی و واقعی به نظر برسند، زیرا باید بتوانید در یک جهان واقعی به حرکت بپردازید. بازی Doom در سال 1993، نقطه شروع این ژانر بود. از دیگر نمونه‌ها نیز می‌توان به Half-Life و Call of Duty اشاره کرد.

هک اند اسلش (Hack And Slash)​

“اکشن” یک ژانر وسیع است. هک اند اسلش نیز یک ژانر فرعی بوده و مربوط به عناوین سه بعدی است. در این‌گونه بازی‌ها، گیمر باید با استفاده از یک سلاح سرد و کمبوهای مختلف، بر دشمنان زیادی غلبه کند. البته در بازی‌های دو بعدی نیز ژانری مشابه به نام “beat ’em up” وجود دارد. اما به دلیل گزینه‌های گسترده مبارزه، بازی‌های هک اند اسلش می‌توانند فقط به‌صورت سه بعدی ارائه شوند. از بازی‌های این ژانر نیز می‌توان به Bayonetta و Devil May Cry اشاره کرد.

مسابقه‌ای (Racing)​

بازی‌های مسابقه‌ای ساده نیز می‌توانند خود را در گرافیک دو بعدی نشان دهند. چنین عناوینی معمولا دارای زاویه دوربین از بالا به پایین هستند. بازی‌های مسابقه‌ای مدرن از گرافیک سه بعدی برخوردار هستند. چنین مزیتی علاوه بر جلوه‌های بصری بهتر، کنترل‌های پیشرفته‌تری را نیز به این بازی‌ها ارائه می‌دهد. بازی‌هایی همانند Forza Horizon و Need for Speed را می‌توان از این دسته به شمار آورد.

 
آخرین ویرایش:

saalek110

Well-Known Member

نقاط اشتراک بازی‌های دو بعدی و سه بعدی​

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

ژانرهای بسیاری در هر دو سبک گرافیکی دو و سه بعدی وجود دارند. بازی‌های دو بعدی، ساده‌تر هستند. این در حالی است که همان یک بعد اضافی، باعث می‌شود تا بازی‌های سه بعدی، گزینه‌ها و ویژگی‌های بسیار بیشتری داشته باشند. بازی‌های پلتفرمر سه بعدی همانند A Hat in Time، معمولا اهداف مختلفی را در خود جای داده‌اند. به‌عنوان نمونه، می‌توان به جمع‌آوری مقدار زیادی از یک آیتم، اشاره کرد.

برخی از سری بازی‌ها نیز به‌صورت منظم بین گرافیک‌های دو و سه بعدی، جابجا می‌شوند. مثلا سری بازی Metroid، به‌صورت دو بعدی کار خود را در کنسول‌های NES و SNES آغاز کرد. در ادامه نیز این سری با عرضه Metroid Prime بر روی کنسول GameCube، وارد فضای سه بعدی شد. اما از زمان عرضه Metroid Prime، شرکت نینتندو عناوین دو و سه بعدی Metroid را توسعه داده است. بازی Sonic the Hedgehog نیز یکی دیگر از نمونه‌های مشابه است.

بازی‌هایی هم که از گرافیک 2.5 بعدی استفاده می‌کنند، تا حدودی باعث پیچیده‌تر شدن این قضیه می‌شوند. این اصطلاح معمولا به بازی‌هایی اشاره دارد که از گیم‌پلی دو بعدی و گرافیک سه بعدی استفاده می‌کنند. عناوینی همچون Donkey Kong Country: Tropical Freeze ،Trine 2 و Street Fighter V، از جمله این موارد هستند.

در چنین بازی‌هایی، شخصیت‌ها و اشیا به‌صورت سه بعدی طراحی شده، اما فقط می‌توانید در دو بعد، بازی را کنترل کنید. تصویر زیر مربوط به بازی Donkey Kong Country: Tropical Freeze است. به گرافیک محیط و نحوه پیشبرد گیم‌پلی، توجه کنید.

a4.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member

خود را از هیچ‌کدام محروم نکنید!​

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

saalek110

Well-Known Member
کار بازی سازی را من شامل 3 قسمت می دانم.

اول تمیزکاری محیط
دوم استفاده از تکنولوژی های موجود
سوم واردات تکنولوژی

هر 3 قسمت مهم است و و باید به موقع خودش انجام شود. در پستهای بعدی در مورد هر یک صحبت می کنیم.
 

saalek110

Well-Known Member
استفاده از تکنولوژی موجود : مثلا یک درخت دارید و با تکثیر آن یک باغ می سازید. مسلما باغ با تک درخت فرق دارد ولی اینجا شما چیز جدیدی یاد نگرفته اید بلکه از امکانات موجود دارید استفاده می کنید. شاید بشه اسم این قسمت را سلیقه یا خلاقیت گذاشت.
 
آخرین ویرایش:

saalek110

Well-Known Member
اما تمیزکاری محیط:
این قسمت مهم است و اگر انجام نشود کار با مشکل مواجه می شود.

مثلا باید مپ و نقشه برنامه خود را رسم کنید. در یک برنامه 10 خطی همه چیز جلوی چشم شماست و مپ نمی خواهد.

کلا هرچه برنامه بزرگ تر می شود میزان وقتی که روی منظم کردن برنامه می گذاریم درصدش بالا می رود.

اما تمیزکاری فقط تهیه مپ نیست.

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

saalek110

Well-Known Member
شاید به بحث های بالا علاقه ای نداشته باشید و فقط دنبال افزایش تکنولوژی ها باشید.
ولی باعث اتلاف وقت میشه و مشکلات در کار ایجاد می شود. بازدهی پایین می آید.
 
آخرین ویرایش:

saalek110

Well-Known Member
نمونه هایی از افزایش خوانایی :

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

saalek110

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

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

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

saalek110

Well-Known Member
انشقاق پروژه. ترک خوردن پروژه.

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

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

saalek110

Well-Known Member
موکول به بعد نه تخریب:

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

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

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

saalek110

Well-Known Member
بازی چیست؟
شاید سوال بی معنایی به نظر برسد ولی جای بحث دارد.
آیا هر محیط گرافیکی بازی است؟ شاید بفرمایید داستان نیاز دارد.
آیا هر داستانی ایجاد کنیم در هر محیطی که باشد بازی محسوب می شود؟
من بازیهایی دیدم که داستان داشت ولی بی نهایت از نظر گرافیکی ساده بود.

داشتن لول Level و امتیاز گیری شاید جزو چیزهای اساسی بازی باشد.

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

saalek110

Well-Known Member
بازی یک محصول هنری است.
مثل فیلم سینمایی.
بازی فقط یک نرم افزار نیست.

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

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

saalek110

Well-Known Member
پس وقتی شما در ایجاد محیط گرافیکی بازی خود موفق شدی تازه کار شروع می شود.
من الان محیط 3 بعدی خود را ایجاد کرده ام. الان تازه بحث این است که چه اثری می خواهم بر استفاده کننده بگذارم.
مسلما می خواهم اثرات خوبی بر خود و کاربران خود بگذارم.

مثلا صحنه های زیبا اثرات خوبی می گذارد.


flower-painting.jpg
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا