Міжплатформний незалежний розвиток


34

Декілька років тому, якщо ви писали на C і якомусь підмножині C ++ і використовували достатню кількість абстракцій платформи (через SDL або будь-яку іншу), ви можете працювати на будь-якій платформі, на якій може потрапити інді - Linux, Windows, Mac OS різних версій , незрозумілі речі, такі як BeOS, і відкриті консолі, такі як GP2X і Dreamcast після смерті. Якщо ви отримали контракт на закриту платформу в якийсь момент, ви можете перенести гру на цю платформу з "мінімальними" змінами коду.

Сьогодні інді-розробники повинні використовувати XNA, щоб потрапити на Xbox 360 (і майбутній телефон Windows); не повинні використовувати XNA для роботи в іншому місці, окрім Windows; донедавна довелося використовувати Java на Android; Flash не працює на телефонах, HTML5 не працює на IE. На відміну, наприклад, від DirectX проти OpenGL або Windows проти Unix, це зміни в основній мові, в яку ви пишете свій код, і їх неможливо простежити без, в основному, написання компілятора. Ви можете переміщувати певну логіку гри в сценарії та включати інтерпретатора - за винятком випадків, коли цього не можете, оскільки iPhone SDK цього не дозволяє, а продуктивність страждає, оскільки JIT ніхто не дозволяє.

То що ви можете зробити, якщо вам потрібна по-справжньому багатоплатформна портативна гра, або навіть просто значна частина двигуна та логічного коду?

Це не проблема, тому що платформи кардинально розходяться - просто не варто намагатися орієнтуватися як на iPhone, так і на Xbox 360 будь-яким спільним кодом, тому що така гра була б поганою? (Я вважаю це дуже малоймовірним. Я легко бачу, як хочуть поділитися грою між телефоном Windows Mobile та Android, або Xbox 360 та iPad.) Чи інтерфейси настільки високі, що зараз час перенесення незначний? (Я можу вважати, що це для бізнес-програм, але не для ігор із суворими вимогами до продуктивності.)

Чи стане це в майбутньому більш вираженим? Невже розкол буде дещо страшним, як і раніше вниз по лінії постачальників? Чи будемо ми всі покладатися на середнє програмне забезпечення високого рівня, як Flash або Unity, щоб зробити щось на платформі?

tl; dr - чи є проблема перенесення, чи це буде більшою проблемою в майбутньому, і якщо так, як ми її вирішимо?


2
Розділ 3.3.2 Ліцензійної угоди програми для розробників iPhone передбачає можливість створення сценаріїв гри зараз, хоча це все ще є дещо складним. - "Незважаючи на вищезазначене, за попередньою письмовою згодою Apple, Програма може використовувати вбудований інтерпретований код обмеженим чином, якщо таке використання призначене виключно для надання другорядних функцій або функціональних можливостей, що відповідають передбачуваній та рекламованій цілі Додатку."
Бахус

3
Вчора Apple знову змінила ліцензійну угоду, і сценарії гри тепер абсолютно гаразд. - "Інтерпретований код може бути використаний у програмі, лише якщо всі скрипти, код та інтерпретатори упаковані у програму та не завантажені. Єдиним винятком із вищесказаного є сценарії та код, завантажені та запущені вбудованою рамкою WebKit Apple."
Бахус

Я б сказав, що ви зібрали купу речей, які не належать - мобільні пристрої, консолі, ПК та веб-ігри? Консолі та ПК, безумовно, повинні мати можливість ділитися кодовою базою з деякими налаштуваннями. Мобільні пристрої сильно відрізняються за можливостями від спеціального обчислювального обладнання (з точки зору необмеженої графічної потужності, зберігання, потоковості тощо), і тому ви навіть не зможете використовувати ті самі рішення. І веб-ігри - це, знаєте, веб-сторінки . Що ти хочеш? Фрагментація тут розташована через парадигми пристроїв, а не просто архітектури обчислення.
ChrisE

Насправді я нічого не говорив про веб-ігри. Я думаю, що розумно хотіти запускати один і той же код на всіх пристроях - картографування вхідних даних, або абстрагований графічний API, або система сутності, аналіз файлів, мережа - це все ті ж основні парадигми незалежно від платформи. Але це питання також 8 місяців, і його виникло з побоювань, які мало застосовуються, оскільки NDK зібрала більше підтримки на Android, а Apple припинила свою дурну політику.

Я маю на увазі, ви згадали HTML5 ... це призначено для веб-ігор, правда?
ChrisE

Відповіді:


14

Двигун Unity отримує вам величезну частину шляху. Пишіть один раз, і ви отримаєте автономну версію для Mac / Windows та веб-плеєрів. Налаштуйте свої входи та врахуйте дзвінки, і ви перебуваєте на iOS / Android.


12

Для маленького інді-розробника, з обмеженими коштами / часом (і, можливо, більше уваги на «зробити щось круто», ніж на «щось вигідне»), спроба перейти на платформу з самого початку може бути контрпродуктивною. Потрібно багато зусиль, щоб створити міцні інструменти та технології на різних платформах (різні графічні інтерфейси, ендіанси, пристрої введення тощо) - час, який можна витратити на більш творчу сторону розробки ігор.

Але ви, мабуть, хочете переконатися, що у вас є чудова гра, яка дуже добре працює на одній платформі, перш ніж занадто переживати про те, щоб потрапити на якомога більше платформ! Якщо гра - флоп, немає сенсу витрачати час і зусилля, роблячи це флопа з багатоплатформою?

Якщо ви кодуєте C / C ++, здебільшого з нуля, то поки ви тримати код досить модульним і приймати розумні рішення щодо форматів даних та середнього програмного забезпечення / бібліотек, то підтримка інших платформ пізніше не повинна бути надто болючою.

Якщо сторонні міжплатформні технології / інструменти (наприклад, Unity) є варіантом для вашого проекту, то це, безумовно, варто розглянути.

