ဒီေဆာင္းပါးမွာ Total Gameplay Studio မွထုတ္လုပ္တဲ့ Santa Talking ဆိုတဲ့ mobile app ေလးကို ကြၽန္ေတာ္တို႕ ဘယ္လို တည္ေဆာက္ခဲ့တယ္ဆိုတာ ကို တင္ျပခ်င္ပါတယ္။ Santa Talking ဆိုတာ Talking Tom လို graphic နဲ႕ animation အသားေပး entertainment app တခုျဖစ္ပါတယ္။ ဒီ app ေလးကို ကစားတဲ့ နည္းကေတာ့ touch screen ရဲ႕ hotspot ေနရာေတြကို ထိေတြ႔လိုက္မယ္ဆိုရင္ Santa ကတုန္႔ျပန္တဲ့ animation ေလးေတြ ျပေပးမွာ ျဖစ္ပါတယ္။ စာ႐ုိက္ထည့္လိုက္မယ္ဆိုရင္လည္း Santa က AI သုံးျပီး စကားျပန္ေျပာမွာ ျဖစ္ပါတယ္။ Joke ဆိုတဲ့ ခလုပ္ကို ႏွိပ္မယ္ဆိုရင္ေတာ့ အသင့္ထည့္ထားတဲ့ Joke ေပါင္း ၅၀၀ ထဲက random ျပန္ေျပာျပမွာ ျဖစ္ပါတယ္။

ST မွာ အဓိကက်တဲ့ technical challendge ေတြကေတာ့ ႐ုပ္ပုံနဲ႕ animation ေတြကို အလွပဆုံး ျဖစ္ေအာင္ ပုံေဖာ္ဖို႕၊ Animation data ေတြကို size အေသးငယ္ဆုံး ျဖစ္ေအာင္ ခ်ဳံ႕ဖို႔ရယ္၊ Text to Speech လို႕ေခၚတဲ့ စာေၾကာင္းတေၾကာင္းကို ကြန္ျပဴတာက အသံထြက္ဖတ္ျပဖို႕ေတြပဲ ျဖစ္ပါတယ္။

ဒီ App ကို iPhone နဲ႕ Android ႏွစ္မ်ိဳးလုံးမွာ ထုတ္လုပ္ခ်င္ပါတယ္။ ဒီအတြက္ program တခုထဲကို language ႏွစ္မ်ိဳးနဲ႕ ႏွစ္ခါျပန္ေရးမဲ့အစား Marmalade လို႔ေခၚတဲ့ SDK ကိုသုံးဖို႕ ဆုံးျဖတ္လိုက္ပါတယ္။ Marmalade ဟာဆိုရင္ multiple platform ကို export ထုတ္ႏိုင္ျပီး၊ သူ႔ရဲ႕အားသာခ်က္ကေတာ့ ARM assembly တိုက္႐ုိက္ထုတ္ေပးတာ ျဖစ္တဲ့ အတြက္ native အတုိုင္း performance ရေစမွာ ျဖစ္ပါတယ္။ သူ႔ရဲ႕ လိုင္စင္ေၾကးကေတာ့ ေဒၚလာ ၅၀၀ ေတာင္ ေပးရျပီး၊ အလုပ္တခုကို ႏွစ္ဆ လုပ္ရတာထက္စာရင္ တန္တယ္လို႕ပဲ သတ္မွတ္ျပီး၊ Marmalade ကိုသုံးဖို႕ ဆုံးျဖတ္လိုက္ပါတယ္။

အဓိကက်တဲ့ ႐ုပ္ထြက္အပိုင္းမွာေတာ့ Talking Tom ထက္ပိုေကာင္းတဲ့ quality မ်ိဳး ကြၽန္ေတာ္တို႕ ဖန္တီးျပခ်င္ခဲ့ပါတယ္။ ဒီအတြက္ animation ေတြက Talking Tom ထက္ပို "အသက္" ပါရမယ္။ Talking Tom ဟာ ျဖတ္ေတာက္ထားတဲ့ animation အစိတ္အပိုင္းေတြကို အသုံးျပဳထားပါတယ္။ Animate လုပ္ရမဲ့ အပိုင္းက ေခါင္းပိုင္းဆိုရင္ ကိုယ္လက္ေတြကို ပုံေသထားပါတယ္။ ဒါဟာ resource ေခြၽတာရာ ေရာက္ေပမဲ့၊ အသက္ပါမႈ အပိုင္းမွာအနဲငယ္ အားနဲႏိုင္ပါတယ္။ ကြၽန္ေတာ္တို႔ဟာ full body animation ကိုအျမဲတမ္း ျပေနခ်င္ပါတယ္။ ျငိမ္ေနရင္ေတာင္ Santa ကို နဲနဲေလး လႈပ္ရွားျပေနေစခ်င္တယ္။ ဒါမွ Santa ဟာ ဓာတ္ပုံတခုထက္၊ လႈပ္ရွားအသက္ဝင္ေနတဲ့ character အျဖစ္ ပိုမို ႐ုပ္လုံးၾကြလာေစဖို႕ ရည္ရြယ္ပါတယ္။ ေနာက္ျပီး ပိုျပီး ၾကည့္လို႕ေကာင္းဖို႕ mobile devices ေတြရဲ႕ retina display technology ကိုအသုံးျပဳဖုိ႔ ဆုံးျဖတ္လိုက္ပါတယ္။ Retina display ဟာဆိုရင္ ၃ လက္မေလာက္ရွိတဲ့ screen ထဲကို 960 pixels ေလာက္ဖိသိပ္ထည့္ထားတာမို႕ ၾကည့္ရတာ အလြန္ၾကည္လင္ ျပတ္သားေနမွာ ျဖစ္ပါတယ္။ ၾကည့္လို႕ ေကာင္းေပမဲ့ resource အားျဖင့္ ႏွစ္ဆေလာက္လိုမွာဆိုေတာ့ ကြၽန္ေတာ္တို႔ ၂ ဆေလာက္ ပိုျပီး optimised လုပ္ဖို႕ လုိပါလိမ့္မယ္။

