|

"این مقاله، قسمتی از مقاله Cloud Computing هست که بخاطر درخواستهای دوستان بصورت جدا در این قسمت آوردم"
با بازیهای کامپیوتری که آشنا هستین ؟! بازیهای کامپیوتری قبل از ارائه ی تکنولوژی ابری به نام OnLive ، یک نرم افزار به تمام معنای Client Side شناخته میشدن... برای پردازش بافتهای بازی (وTextures) به میزان زیادی RAM نیاز بود. برای پردازش فیزیک بازی، انیمیشنها، RagDoll، نورپردازی، سایه زنها (Shading)، سایه پردازی و Mapping های مختلف در طول بازی، برنامه نیاز شدیدی به منابع محاسباتی همچون CPU و صد البته GPU داشت. هر چقدر که کیفیت گرافیک، فیزیک و یا Resolution بازی بالاتر میرفت نیاز به موارد بالا بیشتر و بیشتر میشد. خلاصه دلم برات بگه ننه که رقابت شدیدی برای هر چه خفنتر کردن Gaming Rig یوزرها بوجود آمده بود.
دنیای بازی بر روی PC ها همینطوریه... هر روز یه RAM با پهنای باند ارتباطی بیشتر، قابلیت خنک کنندگی بهتر و یا Latency کمتر به بازار عرضه میشه، هر روز یه CPU با تعداد هسته های متعدد و یا Cache سطح یک و دوی بیشتر میاد تو بازار و مهمتر از همه میدونین چیه ؟
میدونستین در بین قطعات یک PC ، کارت گرافیک (که صرفا یا برای بازی یا برای کارهای گرافیکی استفاده میشه) جزو گرونترین و مهمترین قطعات هستش... یه کارت گرافیک جدید nVidia و یا ATI قیمتشون در چند ماه اول عرضه کمتر از 1 میلیون نمیشه !
همه ی اینها برای چی ؟! برای اینکه یوزرها یه نرم افزار Client Side به نام "بازی کامپیوتری" دارن که نیاز به اجرا شدن داره... مهم نیست که چقدر سیستمتون رو قوی میکنین چرا که 6 ماه بعد دوباره همه ی این سخت افزارها قدیمی و به درد نخور میشن و باید دوباره اقدام به خرید یه سری جدیدتر بکنین... در این بین تنها چیزی که عایدتون میشه، ضرره...
تغییر تکنولوژی یکی از مهمترین علل این ضرر هستش... براتون یه مثال میزنم : با سریهای قدیمی کارتهای گرافیکی nVidia آشنا هستین... سریهایی که با اعدادی مثل 4000، 5000 یا 9000 عرضه میشدن... یادمه که من قویترین کارت گرافیک سری 5000 یعنی 5800 Ultra رو در زمان عرضه ش خریده بودم... قیمتش خفن زیاد بود و بهتون نمیگم چقدر !
هنوز یه کمی از خرید من نگذشته بود (10 روز) که تکنولوژی سایه زنی (Shader) جدیدی به نام Pixel Shader 3.0 عرضه شد. Pixel Shader 3.0 قابلیتهای بسیار عالی برای سایه زنی و پیاده سازی انواع Mapping ها داشت و تصاویر حیرت انگیزی ارائه میداد ولی یه مشکل بزرگ استفاده ی کامل از اونرو با مشکل مواجه کرده بود : چونکه تکنولوژی جدیدی بودش، توسط کارت گرافیکهای قدیمی (حتی اگر کارت رو دیروز خریده بودی !) ساپورت نمیشد و میدونین چی جالب بودش ؟ سریهای بعدی کارتهای nVidia که با نام Geforce 6000 شناخته میشدن از این تکنولوژی پشتیبانی میکردن بدین ترتیب که حتی ضعیفترین کارتهای سری 6 (مثل Geforce 6200) میتونستن بازی ایی بهمراه تکنولوژی Pixel Shader 3.0 رو پشتیبانی کنن ولی کارت گرافیک غول و بی پدر مادری مثل Geforce 5800 Ultra ی من نمیتونست اینکار رو بکنه...
نتیجه این شد که باید مثل بدبخت بیچاره ها میرفتم میشستم توی فرومهای مختلف بازیها و مزخرفات بچه مایه دارایی که Geforce 6000+ داشتن رو میشنیدم و حسرت میخوردم !
"پسر ! بازی F.E.A.R خیلی توپه ! دلم برای همه ی بدبختایی که نمیتونن اجراش کنن *سرفه* محمد *سرفه* میسوزه !"
"آخی ! Geforce 5800 Ultra داری و نمیتونی F.E.A.R بازی کنی ؟! اشکال نداره من جاتو خالی میکنم !"
"ممد ! بچه ها اینجا برات یه خیریه زدن تا برای کارت جدیدت پول جمع بشه ! احتمالا تا دو سال دیگه میتونی F.E.A.R رو بازی کنی !"
و مزخرفاتی خیالی مثل همین چیزایی که بالا بود...
برمیگردیم به مطلب... هدف من از نوشتن این چند خط بالا درک شما از این مطلب بود که سخت افزارهای محاسباتی کامپیوتر در طول زمان قدیمی میشن و شما رو وارد یه چرخه ی بی پایان *خرید-فروش-خرید* دوباره میکنن که حاصلی جز ضررهای بسیار زیاد نداره...
شاید به ذهنتون برسه که "خب ! دنیای PC اینطوریه ! ولی همونطور که همه مون هم تازگیا خیلی شنیدیم دنیای PC به خاطر دنیای کنسولهای بازی همچون 360 , Wii و PS3 در حال جمع شدن هستش... پس به جای اینکه بریم PC بخریم، میریم یه کنسول میخریم، چند سال با همون کنسول بازی میکنیم، بعدش که یه کنسول جدید اومد قدیمیه رو میفروشیم و جدیده رو میگیریم..."
این تفکر از برخی لحاظ واقعا خوبه... چرا ؟! برای اینکه یه کنسول حداکثر 400 دلار پولش میشه، و شما 400 دلار پول میدین و برای چندین سال از بازیهای اون کنسول بهره میبرین تا وقتیکه اون کنسول توسط یه کنسول جدید عوض بشه... خب این چه مشکلی داره ؟
تا حالا واژه ی TechnoPhile رو شنیدین ؟ تکنوفیل به اسکلایی گفته میشه که خوره ی تکنولوژی هستن، مهم نیست که تلویزیون LCD، سه بعدی و 1080p که اخیرا خریده چقدر خوب هستش، چونکه به محض اینکه شرکتهایی مثل سونی، سامسونگ یا LG تبلیغی در مورد تلویزیونهای LED بیرون بدن، طرف بدون هیچ زمان تلف کردنی بدو بدو میره و تلویزیون جدیده رو میخره !
اصلا هم نمیپرسه که "حاجی ! اینی که خریدی اصلا چه فرقی با LCD یه داشت ؟! اصلا به دردت میخوره ؟ اصلا ارزش هزینه ش رو داشت ؟ آخه اسکل ! اصلا میدونی داری چه غلطی میکنی ؟! نه حاجی ! ولم کنین بذارین برم بزنم دهنشو سرویس کنم مرتیکه رو ! مگه پول علف خره که برمیداری همینطوری هدرش میدی بچه چاقال ! ول کن کتو ! "
***دوستان شرمنده ! من برم بزنم دهن این یارو رو سرویس کنم ببینم چی میگه... 5 دقیقه دیگه برمیگردم ! ***
*** 5 دقیقه بعد ! ***
*** آره چاقال ! هر وقت سیبیلات اینقده بلند شد که برن تو دهنت برگرد بیا ببین میتونی اینجا نفس بکشی یا نه ! چی ؟! رفیقات ؟! اونا رو هم بردار بیار ! اصلا بار کامیونشون کن... حالا بدو برو پیش مامانی بگو جای کبودیای روی ***ت یخ بذاره ! بدو فنچول !***
شرمنده ی همه ی دوستان ! من وقتی آدم بی وجود میبینم که خودش اینقده مرد نیست بیاد جلو، دعوا کنه، بعدش هم بره پی کارش خیلی شاکی میشم ! معلوم نیست مردونگی اینا رو باید ببینیم یا مردونگی رفقاشون رو ! خلاصه، شرمنده به خاطر خراب شدن بحث... همونطور که داشتم میگفتم TechnoPhile یکی از امراض دوران جدید (دوران ما) هستش که یکی از عوامل شکل دهنده ی اصلیش پول و پله ی زیاد و زندگی بی هدف و شناخت هستش...
حالا که درس دینی و روانشناسیمون تموم شد برمیگردیم به Cloud !
میخواستیم در مورد مشکل کنسولها صحبت کنیم... تکنوفیلها بازه ی گسترده ایی از خریداران کنسولها رو تشکیل میدن ولی جالبه بدونین که این افراد وابستگی بیشتری به PCشون دارن تا کنسولشون ! چرا ؟ برای اینکه کنسول در سال اول عرضه ش یه سخت افزار محاسباتی قوی داره و بازیهاش از لحاظ فنی و گرافیکی میتونن با بازیهای PC رقابت کنن... بعد از یک سال این سخت افزار هر چقدر هم که قوی باشه شروع به قدیمی شدن میکنه و اینطور میشه که میبینین بازیهایی که در سال 2001 برای PS2 عرضه میشدن از لحاظ گرافیکی خیلی خفن تر از بازیهای PC بودن ولی وقتی 4 سال جلو میاین و اونوقت میخواین تفاوت بازیهای PS2 و PC رو بسنجین، از ضعیف بودن گرافیک PS2 در برابر PC شگفت زده میشین !
پس هر دو سیستم یه ضعف بزرگ دارن : Up To Date نگه داشتن یک PC هزینه بر هستش و در طرف دیگر کنسولهای بازی با اینکه هزینه ی خرید اولیه دارن، در طول زمان قدرت گرافیکی شون رو به نقصان میره...
شرکتهای کنسول سازی میتونن تا حدی این مشکل رو برطرف کنن ولی این مشکل با ساختارهای کنسول امروزی هیچوقت برطرف نمیشه... وقتیکه XBOX عرضه شده بود، مایکروسافت اینقده چرت و پرت اضافی (Peripheral) براش عرضه کرد که منتقدین شاکی شدن و گفتن که "اصلا چرا مایکروسافت به XBOXش یه PC مخصوص بازی نمیگه ؟ این دستگاه هیچکدوم از مشخصات کنسولها رو نداره ! نه CPUش مخصوص بازی هستش و هم اینکه اینقده چیزهای جدید برای چسبوندن بهش ارائه شده که خیلی شبیه یه PC کردتش !" از طرفی هم PS3 ساختاری داره که میتونین درست مثل یک PC بر روش سیستم عامل نصب کنین. سیستم عامل Yellow Dog لینوکس به همین خاطر معروف شد.
از منظری دیگه هم سونی با ارائه ی CPU ی قدرتمند و برداری به نام Cell بر روی PS3 سعی کرد مشکل "ضعیف شدن کنسول در طول زمان" رو حل کنه ولی...
Cell یه CPU هشت هسته ایی بود که 7 تا از SPU هاش (Synergistic Processing Unit) قابلیت محاسبه داشتن و SPU آخرش بعنوان زاپاس کنار گذاشته شده بود. این CPU برخلاف اکثر CPU های دوران ما (حتی CPU های امروزی) یک CPU برداری (Vector Processor) بودش که بر اساس معماری Power شرکت IBM کار میکرد.
برای اطلاعات بیشترتون بگم که CPU های برداری میتونین پردازش رو بر روی آرایه ایی از اطلاعات اعمال کنن در حالیکه اغلب CPU های دیگر اسکالر (Scalar) هستن و پردازش رو در یک آن میتونن فقط بر روی دو داده (یا یک داده) اعمال کنن... CPU های برداری خوراک محاسبات اعشاری (مثل کارهای گرافیکی) هستن و قدرت بسیار بالایی دارن...

