вступ
Тема портирования флеш-ігор на мобільні платформи з мінімальними змінами дуже цікавила мене, але обговорювалася в нашому суспільстві тільки побіжно, тому спробую розглянути її трохи докладніше, відштовхуючись від свого вкрай убогого, але вже досвіду.
Тому під катом - короткий звіт про збіжність однією з моїх ігор на iPhone.
В першу чергу, дозвольте представитися. Мене звуть Сергій, я живу в Києві і працюю в департаменті ІТ головного офісу одного з численних іноземних банків, що діють на території України. Флеш-іграми зацікавився, як і багато інших, випадково наткнувшись на статтю «Шлях інді» Вадима Старигіна і на короткий звіт про річну діяльності Джонні-К, за які їм дуже вдячний. До теперішнього моменту з задоволенням вчуся робити гарні ігри, а поки маю кілька нехитрих іграшок, з яких пара була спонсорувала. Мова піде про збіжність одного з них під iOS.
У двох словах про процедуру
Stack It Up!
Реєстрація в Apple
Але про всяк випадок я вирішив зареєструватися. Раптом, мовляв, стане в нагоді. Весь процес зайняв близько півтора тижнів. При реєстрації як жителю СНД довелося роздрукувати і заповнити від руки форму з платіжною інформацією, яку потім відправити факсом в США (ну їй-богу, як в якомусь ЖЕКу або поліклініці - отримати довідку на спеціальній формі, і обов'язково з трикутної печаткою) , однак далі в Apple відпрацювали досить швидко, зняли гроші з моєї картки, номер якої я вказав в цій самій папірці, і зааппрувілі мій обліковий запис в дев.центре.
Редизайн і оптимізація
Управління переробляти практично не довелося - буквально трішечки, замінивши штуки на кшталт «клацни по об'єкту на бічній панелі, а потім клацни там, куди він повинен впасти» на «перетащи об'єкт з бічній панелі туди, куди хочеш його покласти». Ніякі специфічні класи для роботи з сенсорним дисплеєм не стали в нагоді - стандартних mouse event'ов вистачило з головою.
Ось з графікою було гірше. Всі об'єкти векторні (в них там і елементів-то всього нічого - рот з парою зубів і трохи оченят, кожен з яких стежить за рухами миші), і їх отрисовка для ПК не складає проблем. А ось айфону довелося з ними важче.
По-перше, в настройках AIR for iOS можна вибрати що використовується роздільна здатність дисплея: стандартне або високе (retina display ж). У високому дозволі все виглядає навіть трохи краще, ніж на моніторі ПК (пушо крихітне і акуратне), але додаток сильно гальмує, і видає з усього одним-двома об'єктами на ігровому полі щось близько 10 FPS (не вимірюються, орієнтуюся по відчуттях) . А в стандартному дозволі будь-яка діагональ виглядала просто огидно. Про зазубрені грані повернутих під кутом прямокутників, здавалося, можна не просто порізатися, а просто-таки розкрити про них вени, не витримавши всього цього візуального жаху. Скріншотів того жаху немає - і добре. Плюс гальмує, коли на екрані накопичується 5-6 об'єктів.
Тому кожен об'єкт довелося переробляти в растр. Стандартна функція Flash «Convert to bitmap» сильно розмивала отримане зображення; копіювати в фотошоп і акуратно обкусивать вийшло значно якісніше.
Після растрирования ігрових об'єктів продуктивність помітно зросла, але була ще не такий, як хотілося б. Тут вже поліз оптимізувати код як міг (радіус кривизни рук вашого покірного слуги перевищує допустимі норми, тому написаний ним спочатку код жалібно плакав і благав про оптимізацію). І там ще багато чого потрібно правити. Але принаймні прибрав створення змінних всередині циклів, прибрав звідусіль зайві listener'и, і просто попросив гру не робити ніяких непотрібних дурниць стопицот раз в секунду.
З зберіганням даних проблем не виникло. Підтискається часом, я вирішив не загравати з SQLite, і обійтися звичайними SharedObject'амі. Не, нуачо. Працює? Працює. Чи не видаляється саме по собі? Чи не видаляється.
А зі звуком взагалі все було відмінно. Там навіть не довелося нічого чіпати. Все працювало і так (там і звуку-то - тільки музика)
Гра зараз очікує аппрува в AppStore - сподіваюся, все буде добре. Після аппрува із задоволенням поділюся з вами посиланням, джентльмени.
Начебто хотілося ще всякого написати - і вражень, і деталей, але, думаю, поки що вистачить цього - може, взагалі, шапками мене закидали, мовляв, вилізло тут зелене непоймі що і початок мудрувати, дядькам солідним розповідати, як гри програмувати. По-друге, я ж тільки вчуся програмувати, і тому ще дуууже мало знаю про хороше коді; з величезним бажанням хотів би почути поради старших товаришів на цю тему.
Але, все ж, які висновки я для себе зробив після того, як попрацював над цим портированием:- Намагатися спочатку оптимізувати код де тільки можна. Чи не ставити ніяких зайвих конструкцій на «а раптом знадобиться?». Все одно забуду про них! А якщо щось знадобиться - не відвалиться від мене шматок, прикручу вже саме тоді, коли потрібно буде. Все одно краще, ніж згодом ритися в готовому коді, щохвилини дивуючись: «А це я тут навіщо залишив. »,« А це що тут робить. »
- Інтерфейс намагатися спочатку розробляти так, щоб його можна було без особливих проблем переробити під сенсорний дисплей. Мало що.
- Чи не зловживати з векторною графікою.
- Навчитися, в кінці-кінців, object pool'інгу!
Наостанок.
UPD. Кілька експериментів, до речі, показало, що запускаються додатки, зібрані за допомогою AIR 2.7 тільки на iOS 4+
Спасибо большое за пост, дуже цікаво! Треба буде мені і самому вже пробувати.
У процесі читання виникло пару думок не по темі:
Пряму можна вважати окружністю з нескінченним радіусом кривизни. Так що, чим кривее руки, тим їх радіус кривизни менше :)
Так і має бути. Щоб встановити додаток з лівим сертифікатом, потрібно appsync встановити, для цього джейлбрейк і робиться ...
Я б навіть трохи скоротили)))
Заголовок:
звіт про збіжність однією з моїх ігор на iPhone Теоретична частина:
дозвіл дисплея айфона трохи менше - 480х320 Процес портирования:
розіпхати все якомога раціональніше по різних кінцях екрану
Штука, норм пост, але це називається адаптування / оптимізація під мобільні пристрої, а не портирование, тому що AIR і так мультиплатформенний.
Ти маєш рацію - гра ж не була переписана на ObjC.
О! Вона була перенесена з Флеш на Ейр :)
Слуш, ось хотів запитати - у мене iPod - 3 з iOS 4.2 і чому то ipa-файли, скомпіление на CS5.5 або FD на якому стоїть AIR 2.7 чому то видають помилку при синхронізації з девайсом, мовляв не сумісні. Ще я пам'ятаю що коли Компільо на CS5 все було ок (напевно там вбудований AIR 2.6 був?). Так ось - невже скомпіление на 2.7 гри не підуть на 3м поколінні iPod-iPhone незважаючи на те, що iOS четверта?
За замовчуванням в CS5 взагалі варто 2.5.
Мене трохи дивує, що я не бачу в офіційній документації по ейру список підтримуваних ним пристроїв. У What's new in Adobe AIR 2.6 знайшов наступний розділ:
Supported iOS devices
As part of supporting the latest and most powerful Flash runtime features on iOS, we have chosen to drop support for the original iPhone and the iPhone 3G, along with iPhone OS 3. AIR 2.6 supports building apps for the following iOS 4 devices:
iPhone 3GS and iPhone 4
iPod Touch (3rd Generation and 4th Generation)
iPad
Дякую за інфу. Дивно. У гілці, посилання на яку ти дав кажуть, що
AIR 2.7 works well on iPhone 3gs, and on iPhone 4, both iPads, and iPod Touch 3rd and 4th generation. I would say that the majority of people who bought iPhone and iPhone 3g are now using an iPhone 4, so the actual percentage of people who will not be able to run your app is lower than you would expect. Тобто на iPod touch - 3 з iOS 4.2 все повинно бути ок. Але це не так і причина тому ось цей код з application.xml:
armv7
Без нього все ок. Тобто виходить що AIR 3.0 відрубає набагато більшу частину iOS пристроїв, що існують на даний момент. Сумно. До речі ніхто не набродах на статистику скільки хоча б приблизно яких i-пристроїв в процентному співвідношенні існує на даний момент?
Колись мільйон років тому ти питав про список підтримуваних пристроїв. Дивись, що ще знайшлося випадково, в рідмішке до Флеш ЦС5.5
In addition to the Adobe Flash Professional CS5.5 system requirements, applications created using AIR for iOS will only run on devices that support iOS 4 or higher and iPod Touch 3rd 4th generation, iPhone 3GS and iPhone 4, and iPad. Applications created and published from Flash Professional CS5.5 for Android platforms will run on devices that run Google Android ™ 2.2 operating system or higher. For a list of the latest certified devices, please visit www.adobe.com/flashplatform/certified_devices/.
Дуже сумно все це
ui і з фоном в результаті треба щось зробити. Я розумію тут стиль такий можливо, але ... з інтересом.
Запустив. 50 мб завантаження на старті - все таки перебір для таких ігор. Як і відсутність.
Тобто, зовсім чесні нові ігри? А яким чином ранжируется по місцях, не в курсі, випадком?
злякався дуже сильної конкуренції)
О, ось це чудова новина, ввечері перевірю як працює.
Вартість продакшена (як в грошах, так і в людино-годинах) цілком собі можна вважати.
Кому-небудь ще вдалося перемогти зв'язку AIR + Mac + Steam? Після обробки файлу гри стімовскім.
Не бачу великих змін для адекватних розробників
Вітання! Для того ми тут і зібралися, в тому числі розповідати про граблі :)
Дякую що звернули увагу. Поправив.
Успіхів! Теж робимо гру на air :)
Адоб точно не напише, що не написали вінфон і ще купу всього. Та й Шумву з компанією.
Ой спасибище! Якщо хоч одній людині сайт став у нагоді, значить я не дарма витрачав на нього час!