ပထမဆုံး Santa ရဲ႕ လိုခ်င္တဲ့ size ကို 3D software ထဲကေန render ခ်ၾကည့္လိုက္ပါတယ္။ အားပါး size က 600x800 ေတာင္ ရွိပါတယ္။ ဒါဟာ frame တခုထဲက ပုံတပုံပါ။ Animation တခုအတြက္က ပုံ ၂၀ ပါ (30 FPS ရဖို႕ ပုံ ၃၀ လိုေပမဲ့၊ ဒီေနရာမွာ resource ေခြၽတာတဲ့ အေနနဲ႕ ပုံ ၂၀ စာပဲ ထုတ္လိုက္ပါတယ္၊ animation ကေတာ့ smooth သိပ္မျဖစ္ေတာ့ပါ)။ Animation တခုစာ ပုံ ၂၀ ကို memory က 70MB ေတာင္ လိုပါတယ္။ Santa app မွာ စုစုေပါင္း animation က ၂၂ ခုေတာင္ ရွိပါတယ္။ ဒီေတာ့ စုစုေပါင္း 1.5 GB VRAM ေတာင္ လိုမွာ ျဖစ္ပါတယ္။ Mobile device တခုရဲ႕ share VRAM က  50MB မေက်ာ္ဖို႕ လိုပါတယ္။ ဒါထက္ ပိုအေရးၾကီးတဲ့ အခ်က္က load time ပါ။ 600x800 ေလာက္ရွိတဲ့ ဖိုင္တခုကို load ေခၚတင္ဖို႕ဆိုရင္ load time က ၂-၃ စကၠန္႔ေလာက္ ရွိပါတယ္။ Animation တခုကို load လုပ္ဖို႔က ၁ မိနစ္၊ စုစုေပါင္း app ကို မ run ခင္ ၂၂ မိနစ္ ထိုင္ေစာင့္ရမယ္။ ဒါဘယ္လိုမွ မျဖစ္ႏိုင္ပါဘူး။

ဒီအတြက္ ကြၽန္ေတာ္တို႕ အေလ်ာ့ေတာ့ မေပးပါ၊ နည္းေတြ မ်ိဳးစုံ စမ္းသပ္ခဲ့ပါတယ္။ ပထမဆုံး Texture Atlas ဆိုတဲ့ နည္းပညာကို သုံးျပီး ပုံထဲက ပိုေနတဲ့ "ေဘးသား" ေတြကို ျဖတ္ေတာက္လိုက္ပါတယ္။ ေနာက္ျပီး ပုံဖိုင္တခုခ်င္းစီထက္ ပုံဖိုင္ေတြ စုထားတဲ့ ဖိုင္အၾကီးတပုံက ပိုျပီး efficient ျဖစ္ပါတယ္။ ဒါေပမဲ့ file size သိပ္ၾကီးျပန္ရင္လည္း VRAM က မႏိုင္ပါ။ ဒီအတြက္ ပုံမွန္ေတာ့ 1024x1024 texture ကိုသုံးပါတယ္။ ဒါေပမဲ့ Santa ရဲ႕ size ဟာ ၾကီးလြန္းျပီး 1024x1024 ဆိုရင္ ပုံက ၁ ပုံပဲ ဆန္႔ပါတယ္။ ဒါေၾကာင့္ 2048x2048 texture ကိုသုံးလိုက္ပါတယ္။ ဒီအတြက္လဲ Texture Atlas ကိုသုံးျပီး ပုံေတြကို ေပါင္းျပစ္လိုက္ပါတယ္။ ဒါဆိုရင္ animation တခုကို ပုံဖိုင္ ၂၀ ကေန ၅ ဖိုင္ေလာက္ပဲ က်န္ပါေတာ့တယ္။