Cell در میان دو انگشت که به وضوح میشه 8 تا SPUش رو با رنگهای سبز نیلی تشخیص داد.
سونی CPUیی برای کنسولش ارائه داد که امیدوار بود تا چندین سال جواب تکنوفیلها رو بکمک قابلیت محاسباتی خفنش بده... ولی یه مشکلی بودش : ساختار کار با این CPU آنقدر پیچیده و سخت هستش که بازیهایی که در سال اول برای PS3 عرضه شدن هیچکدومشون نتونسته بودن از قابلیتهای بسیار Cell کمک بگیرن ! در واقع برنامه نویسها به زمان زیادی برای همسان شدن با SDK مربوط به PS3 نیاز داشتن و همین باعث شد که درک و پیاده سازی درست و حسابی این CPU هم نه تنها زمان ببره، بلکه با گذشت 3 سال از عرضه ی PS3، هنوز هم تمامی قابلیتهای Cell به چالش کشیده نشدن... برای درک عظمت Cell میشه به این موضوع اشاره کرد که بعد از چندین سال از عرضه ش، تازه CPU های بیش از دو هسته ایی Intel و AMD دارن برای PC ها مد میشن !
خب ! اینایی که گفتم خوب بودش ! پس مشکل چیه ؟
مشکل اینه که یوزرها این وسط قربانی شدن ! یوزرهایی که گول تبلیغات عظیم سونی در مورد قدرت محاسباتی Cell رو خورده بودن، حداقل یکسال و نیم باید صبر میکردن تا بتونن قدرت بالای محاسباتی این کنسول رو در بازیهاشون لمس کنن...
پس در هر دو مورد PC و کنسول به این نتیجه رسیدیم که داریم وقت و هزینه رو هدر میدیم... حالا میرسیم به جایی که Cloud Computing این مشکل رو حل میکنه...
میدونم که اطلاعات به درد نخور زیادی رو مجبور بودین از اول مقاله تا بحال بخونین... اطلاعاتی که بعضیشون هیچ ربطی به Cloud Computing نداشتن و حتی اگر گفته هم نمیشدن، ضرری وارد نمیکردن... ولی این شیوه و روش من برای ارائه ی کامل یه مطلب هستش، به نظر من این اطلاعات "به درد نخور اضافی" نه تنها به درد بخور هستن بلکه به شما یه دید فراتر از موضوعی که دارین درباره ش میخونین میده...
خیلی مهمه این رو درک کنین که در IT تمامی موضوعات در نهایت به هم مرتبط هستند و اگر بتونین ارتباط بین اونها رو کشف کنین (هر چند اگر برخیشون به نظر به درد نخور بیان) به شما درکی میده که اونوقت میتونین در هر موضوعی ازش استفاده کنین.

