Що таке дизайн, керований даними? [зачинено]


11

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

  • Немає жорсткого кодування
  • У двигуні немає специфічного для гри коду
  • Сценарій на ШІ, розрізи та ін.
  • Узагальнюючий код для повторного використання
  • Компонентна конструкція
  • Модульність
  • Низька муфта
  • Редактори (для даних, карт, сценаріїв)
  • Пошук зовнішніх даних
  • Константи, що зберігаються в текстових файлах ( .iniабо іншим чином)
  • Розкрийте дані через редактори для проектування сценаріїв та маніпуляцій

Тепер, моє запитання, чи правильно це розуміння?


3
Ласкаво просимо на сайт. Тут у вас є два питання (як правило, ви повинні задавати лише одне запитання за повідомлення), а друге питання про те, як розпочати роботу, вважається поза темою, тому я його відредагував, а також зрівняв питання. Якщо ви хочете обговорити, як з чогось почати, подумайте про відвідування Чату з розробки ігор .

@JoshPetrie Але це було найважливішим, оскільки я був на багатьох сайтах зараз і не отримав жодної відповіді. Навіть не ткнуть у бік. Мабуть, ДЕЯКІ люди, які трохи ознайомилися з цими темами.
OmniOwl

1
Крім того, пов'язані з : gamedev.stackexchange.com/questions/17331 / ...

1
Можливо, це для вас найважливіше, але це тут поза темою (див. Faq ). Я також міг би просто закрити питання. Відвідайте Чат розвитку ігор або власне дискусійний форум на зразок GDNet, якщо ви хочете задати питання щодо роботи.

1
@Vipar Зайдіть у чат, якщо вам потрібна допомога з питання, що не стосується теми. Не гарантуючи, що ви отримаєте допомогу, але багато розумних людей там зависають.
ClassicThunder

Відповіді:


10

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

Тож переходимо від стандартної глибокої ієрархії OO:

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

до окремого стану та системи

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

На даний момент найбільш впливовими парадигмами DDD є Entity Systems. Деякі приємні ресурси для пошуку:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/

http://entity-systems.wikidot.com/

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


Так, я забув згадати роздільну частину. І це саме та річ, яку я хотів би бачити. Я можу прочитати стільки теорії. Мені потрібно подивитися конкретні приклади. Дякую. Подивіться також статті!
OmniOwl

О, почекай, нарешті, знайшов найкраще пояснення, яке я прочитав деякий час тому. Виявилось, що це відповідь на запитання, яке я задав тут gamedev.stackexchange.com/questions/48971/… : D
Roy T.

4

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

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


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

1
Я опублікував відповідь на ваше запитання в GDNet . Суть проблеми полягає в тому, що: перестаньте так сильно намагатися, виберіть єдиний простий аспект того, чого ви в кінцевому підсумку хочете, і побудуйте з ним невелику гру.

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