အားလုံးေပါင္း size က 1.5 GB ေတာင္ ရွိတာမို႕ mobile device ေပၚမွာ ဘယ္လို႔မွ မဆန္႔ႏိုင္ပါဘူး။ ဒီအတြက္ animation တခုကို play လုပ္မွ လိုအပ္တဲ့ ပုံကို load လုပ္ျပီး ျပတဲ့ real-time texture loading ကိုသုံးရပါမယ္။ ဒါေတာင္ animation တခုကို 50MB ဆိုတာ မ်ားလြန္းေနပါေသးတယ္။ ဒီေတာ့ animation texture ရဲ႕ size ကို ေလ်ာ့ဖို႕ ၾကိဳးစားရပါေတာ့တယ္။ ပထမ စမ္းသပ္ခဲ့တာေတာ့ PNG 8-bit compression ပါ။ Color Quantinizer tool သုံးျပီး PNG 8-bit compression ျဖစ္ေအာင္ ခ်ဳ႕ံျပစ္လိုက္ပါတယ္။ alpha value အတြက္ PNG မွာ 1024 ေပါင္းထည့္လိုက္တယ္။ Animation တခုကို 5MB ေလာက္ထိ က်ဳံ႕သြားတယ္။ သတင္းေကာင္းလား? Animation တခုရဲ႕ load time က ၂-၃ စကၠန္႔ ေလာက္ၾကာပါတယ္။ သာမန္အခ်ိန္မွာ သိပ္ ျပသနာ မရွိေပမဲ့ Santa app မွာကစားသူက Santa ကို တို႕ထိလိုက္ရင္ စကၠန္႔မလပ္ ခ်က္ခ်င္း တုန္႔ျပန္ဖို႔လိုတယ္ ဒီအတြက္ ၂-၃ စကၠန္႔ဆိုတာ သိပ္မ်ားတယ္။ ၁ စကၠန္႔ဆိုတာေတာင္ လက္မခံႏိုင္ပါဘူး။ load time ဟာ စကၠန္႔ဝက္ထက္ မပိုရဘူး။ ဒီေတာ့ ျပန္စဥ္းစားအုန္း ေနာက္ထပ္ နည္းလမ္းအသစ္။

ဒီအတြက္ PVRTC ဆိုတဲ့ real-time texture compression ကိုသုံးၾကည့္လိုက္တယ္။ PVRTC ဟာ OpenGL ရဲ႕ default support လုပ္ထားတာ မဟုတ္ပဲ၊ extension ျဖစ္တဲ့အတြက္ သုံးရတာ အႏၲာရယ္မ်ားပါတယ္။ ေကာင္းတဲ့ အခ်က္ကေတာ့ decompress ကို texture render စလုပ္မွ real-time decompress လုပ္တဲ့အတြက္ file size ခ်ဳံ႕တဲ့အတိုင္း memory ေပၚမွာလည္း ခ်ဳံ႕ေနမွာ ျဖစ္လို႕ memory စားသက္သာတာ ျဖစ္ပါတယ္။ ဒီအတြက္ စမ္းသပ္ၾကည့္လိုက္ပါတယ္။ Texture ေတြကို PVRTC compressor ထဲျပစ္ထည့္ျပီး ခ်ဳံ႕ျပစ္လိုက္တယ္။ Animation ဖိုင္တခုကို 12 MB ေလာက္ရွိပါတယ္။ 8-bit PNG ထက္ ၂ ဆေလာက္မ်ားတယ္။ ဒါေပမဲ့ load time ဟာ အရမ္းျမန္ပါတယ္။ PNG လို loading လုပ္ခ်ိန္မွာ decompress လုပ္ေနရတာ မဟုတ္တဲ့အတြက္ 12MB ရွိတဲ့ animation တခုဟာ စကၠန္႔ဝက္ ေက်ာ္ေက်ာ္နဲ႕ တက္လာပါတယ္။ ဒါေၾကာင့္ hardware texture compression သာ တခုတည္းေသာ နည္းလမ္းအျဖစ္ ေရြးခ်ယ္လိုက္ပါတယ္။

အပိုင္း-၂ ဆက္ရန္...

Santa Talking ကို အခမဲ့ download လုပ္ႏိုင္ျပီ ျဖစ္ပါတယ္။

iPhone အတြက္ AppStore လိပ္စာ

http://itunes.apple.com/us/app/santa-talking-hd/id587399860

Android အတြက္ Play Store လိပ္စာ

https://play.google.com/store/apps/details?id=com.kulfun.santatalking

Views: 149

Tags: OpenGL, marmalade, mobile

Comment

You need to be a member of MyanmarITPro - A Social Network for Myanmar IT Professionals to add comments!

Join MyanmarITPro - A Social Network for Myanmar IT Professionals

© 2014   Created by Ko Chit.

Badges  |  Report an Issue  |  Terms of Service