نمایش نتایج 1 تا 15 از 15

نام تاپیک: آیا یک مبتدی هستید؟

  1. #1
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    آیا یک مبتدی هستید؟

    چند نکته:
    نکته 1: عناوینی که در زیر لیستی از اون ها رو مشاهده می کنید فقط برای آشنایی هستند و شرحی کامل نیستند!
    نکته 2: لازم نیست تمام این عناوین رو به طور کامل یاد بگیرید. فقط در حد آشنایی کافی هست.
    نکته 3: همونطور که گفته شد این عناوین فقط برای آشنایی هست پس خوندن تمام این عناوین ضروری هست. اما ضروری نیست که همه ی اون ها رو ادامه بدید.
    نکته 4: پیشنهاد میشه در بهترین حالت حداکثر دو مورد رو به طور حرفه ای ادامه بدید.
    نکته 5: برخی از عناوین فرعی هستند. مثل OpenGL vs Direct3D

    مقدمه
    DirectX
    OpenGL
    OpenGL vs Direct3D
    انتخاب
    موتور صوتی
    هوش مصنوعی
    آخرین ویرایش به وسیله hi.alir : یک شنبه 08 اسفند 1389 در 21:05 عصر

  2. #2
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    مقدمه

    همانطور که می دانید رایانه مجموعه ای از قطعات به هم پیوسته است که هر یک برای هدفی مشترک وظیفه ی خاصی دارند. در ترسیمات رایانه ای مرکزی ترین قطعه کارت گرافیک نام دارد؛ قطعه ای که می تواند محاسبات گرافیکی را با سرعت بالایی انجام دهد، نتیجه ی آن ها را نگهداری کند و در آخر برای کاربر به نمایش گذارد. کارت گرافیک می تواند ترکیبی از چند حافظه و پردازنده باشد که هدف آن ها نمایش تصویری به کاربر است. برنامه نویس می تواند با استفاده از این قطعه سرعت ترسیمات نرم افزار خود را افزایش دهد و آن ها را با کیفیتی مطلوب به نمایش بگذارد، اما استفاده از کارت گرافیک مستلزم دارا بودن یک نرم افزار سیستمی به نام Driver می باشد. این نرم افزار پلی را میان برنامه نویس و کارت گرافیک ایجاد می کند تا برنامه نویس بتواند با کارت گرافیک در ارتباط باشد. اما هر کارت گرافیک Driver مخصوص خود را دارد و برنامه نویس در صورت لزوم مجبور به نوشتن نرم افزار خود به گونه ای است که بتواند با تمامی آن Driver ها کار کند و این مشکل بزرگی محسوب می شود. از این رو کتابخانه هایی از API ها به وجود آمد تا پلی دیگر را میان برنامه نویس و Driver ایجاد کند. این کتابخانه ها می توانند با بیشتر Driver ها ارتباط برقرار کنند و توانایی های کارت های گرافیک را به صورتی یکپارچه و قالبی ثابت در اختیار برنامه نویس قرار دهند. این گونه، برنامه نویس با دانستن نحوه ی کار با این کتابخانه ها می تواند از توانایی های بیشتر کارت های گرافیک بهرهمند شود. از رایج ترین این کتابخانه ها می توان به دو کتاب خانه ی Direct3D و OpenGL اشاره کرد که هر دو رابطی مطمئن و قدرتمند میان برنامه نویس و کارت گرافیک می باشند. اما فرا گرفتن نحوه ی کار با این کتابخانه ها و دانستن محاسبات ریاضی پیچیده و الگوریتم های فراوان گرافیکی برای هر برنامه نویسی مقدور نیست. چه بسیار برنامه نویسانی که برای نرم افزار ریاضی، آماری، بانک اطلاعاتی و ... خود نیاز به فرا گرفتن این دانش ها دارند. از این رو برنامه نویسان گرافیک پلی دیگر میان برنامه نویس و آن کتابخانه ها (DirectX و OpenGL و ...) ایجاد کردند تا دیگر برنامه نویسان که در حوزه ی ترسیمات رایانه ای فعالیت ندارند بتوانند با آن پل ها به راحتی کار های ترسیماتی خود را انجام دهند. از این پل ها به عنوان رسام یا Renderer یاد می شود. برای مثال رسام متن باز Ogre نمونه ای کامل برای کار های سه بعدی می باشد و رسام های قدرتمند mentalray و vray که برای انجام عملیات های ترسیماتی در نرم افزار های سه بعدی چون 3D Studio Max استفاده می شوند. البته باید توجه کرد که سیستم عامل نیز میان Driver کارت گرافیک و API های گرافیکی (Direct3D و ...) قرار دارد و اینطور نیست که هیچ نقشی نداشته باشد.



  3. #3
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    DirectX

    DirectX مجموعه ای از رابط های برنامه نویسی برای کار های چندرسانه ای به خصوص بازی های رایانه ای می باشد. این مجموعه از سال 1995 توسط شرکت ماکروسافت تا به امروز در حال توسعه است (به زبان C++‎) و آخرین نسخه ی آن DirectX 11 می باشد. امروزه از هر سه نسخه 9 و 10 و 11 استفاده می شود. این بدان دلیل است که این مجموعه در هر نسخه ی جدید نیازمند سخت افزار جدید می باشد و برای مثال نمی توان از DirectX 11 برای کارت های گرافیکی قدیمی استفاده کرد. این مجموعه شامل زیرمجموعه هایی می باشد که برخی از آن ها را در زیر می توانید ببینید:
    Direct3D: برای ترسیمات سه بعدی استفاده می شود. البته برای ترسیمات دو بعدی هم می توان استفاده کرد.
    DirectInput: برای ارتباط برقرار کردن با وسایل ورودی چون صفحه کلید، موس، دسته ی بازی و ... استفاده می شود. البته بهتره که بعد از نسخه ی 8 از Xinput برای دسته ی Xbox 360 و پیام های استاندارد ویندوز برای موس و کیبورد استفاده بشه.
    DirectSound: برای پخش و ضبط صوت های wave می باشد. این زیرمجموعه از نسخه ی 9 به بعد حذف شده است. برای صوت در نسخه های 10 و بالاتر از Xaudio2 و XACT استفاده می شود.
    Direct2D: برای ترسیمات دوبعدی استفاده می شود.
    و چند زیرمجموعه ی دیگر
    لازم به ذکر است که DirectX فقط در محصولات ماکروسافت قابل استفاده می باشد و نسخه های 10 و بالاتر فقط در ویندوز ویستا و سون. (DirectX 9 در Xbox 360 هم استفاده می شد)

    ماکروسافت از سال 2002 نسخه ای از DirectX را به نام Managed DirectX برای .net عرضه کرد و در سال 2006 پایان داد. در GDC سال 2006 فریم ورکی ای به نام XNA برای .net معرفی شد تا جای Managed DirectX را در .net پر کند. برنامه نویسان با استفاده از این فریم ورک می توانند بازی های خود را علاوه بر ویندوز برای Xbox 360 و از نسخه ی 4 به بعد برای Windows phone بسازند.

    برای دریافت DirectX SDK می توانید اینجا کلیک کنید.

    برای شروع یادگیری DirectX مطالعه ی کتاب Introduction to 3D Game Programming with DirectX 9.0c A Shader Approach توصیه می شود.

    البته ممکنه از خودتون بپرسید که چرا وقتی DirectX 11 هست برم کتاب DirectX 9 رو بخونم؟ طبق تجربه ی تلخ من که کمی تا قسمتی دچار اشتباه شما شدم DirectX 11 یکم حرفه ای تر از این حرف هاست که واسه شروع مناسب باشه و همینطور Directx 10. البته 10 نسبت به 11 خیلی راحتر هست، ولی در کل بهترین نسخه واسه شروع DirectX 9 هست و بهترین کتاب کتابی که معرفی کردم. حتی همین کتاب برای DirectX 10 هم چنگی به دل نمیزنه و مفاهیم رو اونطوری که تو این کتاب توضیح داده، نداده. پیش خودتون هم فکر نکنید که انیشتین هستید و این حرفا، اگر موقع یادگیری ++C یه نابغه بودید، اگر 4 خط در مورد شروع کار با DirectX 11 خوندید باز هم حرفم رو دست کم نگیرید. تو DirectX 11 یه مبتدی فقط تا حدی میتونه جلو بره که یه مکعب بکشه و یه texture هم بندازه روش. بعدش به بن بست می رسید، چون از اون جا به بعد دیگه این صحبت ها نیست. DirectX 11 کاملا حرفه ای هست و نمیشه نسخه ای واسه آموزش حسابش کرد، هر چیزی که تو DirectX واسه راحتی کار بود در نسخه ی 11 حذف شده و به XNA منتقل شده. منبع( یکم تجربه ی خودم یکم سپول )
    آخرین ویرایش به وسیله hi.alir : سه شنبه 24 اسفند 1389 در 11:58 صبح

  4. #4
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    OpenGL

    OpenGL کوتاه شده ی Open Graphics Library کتابخانه ای از API هاست که برای ترسیمات دو بعدی و سه بعدی تعبیه شده است. این کتابخانه به صورت متن باز ( به زبان C ) ارائه گردیده و از سال 1992 تا امروز در حال توسعه می باشد (آخرین نسخه 4.1 است) و در مصارف مختلفی از قبیل شبیه سازی های نظامی، بازی های رایانه و ... مورد استفاده قرار می گیرد.
    OpenGL را می توان در سیستم عامل های Windows، Mac OS X، Linux و Unix و بیشتر زبان های برنامه نویسی استفاده کرد. (زبان C/C++‎ توصیه می شود)
    OpenGL بر خلاف APIهای دیگر به جای توسعه مبتی بر ویرایش از توسعه مبتی بر افزودنی (extension) پشتیبانی می کند. تا ویرایش 1.1 آن توسط نرم افزار پشتیبانی می شود و از ویرایش 1.2 به بعد شما احتیاج به نسب آخرین درایور کارت گرافیکی خود دارید. حال در برنامه OpenGL می توانید آدرس دستورهای جدید مطرح شده در ویرایشهای بعد را با کمک API سیستم عامل از درایور کارت گرافیک دریافت کنید.
    برخلاف نرم افزارها ویرایشهای ماژور OpenGL به معنی نوشته شدن از اول نیستند بلکه بدین معنی هستند که یک تغییر اصاصی در ساختار OpenGL رخ داده:

    • OpenGL 2.0: اضافه شدن کانال قابل برنامه ریزی و زبان GLSL
    • OpenGL 3.0: حذف کانال پردازش ثابت (fixed function)
    • OpenGL 4.0: سیستم پردازشی جدید و تغییر ساختار شیدرها
    می توانید لیستس از الحاقیهای OpenGL را از وب سایت رسمی خود آن دریافت کنید.

    برای یادگیری OpenGL کتاب قرمز آن (OpenGL red book) و برای یادگیری آن برای ساخت بازیها
    کتاب Beginning OpenGL Game Programming توصیه می شود.


  5. #5
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    OpenGL vs Direct3D

    Openglvsdirect3d.png

    در موارد دیگر این دو با یکدیگر فرق چندانی ندارند. در صورت نیاز می توانید تحقیق و امتحان کنید.

    البته لازم به ذکر است که تقریبا تمامی بازی های Windows از Direct3D استفاده می کنند و از OpenGL بیشتر در موارد دیگر استفاده می شود.اگر می خواهید برنامه نویس گرافیک شوید، توصیه می شود هر دو را یاد بگیرید و اینکه کدام را اول یاد بگیرید تفاوتی ندارد.

    نکته 1: در بسیاری از موارد به اشتباه OpenGL با DirectX مقایسه می شود که این کار صحیحی نیست. چرا که DirectX یک مجموعه می باشد که تنها یکی از زیرمجموعه های آن کاری مشابه OpenGL انجام می دهد. پس دقت کنید که OpenGL باید با Direct3D مقایسه شود.

    نکته 2: نسخه ای از OpenGL ES که در PS3 مورد استفاده قرار می گیرد با کمی تغییرات همراه است. البته بسیاری از برنامه نویسان به دلیل مشکلاتی چون Performance کمتر از این نسخه برای بازی در PS3 استفاده می کنند.

    نکته 3: نسخه ای از Direct3D 9 که در XBOX 360 مورد استفاده قرار می گیرد هم دارای تغییراتی است.
    آخرین ویرایش به وسیله hi.alir : پنج شنبه 07 بهمن 1389 در 07:49 صبح

  6. #6
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    انتخاب

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

  7. #7

    نقل قول: آیا یک مبتدی هستید؟

    دمت گرم. ممنون از پست ها.

    فقط چند نکته اضافه کنم: (مخصوصاً در مورد مقایسه اون عکس)
    1- در مورد پلتفرم ها، API ای که در PS3 استفاده می شه، در واقع خود opengl نیست و نسخه تغییر یافته ای از OpenGL ES هست با زبان شیدر CG نه GLSL که مخصوص opengl هست.

    2- API ای که در Xbox360 هم استفاده می شه نسخه تغییر یافته direct3d9 هست، و خود d3d9 نیست.

    3- Directx در نسخه 11 کاملا با نسخه های قبلی سازگار هست و به این خاصیتش می گه Feature Level که می تونید ساپورت سخت افزار های d3d9 ، d3d10 و 11 رو داشته باشید.

    4- تقریبا 99% بازی های ویندوز رو با direct3d می نویسند، و در بقیه سیستم عامل ها opengl تنها و بهترین انتخاب هست.

    در کل کسانی که تجربه معمولی هم داشته باشند می دونند که API گرافیکی از کوچکترین بخش های موتور هست. پس خیلی به انتخابش گیر ندین، از اونجا که بیشتر برنامه نویسان بازی با windows کار می کنند، هر کدوم از این دو API رو بنا به سلیقه ،داکیومنت، درایور ها و چیزهای دیگه که داره رو می تونند تست کنند و انتخاب کنند. همونطور که AliR هم گفت واقعا فرقی نمی کنه.
    به عنوان مثال در موتور hmrEngine یک DLL ساختم و روی Direct3d11 با حدود 2000 خط کد یک لایه نوشتم که به راحتی می شه برای opengl هم همچین کاری رو انجام داد و حتی در زمان runtime بین API ها با سوئیچ کرد.

  8. #8
    کاربر دائمی آواتار REZAsys
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    In our fragile World ------ در دنیای شکننده ی ما
    پست
    454

    نقل قول: آیا یک مبتدی هستید؟

    سلام
    آیا یک مبتدی هستید؟

    Game maker 8

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

    Yo Yo games شرکتی هست که سازنده ی این انجینه و اون رو پشتیبانی میکنه:
    http://www.yoyogames.com/gamemaker

    Wikipedia:
    http://en.wikipedia.org/wiki/Game_Maker

    3D : ساخت بازی های سه بعدی وظیفه ی این انجین کوچک نیست و تنها ممکنه بتونه بازی های بسیار کوچک و کم کیفیت سه بعدی رو ساپورت کنه که این رضایت بخش نیست!

    3D game studio A8

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

    3d game studio یک موتور ساده و پر امکانات است که کاملا آماده برای ساخت بازیهای کوچک سه بعدی است . اگر شما دنبال یک موتور ساده ،سه بعدی ساز ، روان و با قابلیت ساخت انواع ژانر هستید ، بهترین گزینه این موتور هست.
    از نظر گرافیکی اصلا نمیشه رو این موتور حساب باز کرد!!
    این موتور فعلا برای PC بازی میسازه اونطور که من تو فروم های خارجی دیدم تو ورژن 8.12 میخواد پابلیش چند کنسول بهش اضافه بشه......


    سایت این موتور:


    http://3dgamestudio.com/


    در زیر چند نمونه از بازیهای ساخته شده
    با این موتور را می بینید :




    سایر بازی های ساخته شده:

    http://www.conitec.net/english/gstudio/gallery.php
    آخرین ویرایش به وسیله REZAsys : جمعه 08 بهمن 1389 در 10:51 صبح

  9. #9
    کاربر دائمی آواتار REZAsys
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    In our fragile World ------ در دنیای شکننده ی ما
    پست
    454

    نقل قول: آیا یک مبتدی هستید؟

    منبع : Vahid67 در P30world


    موتور آنریل (Unreal Engine) بدون شک اگه قوی ترین موتور صنعت بازیسازی نباشه یکی از قویترین هاست و برای مقایسه فقط کافیه به بازی هایی که توسط این موتور ساخته شده توجه کنیم .
    سازنده ی این موتور شرکت معروف EPIC هست که تا به حال بازی هایی مثل سری Gears Of War رو با اون ساخته که تنها نمونه ای از قدرت این موتور هستند . این شرکت تا به حال سه نسخه ازین موتور رو ارائه داده :

    Unreal Engine 1
    Unreal Engine 2
    Unreal Engine 3
    و نسخه ی چهارم آنریل انجین هم که سال 2005 اعلام شد در حاله ساخته و پیش بینی میشه تا سال 2012 به اتمام برسه .





    Unreal Engine 1


    اولین نسخه ی آنریل انجین بود . مهم ترین بازی که با این موتور ساخته شد بازی Unreal Tournament بود .
    زبان ساده ی اسکریپت نویسی اون و ساختار نوی موتور باعث محبوبیت زیاد اون در اون زمان شد .



    Unreal Engine 2

    نسخه ی دوم موتور آنریل بود که با اون بازی هایی مثل Unreal Tournament 2003 درست شد . این نسخه نسبت به نسخه ی قبل خیلی کاملتر شده بود و از لحاظ گرافیکی هم پیشرفت زیادی کرده بود .
    Unreal Engine 3

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

    و اکنون UDK ...


    در سال 2009 بود که شرکت Epic بطرز عجیب و البته خوشحال کننده ای تصمیم گرفت موتورش رو بطور رایگان برای استفاده های غیر تجاری منتشر کنه . این خبر برای بازی ساز های آزاد خبری عالی بود چون الان دیگه همه به یکی از قویترین موتور های دنیا دسترسی دارن !
    UDK در حقیقت همون نسخه ی باینری موتور UE3 هست که اونو میتونید بصورت رایگان از سایتش دریافت کنید .


    همان انجین Unreal 3 است ... پلت فرم قدرتمند و حرفه ای ساخت بازی. تمام چیزی که برای ساخت یک بازی عالی احتیاج خواهید داشت.
    UDK برای کیست؟
    هر کس. همه کس. اگر شما ایده ای برای گیم دارید که برای پیاده سازی نیاز به یک پلت فرم دارد، UDK برای شماست.
    چرا UDK؟
    چون توانایی، قدرت و انعطاف موتور Unreal Engine 3 را دارد. این ابزارها توسط طیف وسیعی از گروه های حرفه ای استفاده شده اند و امتحان خود را پس داده اند. راه بهتری برای ساخت بازی با Unreal Engine 3 وجود ندارد.

    حداقل سیستم مورد نیاز :


    • Windows XP SP2 or Windows Vista
    • 2.0+ GHz processor
    • 2 GB system RAM
    • SM3-compatible video card
    • 3 GB free hard drive space

    سیستم پیشنهادی :


    • Windows Vista 64 SP2
    • 2.0+ GHz multi-core processor
    • 8 GB System RAM
    • NVIDIA 8000 series or higher graphics card
    • Plenty of HDD space


    بعضی از قابلیت های UDK که در هیچ کجا نمی بینید !! :


    FaceFX






    یک قابلیت که با آن می توانید با استفاده از یک فایل صوتی ، برای صورت شخصیت مورد نظر خود حرکت درست کنید ( با استفاده از یک فایل صوتی ، شخصیت بدون نیاز به هیچ دخالتی از طرف شما قادر به تکلم خواهد بود !!! )








    Speed Tree



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




    Destructible Environments



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

    برخی از پنجره ها در این موتور :


    برخی بازی هایی که تا کنون توسط این موتور ساخته شده :



    http://www.indiedb.com/games/primal-...shots#imagebox











    کد:
    http://www.udk.com/showcase-whizzle.html
    کد:
    http://www.udk.com/showcase-the-ball.html
    کد:
    http://www.udk.com/showcase-prometheus.html
    Lucha Libre AAA, Heroes del Ring 2010
    X-Men Origins: Wolverine 2009
    Wheelman 2009
    Mass Effect 2 2010
    Aliens: Colonial Marines 2010
    Alpha Protocol 2010
    APB 2010
    Army of Two : The 40th Day 2010

  10. #10
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    موتور صوتی

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


    XACT: موتور صوتی از سوی ماکروسافت که هم در ویندوز استفاده می شود و هم در XBOX 360. این موتور صوتی بر پایه ی xaudio 2 می باشد. xaudio همان کتابخانه ی صوتی XBOX 360 می باشد که در نسخه ی بعدی آن یعنی xaudio 2 از ویندوز هم پشتیبانی می کند، البته فقط ویندوز ویستا و سون.

    OpenAL: کتابخانه ی متن باز صوتی که از بیشتر پلتفرم ها پشتیبانی می کند.

    FMOD: کتابخانه ی صوتی که از بیشتر پلتفرم ها پشتیبانی می کند. در اکثر بازی ها از این کتابخانه برای صدا استفاده می شود.

  11. #11
    کاربر دائمی آواتار REZAsys
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    In our fragile World ------ در دنیای شکننده ی ما
    پست
    454

    نقل قول: آیا یک مبتدی هستید؟

    معرفی موتور Unity

    منبع : انجمن تخصصی ساخت بازی :
    http://www.bazisaz.com

    مقدمه: در این مبحث طبق مباحث قبل ما قصد داریم یک موتور دیگر توسعه بازی که به تازگی محبوبیت بسیاری را در جهان کسب کرده برای شما عزیزان معرفی کامل کنیم.
    در ابتدا من قصد داریم به معرفی کامل انواع قسمت های این موتور بپردازم و بعد از بعد فنی آن را مورد ارزیابی و تجزیه و تحلیل قرار دهیم.
    امّا قبل از وارد شدن به مبحث فنی بیایید کمی در مورد خود موتور بحث کنیم. موتور Unity چیست؟ موتور Unity یک ابزار برای ساختن بازی های سه بعدی یا دیگر محصولات تعاملی سه بعدی بلادرنگ همچون پویانمایی های سه بعدی بلادرنگ یا همان real-time 3D animations می باشد. شیوه کلی این موتور همچون موتورهای Director, Blender game engine, Virtools یا حتی Torque می باشد. ویرایشگر موتور می تواند تحت ویندوز و mac اجرا شود. شاید تا چند سال پیش این موتور بدرد کاربران سیستم Mac می خورد امّا بعد از March 2009 که موتور به ویندوز هم پورت شد کاربران ویندوز هم به جمع دوستداران این موتور افزوده شدند. این موتور اوّلین بار در تاریخ June 2005 منتشر گردید.
    نسخه 3 این موتور در حال ساخته شدن است و پیش نمایش آن در Game Developer Conference 10 به نمایش درآمد. البته چون این موتور تقریباً یک موتور روز می باشد هنوز بازی تجاری قابل توجه ای با آن ساخته نشده و بیشتر با آن بازی های indie ساخته شده است. از جمله انتقاداتی که توسط کارشناسان به این موتور شده این است که برخی آن را به یک ویرایشگر تشبیه کرده اند و گفته اند که این موتور در حقیقت یک ویرایشگر است تا یک موتور و امکانات لازم از جمله سورس کامل را برای یک توسعه دهنده بازی ارائه نمی دهد همچنین وجود باگ های فراوان در ویرایشگر از دیگر انتقادات به این موتور هست. همچنین انتقاد جالب توجه یکی از کارشناسان خارجی این است که این موتور در CPU های intel مخصوص mac بسیار ضعیف تر از سایر CPU ها کار می کند این در حالی است که سازندگان این موتور همانطور که در ادامه خواهید خواند مدعی این هستند که با صدها سخت افزار این موتور را اجرا و آزمایش کرده اند.
    دو مجوز برای این موتور وجود دارد مجوز Pro و مجوز Free که تفاوت این دو مجوز برخی امکانات اضافی در نسخه pro همچون جلوه های postprocessing و render-to-texture می باشد. همچنین در نسخه free آرم موتور در بازی به نمایش در می آید. اکنون به مشخصات و انواع قابلیت های فنی ان موتور خواهیم پرداخت.

    ویرایشگر موتور



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


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

    گرافیک



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

    ورودی مدلها

    یکی از جالبترین قابلیت های Unity که من حداقل در هیچ موتوری تا به حال به این شکل پیدا نکرده بودم امکان بسیار قدرتمند ورودی مدل ها بدون هیچ وصله ای می باشد. تمامی محتویات گرافیکی می توانند بعد از Save کاملاً فوری و به شکل خودکار وارد این موتور شوند. از مدل های سه بعدی گرفته تا پویانمایی ها، اسکریپت ها یا صداها. و لحظه به لحظه در حال بروز شدن هستند. یعنی به عنوان مثال شما می توانید یک مدلی را که با کمک نرم افزار 3D Studio Max ساخته اید و فرمت آن .max است و همچنین بافت آن را هم با کمک نرم افزار Photoshop ساخته اید و فرمت آن .psd است را بدون هیچ واسته در پروژه خود وارد نموده و سپس بعد از وارد نمودن در مرحله توسط ویرایشگر موتور بر روی مدل تغییراتی با کمک نرم افزار 3D Studio Max انجام دهید و همان لحظه تغییر را در موتور ببینید یا بافت را در photoshop تغییراتی دهید و همان لحظه آن تغییرات را ببینید خوب این چیز بزرگ و شگفت آوری است. من با چند تن از دوستان خارجی ام در این باره صحبت می کردم که این تکنیک چگونه انجام پذیر است که نظرات متعددی وجود داشت. در مورد وارد کردن فرمت های تصویری مثل فرمت Photoshop که بی شک مسلم بود که از کتابخانه FreeImage واقع در این آدرس (www.freeimage.sourceforge.net) استفاده شده است. امّا در مورد وارد کردن فرمت .max یکی از دوستان بازی ساز اسپانیایی مدعی بود که احتمالاً یک اسکریپتی در Unity وجود دارد که به سرعت مدل را به FBX یا DAE تبدیل می کند و سپس مدل در Unity به نمایش و اجرا در می آید که به نظر نمی آید فرض درستی باشد. یک دوست دیگری در این باره می گوید که Autodesk یک ابزاری را ارائه داده که توسط آن می توان فرمت های max را در موتور یا نرم افزارمان بدون هیچ وصله ای نمایش داد ما در این مورد خیلی جستجو و تحقیق کردیم اما هنوز به نتیجه در مورد این ابزار نرسیدیم و تحقیقاتمان ادامه دارد و اگر به نتیجه ای رسیدیم حتماً در تالارهای گفتگوی بازی ساز اعلام خواهیم کرد. (www.forum.bazisaz.com)
    از دیگر ویژگی های ورودی در Unity می توان به پشتیبانی از فونت های TrueType اشاره کرد. Unity از یک رندرگر به شیوه pixel-perfect برای فونت های TrueType استفاده می کند.



    که این باعث می شود مطالب بازی شما به شکل خوب و با کیفیتی به چشم بیایند. از نکات دیگر پشتیبانی از Unicode می باشد هرچند که برای ما فارسی زبان ها پشتیبانی از Unicode هم خیلی کمک نمی کند چون حروف ما از راست به چپ و همچنین به هم چسبیده است و خیلی موتورها این مساله را در مورد زبان های آسیایی در نظر نمی گیرند هرچند که می توان به جای متن از تصویر استفاده کرد امّا مسلماً حجم یک متن بسیار کمتر از حجم یک تصویر است.
    بافت ها با چندین لایه می توانند در Photoshop ذخیره شوند و در Unity اجرا گردند. و مهمترین نکته این است که موتور Unity بافت ها را بدون کوچکترین کلیکی به DXT فشرده سازی و ذخیره می کند.
    هر بافت می تواند به یک Normal Map تبدیل شود. این فرآیند به شکل کاملاً خودکار و در هنگامی که شما مکان فایل ها را تغییر می دهید انجام می گیرد.
    از دیگر نکات قابل توجه در این موتور پشتیبانی از چندین شیوه تولید Mipmap با کیفیت بالا می باشد. Unity از شیوه هایی همچون Detail Fade, Kaiser Filters, Gamma Correction و... برای تولید Mipmap استفاده می کند. در انتهای مبحث ورودی و خروی به ورودی فایلهای صوتی می توانم اشاره کنم که این موتور تنها از فرمت صوتی ogg که یک فرمت فشرده بسیار خوب و عالی برای بازی است پشتیبانی می کند.
    در زیر جدولی از فرمت ها و امکاناتی که برای آن ها در این موتور پشتیبانی می شود را می بینید.



    چند پلتفورمه



    از دیگر ویژگی های این موتور امکان اجرای آن و ساخت بازی بر روی چند پلتفورم از جمله سیستم عامل ویندوز و mac می باشد. همچنین از سخت افزارهای قدیمی پشتیبانی به عمل می آورد.
    موتور Unity امکاناتی هم برای ساخت بازی تحت وب دارد. به این صورت که می توان بازی ساخته شده را به صورت کامل تحت وب اجرا نمود. البته این موتور همچون موتور Torque 3D نیست که به راحتی و بدون هیچ وصله ای بازی شما را درون مرورگر اجرا کند. برای اجرای بازی کاربر باید یک وصله تحت عنوان Unity Web Player را نصب نماید.
    از دیگر امکانات جالب توجه و خوب این موتور امکان استفاده از کنسول WII می باشد. شما می توانید به صورت زنده و بدون هیچ تغییر در پروژه تان بازی را برای کنسول Wii ببینید و تحت ویرایشگر اجرا نمایید. همچنین برای اجرا بر روی کنسول Wii حتماً باید مجوز و بسته Wii Developer Kit را داشته باشید. که مسلماً برای گروه های ایرانی با توجه به تحریم خیلی سخت می توان یک همچنین چیزی را از شرکت Nintendo گرفت.
    همچنین توسط این موتور می توان برای گوشی های iphone هم بازی ساخت. امروزه خیلی از موتورها امکان ساخت بازی بر روی این گوشی ها را فراهم کرده اند. شما با کمک iPhone Remote به شکل خیلی سریع نتیجه را به شکل زنده بر روی IPhone یا IPad خود آزمایش کنید و یا در همان ویرایشگر مرحله اقدام به این کار نمایید. در مرحله فرآیند Build کلیه کدهای Java و C#‎ به کدهای ARM assembler کامپایل می شوند.



    تصویری از یک نمونه بازی ساخته شده توسط Unity و اجرای زنده با IPhone

    شیدرها در Unity



    سیستم شیدر Unity ترکیبی از راحتی در استفاده، انعطاف پذیری و عملکرد است. تمامی شیدرهای ساخته شده در Unity با هر دو نوع نور ادغام کامل می شود. همچنین شما این امکان را دارید تا شیدر خودتان را تحت دو زبان HLSL و CG برای پروژه هایتان در Unity بنویسید.
    از جمله امکانات سیستم شیدر این موتور می توان به اجرای تمام صفحه جلوه های Post-Processing همچون Glow, Blur, Noise, Color Correction, Sepia Tone, Depth of Field و ... اشاره نمود.
    این موتور بنا به ادعای سازندگان آن دارای 40 شیدر ساخته شده داخلی است.

    عوارض زمین



    با کمک سیستم عوارض زمین در این موتور می توانید چشم اندازهای خیلی نرم و زیبا و وسیعی را ایجاد نمایید. مسلماً این مساله نشاندهنده توانایی های خوب موتور برای ساختن بازی هم به شیوه indoor و هم به شیوه outdoor می باشد.
    ویرایشگر این موتور دارای دکمه ها و قسمتی پیرامون عوارض زمین می باشد که توسط آن می توانید عوارض زمین خود را بسازید هرچند که انصافاً تجربه شخصی من در کار با سیستم عوارض زمین این موتور و سایر موتورها این را می گوید که هنوز هم تنها موتوری که در زمینه ساخت عوارض زمین حرف اوّل را می زند مسلماً Torque می باشد زیرا از ده ها الگوریتم و امکانات برای ساخت عوارض بهره می برد در حالی که در این موتور باید به شکل دستی و بدون هیچ الگوریتم خاصی عوارض زمین را ساخت. همانطور که می دانید استفاده از دست درصد ایجاد خطا را بسیار بالا و غیر طبیعی شدن کار را می برد.
    از جمله امکانات خوب دیگر این موتور در سیستم عوارض زمین می توان به سیستم ایجاد درختان، سنگ ها چمن و... اشاره کرد با یک brush می توان در هر جا از سطوح مرحله این کارها را انجام داد.



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



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

    شبکه در Unity

    این موتور هم همچون بسیار از موتورهای دیگر از امکاناتی برای ساخت بازی های تحت شبکه برخوردار است. برای دسترسی به صفحات وب و اطلاعات محتوی این موتور از خیلی راحت از واسطه www استفاده می کند که برای اطلاعات بیشتر می توانید به اینجا مراجعه نمایید.
    کتابخانه های .NET socket می توانند برای شبکه Real Time استفاده شوند. که از هر دو پروتوکل TCP/IP و UPD می توانند برای ارسال اطلاعات استفاده کنندو خیلی راحت به بانک اطلاعاتی ODBC می توانند متصل شوند.

    فیزیک
    اشیای بازی در Unity می توانند توسط موتور فیزیکی بسیار معروف Physx که با این موتور منطبق گردید خواص فیزیکی بگیرند. البته سازندگان مدعی هستند که از تمام قدرت موتور Physx استفاده کرده اند که این مسلماً یک همچنین چیزی نمی تواند واقعیت داشته باشد زیرا قدرت موتور Physx بسیار فراتر از اجرای چند تکنیک همچون Rigidbodies و Joints ها که دیگر امروزه در هر موتور فیزیکی کوچک و بزرگی استفاده می شود است. مسلماً تکنیک هایی همچون Cloth که مربوط به شبیه سازی پارچه می باشد یا تخریب پذیری و... که در موتور Physx قرار دارد در این موتور قابل اجرا نیست این در حالی است که سازندگان موتورهایی همچون Torque یا Dark Basic که چنین ادعایی را نداشتند چنین امکاناتی را با کمک موتور Physx در موتورشان اجرا کردند.
    امّا خوبی که این موتور دارد این است که می تواند تکنیک هایی نظیر Rigidbodies Joints Ragdolls را در ویرایشگر و خیلی راحت برای اشیای بازی اجرا کند.

    صدا و فیلم در موتور

    این موتور این توانایی را دارد که یک فیلم را بر روی یک سطح یا به صورت تمام صفحه اجرا کند. همچنین شما می توانید موقعیت صداها را تغییر داده و به ایجاد صدای سه بعدی بپردازید. برای فیلم از فرمتهای .mov, .mpg, .mpeg, .mp4, .avi, .asf و برای صدا از فرمت ogg پشتیبانی می کند.

    اسکریپت نویسی در موتور
    مسلماً یکی از بهترین قابلیتهای این موتور استفاده از چندین زبان محبوب و معروف و قدرتمند برای اسکریپت نویسی است که من معتقدم برخی ها تنها به عشق این زبان ها سمت این موتور کشیده می شوند. از جمله این زبان ها می توان به زبان جدید، محبوب و قدرتمند C#‎ و زبان همیشه دوست داشتنی Java اشاره کرد. همچنین از زبان اسکریپتی Python معروف به Boo هم می توان در این موتور استفاده کرد. و تمام این کدها می توانند تحت کتابخانه های .NET استفاده شوند. که از بانک های اطلاعاتی، XML، دسترسی به فایل ها و شبکه استفاده کرد.



    معمولاً اسکریپت نویسی خیلی کند و محدود است به عنوان مثال در موتور UDK نمی توان در محیط RunTime کدها را نوشت و باید حتماً از محیط خارج شده اسکریپت را کامپایل کرد (که زمان گیر و پر دردسر است) دوباره برنامه یا ویرایشگر را اجرا نمود تا کد نوشته شده یا رفتار در بازی را چک کرد. امّا در Unity مثل سایر موتورها می توان در محیط اجرا کدها را اجرا نمود.
    سازندگان معتقدند زبان Java در این موتور 20 درصد سریع تر از زبان Java تحت Flash یا Director اجرا می شود. همچنین از دیگر مزایای اسکریپت نویسی در این موتور می توان به راحتی و انعطاف پذیری آن اشاره کرد به عنوان مثال حرکت، چرخش و تغییر مقیاس یک شی با یک خط کد انجام پذیر است.

    نور و سایه

    موتور Unity دارای یک سیستم نورپردازی بهینه شده برای سایه های Real Time با سایه های RealTime و lightmap می باشد. از جمله امکانات سیستم نورپردازی این موتور می توان به سایه های نرم و صاف بهن صورت Real Time و پشتیبانی از Lightmap ها اشاره نمود در نسخه Pro این موتور تکنیک Screen Space Ambient Occlusion هم وجود دارد که برای طبیعی تر شدن سایه ها استفاده می شود. با کمک این تکنیک می توانید انسداد نور در گوشه های دیوار ها را خیلی طبیعی نشان دهید در حالی که در حالت عادی دیوار ها چه در سایه و چه در نور تقریباً یک نواخت نشان داده می شوند. یعنی یا روشن یا تاریک هستند و هیچ محدوده سایه ای بر روی دیوار نیست برای درک بیشتر دو تصویر زیر را با دقت نگاه کنید. تصویر اوّل این تکنیک اعمال شده و در تصویر دوم تکنیک اعمال نشده است.




    اسناد آموزشی

    این موتور دارای اسناد و مطالب آموزشی فراوانی در تارنمای اصلی این موتور در آدرس http://unity3d.com/support/documentation می باشد. همچنین چندین تارنما، ویژه آموزش این موتور ایجاد شده اند که از جمله این تارنماها می توان به http://unity-tutorials.com و http://unitytutorials.com اشاره نمود که البته برخی از آموزش های این تارنماها رایگان نمی باشد. همچنین تارنمای http://www.unifycommunity.com دارای یک ویکی خوب همراه با مقالات عالی پیرامون این موتور می باشد و یک کتاب هم تحت عنوان Unity Game Development Essentials پیرامون این موتور منتشر گردیده است.
    در انتها به چندین وبلاگ آموزشی فارسی خوب که توسط چند تن از دوستان و محققین عزیز ایجاد گردیده اشاره نمود.
    http://gamemaker.mihanblog.com
    http://unity3d.mihanblog.com
    http://3d-guide.mihanblog.com
    و یک تارنمای فارسی زبان پیرامون این موتور
    http://unity3d.ir

    منبع : انجمن تخصصی ساخت بازی :
    http://www.bazisaz.com



  12. #12
    کاربر تازه وارد آواتار vice_city
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    خرم آباد
    پست
    83

    نقل قول: انتخاب

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

  13. #13
    کاربر تازه وارد آواتار vice_city
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    خرم آباد
    پست
    83

    نقل قول: آیا یک مبتدی هستید؟

    توضیحات مختصر و مفید برای مفاهیم پایه:

    1-9

    3D Texture
    A texture with an extra dimension. Usually you load two or more 2D textures and you blend between (e.g. a heightmap).


    A

    A* or A-star
    Pathfinding is the process of finding a path from one point to another. A* (a-star) is an algorithm that efficiently finds a shortest path in a graph. In many game-programming situations this is the best choice for pathfinding.

    AAA
    A rating given to a top-of-the-line game. Usually a game with big budget and high production values from an established developer.

    Adaptive Learning
    An artificial intelligence system that can re-program itself based on environmental factors and influences.

    A.I.
    See Artificial intelligence.

    Aimbot
    A method of cheating, often in multiplayer games. A separate external program or script will perform perfect targetting on other players.

    Algorithm
    A step-by-step problem-solving procedure, especially an established, recursive computational procedure for solving a problem in a finite number of steps.

    Aliasing
    The effect produced when a complex image is put onto a display with a limited resolution. This effect is a product of downsampling. Examples include jagged looking lines in lower resolutions. Temporal aliasing is the effect where motion appears stuttered due to a low frame rate (for the speed).

    Alpha
    The first stage of development for a game. (see Beta, Gold)

    Alpha Blending
    Assigning varying levels of translucency to graphical objects, allowing the creation of things such as glass, fog, and ghosts. This can be accomplished by using alpha channels, or other means. (see Alpha Channel)

    Alpha Channel
    In 32-bit color, 24-bits are used for the color, and the extra 8-bits represent an alpha value, or alpha channel. This value is used to determine the pixel's translucency level.

    Ambient Lighting
    In 3D graphics: A base amount of light that is added to every polygon, even if it receives no light from the defined light sources. Used to simulate the light that is refracting off objects around us in the real world.

    Ambient Occlusion

    Amortized Complexity
    Average complexity over a large number of calls. For example, push_back on a std::vector is amortized O(1) because it occasionally needs an O(n) reallocation, but only once every n calls or so, with the rest being O(1). Since this means O(n) for n calls, the per-call complexity averages to O(1).

    Animation
    The process of creating simulated motion or activity.

    Anisotropic Filtering
    The level past trilinear filtering, this uses samples from multiple Mip Maps to get the best approximation for a texture. Very heavy performance cost.

    Anti-Aliasing
    This is the process that gets rid of the aliasing effect. A filtering process is normally used in the process that removes "jaggedness effect" produced by pixels. (see Aliasing)

    API
    Application Programming Interface. A collection of functions that you can use to build programs. Your operating system has an API with which you can manipulate its workings.

    Arc
    A section of a circle that is measured in degrees or radians.

    Array
    A series of characters and/or numbers defined in order in memory. Used in programming to store data, create matrices, and other. C++‎ Example: char array[12]="Hello world";

    Artifacts
    In graphics, persistent portions of images resulting from improper blitting operations.

    Artificial intelligence
    Programming of computers that attempts to mimic human intelligence. The main types of Artificial Intelligence used in games currently are State Machines, Expert Systems, Fuzzy Logic, Genetic Algorithms and Neural Networks.

    Aspect Ratio
    The aspect ratio of an image is the ratio of its width to its height. Aspect_Ratio = Width / Height See Pixel Ratio

    Assert

    Attributes
    In Role-Playing Games, attributes are numbers that represents specific aspects in a character's stats. EX: Agility, Intelligence, Luck, Power, etc. are all attributes.

    Avatar
    An in-game representation of the player.

    B

    Backface Culling
    Backface Culling can be considered part of the Hidden Surface Removal process of a Rendering Pipeline. Backface Culling is the process by which Polygons (usually triangles) that are not facing the Camera are removed from the Rendering Pipeline. This is done by comparing the Polygon's Surface Normal with the position of the Camera.

    Beta
    the second stage in a game's development cycle. This stage is usually fairly feature complete, but may still have missing content and minor bugs.

    Big-O Notation
    Used to give a rough estimate of the complexity of algorithms.

    Billboard
    In 3D graphics: A flat image drawn in 3D space in such a way that it is always facing the viewer/camera. Common uses are for particles and to display more complex objects at a low level of detail.

    Binary Heap
    A binary heap is a useful data structure if you have a collection of objects to which you are adding random objects and need to remove the object with the highest (or lowest, or the extreme of some other ordering) value. You could use a dynamic array or a list, but then you'll have to compare all the elements each time you want to find the biggest one.

    Binary Space Partion (BSP)

    Bit
    A bit represents a 1 or a 0. It's on -or- off. 8 bits make a Byte.

    BitBlt
    Bit Block Transfer. A function in the Windows API that allows you to transfer a block of bits (A bitmap, for example) from one location to another on the screen. This can be used to move sprites around a screen, a prerequisite for making many types of games.

    Blending
    In graphics: The process of mixing colors from different sources, usually using an alpha channel.

    Bounding box
    A rectangle or box (often aligned to the axes of the coordinate system) around an object to make culling and collision-detection faster.

    Buffer
    An empty variable/object that will hold information usually from a function. Buffers also hold information that still needs to be processed, like a map buffer holds parts of the map which might still need to be clipped or processed in some other way.

    Bug
    A software defect usually resulting from incorrect or missing code.

    Byte
    8 bit data value, from 0 to 255, or 0 to FF in hexadecimal.

    C

    Camera
    An object which describes the viewpoint of the player, from this the renderer has to calculate what parts of the map to display.

    Cell Shading
    A style of rendering done to give graphics a cartoony look. One example is XIII

    Char
    A data type typically 8-bit in size

    Clipping
    In graphics: The process of removing parts of geometry that are outside the screen during drawing.

    Collision detection

    Console
    1: A computer only meant for gaming. EX. Xbox, Playstation. 2: A command-line interface, possibly inside of a game.

    Culling
    In 3D graphics: The process of removing non-visible geometry before drawing it to increase efficiency.

    D

    DirectX
    A set of API procedures that allow a programmer more direct access to the machine's hardware while still shielding him from a substantial amount of tedious machine specific coding. This is Microsoft's answer to the complaints of programmers that Windows was too slow to be a gaming platform. By allowing us access to the video, audio, and input devices directly Microsoft has succeeded in convincing developers that Windows is a viable platform for their games.

    DLL
    Dynamic Link Library. DLL's contain procedures that can be dynamically or statically accessed by programs running in Windows. Generally more than one program can access a single DLL at a time. Many DLL's come packaged with Windows, others are created for the specific needs of a program. DLL's are useful since they reduce the need for redundant code within Windows programs since the most frequently used procedures are centralized within the DLL's that make up the Windows API.

    Dynamic Lighting
    In 3D graphics: Lighting adjusted in real time for changing light sources (and sometimes also for shadow casters).

    E

    Endian
    Byte order for integer values, system specific See Big Endian, Little Endian

    Engine
    Code, usually grouped into one or more classes, that performs a specific function. Examples are graphics engine, combat engine, etc.

    Exception
    A method of error handling that most programming languages support. An exception can be "thrown" when a special or general error occurs, and it is then possible to handle the error, either by correcting it, or by exiting the application gracefully.

    F

    First Person Shooter
    Is a genre of games in which you view the world from the perspective of the character. These games are typically fast-paced, emphasising speed and accuracy and are considered one of the most complicated games to develop.

    FIFO
    "First in, first out." Refers to a type of programming stack.

    FPS
    An abbreviation for "frames per second", or possibly "first person shooter."

    Frame
    In animation: A single time step. Every frame objects in the animation are updated and the screen is updated with their new state. Frames per second are a common (although not always very objective) way to measure game performance.

    Frustum
    In 3D programming: A pyramid-like shape with its point at the 'camera', pointing in the direction that you are viewing, and the base representing the far clip plane. This geometric shape contains all objects that are visible.

    Frustum Culling
    The process of weeding out things that are outside the frustum before drawing. Helps performance because less has to be drawn.

    G

    Game Genres
    A game genre is simply a specific type of game. For example, a game in which the player solves puzzles would fall into the "Puzzle Game" genre.

    Genre
    See Game Genres

    GLSL
    Is the OpenGL Shading Language.

    Graph
    A graph is a basic mathematic concept meaning a collection of points with lines between them. Graphs can have diverse meanings, but a common use of them is to represent points in space and the connections between them.

    Graphical APIs
    Is a library of functions that handle the interaction between the hardware (graphics card and monitor) and software components and makes less troublesome to draw graphics to the screen. Most modern graphical APIs include a vast number of features to ease the creation of complex rendering systems.

    GDI
    Graphical Device Interface. This API is used by Microsoft Windows in order to maintain commonality of look and feel for all programs. The GDI defines how Windows are displayed, bitmaps are moved around, etc. There is a file called GDI32.DLL that houses all of the API calls required to handle these operations (such as BitBlt).

    H

    Hash Table
    A hash table is in effect an array, but elements are not added from front to back. The array has a fixed size and some property of the element to add decides where it will be put.

    Heightmap
    A map or table of what height the ground is at a certain coordinate. It is popular to use heightmaps in the format of a raster image, where one pixel represents a single height coordinate.

    Hidden Face Removal
    In 3D graphics: The process of making sure only the visible surfaces end up in the final image, and surfaces behind those visible surfaces are hidden.

    I

    Inverse Kinetics (Inverse Kinematics)

    Isometric
    Games are called isometric when their world maps are based on grids of tiles which are drawn to the screen without taking perspective into account (orthogonal). The game view is necessarily top-down in such games.

    Index Buffer

    J
    K

    Kinetics (Kinematics)


    Keyframe
    Part of an animation technique wich uses data to set up "snapshots" (keyframes) of the object being animated. These "snapshots" are then interpolated (the in between frames are generated at runtime by knowing the last and the next keyframes) to create a smooth animation using a small amount of data. The keyframes can each contain an instance of the whole mesh of the 3D model (old style) or just information (position and rotation) about the object's joints (a.k.a. skeletal animation)

    L

    Left Handed Coordinate System
    An orientation of axes in a three-dimensional coordinate system, as opposed to right-handed coordinate systems. When you look at the thumb, index finger, and middle finger of your left hand (holding them in orthogonal positions in the most straightforward way), you can determine the orientation of respectively the X, Y and Z axes.

    Level of detail (abbr. LOD)
    In computer graphics: To make drawing more efficient, a simpler form of objects that are farther away is drawn.

    LIFO
    "Last in, first out". LIFO is commonly used to describe a type of programming stack.

    Linear Interpolation
    Linear interpolation is the process of using two known values at two points to determine a third unknown value at a third point.

    Linked List
    A linked list is a data structure where every element contains both a 'value' and a link/reference/pointer to a 'next' element (and sometimes also one to a 'previous' element). The whole list is represented by a pointer/reference/link to the first element of the list (or a structure encapsulating this).

    Lossless
    A lossless compression algorithm (as opposed to a lossy algorithm) achieves its space savings without any loss in data integrity. The compression must be fully reversible, and uncompression must result in an exact copy of the original data.

    Lossy
    A lossy compression algorithm (as opposed to a lossless algorithm) achieves its space savings by sacrificing the least critical portions of data. A lossy compression algorithm is not fully revisible, and uncompression will not result in an exact copy of the original data.

    M

    Matrix
    A rectangular grid of numbers. Used heavily in 3d programming for transforming points in space.

    MCI
    Media Control Interface. A Windows API for controlling multimedia devices such as CD ROM drives.

    Memory leak
    A memory leak is a part of the systems RAM memory that isn't released properly. This is a common problem in software development.

    MipMap
    In 3D computer graphics texture filtering, MIP maps (also mipmaps) are pre-calculated, optimized collections of bitmap images that accompany a main texture, intended to increase rendering speed and reduce artifacts.

    MMORPG
    Is a abbreviation of Massive Multi-Player Online Role Playing Game, which is a certain game genre.

    Multitexturing
    Uses two or more "texture units" on the graphics card to blend the textures in one pass.

    N

    Nibble
    Half a byte, or 4 bits. Nibbles rarely come up when programming modern computers.

    Nick
    Short for nickname, used in multiplayer games, it's the name you pick yourself by which you are known (other than using your real name)

    Normal
    A vector perpendicular to a surface. At the same time, the direction of this vector determines the orientation of the surface. In the case of polygons, this direction is usually determined by the right hand rule.

    O

    O()
    See Big-O Notation

    Object-oriented programming
    This type of programming consists of treating data as groups or objects, where these objects can inherit from other objects. An example would be a human. You can have one a body, with multiple limbs, and a head. Again, each hand would inherit fingers, and so on. Object-oriented programming helps organize code and improve reliability. It is also slower to execute than standard individual-variable type programming.

    OCX
    OLE Custom Control. A program module available to other programs within the Windows environment. Where a DLL provides pre-made functions to Windows programs, an OCX control provides pre-made controls complete with their own inherent functions and behaviors. OCX files act as containers to ActiveX controls.

    OLE
    Object Linking and Embedding. Pronounced oh-lay. OLE allows you to create an object within one program and link or embed it into another, thus allowing easily standardized formats. An example of this is how you can insert an Excel Worksheet Element into a Word document, and have it retain its functionality.

    Occluder
    Used in occlusion culling. An object that sits in front of other objects, blocking them from view and thereby making it unnecessary to draw them.

    Occlusion culling
    Pre-processing the list of objects that have to be drawn to remove objects that are entirely behind other object.

    OOP
    See Object-oriented programming.

    P

    Particle system
    A set of routines concerned solely with the physics and display of small particle effects. Examples include explosion fragments, bubbles, engine exhaust, etc.

    Path finding
    The way games find a way to get an object from one point to another taking unwalkable tiles etc. into consideration. An absolutely necessary part of almost any game.

    Pixel
    Pixel is a abbreviation of Picture Element. It is the smallest element of a display.

    Portal

    Postmortem
    Postmortem literally means, "after death," and in the world of game development refers to the act of analyzing a game's development after completion. Postmortems provide insight into the world of game development, and often provide the reader with helpful tips on what to do, and what not to do when developing a game.

    Projection Matrix
    It specifies the field of view angle, aspect ratio and near/far clipping planes.

    Q

    Quadtree
    A data tree-structure where each node has four branches. Usually used to partition space in a two-dimensional plane. The square area represented by a node is split into 4 equal squares and every branch represents one of those squares, which might be split itself in turn.

    R

    RAII ( Resource Aquisition Is Initialisation )
    The C++‎ idiom that resources should be owned by objects such that they are automatically released by that object's destructor, making code simpler and safer in the face of exceptions.

    Rasterization
    The process of turning polygons and other internally vector type graphics into raster graphics (made up of discrete pixels.)

    Right Handed Coordinated System
    See left handed coordinate system, except this time you use your right hand. More common than the left handed variety.

    S

    Shader
    In 3D graphics: A program that runs on the video card. Shaders can be run for every vertex or pixel drawn. Not necessarily related to shading only, can influence many aspects of the rendering process.

    Sky Box
    A skybox is a trick used in 3d graphics to display a horizon (or other far-away stuff) without rendering enormous amounts of geometry.

    Sprite
    A two dimensional image, often with transparent areas, that is drawn to the screen to represent some in-game object.

    Stack
    A stack is a container that allows elements to be pushed in and popped out in LIFO (last in, first out) fashion. Depending on the implemenation, only the top element can be accessed or all elements can be accessed.

    T

    Tetris
    Tetris is a game in which various falling blocks are to be organized and arranged to form rows with no spaces. It is one of the most well-known video games ever made and has been the center of much legal dispute in the late 80's and early 90's.

    Texel
    A single pixel on a texture image.

    Tile
    A single section of image that is blitted along with other tiles to make up a larger picture on the screen. An example is a picture of a bush. It is drawn to the screen along with other pictures, maybe one of grass and one of a road, to make up a picture of a landscape on the screen.

    U

    UV Mapping
    Technique used to apply a bitmap (called texture) to at least one polygon

    V

    Vector
    In mathematics: A 1xN array. N usually represents dimensions. Points on a 2D surface can be represented by 2 dimensional vectors, etc. In programming: The word vector is sometimes used to indicate an array. The C++‎ standard library contains a templated class called std::vector that implements dynamic arrays.

    Vector graphics
    Graphics made up of lines, curves or mathematical formulas, as opposed to raster graphics. Vector graphics can be scaled indefinitely and experience no loss in quality, where raster graphics lose some of their accuracy. Generally, all 3D graphics are internally vector graphics, and when drawn to screen (rasterization), they are converted to a raster format the monitor can display.

    Vertex (pl. Vertices)
    In 3D graphics: A point in 3D space. Usually used when the point is part of a model. Can have more information besides location associated with it, for example color, normal, or vertex coordinates.

    View cone
    See Frustum

    View Matrix

    Voxel
    A voxel (short for volume pixel) is basically the 3D counterpart of a two dimensional pixel. Where you can represent a pixel as a square, a voxel would be a cube. Voxels can be used to build 3D worlds, in a raster format (versus polygonal format which is vector.)

    W

    Wallhack
    A method of cheating where the player can look through walls and objects. This is mostly done in multiplayer games, where the cheating player is getting a significant advantage by seeing the through the walls. The wall-hack is often performed by replacing a graphics driver.

    W-buffer
    A w-buffer is a type of depth buffer similar to a Z-buffer, except it is more accurate and generally produces better results.

    World Matrix
    In graphics, we use it to rotate, scale and translate objects in 3D space(world space) by modifying their vertices. All of these transformations will be performed about the origin(0,0,0).

    X

    X (position)
    A position on the screen used in 2D and 3D. Width.

    Y

    Y (position)
    A position on the screen used in 2D and 3D. Height.

    Z

    Z (position)
    A position on screen used in 3D. Depth.

    Z-buffer
    In 3D graphics: An array with a current z-value for every pixel on the screen. Used for hidden face removal. A pixel is only drawn when its z-value is smaller than the current value in the buffer for that location. When it is drawn the z-buffer is updated. In a limited byte situation for Z-buffering, the depth resolution is more condensed toward to the near plane of view frustum compared to the w-buffering. That is, if you set the near plane too close to your eye (zero distance ), it will make primitives blinking easily especially when they have certain distance from your eyes.

  14. #14
    کاربر دائمی آواتار hi.alir
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    Iran
    پست
    207

    هوش مصنوعی

    هوش مصنوعی یا AI مخفف Artificial Intelligence یکی از شاخه های برنامه نویسی هست. (اینجا فقط هوش مصنوعی در بازی ها توضیح داده میشه).

    در یک بازی هر شیء از نظر نوع کنترل دارای 2 خاصیت کلی هست:
    1- اشیایی که تحت کنترل بازیکن هستند.
    2- اشیایی که تحت کنترل کامپیوتر هستند.
    یک شی می تونه هیچ کدوم از این خاصیت ها، یکیشون یا هر دوشون رو داشته باشه.

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

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

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

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

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

    نکته 1: دو اسم هوش مصنوعی تکراری و تکمیلی من در آوردی هستند!
    نکته 2: هوش مصنوعی در یک بازی شامل یکسری قسمت ها و الگوریتم های پایه هست که با ترکیبی از اون ها میشه کار هایی که ذکر شد رو انجام داد که در مراجع و کتاب های هوش مصنوعی موجود هست.

    از اونجا که اطلاعات کافی در مورد هوش مصنوعی و منابع اون ندارم، انتخاب منبع شروع رو به خودتون واگذار می کنم. این صفحه لیستی از کتب هوش مصنوعی برای بازی هست.
    آخرین ویرایش به وسیله hi.alir : یک شنبه 08 اسفند 1389 در 21:54 عصر

  15. #15
    کاربر تازه وارد آواتار vice_city
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    خرم آباد
    پست
    83

    نقل قول: آیا یک مبتدی هستید؟

    این لیست (تقریبا) تمام موتورهای بازی با جزئیاتشونه.گفتم شاید به درد بخوره:
    http://www.devmaster.net/engines/lis...10&fid=5&sid=0
    موتور Kochol هم در این لیست هست.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •