Чи розумно використовувати якийсь двигун, щоб почати розробку гри? [зачинено]


14

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

Деякі з цих речей мені було важко зрозуміти, і я виявив, що деякі речі вже вбудовані в рамки. Я знайшов інші ігрові двигуни, за якими я міг чітко зрозуміти хоча б прості коди ліній, такі як " FlatRedBall " , " Axiom " та " Quick Start Engine " . Я вже знав про відомих, таких як "OGRE" , "Unreal" та "Unity" . У той же час я спокусився кинути це все і почати вивчати деякі відомі ігрові програми програмування. Я хотів залишитися з XNA, оскільки мені знадобився час для навчання; час я не хотів би це витрачати.

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


1
У мене було те ж саме на думці ... Я використовую XNA вже 4 роки. Я почав робити MMORPG ... Подивіться, де це мене, ні куди. Як завжди, почніть з малого, використовуйте щось, що вам подобається, якщо у вас немає великих планів, і просто зробіть щось, перш ніж пролітає занадто багато часу.
Майкл Коулман

@Omnion, використовуючи XNA протягом 4 років, намагаючись зробити MMORPG, це не питання того, чим ви користуєтесь, а питання рішучості, відданості, вільного часу та практичного застосування. Будь-хто може заповнити MMORPG за допомогою XNA, якщо вони зберігають мотивацію та відданість у часі. Кількість часу може змінюватись залежно від кількості вільного часу та швидкості роботи, але незалежно від розміру чи обсягу проекту, МОЖЕ бути практичним, навіть якщо хтось починає велику. Ключовим є організація інженерного процесу. Дитячі кроки, один крок за часом, з часом, послідовно, завершує проект незалежно від масштабу.

1
Я лише згадую це, щоб заохотити людей не вважати, що їх проект занадто великий, а натомість просто зрозуміти реальність практичності. Якщо хтось зрозуміє, що для завершення проекту потрібно більше, ніж мрії, вони підуть більше, ніж "ні куди". Я завжди хочу заохочувати людей здійснити свою мрію, а не компрометувати її. Зробіть це практично практичним, щоб його МОЖЛИ було виконати незалежно від розміру. З часом все можливо.

Відповіді:


11

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

Якщо ви хочете по-справжньому зрозуміти, як працює комп’ютерна графіка, ви повинні піти глибше і вивчити всі речі. Від оновлення лінійної алгебри (принаймні матриць, векторів та лінійних просторів) до розуміння того, як працюють графічні трубопроводи. XNA - найкраща рамка для початку. Моя перша гра була в ній (я маю на увазі справжню гру, перший 3D-додаток - бойові танки у openGL). Якщо ви хочете почати програмування 3D, не майте таких амбітних планів, ви не можете робити RPG зараз. Вам слід спробувати зробити якусь гру, де ви летите в космосі, повному кубів і намагаєтесь вистрілити червоних, щоб засвоїти ази. Напевно, це забере у вас більше часу, ніж ви думаєте :). Але це багато чому навчить.

І піди на це! 3D-графічне програмування - найкраще, що можна зробити для життя. В одному пакеті важко, весело та креативно.


3
Можливо, варто перевірити MonoGame замість XNA. Microsoft припинила розробку XNA і їй не вистачає підтримки Windows 8 Metro UI. Згідно з деякими публікаціями, які я читав на Reddit, їхні представники фактично рекомендують MonoGame. У результаті ви отримуєте крос-платформу (Linux, OSX, Android, iOS).
Давид К. Єпископ

17

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

Якщо вас найбільше цікавить просто побудова деяких ігор чи ігрового дизайну, тим швидше ви перейдете до коду гри, тим краще. Щось на зразок Unity є чудовим тут, оскільки ви можете використовувати свої знання C # і почати приєднувати сценарії до об’єктів і негайно працювати.

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


1
Мені подобається ваша відповідь більше, ніж моя. +1 для вас.
Нотабене

6
Особливо корисно, якщо скажіть, що ви хочете бути ігровим програмістом, почати з двигуна, а потім, коли ви робите власне дослідження, що ви використовували як хороший приклад (якщо припустити, що вам сподобалось), щоб порівнювати з іншими ресурсами, які ви знайдете з архітектури двигуна.
michael.bartnett

Але все-таки ви повинні бути суцільним роком в основах комп'ютерної графіки, навіть якщо ви використовуєте двигун.
Нотабене

1

ПОРАДА АМАТЕЮРА

// Від нуля до аматорського за роки навчання


Я б неодмінно тримався осторонь таких двигунів високого рівня, як Unity або Torque2D MIT. Вони чудово підходять для невеликих прототипів, але я б ніколи не сприймав їх серйозно для розробки власної відеоігри. Чому б я? Який сенс, якщо це був не що інше, як простий SideScroller чи аркад аркад?

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


