Коли слід прокатати власний ігровий движок? [зачинено]


20

Зараз я розробник програмного забезпечення вже 5 років, і хочу взяти участь у розробці ігор для iOS. Близько 2 років я грав із SDK для iOS, відвідуючи зустрічі з какаоголовками, і я відчуваю, що добре розумію цілі-c, какао та навіть c та c ++.

У мене є ідея гри, і я знаю, що буду використовувати Box2D, але мені цікаво, чи варто використовувати cocos2D чи ні. Основні причини:

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

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


7
Якщо ви скажете "C / C ++", цілком ймовірно, що ви не розумієте принаймні одного з них, і, ймовірно, обох.
DeadMG

10
Я розумію, що деякі люди плутають це двоє, і я, мабуть, повинен сказати C / C ++ / Objective-C, щоб повторити, що я розумію основні мови, які ви можете використовувати для програмування на платформі iOS. Я не відчував, що сказати, що C / C ++ автоматично означатиме, що я плутаю їх як одне.
Joey Green

Мені подобається це питання, оскільки він вносить привітні зміни від звичного "як мені зробити власний двигун?" питання. +1 для вас, сер.
Рей Дей

1
@DeadMG Я щось кажу "C / C ++" і чудово розумію те і інше.
Ciaran

Я б сказав, що це навіть зробив це
bobobobo

Відповіді:


38

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

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

Ви повинні розуміти наступні речі (цей список навряд чи є всеосяжним).

  • Яке проміжне програмне забезпечення вже є, яке ви можете використовувати ("двигун" чи іншим способом)
  • Те, що те проміжне програмне забезпечення подає до столу, особливо мудро.
  • Наскільки зрілим / доведеним є середнє програмне забезпечення, особливо якщо ви дбаєте про підтримку багатоплатформ
  • Які інструменти, що надаються середнім програмним забезпеченням, чи не надаються, щоб прискорити розвиток (не знижуйте інструменти за допомогою власних технологій)
  • Які обмеження має середнє програмне забезпечення (як простий приклад, Unity 3.x не робив тіні в режимі реального часу від динамічних вогнів на iOS)
  • Які конкретні особливості повинна мати ваша конкретна гра .
  • Які ваші терміни і скільки часу вам доведеться витратити, щоб перейти до моменту, коли середнє програмне забезпечення отримає вас порівняно з тим, скільки коштує проміжне програмне забезпечення.
  • Наскільки розширюється середнє програмне забезпечення (наприклад, ви можете обійти проблему з тінню на iOS в Unity, скориставшись blob тінями. Або, можливо, проекційними тінями.)

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

Особисто я вважаю, що прокат власних технологій для низькобюджетної гри навряд чи вартий зусиль. Кількість енергії, яку ви отримуєте дешеві двигуни сьогодні, смішна. Ви не ставитесь до того, коли ви вирішили отримати багатомільйонну ліцензію на потрійну машину чи ні. Ви не зможете перемогти те, що, скажімо, Unity пропонує вам за $ 3 тис. Або Cocos2d скільки б це не коштувало (чи не безкоштовно?).

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


7
Домовились. Як tldr: Якщо вам доведеться задати питання, вам, швидше за все, краще перейти з існуючим двигуном.
Кріс Субаджо

Ваша примітка жирним шрифтом підсумовує мою досвід
Інженер

1
Громада також важлива. Щось із сильною спільнотою, як-от XNA, набагато простіше вирішити конкретні проблеми , оскільки хтось це робив раніше або може дати вам вказівки.
ashes999

14

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

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

Я б використовував існуючий двигун, коли:

  • У мене жорсткий термін
  • У мене є відомий набір фіксованих функцій, щоб я міг вибрати для цього двигун

3

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

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

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


Якщо його мета - навчитися, то це не марно витрачати час.
Ciaran

3

Це дуже просто. Яка ваша основна мета: навчання чи час на ринок?

Уникайте використання бібліотеки, якщо ваша основна мета полягає в тому, щоб засвоїти досвід реалізації концепцій, які вирішуються бібліотекою. Кожен раз, коли я розвиваю гру (неповний робочий день), моя мета - це лише навчання. Мені все одно, скільки часу це займає, ось чому я роблю це все з нуля! Тепер ви вирішите.


0

Ви повинні закатати свій ігровий движок, коли знаєте, що в цьому є потреба .

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

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

Тоді в такому випадку напишіть власний двигун.

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