Які функції належать до двигуна, а які - до гри?


19

Зараз я опиняюсь і впроваджую та випробовую нові функції мого 2D ігрового двигуна, безпосередньо кодуючи їх у двигуні. Одночасно у мене є вітрина гри з підтримкою сценаріїв, яка повинна викликати функції двигунів. Я додаю, наприклад, фіксований рух плитки до класу Entity в двигуні, а не проробляти це спеціально для гри. Це, безумовно, порушує уявлення про загальний двигун, який використовується більше ніж одна гра.

Чи є найкращі практики, щоб зосередитись на правильній реалізації у правильних частинах (тобто двигун проти гри)?

Відповіді:


25

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

Тому що, врешті-решт, чому ви хочете задану функцію в двигуні, а не в грі, це те, що вона поділяється між кількома іграми. Зазвичай це такі речі, як малювання команд, контролерів введення та мережевого коду. У 2D ігровому двигуні буде багато функцій 2D-графіки, наприклад завантаження зображень, ієрархія відображення з z-порядком, обробка спрайтових таблиць, вирівнювання тощо. Для багатьох ігор потрібне фізичне моделювання, хоча з іншого боку багато хто цього не робить. Тим часом більше "під капотом" матеріалів, які використовуються майже в кожній грі, включає таймери, обмін повідомленнями подій і навіть математичні функції, характерні для розробки ігор (наприклад, distanceToTarget ()


Довга історія:

A) Двигун повинен мати функції, якими ділиться більшість ігор.

Б) Ви дізнаєтеся, якими функціями ділиться, зробивши купу ігор.


7
+1 -just start making games without worrying too much about the "engine"
JCM

1
Ну just start making games without worrying too much about the "engine", безумовно, приємна пропозиція.
Крістіан Івічевич

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

2
Це відмінна ідея, оскільки вона також утримує вас від впровадження функцій двигуна, які вам насправді не потрібні у своїх іграх.
Захарій Йейтс

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