تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: گام نخست در ساخت بازی های رایانه ای

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Dec 2008
    محل سكونت
    مازندران
    پست ها
    1,290

    پيش فرض گام نخست در ساخت بازی های رایانه ای

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

    از جمله بارزترین و پرکاربردترین خصوصیات کامپیوترها، توانایی آنها برای نمایش تصاویر و صحنه های گرافیکی می باشد. این قابلیت امروزه به حدی اهمیت یافته است که تقریبا تمام تلاش هایی که برای ارتقاء تکنولوژی کامپیوترها صورت می گیرد به نوعی جهت افزایش توان و سرعت گرافیکی آنها انجام می پذیرد. بطور کلی برنامه های گرافیکی به سه دسته تقسیم می شوند: نرم افزارهای گرافیکی مثل 3DMax، Auto CAD و PhotoShop، شبیه سازها و نرم افزارهای چند رسانه ای، بازیها. اصولا هر برنامه ای که به نوعی به گرافیک مربوط شود به توان محاسباتی بالا نیاز دارد. به همین دلیل امروزه دیگر کارتهای گرافیکی مجهز به یک پردازنده مخصوص به خود هستند. این پردازنده که GPU نام دارد به میزان زیادی بار محاسبات گرافیکی را از دوش CPU برمیدارد. ما می خواهیم امروز کمی راجع به بازیها و مولفه های سازنده آنها بحث کنیم. این روزها با عرضه سیستم های جدیدی همچون Play Station و Game Box رقابت سازندگان بازی به مرحله ای جدید پانهاده و این شرکتها هر روز علاقمندان به بازیها را با محصولات جدید خود شگفت زده می کنند. پس سعی می کنیم کمی در مورد بازیها صحبت کنیم و ببینیم چطور میتوان یک بازی ساده نوشت.

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

    بحث را با مثالی شروع می کنیم که برای همه شما بسیار ملموس خواهد بود. شما ریاضیات را چطور فراگرفتید؟ از کجا شروع کردید؟ حتما همه شما یک پاسخ می دهید. بله اعداد. مبنای ریاضیات اعداد است و هر پیشرفتی در این علم در نهایت به همین اعداد به ظاهر ساده مرتبط می شود. در گرافیک کامپیوتری هم چنین مبنایی وجود دارد. در اینجا بردارها و بهتر بگوییم نقاطی که با بردارها مشخص می شوند حکم پایه و زیربنای گرافیک سه بعدی را دارند. این نقاط فضایی که دارای سه مولفه x، y و z هستند، در اصطلاح گره (vertex) خوانده می شوند. هر شیئی که در فضای سه بعدی ساخته می شود مجموعه ای از چندین گره است. مثلا یک مکعب، دارای 8 گوشه (کنج) و در نتیجه 8 گره می باشد. ترتیب قرارگیری این گره ها هم در تعیین شکل نهایی جسم موثر است. ممکن است هر سه گره متوالی با هم تشکیل یک مثلث را بدهند، یا گره ها دو به دو به هم وصل شده و یک خط را ایجاد کنند. حتی با روشهای خاصی می توان سطوح چند ضلعی را هم ایجاد کرد. ولی بطور کلی سخت افزارهای گرافیکی تنها میتوانند مثلث را رسم کنند. چون مثلث یک چند ضلعی هم صفحه (co-planar) است. به بیان دیگر، کلیه اشیائی که در بازیها می بینید، از یک جعبه ساده گرفته تا یک تانک، همگی از مثلث های کوچک و بزرگ ساخته شده اند.


    نحوه کار در فرآیند ساخت یک بازی بدین صورت است که پس از طراحی داستان بازی و خلق اشیاء و کاراکترها و پیدا کردن دید کلی بر اشیاء، گرافیست های سه بعدی و انیماتورها به کمک برنامه هایی چون 3D Max، True Space یا بعضا MAYA مدلهای مورد نیاز بازی را می سازند. در همین محیطها، حرکات مورد نیاز کاراکترها و اشیاء ثابت بازی هم پیاده سازی می شود. مثلا حرکات تیر اندازی، پرش، دویدن یا مشت زدن برای یک انسان طراحی می شوند و در فریم های گوناگون ذخیره می گردند. سپس اشیاء، محیطها و کاراکترهای ساخته شده در فرمت های مخصوصی ذخیره می شوند و توسط فایل های کوچکی به محیط برنامه نویسی انتقال داده می شوند. از فرمت های معروف فایل های سه بعدی می توان به MD2، MD3، MDL یا X اشاره کرد که در بازی های معروفی چون Doom، Quake II-III، Half Life و Tomb Raider استفاده شده اند. البته تیم گرافیست وظایف دیگری هم دارد که بعدا به آنها اشاره خواهد شد. ولی حالا بهتر است به بعد فنی کار یعنی برنامه نویسی نگاهی بیاندازیم. امروزه رایج ترین محیط برنامه نویسی بازیها، Visual Studio است که ترجیحا از نسخه 6.0 آن استفاده می شود.( و یا Visual Studio.net 2003 و اکنون Visual Studio.net 2005 )


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



    حدود یک دهه پیش، یعنی زمانی که هنوز DOS میزبان اکثر بازیهای PC بود و از کنسولهای بازی امروزی هم خبری نبود، برنامه نویسان مجبور بودند با بسیاری از جزئیات پیچیده سخت افزاری سر و کله بزنند. همچنین باید برای هر سیستم سخت افزاری، کد مجزایی می نوشتند و علی رغم همه این موارد، به اجرای برنامه شان بر روی همه سیستمها اطمینان کافی نداشتند. مثلا برای رسم یک دایره، می بایستی شماره وقفه رسم کننده پیکسل روی صفحه را می یافتند (که ممکن بود در هر کارت گرافیکی متفاوت باشد)، سپس پورت حافظه خروجی که اطلاعات را بر روی مانیتور ثبت می کرد، پیدا می نمودند. در این فرآیند، احتمال بروز هر خطایی وجود داشت، ولی کم کم سیستم هایی مثل WinG، Glide و OpenGL وارد صحنه شدند و این مشکلات تا حدی برطرف شد. هیچ یک از این برنامه ها، محصول مستقیم مایکروسافت نبودند و به همین جهت مورد استقبال چندانی از طرف برنامه نویسان بازی قرار نگرفتند. مایکروسافت هم که نمی خواست بازار پر سود بازیها را از دست دهد، سیستم کتابخانه ای معروف خود DirectX را روانه بازار کرد و پس از مدتی کوتاه توانست DirectX (که بر مبنای مدل مولفه ای اشیاء یا تکنولوژی COM ساخته شده است) را بعنوان سیستم اصلی برنامه نویسی بازیها مطرح کند. یکی از مزایایی که DirectX نسبت به محصولاتی چون OpenGL داشت، پشتیبانی از انواع ادوات ورودی و خروجی و صوتی و تصویری علاوه بر سخت افزارهای گرافیکی بود. همچنین این محصول، مستقیما زیر نظر مایکروسافت ساخته می شد، و در نتیجه همه از آینده آن مطمئن بودند. در حال حاضر بخشی از DirectX که Direct3D نام دارد، مسئول نمایش کلیه اشیاء سه بعدی در صحنه ها می باشد. این سیستم همچنین میتواند بسیاری از امور دو بعدی – همچون نمایش تصاویر و متن – را انجام دهد. معمولا به فرآیند نمایش تصاویر دو بعدی از اجسام سه بعدی بر روی صفحه، رندر (render) گفته می شود. (این فرآیند خود شامل عملیات های مختلف از قبیل شکستن سطوح، پردازش داده ها و رسم می باشد)

    گفتیم که مدل های ساخته شده توسط برنامه های گرافیکی در قالب فایل ذخیره شده و در اختیار برنامه نویس قرار می گیرد. در واقع این فایل ها حاوی مختصات گره های سازنده اشیاء هستند. وقتی فایلها در محیط برنامه باز شدند، در تکه های خاصی از حافظه به نام بافر گره (Vertex Buffer) قرار می گیرند و توسط دستورات ویژه ای (که در اصطلاح دستورات DrawPrimitive نامیده می شوند) رندر می گردند. به همین ترتیب کلیه اشیاء و کاراکترهای بازی در صفحه نمایش داده می شوند. سپس توسط دستورات دیگری، دوربین های بازی تنظیم شده و کلیه اشیاء در موقعیتهای مورد نظر قرار می گیرند. این کارها توسط یک سری ماتریسها پیاده سازی می شوند. در اینجا همچنین می توان انواع نورهای صحنه (از جمله نورهای نقطه ای مثل لامپ، نورهای پروژکتوری یا نورهای موازی مثل خورشید) را به نحوی تنظیم کرد که صحنه به شکل واقعی جلوه کند. از دیگر کارهایی که باید انجام شود، عملیات بافت زنی می باشد. در اصطلاح، بافت به تصاویری گفته می شود که بر روی اشیاء سه بعدی رسم می شوند، مثلا برای ایجاد یک دیوار آجری کافی است یک مستطیل را به اندازه دیوار مورد نظر رسم کنیم؛ سپس عکسی از دیوار آجری (که می تواند بصورت یک فایل bmp یا jpeg باشد) را بر روی این مستطیل رسم می کنیم. بدین ترتیب یک دیوار آجری در صحنه نمایش داده می شود. تصویری که مورد استفاده قرار دادیم در اصطلاح بافت (texture) خوانده می شود و این فرآیند بافت زنی (texture mapping) نام دارد. با این روش می توانید لباس و حتی صورت کاراکترها، کوه های دوردست، ابرهای آسمان، طرح یک فرش، تابلوی دیواری و خیلی چیزهای دیگر را در بازی نمایش دهید. ساخت این تصاویر هم بر عهده گرافیست های تیم می باشد. البته این مرحله معمولا همزمان با ساخت اشیاء سه بعدی بازی انجام می گیرد.

    از دیگر ویژگی های یک بازی مدرن، می توان به وجود سایه در صحنه اشاره کرد. سایه ها به چند روش قابل پیاده سازی هستند، از جمله روش نگاشت نور (light map) که روشی سریع و در عین حال بسیار محدود می باشد. روش دیگر که به توان محاسباتی بالا نیاز دارد ولی می تواند سایه اشیاء گوناگون (حتی متحرک) را بر روی کلیه سطوح (از جمله سطوح غیرتخت) بنگارد، روش سایه حجمی (shadow volume) است.

    خیلی اوقات نیاز است تا در صحنه ای از بازی، پدیده های طبیعی همچون آتشفشان، بارش برف و باران و یا آتش، نشان داده شود. می توان این جلوه های تصویری را هم به کمک سیستم های ذره ای (particle system) پیاده سازی کرد. برای نمایش چنین اشیائی، امروزه از دوایر کوچک و شفافی به نام point sprite و تکنیک هایی همچون تست آلفا، ترکیب رنگ (blending) و بیلبُرد (billboard) استفاده می شود. این دوایر شفاف و کوچک که می توانند دارای یک تصویر (به عنوان بافت) هم باشند، به تنهایی توسط کارتهای گرافیکی مدرن قابل رندر هستند. البته به کمک تکنیکهای مذکور، می توان جلوه های تصویری ویژه ای زیادی را ایجاد کرد. مثلا می توانیم دو تصویر را در هم ترکیب نماییم یا یک شیء را در پس زمینه محو کنیم و یک شیء نازک را به شکلی شفاف کنیم که حالت یک شیشه را داشته باشد.

    یکی از کارهایی که باید در ابتدای ساخت بازی به آن توجه شود، ایجاد بافرهای مورد نیاز جهت رندر بازی است. بطور کلی بافر به صفحاتی از حافظه گفته می شود که اطلاعات مربوط به پیکسل های صفحه در آنها ذخیره می شود. بافرهای رنگی (که خود شامل دو بافر پشتی و جلویی می شوند) تصاویر رنگی را در صفحه نشان می دهند و بافر عمق (depth buffer) که گاهی بافر z هم نامیده می شود مسئول تعیین رنگ نهایی هر پیکسل در نواحی است که اشیاء هم پوشانی می کنند. بطور خیلی ساده می توان گفت، بافر جلویی بافری است که در هر لحظه تصاویر را در صفحه نشان می دهد، و در همین حال برنامه شما مشغول تغییر محتویات صفحه در بافر پشتی است؛ هنگامی که صحنه جدید در بافر پشتی رسم شد، جای این دو بافر عوض شده و این فرآیند تا پایان اجرای بازی ادامه خواهد داشت. یکی دیگر از بافرهایی که از آن بیشتر در ساخت جلوه های ویژه استفاده می شود، بافر استنسیل (stencil buffer) نام دارد. این بافر می تواند جهت ساخت آینه، لنزهای چشمی ویژه، سایه حجمی، ماسک تصاویر و ... استفاده شود.

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

    از جمله دیگر تکنیکهای ویژه ای که می توانند باعث زیباتر شدن یک بازی شوند، میتوان به مه، نورهای رنگی، بافتهای حجمی، منحنی ها، زمینهای ناهموار (که در اصطلاح terrain نامیده میشوند) اشاره کرد. این موارد اگرچه ممکن است در طول یک بازی تنها در یک صحنه استفاده شوند، ولی از آنجایی که می توانند میزان واقع گرایی صحنه ها را بالا ببرند، از اهمیت بالایی برخوردار هستند.
    در ابتدای بحث، به GPUها اشاره کردیم، بهتر است بدانید که زبان برنامه نویسی این پردازنده های گرافیکی، زبان سایه زنی (shader) میباشد. این روزها شرکتهای بزرگی چون nVidia، ATI و Microsoft هر یک کامپایلری مجزا را برای برنامه نویسی پردازنده های گرافیکی ابداع کرده اند. Render Monkey، CG و HLSL محصول این رقابت شدید میباشند. از این پس با عرضه سایه زنهای گره، پیکسل، بافت و حتی نور هر لحظه باید منتظر شکسته شدن مرزهای گرافیک سه بعدی باشیم.
    البته مبحث گرافیک یک بازی سه بعدی بسیار مفصلتر از این میباشد، ولی بهتر است اندکی هم به سایر مولفه های بازی بپردازیم. گفتیم که DirectX قابلیت ساخت یک بازی کامل را دارد، پس باید بتواند صوت و موزیک هم پخش کند.

    DirectSound و DirectMusic دو بخش کوچک این مجموعه بزرگ هستند که به ترتیب مسئول پخش جلوه های صوتی و موزیک در یک بازی میباشند. شما میتوانید توسط این بخشها، انواع زیادی از فایلهای صوتی را با جلوه های مورد نظر در بازی پخش کنید. مثلا فایلهای wav، mp3، dat، voc، mp4، mid، jif از فرمت های پر استفاده در بازیها می باشند که همگی بطور مستقیم توسط DirectX قابل پخش هستند. شما می توانید انواع جلوه های صوتی را هم بر روی صداهای خود اعمال کنید، مثلا فرکانس اصوات را تغییر دهید، آنها را به شکل غیریکنواخت بین بلندگوها تقسیم کنید، بلندی و سرعت پخش را کم و زیاد کنید و... همچنین می توانید صداهای سه بعدی ایجاد کنید. یعنی می توانید یک نقطه را در فضای سه بعدی به عنوان منبع صدا معرفی کرده و حتی موقعیت و جهت گیری شنونده را هم در فضای سه بعدی مشخص کنید. بدین ترتیب انواع پدیده های فیزیکی همچون دوپلر، اکو، فرکانس دوبل و غیره بر روی صداها قابل اعمال می باشند.

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


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

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



    2- آیا همه چیز را دارید؟

    آیا شما همه چیزهای لازم را برای تبدیل شدن به یک سازنده بازی دارید؟

    ذوق و سلیقه – هوش – استعداد – یک کامپیوتر...

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

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

    بیایید ببینیم که سازندگان بازی چه کارهای دیگری میکنند؟

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

    هنرمند: البته هنرمندان تیم هم مهم هستند. در برخی بازیها همچون Myst هنرمندان نقش حساس تری نسبت به برنامه نویسان داشتند. ولیکن این تنها یک استثناء است و نه یک قاعده کلی. در واقع قاعده بازی این است: برنامه نویس عنصر محوری در توسعه تمامی بازیهاست.

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

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

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

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

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

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

    ناشر: او همان فردی است که کت و شلوار تمیزی پوشیده و سیگار می کشد و دودش را در صورت شما پخش می کند. او در گفتن این مطلب که چرا کار او واقعا بخش سخت پروژه است بسیار ماهر است و از آنجایی که او تمام ریسک کار را می پذیرد او باید 95% سود را به جیب بزند و شما باید برای 5% ناقابلتان خدا را هم شکر کنید. به همین سادگی. 6 ماه بعد از اینکه او پولی گیر آورد به شما هم چند سکه خواهد رسید. این تازه زمانی است که 9 ماه از قرار گرفتن بازی بر روی دکه مغازه ها می گذرد.

    بهر حال شغل خوبی است. اگر می توانید آن را بدست آورید.

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



    3- نیازهای اولیه برای یک برنامه نویس بازی

    برای شروع کار باید بتوانید با چند زبان برنامه نویسی کنید. زبان ارجح برای برنامه نویسی بازی C وC++ است. به نظر من هیچ یک برتری خاصی بر دیگری ندارد جز اینکه در C++ می توانید از خصوصیات شیء گرایی هم استفاده کنید، که این روزها خیلی به درد بخور هستند. اگر شما تازه کار هستید و C++ یا C نمیدانید می توانید حتی بازیتان را زبان دیگر بنویسید. بازی های زیادی با کیفیت بسیار خوب در زبان هایی مثل BASIC و Delphi و.. نوشته شده اند. اینکه از چه زبانی استفاده می کنید خیلی مهم نیست البته تا زمانی که بر آن تسلط کامل داشته باشید.

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

    بعلاوه باید به گونه ای گرافیک و قطعات هنری بازیتان را هم ایجاد کنید. یک برنامه نقاشی (paint) انتخاب چیز خوبی است. البته یک برنامه رندر کننده (3D MAX) بهتر هم خواهد بود. یک هنرمند با استعداد حتی از این دو هم بهتر است. جدا از اینکه تصاویرتان را خودتان درست می کنید یا آنها را اسکن می کنید یا از قطعات آماده (clip art) بهره می برید یا حتی اگر به یک هنرمند حرفه ای یک کیف پر از پول می دهید، سعی کنید منبعی از فایلهای گرافیکی و کارهای هنری برای خود بعنوان آرشیو ایجاد نمایید.
    یکی دیگر از چیزهایی که لازم دارید یک بسته نرم افزاری سطح بالا برای رندر کردن صحنه های بازی است که این روزها DirectX شاید بهترین انتخاب باشد. هر چند برنامه های سطح پایینتری مثل OpenGL یا fastgraph هم هستند که می توانید برای شروع از آنها استفاده کنید.

    در ضمن به دنبال برنامه های مناسبی برای کار با فایلهای صوتی و موسیقی هم بگردید.

    این ها همه چیزهایی هستند که برای شروع کار به آنها نیاز دارید.

    البته هنوز یک عنصر مهم دیگر هم هست که هنوز به آن اشاره نکرده ایم و آن استعداد است. شما باید برنامه نویس خوبی باشید بعلاوه اینکه باید مهارت بالایی در حل مسائل داشته باشید. در اینجا فرض می کنیم که شما این عامل را دارید زیرا در غیر اینصورت شما نمیتوانستید این متن را بخوانید!



    4- شروع به کار

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



    5- بدین ترتیب حالا باید چه کار کنیم؟

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

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

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

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



    6- برخی انواع معروف بازی
    بازیهای با دید اول شخص: شما این نوع را به خوبی میشناسید. مثل Doom یا Quake. شما هنوز برای نوشتن چنین بازی آماده نیستید!!!

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

    بازیهای ماجرایی: اینها بازی هایی مثل جزیره میمون ها و Myst هستند که اغلب از گرافیک پیچیده بهره می برند ولی نیاز به انیمیشن های سطح بالا ندارند. در این بازیها تکیه بیشتر بر روی حل کردن یک سری مسائل فکری است. آنها اغلب داستان (story line) پیچیده ای دارند و کاربر را مجبور می کنند که ماجراهای اسرارآمیز زیادی را در طول بازی حل کنند. البته این سبک از بازی ها هم به گرافیک بالایی نیاز دارند.

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

    بازی های این دسته اغلب انتخاب خوبی به عنوان بازی اول هستند. البته مواظب نام های تجاری هم باشید. من تا زمانی که یک وکیل خوب نداشتم باشم یک بازی Monopoly یا Risk نمی نویسم.

    بازی های پازلی: این هم یک گروه وسیع است. انواع پازل های افقی عمودی و مارپیچ در این دسته جای می گیرند. بازیهای معروفی چون Cargo Bay یا Rings of the Magi از شرکت MVP هم در این دسته هستند. این گروه که انتخاب خوبی برای شروع می باشد همچنین می تواند شامل بازی هایی چون Tetris باشد.

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

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

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



    7- به دقت انتخاب کنید

    برای انتخاب اولین بازی خود خوب فکر کنید. به انتخابهایی که در پیش رویتان قرار دارد به خوبی فکر کنید و به هزینه ها و نیز مزایای هر یک توجه داشته باشید. یادتان باشد که قرار نیست بازی اول شما برنده یک جایزه بین المللی شود (مثلا از طرف E3 یا GDC!) یا حتی قرار نیست که شما را به پول برساند.

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

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

    اولین قدم شما برای تبدیل شدن به یک سازنده بازی، نوشتن یک بازی است.



    8- کار کردن با افراد دیگر

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

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



    9- انواع مختلف روابط در صنعت ساخت بازی

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

    قرارداد: شما برای آنها کار می کنید. آنها هم به شما پرداخت می کنند. البته شما مالیاتتان را خودتان می پردازید. در صورتی که بازی موفق بشود ممکن است مبلغی هم به عنوان جایزه دریافت کنید و اگر کار شکست بخورد ممکن است برای پیدا کردن کار در سال آینده دچار مشکل شوید.
    شراکت: شراکت چیز خوبی است. Scott Miller و George Broussard شراکت بلندمدت و موفقی در شرکت Apogee Software دارند. در صورتی که می توانید یک کار از نوع شراکتی داشته باشید وضعیت خوبی دارید. البته هنگامی که شریک شما دیگر به شما یاری نمی رساند و تنهایتان میگذارد مشکلات عدیده ای خواهید داشت.

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

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

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

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

    به هر شکلی که شما می خواهید در یک تیم کار کنید این مسئله که چه کسی چه بخشی از کار را انجام می دهد مهم است. اجازه ندهید که مسائل قانونی شما را گیج کند ولی درک ساده ای از وظایف هر فرد در تیم داشته باشید.

    حال با بیان تمام این مسائل و مشکلات هنوز می خواهید یک بازی بنویسید؟ البته تمام این مسائل در دنیای واقعی و حتی شاید بیرون مرزها باشد ... پس می توانید نفس راحتی بکشید؛ چون هنوز در کشورمان، به راستی بازی های رایانه ای جایی برای تولید ندارند!

    البته به نظر می رسد کم کم این وضعیت تغییر می کند.

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

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



    10- نتیجه گیری و پیشنهادات

    در پایان این گزارش، به بیان فهرست برخی از نتایج (البته تا زمان تالیف این مقاله) می پردازیم:


    • منابع موجود فارسی، در مورد بازی نویسی و برنامه نویسیِ آن، بسیار محدود، قدیمی یا غیر قابل اطمینان هستند.
    • کد نویسی برای یک بازی، درک بازی های کدِ باز و استفاده از کلاس ها و توابع پیش ساخته در کدی که می نویسیم، بسیار سخت تر از آن چیزی است که تصور می شود؛ اما کاری ممکن است.
    • فارسی نویسی در کدها کاری غیرقابل قبول و سخت است؛ زیرا امکانات فارسی حتی در محیط هایی مثل Visual Studio.Net، بسیار کم و ناکارآمد است.


    اما در پایان این پروژه، برای کسانی که به علاقمند نوشتن بازی های رایانه ای هستند، پیشنهاداتی نیز ارائه می کنیم:


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




    منابع:

    ·Wolf Gang F. engel, Amir jeva; <<Beginig Game Programing>>; prima tech; 2003

    · [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    · [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    Last edited by silsin; 14-05-2011 at 13:12.

  2. 12 کاربر از silsin بخاطر این مطلب مفید تشکر کرده اند


  3. #2
    داره خودمونی میشه VGS's Avatar
    تاريخ عضويت
    Jul 2007
    محل سكونت
    اصفهان
    پست ها
    142

    پيش فرض

    کپی پیست خیلی خوبی بود

  4. 2 کاربر از VGS بخاطر این مطلب مفید تشکر کرده اند


  5. #3
    در آغاز فعالیت
    تاريخ عضويت
    May 2017
    پست ها
    11

    پيش فرض

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

  6. #4
    داره خودمونی میشه
    تاريخ عضويت
    Aug 2017
    پست ها
    127

    پيش فرض

    سلام .برنامه نویسی بازی با یرنامه نویسی سایت فرق داره ؟ از چه برنامه هایی استفاده میشود برای سخت بازی ؟

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •