Багатоплатформність

Багатоплатфо́рмність[джерело?] (кросплатформність[джерело?], мультиплатформність[джерело?]) — властивість програмного забезпечення працювати більш ніж на одній програмній (в тому числі — операційній системі) або апаратній платформі; технології, що дозволяють досягти такої властивості. Кросплатформність дозволяє суттєво скоротити витрати на розробку нового або адаптацію існуючого програмного забезпечення.

Залежно від засобів реалізації поділяється на кросплатформність на рівні мов програмування (а також інструментів таких мов: компіляторів та редакторів зв'язків), середовища виконання, операційної системи та апаратної платформи.

Технології та засоби досягнення кросплатформності

Кросплатформність мов програмування

Кросплатформність на рівні мов програмування досягається шляхом забезпечення незалежності програмного коду від платформи. Багатоплатформними є більшість сучасних високорівневих мов програмування, для яких реалізовані транслятори, що можуть виконуватись на різних платформах. Наприклад, C, С++ і Pascal — кросплатформні мови на рівні компіляції, тобто для цих мов є компілятори під різні платформи.

Кросплатформність на рівні редакторів зв'язків досягається реалізацією для різних платформ кросплатформних бібліотек, які реалізують незалежний від платформи інтерфейс, в тому числі — стандартизованих бібліотек. Зокрема, стандартизовані багато бібліотек мови Сі (див. POSIX). Існує також велика кількість нестандартних кросплатформних бібліотек: Qt, GTK+, FLTK, STL, Boost, OpenGL, SDL, OpenAL, OpenCL.

Кросплатформність на рівні середовища виконання

Кросплатформність на рівні середовищ виконання забезпечується реалізацією в цих середовищах можливостей, необхідних програмам незалежно від платформи. Декларований набір таких можливостей прийнято називати «контрактом» — обов'язком який покладається на середовище, щоб забезпечити виконання програми. Ці обов'язки реалізуються через інтерпретатор, файлові потоки, системні виклики, протоколи, віртуальну машину тощо.

Мови кросплатформні на рівні виконання, коли їх виконавчі файли можна запускати на різних платформах без попередньої перекомпіляції. Найбільш поширені[1] приклади: Java, C#, SQL. Інтерпретовані мови кросплатформні, коли їх інтерпретатори існують для багатьох платформ. Найбільш поширені[1] приклади: Python, JavaScript, PHP, Ruby, Perl, R, MATLAB.

Кросплатформність на апаратному рівні

Кросплатформність на апаратному рівні досягається реалізацією однакових машинних команд та форматом їх представлення, систем переривань, механізмів адресації пам'яті, регістрів тощо. Може досягатись шляхом віртуалізації відповідних ресурсів та механізмів.

Емуляція

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

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

Кросплатформність програм

Кросплатформність прикладних програм

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

Приклади:

Кросплатформність операційних систем

Сучасні операційні системи також здебільшого є багатоплатформними. Наприклад, операційні системи з відкритим вихідним кодом, наприклад, NetBSD, GNU/Linux, FreeBSD, AROS можуть працювати на різних платформах, найчастіше: x86, m68k, PowerPC, DEC Alpha, AMD64, SPARC. Microsoft Windows може працювати як на платформі Intel x86, так і на Intel Itanium. Операційна система NetBSD є найбільш здатною до перенесення, вона працює на більшості існуючих платформ.

Багатоплатформовий користувальницький інтерфейс

На різних ОС — незалежно від того, як технічно досягнута робота в них — стандартні елементи інтерфейсу мають різні розміри. Тому просте жорстке позиціонування елементів інтерфейсу неможливо — під іншою ОС вони можуть налазити один на одного. Існує кілька підходів:

  • Єдиний стиль, загальний для всіх ОС. Програми виглядають однаково під усіма ОС. Так працюють інтерфейсні бібліотеки Java на зразок Swing.
    • Плюс: можна жорстко розставляти елементи управління на манер Delphi; оригінальний стиль.
    • Мінус: системі доводиться мати свої екранні шрифти; стиль відрізняється від стилю ОС.
  • Самоадаптований інтерфейс, який налаштовує сітку під реальні розміри елементів управління. Типові приклади — wxWidgets, XUL.
    • Плюс: стандартний стиль ОС, дуже швидкий і «скіни» під Windows XP, Vista і 7; деяка автоматизація локалізації.
    • Мінус: щоб зібрати самоадаптовану сітку, потрібен кваліфікований програміст; утруднене щільне компонування.
  • Гібридний підхід реалізовано у GTK +.
    • Плюс: шрифти можна брати з системи, а не «тягнути» свої; деяка автоматизація локалізації.
    • Мінус: бере всі недоліки від перших двох підходів. Стиль відрізняється від стилю ОС; утруднене щільне компонування.

У будь-якому випадку, під іншими ОС потрібне хоча б мінімальне тестування, оскільки можливі помилки компонування.

Кросплатформність відеоігор

Багатоплатформна відеогра, кросплатформна відеогра — відеогра, яку випускають для декількох апаратних платформ комп'ютера. Для кожної окремої платформи така гра має окрему версію, яка призначена для запуску саме на цій платформі. Залежно від особливостей гри й цільових платформ версії однієї гри для різних платформ можуть відрізнятися одна від одної в різних ступенях.

Цільові платформи

Всі платформи, на які виходять мультиплатформні ігри, умовно діляться на кілька груп:

  • Персональні комп'ютери (ПК). Ігри для ПК називаються ПК-іграми, а версії мультиплатформних ігор для ПК — ПК-версіями ігор. У свою чергу, ПК-ігри діляться в залежності від операційних систем, на яких можуть працювати. Більшість ПК-ігор розроблено для сімейства ОС Microsoft Windows.
  • Ігрові консолі. Ігри для ігрових консолей називаються консольними іграми, а версії мультиплатформних ігор для консолей — консольними версіями ігор. Всі ігрові консолі діляться на два типи — портативні ігрові консолі (являють собою автономні пристрої, які містять в одному компактному корпусі всі необхідні для гри пристосування — засоби управління, дисплей, звукові динаміки і т. д.) і «префіксальні» консолі (які підключаються до зовнішніх дисплеїв, звуковим динаміків і іншим пристроям). Відповідно, консольні ігри поділяються для цих двох типів ігрових консолей. Ігрові консолі — спеціалізовані комп'ютери, основний акцент при розробці яких був зроблений саме на виконання комп'ютерних ігор. Однак, крім свого основного завдання, ігрові консолі, особливо починаючи з сьомого покоління, здатні відтворювати відео, музику, здійснювати доступ в Інтернет і виконувати деякі інші функції.
  • Кишенькові персональні комп'ютери (КПК). Кишенькові персональні комп'ютери (або надолонники), як і універсальні персональні комп'ютери, є ігровими платформами. Внаслідок своїх невеликих габаритів, специфічних засобів управління і виведення інформації, а також через відносно невисоку продуктивність й обсяг пам'яті ігри для КПК істотно відрізняються від ігор для інших платформ. Так, на КПК найбільше поширені казуальні ігри.
  • Мобільні телефони. Згодом вдосконалення науково-технічного прогресу дозволило мобільних телефонів виступати в ролі ігрових платформ. Однак внаслідок свого мінімального серед інших ігрових платформ рівня продуктивності серед ігор для мобільних телефонах найпоширеніші казуальні ігри, прості аркади, платформери й інші міні-ігри.
Файтінг, запущений на аркадних автоматах
  • Аркадні ігрові автомати. Аркадні ігрові автомати, також відомі як аркадні кабінети, є спеціалізованими пристроями, призначеними для виконання виключно комп'ютерних ігор. У зв'язку з особливостями будови аркадних автоматів ігри для них значно відрізняються від ігор для інших платформ. Так, аркадні автомати надають гравцеві такі типи інтерфейсу користувача, які в більшості випадків недоступні або рідкісні на інших платформах: світлові пістолети, кермо, штурвали, педалі, танцювальні платформи та інші пристосування. Серед жанрів ігор для аркадних автоматів найчастіше зустрічаються симулятори, як реалістичні, так і аркадні: автосимулятори, авіасимулятори, симулятори космічних кораблів, симулятори роботів та інші. Також широко поширені рейкові шутери, файтинги, Beat 'em up та інші схожі жанри.

Відмінності між версіями мультиплатформних ігор

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

Деякі розробники прагнуть зробити так, щоб гра для різних платформ виглядала максимально однаково. Наприклад, розробники гри BioShock 2, яка вийшла на ПК і ігрових консолях Xbox 360 і PlayStation 3, прагнули зробити гру максимально однаковою на цих платформах. «Найголовнішою нашою метою, поставленої на початковій стадії розробки, було те, що гра повинна була виглядати практично ідентично на всіх платформах», — заявив з цього приводу головний дизайнер локацій гри Хогарт Де Ла Плант (англ. Hogarth De La Plante). Він заявив, що це робиться для того, щоб не дати користувачам гри на який-небудь одній платформі переваг перед користувачами цієї гри на інших платформах.[2] Аналогічне прагнення показали розробники з Eidos Montreal при розробці Deus Ex: Human Revolution: продюсер гри Девід Анфоссі (англ. David Anfossi) заявив, що враження від гри і геймплей будуть ідентичними на всіх цільових платформах (ПК, Xbox 360, PlayStation 3).[3]

Версії однієї гри для різних платформ можуть виходити в різний час, причому цей час може обчислюватися роками. Наприклад, гра Ballistics[en] для ПК вийшла в 2001 році[4], а для аркадних автоматів — у 2002-му[5].

Іноді версії однієї мультиплатформної гри мають більше відмінностей, ніж загальних ознак. Наприклад, гра «Tom Clancy's Ghost Recon Advanced Warfighter» була розроблена різними компаніями для різних платформ на різних ігрових рушіях, версії для яких були випущені в різний час. Ця гра вийшла для платформ Xbox 360, Xbox, PlayStation 2 і ПК (Microsoft Windows), причому ці версії виходили протягом всієї весни 2006 року. Версія для Windows розроблялася компанією GRIN на ігровому рушію Diesel. Версія для Xbox розроблялася компанією Ubisoft Shanghai, а версія для PlayStation 2 — Ubisoft Paris. Ці дві версії (для Xbox і PlayStation 2) використовували ігровий рушій Unreal Engine 2. Версія для Xbox 360 розроблялася на ігровому рушію YETI engine двома компаніями — Ubisoft Paris робила однокористувацький режим гри, а Red Storm Entertainment — розрахований на багато. Серед загальних елементів цих версій були лише концепція і загальний сюжет. Геймплей, сценарій, місії та рівні, особливості озброєння і оснащення протагоністів для кожної версії були індивідуальними. Це призвело до того, що деякі оглядачі, як, наприклад, GameTech, написали окремі рецензії для версій цієї гри під різні платформи.[6][7]

Багато агрегаторів оцінок комп'ютерних ігор поділяють оцінки для кожної платформи. Наприклад, онлайновий агрегатор GameStats для кожної із семи платформ, на яких вийшла гра James Cameron's Avatar: The Game, скомпонував окремий профіль з окремою оцінкою.

Примітки

Джерела