Коли я був новим у розробці ігор років тому, я стартував на вершині. Двигуни дуже високого рівня. Не щось надто високо, як RPG MAKER, але, безумовно, високо там, як Unity та Torque. Потім я пішов нижче, до XNA та C #, тому що в ньому було стільки ресурсів та навчальних посібників. Моєму первинному проекту була потрібна продуктивність, або, можливо, я просто нав’язливо-компульсивний щодо того, щоб хотіти неймовірної продуктивності у своєму програмному забезпеченні, навіть якщо це не великий проект. XNA її просто не вирізала, і у мене було багато проблем з двигуном, який я прочитав, потрібен головний біль, щоб виправити. Який сенс використовувати щось "вищого рівня", наприклад, XNA / C #, коли ви робите ту саму роботу (виправляючи помилки та проблеми XNA), як і для прокатки власного двигуна в C ++?

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

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

Тож я закінчив щось із досить великою похвалою, був C ++ та дуже низьким рівнем: SDL. На жаль, це був головний біль. Це настільки низький рівень, я бачу, що немає жодної причини, чому навіть використовувати цю бібліотеку. Я вважаю за краще просто вивчити OpenGL і робити це з нуля. Чесно кажучи, саме той факт, що мені потрібно було реалізувати власний код, щоб зробити щось таке ж базове, як перевернути зображення (а інша реалізація не спрацювала через те, як я обробляю спрайти), що привело мене до сміття SDL назавжди. Чудово, якщо ви хочете візуалізувати програмне забезпечення, але IMO, я б краще спустив його, щоб знизитись на апаратному рівні (OpenGL) або вище (SFML).

Не бажаючи купувати ще одну книгу на Amazon та вивчати ще один API, я пішов вище. SFML просто чудовий, не кажучи вже про високо оцінену в усьому Інтернеті. Я прочитав майже нескінченну кількість позитивних відгуків, поруч із жодним негативом. Я не можу сказати те саме для SDL. Він обробляє всі крайні основи, а решту залишає за мною та іншими бібліотеками, які я вибрав. Я з цим застряг.


ІМО, ігровий движок просто дурний. Бібліотеки низького рівня - це набагато кращий вибір як для експертів, так і для початківців програмістів.

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

Що щось на зразок Єдності дає тобі за XNA? Візуальне редагування та милиця. Зрештою, новачки дізнаються, що вам все одно доведеться кодувати всю гру так само, як і коли б у вас був C ++, а візуальні редактори неефективні для того, що ви могли б створити самостійно.

Що щось на зразок XNA дає вам над SFML або вашою власною реалізацією OpenGL та інших корисних бібліотек? ІМО, абсолютлей нічого хорошого. Гірша продуктивність, C # замість C ++, безліч навчальних посібників для новачків, але значно менше професіоналізму, а також деякі головні болі врятують, що IMO вкотре є лише сутичкою для того, що ви просто повинні вчитися на C ++. Мене спочатку залякували C ++ і полюбив C #, здебільшого через чути і чути думки дурнів, які мали ті самі неприємності, що і у мене з початком C ++: я просто хотів досить хорошого програміста. Я зрозумів, що потрібно вивчити більше основ і посилити свої слабкі сторони, щоб подолати неприємності, які виникли у мене з C ++, які C # "полегшили". Я коли-небудь пропускаю простоту деяких речей у C #? Навіть не! Я знаю, як це зробити в C ++ без клопоту.


Якщо бібліотеки низького рівня або навчання DirectX / OpenGL залякують вас, тоді просто зачекайте, поки ви почнете вникати в складність створення повноцінної відеоігри.

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

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

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

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

Хек, навіть деякі "ігрові рамки" низького рівня "- це не що інше, як кілька класів для створення вікна, відображення на дисплеї та відтворення аудіо. Це те, що професіонал може зробити з нуля, використовуючи інші бібліотеки, такі як SDL / SFML або власну реалізацію OpenGL / DirectX / OpenAL, за частку часу, який потрібно для фактичного завершення повноцінної відеоігри.


TLDR;

  1. Якщо ви хочете програмувати, навчіться бути програмістом .

  2. Уникайте використання двигунів , але не будьте дурнем і ігноруйте неймовірно корисні бібліотеки.

  3. Якщо ви хочете бути дизайнером ігор , спробуйте движок WYSIWYG та викачайте ці ігри!

  4. Якщо ви хочете бути ігровим програмістом , уникайте таких двигунів, як милиця.

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

Обсяг навчання, який я здобув у бібліотеках низького рівня за КОРОТКИЙ час, був набагато більшим, ніж кількість, яку я здобув за ДУЖЕ ДОЛГУ кількість часу з ДВИГАТЕЛЯМ вищого рівня **.


2
Відмова: Це лише моя історія та мій стиль навчання. Інші люди можуть бути різними. Для мене був просто різний світ для навчального процесу, коли я намагався бути ігровим ПРОГРАММЕР (речі низького рівня) замість ігрового дизайнера (залежно від двигунів).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.