یکی از کامیکهای Penny Arcade که به موضوع عدم شناخت افراد با Cloud Computing میپردازه.
حالا که میخوام به Cloud بپردازم، قبلش بهتون میگم که قراره چطور باهاش آشنا شین... دیدین ننه باباهای بی مسئولیت وقتی میخوان به بچه شون شنا یاد بدن، بدون هیچ آشنایی قبلی یه دفعه بچه ی ننه مرده رو برمیدارن مثل گونی سیب زمینی پرت میکنن وسط استخر ؟!
اینجا هم من میخوام بدون هیچ توضیح اولیه ایی شما رو پرت کنم وسط استخر... هنوز به خودتون نیومدین میبینین که دارین در مورد Cloudیی میخونین، که هنوز یه توضیح درست براش ارائه نشده ! البته ناراحت نباشین ! توضیح هم به موقعش میرسه ! شروع میکنیم :
در طول مقاله به این نتیجه رسیدیم که تلاش برای اول موندن در داشتن یه سخت افزار محاسباتی خفن (مثل GPU) نتیجه ایی جز ضرر دیدن نداره... یه شرکت مایه دار به نام OnLive در آمریکا متوجه این موضوع شد و نشست فکر کرد.
این شرکت گفت که : " اگر من بتونم بازی که یوزر میخواد انجام بده رو در شرکت خودم و به کمک سرورهای پر قدرتم Render کنم و بعدش تصویر رندر شده رو برای یوزر بفرستم، تنها چیزی که یوزر بهش نیاز داره یه مانیتور با یه کیبرد و موس خواهد بود ! "
صبر کن بینم ! چی شد ؟!
" یعنی تو داری میگی میشه یه بازی مثل Crysis با اون گرافیک خفن رو فقط با داشتن یه مانیتور، یه کیبرد، یه ماوس و صد البته یه ارتباط اینترنت سرعت بالا با بالاترین جزئیات گرافیکی انجام داد ؟! "
آره ! من دارم همین رو میگم !
ببینین ! بازیهای خفن با نیاز به محاسبات گرافیکی و غیر گرافیکی بالا، ما رو مجبور میکردن که در خونه ی خودمون و بر روی کامپیوتر شخصی خودمون یه عالمه سخت افزار گرون قیمت نصب کنیم... چرا ؟! تا این سیستم بتونه صحنه های پر جزئیات بازی رو در آن Render کنه و به ما نمایش بده... بدین حالت که اگر من ماوس رو یه کم حرکت بدم، نشونه ی اسلحه م توی بازی هم به همون سرعت حرکت داده بشه...
بازیهای کامپیوتری یه تفاوت بنیادی با انیمیشنهای از پیش رندر شده (مثل Toy Story 3) دارن و اون هم اینه که بازیهای کامپیوتری به صورت Real-Time باید رندر بشن و نه Pre-Rendered... این نیاز به رندر آنی، نیاز دیگری به نام سخت افزار خفن رو ایجاد میکنه تا این سخت افزار بتونه به کمک قدرت بالای محاسباتش هر صحنه ی بازی رو سریعا به ما نشون بده.
شرکت OnLive اومده و امکان انجام این محاسبات رو از خونه ی شما، به یکی از شعبه هاش منتقل کرده... در این شعبه ها محاسبات خفن گرافیکی و غیرگرافیکی انجام میشن تا صحنه ی مورد نظر شما رو رندر کنن... سپس این تصویر رندر شده مثل فیلمی که روی اینترنت Stream میکنین، بر روی مانیتور یا تلویزیون شما نمایش داده میشه !
این یعنی فوق العاده !

همونطور که در تصویر میبینین، بازی Crysis با تنظیمات گرافیکی Medium از طریق OnLive در حال اجرا هستش.
باید توی موضوع ریزتر بشیم :
ببینین... یه بازی با رزولوشن 720p یا همون (720 * 1280) در هر تصویرش تقریبا 1 مگاپیکسل حضور دارن (اصلش 0.92 مگاپیکسل هستش) و اگر هر کدوم از این پیکسلها بخوان با ساختار رنگی 32 بیتی نمایش داده بشن، اونوقت طبق محاسبات من مانیتور یا تلویزیون شما در هر ثانیه باید به صورت خام 3.68 مگابایت داده رو برای نشون دادن پردازش کنه. پهنای باند 3.68 مگابایت بر ثانیه برابر یه اینترنت 30 مگابیت در ثانیه هستش و شما خودتون میدونین که چنین اینترنتی در ایران قیمتش چقدره...
تا جایی که من میدونم، دانشگاه ما سرعت 50 مگابیت در ثانیه رو با قیمت تقریبی ماهیانه ی 50 میلیون تومان در ایران اجاره میکرد !
OnLive اومد و ادعا کرد که " اگر سرعت اینترنتتون تقریبا 5 مگابیت در ثانیه هستش (یعنی 0.625 مگابایت در ثانیه) اونوقت ما میتونیم سرویس OnLive رو براتون اجرا کنیم... و این کمتر از یه معجزه نبودش !
چرا معجزه ؟! برای درک این موضوع باید باز هم در ساخت و کار OnLive ریزتر بشیم :
برای استفاده از Onlive در ساده ترین حالت، تنها سخت افزاری که شما لازم دارین یه لپ تاپ یا یه کامپیوتر بسیار ارزان قیمت (بدون قدرت محاسباتی بالا... حتی کارت گرافیکش میتونه OnBoard هم باشه !) بهمراه یه اینترنت پرسرعت (نه پرسرعت 128 کیلوبیتی خز مخابرات ما ! یه اینترنت 5 مگابیتی !) هستش.
1. به کمک اینترنت به OnLive وصل میشین.
2. بازی مورد نظرتون رو انتخاب میکنین.
3. بازی بر روی سرورهای OnLive اجرا و رندر میشه (بازی درون ابر Onlive اجرا میشه)
4. شما با کلیک کردن ماوس میخواین یه شلیک انجام بدین.
5. فرمان ارسالی شما به کمک اینترنت به ابر Onlive ارسال میشه.
6. ابر Onlive شروع به اعمال فرمان شما در بازی میکنه و سپس نتیجه ی نهایی در بازی رو به عنوان یه تصویر رندر شده از طریق اینترنت به شما ارسال میکنه.
7. تنها چیزی که شما میفهمین اینه که یه شلیک کردین و این شلیک در مانیتور به شما نمایش داده میشه درست مثل اینکه کامپیوتر خودتون داره بازی رو اجرا میکنه !
میدونین موضوع کی جالبتر میشه ؟! وقتیکه شما میتونین به کمک گوشی موبایلتون قویترین بازیها از نظر پردازشی (که حتی سیستمهای خانگی خفن هم نمیتونن کامل رندرشون کنن !) رو بازی کنین ! اونم با بالاترین کیفیت !

همونطور که میبینین OnLive با یک PC ، MAC و یا یه تلویزیون و Adapter مخصوصش قابل اجرا هستش.
باز هم ریزتر میشیم تا بفهمیم که تکنولوژی ابر داره چه معجزه ی خفنی میکنه !
برای اینکه تصویر رندر شده بتونه به شما منتقل بشه باید به کمک یه Encoding انکود بشه و برای شما ارسال بشه. دو مسئله ی خیلی مهم در این انتقال باید مورد توجه قرار بگیرن :
1. Latency یا سرعت ارتباط
2. Video Compression و یا میزان فشردگی تصویر ارسالی
سرعت ارتباط غالبا با پهنای باند تفاوت داره... فکر کنین که یه اینترنت 50 مگابیت دارین (این پهنای باندتون هستش) و میخواین یه دانلود رو شروع کنین... وقتیکه روی فایل مورد نظرتون کلیک میکنین، به جای اینکه دانلود سریع شروع بشه، میبینین که این عمل 4 ثانیه طول میکشه، بعد از 4 ثانیه دانلودتون با سرعت بالای 50 مگابیت شروع میشه... به این تاخیر در ارتباط Latency میگن که خیلی وقتها بسیار مهمتر از پهنای باند هستش بخصوص وقتیکه Upload هم به اندازه ی Download مهم هستش.
Video Compression به میزان فشردگی تصویر ارسالی به شما گفته میشه. اگر قرار باشه که تصویر ارسالی به شما اصلا کمپرس نشه اونوقت حتی اینترنت 5 مگابیت بر ثانیه ی آمریکایی ها هم کامل نخواهد بود... چرا که هدف اینه که تصویری بهمراه صدایی با کیفیت ولی با حجمی کمتر از 5 مگابیت در هر ثانیه به یوزر ارسال کنیم.
Encoding به متدی گفته میشه که برای فشرده کردن تصویر و صدای بازی رندر شده ازش استفاده میکنن... چیز عجیب غریبی نیست و مطمئنا شما باهاش آشنا هستین... MP3 که از دوران طفولیت شنیدین یه نوع Encoding هستش همونطوری که MPEG 1 و MPEG 2 هم Encoding های دیگر با مشخصات خاص خودشون هستند.
مثلا MPEG 2 برای فیلمای DVD استفاده میشه و MPEG 4 و زیرمجموعه هاش برای فیلمهای HD بر روی Blu-Ray مورد استفاده قرار میگیره (یاد HD-DVD بخیر !)
ابر محاسباتی OnLive باید درخواستها رو از یوزرها بگیره و به منابع درونیش اختصاص بده. این منابع وظیفه ی انجام محاسبات رو بر عهده دارن... هر وقت این محاسبات (رندر، تنظیم صدا و غیره) تموم شد، نتیجه ی نهایی به عنوان یه فایل تصویری به یوزر ارسال میشه. ابر باید این محاسبات رو کمتر از 80 میلی ثانیه (یعنی Latency ارتباط باید حداکثر 80 میلی ثانیه باشه) انجام بده وگرنه...
به نظرتون اگر ابر محاسباتی OnLive نتونه این محاسبات مهم و عظیم رو در کمتر از 80 میلی ثانیه انجام بده، چی میشه ؟! در اینصورت مغز شما میتونه این Latency بالا رو بعنوان "پایین اومدن سرعت اجرای بازی" و چیزی که بازیبازای حرفه ایی بهش Lag میگن شناسایی کنه...
هر وقت که سرعت پردازش تصویری کندتر از سرعت پردازش تصویر بر روی چشمان ما و تحلیلش بر روی مغز ما باشه، اصطلاح Lag زدن بازی مورد استفاده قرار میگیره و به نظر میاد که بازی داره گیر میکنه...
به همین خاطر (اهمیت سرعت محاسبات در ابر) شرکت OnLive مجبوره که از یه Encoding درست و حسابی برای انتقال تصویرش کمک بگیره... در برهه ی اول، اولین چیزی که به ذهن خودم رسید انکودینگ H.264 بودش (یکی از مشتقات MPEG 4) ولی متوجه مشکلی شدم.
تا حالا این فیلمهای درپیت 3GP رو روی گوشیتون اجرا کردین ؟! دیدین در صحنه هایی که حرکت زیاد هستش (اجسام زیاد اینور اونور میرن) کیفیت فیلم به گند کشیده میشه ؟ بعضی وقتا اینقده تصویر به هم میریزه که اصلا نمیشه گفت چی داره به نمایش در میاد ؟!
این نوعی از انکودینگ هستش که حالت پیشرفته ترش در MPEG 4 مورد استفاده قرار میگیره و طرز کارش به صورت ساده اینطور هست :
یک فیلم از تعدادی عکس تشکیل شده که پشت سر هم نمایش داده میشن. هر چقدر این فیلم بخواد با کیفیت تر بشه، عکسهایی که تشکیلش میدن باید کیفیت بالاتری داشته باشن و بدین ترتیب میبینیم که حجم فیلمهای با کیفیت تر بالاتر از حجم فیلمهای بی کیفیت هستش.
انکودینگ 3GP و یا H.264 دارای این ساختار هستن که درشون تلاش میشه با کمترین تغییر در تصویر فعلی، تصویر جدید رو بسازن... این مثال رو در نظر بگیرین : دارین یه سریال مزخرف ایرانی ماه رمضونی میبینین... همه تون با سریالهای ایرانی آشنا هستین : یه یارو یا نیم ساعت زر مفت میزنه یا اینکه یه آبجی شیلنگ رو باز کرده داره اشک میریزه و حرف مفت میزنه !
در این تصاویر دوربین حرکت نمیکنه و بدین ترتیب تصویر پشت زنه ساکن هستش پس نتیجه میگیریم که نیازی نیست در طول فیلم، عکسهایی که این قسمت فیلم رو تشکیل میدن همگی تصویر پشت سر زن رو داشته باشن و بدین ترتیب یه تصویر از پشت سر زن برمیرداریم و اونایی که اضافه هستن دیگه به دردمون نمیخوره... صورت زنه چی میشه ؟! انکودینگ سعی میکنه به کمک فریمهای بعدی و قبلی تصویر حاضر در صفحه، حدس بزنه که کجاها تغییر میکن... مکانهایی که قراره تغییر کنن رو جدید میکنه (مثل اشک و لبها) و مکانهای قدیمی رو بهشون دست نمیزنه...
این تلاش برای حدس زدن و دوباره سازی تصویر موجب میشه که در تصاویری که حرکت توشون زیاد هستش و با انکودینگهای با فشردگی زیاد فشرده شدن، یه نوعی در هم ریختگی و بدریخت شدن تصویر به وجود بیاد.

تصویر سمت چپ با انکودیگ MPEG 2 و تصویر سمت راست با انکودینگ MPEG 4 انکود شدن.
دو تصویر از لحاظ حجمی تقریبا یکسان هستند.
اینکه OnLive بتونه یه انکودینگ درست ارائه بده که نه تنها Compression درست و حسابی داشته باشه بلکه با Latency های مختلف هم بتونه به درستی سرویس بده یه چالش بسیار بزرگ برای شرکتش بود. اونا نمیتونستن از ساختار معمول MPEG 4 (همونی که از فریمهای آینده و گذشته برای درست کردن تصویر فعلی استفاده میکنیم) بهره ببرن چرا که برای استفاده از فریمهای آینده، ابر محاسباتی باید اطلاعات فعلی رو Buffer میکرد و این Buffering موجب بالا رفتن Latency ارتباط میشد (بازی با صددرصد Lag مواجه میشد).
این شرکت مجبور شد از نوع خاصی انکودینگ H.264 استفاده کنه که درش یک تصویر به 8 قطعه Stream جدا و غیرمرتبط تقسیم میشه، هر کدوم از این Stream ها توسط یک Encoder جدا انکود میشن و در نهایت به یوزر عرضه میشن، و مهمتر از همه اینه که بدونیم تمامی این اعمال در ابر باید کمتر از 80 میلی ثانیه رخ بدن...
چرا اینو گفتم ؟ برای اینکه میخوام بدونین که در محاسبات درون ابر و بصورت Real-Time و On-Demand شوخی نداریم... Cloud Computing های مختص محاسبات یه Microsoft Terminal Server نیستن که هر آبچاقالی که یاد گرفته Component ویندوز نصب کنه و Service هاش رو خاموش روشن کنه، بتونه پیاده سازیش کنه (منظورم با کسی نبودشا ! میخواستم روی موضوع تاکید کنم !)
قبل از اینکه این قسمت مقاله هم تموم بشه بذارین به یه موضوع مهم هم اشاره کنم : همونطور که در عکسهای بازی Crysis در بالاتر هم دیدین من اشاره کردم که بازی در حالت Medium اجرا شده... در واقع هنوز OnLive نمیتونه یه بازی بسیار پرجزئیات همچون Crysis Warhead رو به کمک ابرمحاسباتیش به طور کامل و در جزئیات Ultra (نه Medium) نشون بده... مهمترین مشکلی که برای OnLive در اینحالت پیش میاد بالا رفتن Latency هستش... همونطور که یادتونه گفتم 80 میلی ثانیه بیشترین مقداری هستش که میشه به عنوان مجاز برای Latency نام برد ولی جالبه بدونین که 80 میلی ثانیه برای برخی بازیهایی که نیاز به عکس العمل بسیار سریع دارن (مثل Call of Duty 4 که Latency میانگینش 66 میلی ثانیه هستش) هم زیاد هستش و به گفته ی مدیرعامل OnLive، شرکتشون در حال تلاش برای پایین آوردن این مقدار هستش.

منوی اصلی OnLive قبل از شروع بازی مورد نظرتون.
همونطور که بعدا خواهم گفت یک Cloud از عناصر مجزا و در عین حال کاملا مرتبط با هم تشکیل شده و هدف اصلیش (که موارد متعددی هستن) غالبا بر روی ارائه سرویسش (حالا هر چی) با سرعت و کارآمدی بالا هستش و هر کسی بدون مهندسی درست و حسابی ساختاری که میخواد ارائه بده و یا استفاده کنه، نمیتونه از ابر بهره ببره و یا اینکه پیاده سازیش کنه.
حالا که تا اینجا همراه من اومدین و یه برداشت ذهنی خوب ولی هر چند ناکامل از Cloud پیدا کردین بذارین یه تفال به Morpheus از تریلوژی Matrix بزنیم و ببینیم که شما دوست دارین این سفر رو با ما ادامه بدین یا نه :
I imagine that right now, you're feeling a bit like Alice… Tumbling down the rabbit hole… You take the blue pill, the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill, you stay in Wonderland, and I show you how deep the rabbit hole goes
خب... خسته شدین ؟ میخواین قرص آبی رو بردارین و بخورین ؟ انتخاب با خودتونه...
ولی اگه قرص قرمز رو برمیدارین، منتظر آشنا شدن با انواع مفاهیم تکنیکی و غیرتکنیکی Cloud Computing باشین... این کامیکی که در پایین میبینیم، درک فعلی ما از Cloud Computing هستش :

حتی هنوز هم یه توضیح واقعا کامل برای Cloud ارائه داده نشده و اونور آبیها هم باهاش مشکلات شناختی بسیاری پیدا کرده ن !
برای خواندن مقاله ی کامل Cloud Computing که شامل OnLive نیز هست بر روی دکمه ی ادامه در پایین کلیک کنین !
|
نظرات
از نظرتون ممنـــــــــــــــــــــــونم !
دركل ميتونم بگم مطلب خوبي بودچون دنبال اين جورمقاله اي بود بعضي ازمواردي كه ميخواستم توي اين مقاله بهش اشاره كرده بودي ولي اين ادامه مطلب ديگه چه صيغه اي ما توي ادامه مطلب چيزي نمي بينيم دوست داشتم خيلي بيشترازاينهابدونم .
البته دنبال يه مقاله انگليسي هستم!
درحال ممنون ازاطلاعاتتون شب خوبي داشته باشيدبدرووووووووووووووود (-:
مرسی از نظرت ولی اول بگم که این مقاله قدیمی هستش، برای مقاله ی جدید در مورد آنلایو باید این مقاله رو بخونی که در مورد Cloud Computing هستش :
http://www.cyberlone.com/articles-blog/network-related-articles/cloudcomputing
در قسمت دوم این مقاله کاملا توضیح دادم که OnLive چطور پیاده شده و چطور داره کار میکنه... اونو که بخونی کامل روشن میشی...
موفق باشی
ازت خیلی تشکر می کنم که یه همچین مقاله ی توپی رو گذاشتی.
در مورد این که یک تکنولوژی تو زندگی مردم تاثیر بذاره چند تا مساله رو باید در نظر گرفت. اول این که بستر ها ی پیاده سازی اون تکنولوژی فراهم باشه! که در این مورد نیست!!! فکر نکنم حتی 1% از مردم جهان ارتباط 1.5مگ مطمئن داشته باشن(البته منهای وزارت خونه های دنیا که کارشون بازی کردن نیست) دوم و مهمتر این که چقدر برای تعیین کننده های بازار سود داشته باشه. منظورم از تعیین کننده های بازار اون شرکت های هستن که با استراتژی های خودشون بازار رو تو مشتشون دارن که اینم خودت مفصل در مورد عکس العمل شرکت ها توضیح دادی.
در کل این به نفع همه از جمله تعیین کننده های بازار نیست.
هر چند که بعضی از شرکت ها مثل مایکروسافت با سیلور لایت خودش و ادوب با ایر خودش دارن سعی می کنن تو بازار مالتی مدیا تحت وب رقابت کنن ولی این جورایی که بوش میاد برای بازی های روی مرورگر دارن کار می کنن. مثلا موتور Unity با 3.5 مگ دانلود یه بازی رو می تونی در ابعاد کوچکتر تو مرورگر خودت بازی کنی. هر چند شاید فکر کنی که حرف من با بحث تو یه مقدار متفاوته و تو از های رندریگ صحبت می کنی و من از آنلاین گیمینگ اما احتمالش خیلی زیاده که تو آینده فلش پلیری دانلود کنی با حجم 50 گیگ بله 50 گیگ. و اونوقته که می تونی روی مرورگر خودت بازی های توپی رو بازی کنی.
هر چند که فلش پلیر الان داره روی کامپیوتر کلاینت اجرا می شه و از قدرت GPU برای رندریگ استفاده می کنه ولی هیچ چیز از آینده معلوم نیست با کم کم به وجود آمدن ویندوز آزور یا آژور هیچ بعید نیست فلش پلیری داشته باشیم که قسمتی روی کلاینت و قسمت های پرکیفیت تری روی سرور اجرا شوند.
ولی کلا از نظر عقل ناقص :whistle: خودم غیر منطقی به نظر میاد که ورودی موس و کیبورد و بقیه وسایل ورودی رو 30 بار در ثانیه به سمت سرور بفرستی و همش درست برسه و از اون ور هم فریم های درست و به جا برای تو فرستاده شن. احتمالا پیچیدگی کار صد برابر میشه!!!!
شاید هم منظورت رو خوب نفهمیدم و سرور فقط نقش یک رندرر قوی رو بازی می کنه. در هر صورت لیتنسی شبکه دهن بازی باز رو صاف می کنه :s برای یک بازی روون و با گرافیک عالی.
خوراک آر اس اس برای نظرات این مطلب