Чому XNA не вважається ігровим двигуном?


13

Мені просто цікаво, чого не вистачає XNA, щоб вважати ігровим двигуном. Це все, що повинен робити ігровий движок (крім фізичної частини); він також підтримує кожен аспект, визначений у статті Вікіпедії про ігрові двигуни .

Чому XNA не вважається ігровим двигуном?


19
@Miro Це не має сенсу.
Качка комуніста

2
У чому справа? Якщо вона виконує потрібну вам роботу, використовуйте її. Якщо ні, то не варто. Кого хвилює, як це називають люди? Це все-таки етикетка, в основному використовується з маркетингових мавп;)
Maik Semder

це просто, тому що коментар Комуністична качка відповіла на мій коментар у цьому питанні
Ali1S232,

4
@Maik Semder Це зовсім не етикетка. Двигун та каркас - це дві чіткі та окремі речі, а XNA - остання. Корисно розрізнити і зрозуміти, що XNA не є двигуном, інакше ви можете дуже заплутатися, коли виявите, що насправді може знадобитися створити двигун у XNA, або що він не пропонує ніяких плагінів-деяких-біт-і- грати можливості, як і справжні двигуни.
doppelgreener

3
@Maik Це частина того, як ми розробляємо те, що він робить. Я кажу водію , ви знаєте, що це таке, а що ні, що він робить і як ви можете ним користуватися. Щось подібне повинно трапитися, коли я кажу, що фреймворк - але тільки якщо ви визнаєте, що таке фреймворк, а що - ні (двигун). Враховуючи ці практичні наслідки, я в основному заперечую проти вас, кажучи: "Кому все одно, як люди це називають? Це все одно просто ярлик"
doppelgreener

Відповіді:


28

Microsoft XNA - це набір інструментів із керованим середовищем виконання, що надається Microsoft, що полегшує розробку та управління комп'ютерними іграми. XNA намагається звільнити розробників ігор від написання "повторюваного кодового коду" та об'єднання різних аспектів виробництва ігор в єдину систему.

Він розроблений як рамка - насправді XNA - це Microsoft XNA Framework - технічно це не назва двигуна за назвою.

Немає "двигуна" - якщо ви помітили, ви отримуєте свій основний клас від XNA.Framework.Game і вам належить самостійно переосмислити функції малювання та оновлення. Немає центральної системи візуалізації, системи введення або аудіосистеми, яка не готова. Є класи SpriteBatch і вершини, є KeyboardState, і є деякі аудіокласи .. але вони є лише абстракціями над кодом малювання низького рівня.

EDIT: Для корисності, чому щось має значення, якщо його позначають як двигун, рамку, бібліотеку чи набір інструментів?

Щоб дещо з'ясувати: я розробляю двигун у XNA. Очевидно, я не можу зробити це в чомусь на зразок нереального, як згадував Джонатан. Однак є кілька речей, які я вважаю важливими, що у XNA просто немає:

Plug-n-play: Я хочу мати можливість зробити якийсь шаблон - майте цю HP, цю сітку, цю анімацію та BOOM! У мене в грі є NPC.

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

Гра відокремлена від двигуна - Можливо, є клас «гра», але я хочу відокремити свою логіку та свій код від базової системи. Я не хочу if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)змішуватись з оновленням буферів мого графічного рендерінгу.


Я погоджуюсь, що вам доведеться переосмислити налаштування для малювання та оновлення, але це не означає, що він не має механізму візуалізації, справа в тому, що це робить все готове для вас малювати, і це не лише абстрактні дзвінки, а лише те, що дивляться на його зразок він не має нічого менше, ніж 2d GameEngine (я не перевірив 3d речі реально), і наскільки я пам’ятаю, у нього є контролери вводу, і я маю на увазі, що це просто фреймворк, тому що Microsoft назвав його так чи у нього є якась логічна причина ?
Ali1S232

1
@Gajet: Подумайте на мить, що в мережі є дискусія про те, як створити двигун у XNA, але не для Unreal Engine чи CryEngine. Я думаю, що загальною характеристикою ігрового двигуна є те, що ви можете просто підключити біти і щось піде ( TV Tropes стверджує, що двигуни можуть бути досить керовані даними в цьому плані ). Навпаки, XNA дозволяє вам робити кожну унцію роботи самостійно - вам просто не потрібно створювати проміжне програмне забезпечення для взаємодії з пристроями.
doppelgreener

1
Крім того, я не вірю, що я ще знайшов чітке визначення ігрового двигуна, але те, що я знаю, це те, що є ігрові двигуни , а XNA просто не робить жодного з речей, які вони роблять (крім надання проміжного програмного забезпечення та деяких дуже прості компоненти низького рівня).
doppelgreener

@ Джонатан Хоббс: тепер я бачу, про що ти говориш, але я знову спробував GameBryo (NetImmerse), і це вважається грою, але до тих пір, поки у lightpeed у нього не було особливостей, ніж у самої XNA, це було просто середнім часом, тому я думаю, що ми може змінити назву питання наwhat makes an sdk to be called a GameEngine?
Ali1S232

1
Але ви могли б розробити двигун, використовуючи існуючий двигун як основу, якби дуже хотіли бути педантичним. Багато людей взяли землетрус 3 tech, потім зробили двигун, який був більш корисним. Потім ви також можете взагалі зробити гру без "двигуна", якщо цього дуже хотіли. Правильніше називати xna фреймворком, але я не знаю, як робити відмінність від "двигуна", оскільки він не настільки чітко визначений, як "фреймворк".
Тетрад

5

Рамка забезпечує мінімальну архітектуру, побудовану для конкретного типу додатків. Це зводить до мінімуму припущення про деталі реалізації за межі заявлених цілей архітектури. Хоча рамка розвитку платформних ігор може мати за мету забезпечити "те, що є загальним для (майже) всіх комп'ютерних ігор, незалежно від платформи", і може реалізувати лише такі абстрактні фактори, як терміни та управління суттю, XNA Framework (неявно) має на меті забезпечити "те, що є загальним для (майже) всіх комп'ютерних ігор, написаних для виконання на XNA CLR". Зважаючи на те, що цей фокус настільки вузький, вони змогли безкарно включити функції двигуна. Вони поєднують все це під заголовком "Рамки", оскільки це вказує на певну свободу реалізації, якою ви як розробник гри користуєтесь.

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


2

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

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

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

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