* یکمی دیر شد ولی بلاخره این قسمت رو هم نوشتم :n02:
قسمت 7 :
همانگونه که این فریم ورک از کارایی بالایی برخوردار است به طبع نیز دارای مشکلاتی جدی نیز می باشد.
در ابتدای شروع این تاپیک نیز به این نکته اشاره کرده ایم که MonoGame یک پورت از فریم ورک XNA شرکت مایکروسافت می باشد . بنابراین به طبع اکثر ویژگی های پدر خود را نیز به ارث خواهد برد.
اگر چه مشکلات عمده فریم ورک MonoGame که هنوز هم در حالت توسعه می باشد در نسخه های متعدد که تا کنون ارائه میشود برطرف شده ولی هنوز به خاطر وابستگی به XNA برخی از محدودیت ها در آن به اسانی مشاهده می شود.
یکی از این مشکلاتی که به این قسمت از اموزش ها نیز ارتباط دارد مربوط به بخش ساخت Content و پکیج گیری آن به سبک خود فریم ورک جهت استفاده و امنیت آن می باشد.
سابقا در xna شیوه content managment ای به صورت طبقه بندی کردن فایل ها و سپس تغییر فرمت آنها در قالب پسوند XNB می باشد که در بخش های قبلی مورد بررسی قرار گرفت .
متاسفانه با قطع شدن پشتیبانی مایکروسافت از XNA علاوه بر عرضه نشدن این فریم ورک پشتیبانی آن نیز در ویندوز 8 و ویژوال استدیو 2012 نیز تقریبا قطع شده و اگر می توان آن را با ترفند هایی بر روی نسخه های بالاتر نصب کرد اما به واقع ویندوز 8 محدودیت های بسیاری را ایجاد خواهد کردکه البته چاره این مشکل در اینجا استفاده از پورت های xna نظیر همین MonoGame می باشد .
در XNA ساختار مدیریت Content ای وجود دارد که همانند توضیح قبل می توان مدیریت انواع منابع شامل تصاویر - صوت و غیره ... را در بازی بر عهده بگیرد و این مسئله مهمترین جزئ یک بازی می باشد بنابراین به طبع ما انتظار خواهیم داشت که MonoGame نیز همین امکانات را نیز داشته باشد اما متاسفانه در حال حاظر استفاده از این بخش در ویندوز 8 و ویژوال استدیو 2012 و نسخه ultimate ویژوال استدیو 2010 امکان پذیر نمی باشد . همچنین افزونه ان تا این نسخه هنوز به Xarmin Studio اضافه نشده که خود این امر می تواند برای محصولات تولیدی ما مشکل ایجاد کند . ( که البته با پیگیری هایی که به شخصه انجام دادم گفتن که توی نسخه جدید این مشکل رو برطرف می کنند) . برای رفع مشکل چندین راه پیشنهاد شده است :
1- استفاده از windows mobile sdk :
استفاده از این sdk به خاطر اینکه هنوز پشتیبانی مایکروسافت بر روی این پلتفرم قطع نشده می تواند امکان استفاده از بخش مربوط را برای ما فراهم کند .
2- استفاده از Content Manegment خود Xna :
می توان با استفاده از این قسمت در خود xna ابتدا منابع را به فرمت فریم ورک تبدیل کرد و سپس آن را در MonoGame استفاده کرد
اگر چه به این نکته اشاره شد که نمی توان به صورت مستقیم xna را بر روی ویندوز 8 نصب کرد اما می توان به صورت نصب اجزای آن به این قسمت دسترسی داشت
در حال حاظر به خاطر این باگ کار را بر روی ویژوال استدیو سویچ می کنیم
((همچنین یک راه ترکیب نیز وجود دارد که درصورت به وجود نیاوردن مشکل در بخش های اینده به آن اشاره خواهد شد))
برای این کار ما باید ابتدا xna را بر روی ویژوال استدیو نصب کنیم .
پس از نصب و جهت ساخت XNA Content Project مراحل زیر را انجام دهید :
ویژوال استدیو را اجرا کرده و یک پروژه جدید از نوع Windows Game ایجاد کنید
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
همانطور که در سمت راست پروژه نیز مشاهده می کنید ساختاری همانند MonoGame به وجود امده و این دلیل آن است که گفته بودیم این پورتی از Xna است .
حال باید منابع خود را وارد آن کنیم .
برای چندمین بار جدول منابع قابل پشتیبانی توسط این فریم ورک را تکرار می کنیم :
نقل قول:
فایل های سه بعدی : .x, .fbx
تصاویر و تکسچرها : .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, .tga
اصوات : .xap (an XACT audio project), .wma, .mp3, .wav
فونت : .spritefont
و همچنین افکت ها : Effects
جهت انجام این کار فایلی را در نظر می گیریم .
به عنوان مثال فایل زیر :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در محیط ویزوال استدیو و پروژه windows Game فریم ورک Xna در سمت راست بر روی windowsGame4content در شکل زیر راست کلیک کرده و پوشه جدیدی با نام دلخواه مثلا (Content) ایجاد کنید
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حالا باید فایل خود را وارد این پوشه کنیم . بر روی پوشه راست کلیک کرده و سپس از طریق کلیک بر روی گزینه شکل زیر و یا فشردن کلید های shift + alt + a فایل فوق را وارد کنید .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بر روی فایل کلیک کنید در قسمت Properties آن می توانید مشاهده کنید که گزینه های متعددی وجود دارد که از طریق ان ها می توانید نوع کامپایل و پکیج شدن فایل منبع خودتان را تعیین کنید به عنوان مثال در فایل فوق من Content خود را بر روی Texture تعیین کردم .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توجه کنید که دو گزینه فوق تنظیماتی جهت وارد کردن منابع و همچنین نوع پردازش آن ها در بازی است . که باید تنظیم ان ها برای بازی مورد توجه قرار گیرد . (بررسی بیشتر گزینه های این بخش در قسمت های اینده)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سپس با استفاده از Build > Build Solution
و یا گزینه ctrl + shift + b پروژه را یک باز از اول Build کنید .
حالا با رفتن به مسیر [PHP] [XNASolutionDirectory]/[XNAGameDirectory]/bin/x86/Debug/Content[/PHP] می توانید مشاهده کنید که فایل شما با نام Arrow.xnb ایجاد شده است .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
* مسیر پیش فرض ویژوال استدیو برای ذخیره پروژه ها : C:/Users/[Username]/Documents/Visual Studio 2010
حالا باید این پکیج را وارد MonoGame کنیم .
پروژه جدیدی از نوع MonoGame Windows OpenGl ایجاد کنید .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سپس بر روی پوشه Content خود راست کلیک کرده و پس از انتخاب گزینه Add > Add Existing فایل Arrow.xnb که در xna و پوشه مربوط به آن ساخته شده را وارد کنید .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توجه داشته باشید که برای وارد کرد آن نیاز است تا در پنجره انتخاب فایل نوع فایل را All File انتخاب کنید .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
پس از وارد کردن آن بر روی فایل وارد شده کلیک کرده تا تنظیمات آن در سمت راست و پایین صفحه نمایش داده شود.
سپس Build Action آن را بر روی Content و Copy to Output Directory آن را بر روی Copy Always قرار دهید
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سپس پروژه را یک بار Build کرده تا فایل به پوشه پروژه شما منتقل شود .
با استفاده از این کار ما توانستیم فایل را وارد MonoGame کنیم . اکنون باید از آن استفاده کنیم
در بخش قبل با چگونگی استفاده از یک تکسچر اشنا شدید . اکنون دوباره آن مراحل را برای فایل فوق تکرار می کنیم .
متغییری از نوع Texture2d با نام Arrow ایجاد کنید . ما این متغییر را از نوع سراسری تعریف می کنیم
[PHP]Texture2d Arrow;[/PHP]
حال در متد LoadContent تکسچر فوق را وارد می کنیم
[PHP]Arrow = content.load<texture2d>("Arrow")[/PHP]
سپس آن را بر روی سکانس بازی ترسیم می کنیم .
برای این کار کد ترسیم این تکسچر را به متد Draw کلاس Game خود اضافه می کنیم .
[PHP] spriteBatch.Begin();
spriteBatch.Draw(Arrow, new Rectangle(40, 100, 64, 64), Color.White);
spriteBatch.End(); [/PHP]
همانطور که مشاهده می کنید فایل شما به راحتی پکیج شده و در بازی قابل استفاده است .
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
پایان بخش 7