Програміст відеоігор — це інженер програмного забезпечення, програміст або інформатик, який розробляє в основному кодову базу для відеоігор або відповідного програмного забезпечення, наприклад, засобів розробки ігор. Програмування ігор має багато спеціалізованих дисциплін, і всі вони підпадають під загальний термін «ігровий програміст»Bates 2004, pp. 165—192.168.11 cc1Moore, Novak 2010, pp. 78-84. Ігрового програміста не слід плутати з ігровим дизайнером, який працює над дизайном гри.Moore, Novak 2010, pp. 74-75

Історія

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

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

Прагнення додати більше глибини та активів до ігор вимагало розумного розподілу праці. Спочатку художня продукція передавалася штатним художникам. Далі програмування ігор відокремили від ігрового дизайну як дисципліну. Зараз лише деякі ігри, такі як головоломка Bejeweled, досить прості, щоб вимагати лише одного штатного програміста. Однак, незважаючи на цей розподіл, більшість розробників ігор (художники, програмісти і навіть продюсери) мають право голосу в остаточному дизайні сучасних ігор.

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

Програміст ігрового рушія Програмісти ігрового рушія створюють базовий рушій гри, включаючи імітовані фізичні та графічні дисципліни.Moore, Novak 2010, p. 79 У відеоіграх все частіше використовуються наявні ігрові двигуни, комерційні, з відкритим кодом чи безкоштовно. Вони часто налаштовуються під конкретну гру, і програмісти ігрового рушія обробляють ці модифікації.

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

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

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

Програміст графічного движка Історично цей заголовок, як правило, належав програмісту, який розробляв спеціалізовані алгоритми блітера і розумні оптимізації для 2D графіки. Однак сьогодні він майже виключно застосовується до програмістів, які спеціалізуються на розробці та модифікації складних візуалізаторів 3D- графіки. Деякі навички 2D-графіки нещодавно знову стали корисними для розробки ігор для мобільних телефонів нового покоління та портативних ігрових консолей.

Програміст тривимірної графіки повинен чітко розуміти передові математичні поняття, такі як векторна та матрична математика, кватерніони та лінійна алгебра.

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

Програміст штучного інтелекту Програміст ШІ розробляє логіку часу для імітації інтелекту у ворогів і супротивників.Moore, Novak 2010, pp. 80-81 Нещодавно він перетворився на спеціалізовану дисципліну, оскільки ці завдання раніше виконували програмісти, які спеціалізувались в інших областях. Програміст ШІ може програмувати системи пошуку шляху, стратегії та тактичні системи противника. Це один із найскладніших аспектів програмування ігор, і його витонченість швидко розвивається. Сучасні ігри присвячують штучному інтелекту приблизно від 10 до 20 відсотків програмістів.

Деякі ігри, такі як стратегічні ігри, такі як Civilization III, або рольові відеоігри, такі як The Elder Scrolls IV: Oblivion, активно використовують ШІ, тоді як інші, наприклад, головоломки, використовують його помірковано або взагалі не використовують. Багато розробників ігор створили цілі мови, за допомогою яких можна програмувати власний ШІ для ігор за допомогою сценаріїв. Ці мови, як правило, менш технічні, ніж мова, що використовується для реалізації гри, і часто використовуються дизайнерами гри або рівнями для реалізації світу гри. Багато студій також роблять сценарії своїх ігор доступними для гравців, і вони часто широко використовуються сторонніми розробниками модів.

Технологію ШІ, що використовується в програмуванні ігор, не слід плутати з академічним програмуванням ШІ та дослідженнями. Хоча обидві сфери дійсно запозичують одна в одної, їх зазвичай вважають окремими дисциплінами, хоча є винятки. Наприклад, гра 2001 року від Lionhead Studios Black & White має унікальний підхід до штучного інтелекту до контрольованої користувачем істоти, яка використовує навчання для моделювання поведінки під час гри.Evans 2002, Chapter 11.2: Varieties of Learning, pp.567-578 В останні роки більше зусиль було спрямовано на втручання перспективних областей досліджень ШІ та програмування ШІ.

Звуковий програміст Не завжди окрема дисципліна, звукове програмування було опорою ігрового програмування ще з часів Понгу. У більшості ігор використовується аудіо, а багато з них мають повну музичну партитуру. Комп'ютерні звукові ігри цураються графіки в цілому і використовують звук в якості основного механізму зворотного зв'язку.Moore, Novak 2010, p. 83

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

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

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

Цей програміст може реалізовувати таблиці стратегій, налаштовувати вхідний код або коригувати інші фактори, що змінюють гру. Багато з цих аспектів можуть бути змінені програмістами, які спеціалізуються на цих сферах, однак, наприклад, таблиці стратегій можуть впроваджуватися програмістами ШІ.

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

Сьогодні найчастіше основний ігровий рушій, як правило, відокремлюється від програмування ігрового процесу. Це має ряд переваг у розвитку. Ігровий рушій має справу з візуалізацією графіки, звуком, фізикою тощо, тоді як мова сценаріїв має справу з такими подіями, як кінематографічні події, поведінка ворога та цілі гри. Великі ігрові проєкти можуть мати команду сценаристів для реалізації такого роду ігрового контенту.

Сценаристи зазвичай також є ігровими дизайнерами. Часто простіше знайти кваліфікованого ігрового дизайнера, якого можна навчити мові сценаріїв, на відміну від того, який опанував C ++.

Програміст інтерфейсу користувача Цей програміст спеціалізується на програмуванні користувальницьких інтерфейсів (UI) для ігор.Moore, Novak 2010, p. 81 Хоча деякі ігри мають користувальницькі інтерфейси, програміст інтерфейсу користувача, швидше за все, розробить бібліотеку, яка може використовуватися в декількох проєктах. Більшість інтерфейсів виглядають двовимірними, хоча сучасні інтерфейси зазвичай використовують ту саму технологію 3D, що й решта гри, тому деякі знання 3D-математики та систем корисні для цієї ролі. Розширені системи інтерфейсу можуть дозволяти сценарії та спеціальні ефекти, такі як прозорість, анімація або ефекти частинок для елементів управління.

Програміст вводу

Програмування введення даних, хоча зазвичай це не посада чи навіть штатна посада в конкретному ігровому проєкті, все ще є важливим завданням. Програміст пише код із зазначенням того, як такі пристрої введення, як клавіатура, миша чи джойстик, впливають на гру. Ці процедури зазвичай розробляються на початку виробництва і постійно вдосконалюються під час розробки. Зазвичай одному програмісту не потрібно весь свій час присвячувати розробці цих систем. Гра в керованому режимі руху в реальному часі, що використовує такі пристрої, як Wii Remote або Kinect, може потребувати дуже складної системи з низькою затримкою введення, тоді як вимоги HID до керованої мишею покрокової стратегічної гри, такі як Heroes of Might and Magic, є значно простішими у реалізації.

Мережевий програміст