В посадових інструкціях я часто бачу позиції під назвою "Ігровий програміст". Що роблять люди на цій посаді?
В посадових інструкціях я часто бачу позиції під назвою "Ігровий програміст". Що роблять люди на цій посаді?
Відповіді:
Коли компанії говорять про наймання геймплейного програміста , те, про що вони говорять, - це програміст, який буде відповідати за код, який безпосередньо стосується досвіду гри. Тобто програміст буде відповідати за фактичну побудову ігор, а не за двигун чи більші ігрові системи. Але крім цього, речі сильно різняться:
Деякі компанії очікують, що програмісти ігрових програм реалізують інтерфейс користувача. Деякі ні. Деякі компанії очікують, що вони введуть AI-код, деякі - ні. Деякі очікують, що вони реалізують звуковий код, інші - ні. Якщо чесно, "геймплей" у геймплей-програміста - це галузевий скорочення для "всього, що ми не найняли фахівця". Отже, ці програмісти повинні бути дуже універсальними, і вони повинні мати можливість швидко вивчати нові дисципліни.
Я провів майже п'ятнадцять років, будучи геймплейним програмістом у комерційній галузі, у п'яти різних компаніях.
Мій досвід полягав у тому, що в деяких компаніях геймплейний програміст вважається молодшим або початкового рівня; програмістам, які працюють лише над індивідуальною грою, зрештою, не потрібно бути настільки складними, як ті, хто працює над системами, яким потрібно підтримувати безліч різних ігор одночасно, як це потрібно програмістам двигунів. У такій компанії, якщо програміст з геймплею справді добре, його можуть перетворити в команду двигунів колись, якщо він зможе довести свою цінність. Або він може стати спеціалістом, якщо виявить здатність до певної місцевості.
В інших компаніях геймплейний програміст вважається позицією середнього рівня; програмістам, які працюють над індивідуальною грою, потрібно мати певний корисний досвід і бути надійними. Недосвідченим програмістам може бути надана небажана робота, щоб порізати зуби (трубопроводи даних, інструменти тощо), і врешті-решт, їм буде дозволено перейти до роботи "програміста ігрових програмістів". У такій системі геймплейний програміст, який продовжує робити непогано, може перейти до ролі керівника проекту, або ж до команди двигуна.
В інших компаніях геймплейний програміст вважається керівним, а також напівконструкційним; Очікується, що ці програмісти будуть відмінними, перевіреними програмістами, але також матимуть сильні дизайнерські чутливості та кваліфікацію, оскільки вони безпосередньо стосуються коду, що найбільш сильно впливає на досвід гравця з грою. У такій системі справді хороший геймплейний програміст, ймовірно, назавжди залишиться ігровим програмістом - це вважається найціннішою посадою, яку він може зайняти.
Як правило, чим кращі ігри компанії, тим вищою є посада, яку вони вважають ігровим програмістом (і, отже, тим складніше буде фактично влаштувати таку роботу).
Я завжди вважаю, що це допомагає проілюструвати на прикладі.
Програміст ігрових процесів отримав би завдання: впровадити систему боротьби в ближньому бою, застосувати механізм відновлення здоров'я або застосувати управління стрибками гравця.
Програміст двигуна (так би ви називали когось, хто не був спеціально програмістом геймплейної програми) отримав би завдання: реалізувати відкладене освітлення, анімаційну систему або мережевий шар.
Ключова відмінність полягає в тому, хто є "замовником". Для ігрових програмістів - це команда дизайнерів - їхнє завдання - втілити дизайн у реальність. Для програмістів двигунів це, як правило, інші програмісти . Програмісти двигунів виробляють технології та системи, які програмісти ігрових процесорів та творці вмісту можуть потім використовувати для втілення дизайну.
Програмісти двигуна пишуть код, який в значній мірі є ігровим агностиком - та ж технологія часто може бути використана в кількох іграх. Ігрові програмісти, як правило, пишуть код, який дуже специфічний для гри, що робиться. І завжди є дублювання - іноді для реалізації геймплея вам потрібен новий код двигуна.
Кодування геймплея не є складніше чи простіше, ніж кодування двигуна. Це, безумовно, дещо інший набір навичок; вам часто потрібно бути більш креативними та вміти приймати рішення. Ваша мета - не створити ідеальну повторно використовувану систему (ідеальну для програмістів двигунів), а створити найкращу ігрову реалізацію. Тож те, що може бути перевагою в програмуванні двигунів (увага до деталей та добре розроблених структур), може стати перешкодою в програмуванні ігрових процесів (де важливіше адаптивність та час ітерації). Хороший ігровий програміст знає, коли це зробити правильно (коли дизайн міцний і код буде використовуватися в багатьох місцях), і коли це робити швидко (коли дизайн все ще розробляється, і ваш код має хороші шанси після випробування відмовляються).
Найбільше, що геймплей-програмісти повинні вміти співпрацювати з командою дизайнерів на такому рівні, якого програмісти двигунів не мають. Окрім очевидних навичок спілкування, це означає, що вам потрібно ознайомитись з іншими ігровими проектами набагато більше, ніж це роблять програмісти двигунів, так що коли дизайнер каже, "зробіть це так, як Zelda", ви знаєте, про що вони говорять.
Щоб навчитися бути програмістом двигунів, вам слід вивчити технологію та дізнатися, як вона працює, і, можливо, реалізувати власну її версію; гра була б просто ареною, на якій показати технології.
Щоб навчитися бути геймплейним програмістом, ви б взяли чужий двигун і використовували його якомога більше різних способів. Іншими словами, якщо ви хочете бути ігровим програмістом, робіть ігри, а не технології .
Саме так це звучить, програміст, який реалізує та підтримує механіку гри.
http://en.wikipedia.org/wiki/Game_programmer#Gameplay_programmer