Основними «проблемними платформами» для індіанців, здавалося б, є Xbox360 Indie Games (лише C #, обмежений доступ до мережі тощо) та, можливо, Android (великі відмінності в продуктивності пристрою / розмірі екрана / пристроях введення). Якщо ви вирішили підтримати їх, очікуйте більш значної роботи з перенесенням або плануєте зосередитись виключно на них.


Так, скелі Unity3D. www.unity3D.com
BerggreenDK

Я погоджуюся з @bluescrn - краще знати майже все про майже нічого, ніж знати майже нічого про все: Джек всіх рис, майстер жодного.
rodrigo-silveira

3

Ви кажете, що міжплатформна незалежна розробка. Найбільшою перешкодою тоді є ресурси, а це означає брак часу більшу частину часу, а також відсутність ноу-хау та, можливо, фінансів (ліцензійні збори, придбання пристроїв тощо).

Інді чи ні, найбільша перешкода - це власне дизайн. Як ви кажете, гра, яка працює на Xbox360 та iPad, може працювати, але вони також повинні бути принципово різними з точки зору дизайну. У 360 є контролер, iPad сенсорний екран. Крім того, розробка для 360 виконується в Windows, використовуючи C # як мову, iPad можна орієнтувати лише на комп'ютери Mac OS та за допомогою C, C ++ або Objective-C. Або Javascript, якщо ви хочете. Деякі речі просто не змішують так добре, що б ви не робили.

Те, що ви говорите про різні платформи, справджується і сьогодні. Використовуйте C / C ++ та SDL, і ви можете писати свою програму на крос-платформі на комп'ютерах, подібних до ПК, напевно набагато плавніше, ніж роки тому. Однак це завжди було проблемою і завжди залишатиметься проблемою перенесення ігор з ПК на консоль до мобільних, і навпаки. Це в останні роки стало більш помітним, дозволяючи розробникам Indie програмувати консолі (або розробникам, які хакують доступ до нього для створення домашніх ігор), і завдяки зростанню мобільних пристроїв, досить потужних для запуску ігор.

Перенос має ті самі проблеми, що і коли-небудь, але є більше пристроїв, до яких слід портувати. А деякі порти просто не мають сенсу, не переробляючи основні ігри. Це не проблема, яку можна вирішити, це та, яку ви повинні розглянути з самого початку, ще до того, як напишете свій перший рядок коду. Тоді це буде керовано, ні більше, ні менше.


Насправді, я б сказав, що час на порту - це одне, що, швидше за все, має незалежний розробник / група, ніж велика студія, заснована на видавців.

Існує безліч ігрових конструкцій, які мають сенс на всіх платформах - наприклад, покрокові віртуальні настільні ігри, як постійний удар, на всіх платформах. Так багато багато падаючих / збігаються блок-головоломки. Їх навіть не можна «переносити» в традиційному розумінні - переміщення гри з XBLIG на iPhone - це гарантовано переписання всього коду.

3

Думаю, дуже проста, портативна та відкрита рамка інтерфейсу. Деякі вислови:

В даний час, здається, існує чотири поширених способи введення ігор: клавіатури, миші, контролери та багатоконтактні поверхні. (Я зараз перегляну питання, що відрізняються можливостями між, наприклад, геймпадами та джойстиками, хоча це з часом слід вирішити.)

В ідеалі наш розробник міг би загалом вказати кілька різних інтерфейсів, які мають сенс для типу гри, що пишеться. (Вони можуть вирішити надати інтерфейс клавіатури та миші, інтерфейс лише для миші та інтерфейс Multi-Touch, як довільний приклад.)

Потім фреймворк відповідає за посередництво IO між платформою та кодом гри, подібно до того, як функціонують міжплатформові графічні інтерфейси GUI, такі як QT та GTK.

Наявність такої рамки не вирішить проблему несумісних вимог до мови, але, принаймні, інкапсулює всі системні дзвінки, що стоять за загальним API, що повинно зробити перенос мови набагато простішим.

Ну, тепер, коли я все це написав: Хтось знає, чи існує така структура?


3

З такими проектами, як MonoTouch і XNATouch, схоже, XNA може отримати вас на більшості платформ, трохи налаштувавшись. На жаль, Apple почала торпедувати, що коли вони змінили свої Загальні положення та умови, щоб обмежити, якими мовами ви можете користуватися. Єдність зараз переживає майже все, хоча на XBOX він отримає вас на XBLA, але не на XBLIG, тому не є можливим для менших показників.

Одним із підходів може бути створення рамки, яка використовує однакові конвенції на декількох мовах / платформах, тоді це лише питання налаштування синтаксису до портових ігор. Можливо, ви захочете запустити свою гру в Flash, який можна швидко розробити і охопити широку аудиторію, тоді, якщо це буде вдалий порт для iPhone, XNA тощо. Таким чином, ви знаєте, що у вас є весела гра, перш ніж надмірно вчиняти себе.


дурне яблуко, яке обмежує мови програмування! ХТО?!?!
FreshJays

2

Я думаю, що це економічна проблема, а не технічна проблема. Платформи на зразок xbox360 мають сильний стимул бути ексклюзивними, оскільки вони намагаються змусити користувачів вибирати свою платформу замість якоїсь іншої платформи. "У нас ці круті ексклюзивні ігри" набагато цікавіше, ніж "ми також можемо грати в ці ігри, які мають усі інші". В екосистемі переважають виробники обладнання.

Я підозрюю, що це зміниться, коли дозріває геймплей у соціальних мережах, тому що потенційно можна набагато більше грошей на те, щоб усі потрапили в ту ж саму ігрову систему, ніж на створення ще однієї FPS-з-сексуальною графікою.


2

Я щойно відкрив Haxe та NME . Він стверджує, що це кросплатформенний додаток, який підтримує всі основні настільні та мобільні пристрої та Flash з однієї бази коду. Варто подивитися.


1

Інструмент для розвитку платформ, який є таким новим, я не обов'язково рекомендую це http://www.monkeycoder.co.nz/

Він вражає кожну згадану вами платформу.

Незважаючи на те, що він занадто новий, щоб реально судити, він має чудову родовід: його творцем раніше були створені Blitz3D та BlitzMax, які були чудовими інструментами для розробників інді-ігор.


0

I've had luck with the airplay SDK - at least on x86 and apparently targets iPhone well (although I still have yet to put an app on an iPhone yet).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.