Редактор рівня + Гра -> Копіювання коду рендерінгу / конкретного гри?


14

Я читав про те, як створити код для гри. Одне, що я не зміг з’ясувати, - це як вам вдається записати редактор рівня за межами гри (а не «редактор рівня в грі») без «копіювання» коду з гри? Наприклад, можливо, вам доведеться скопіювати весь код про різні типи об'єктів, які ви можете мати. Вам доведеться додати код візуалізації гри.

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

Або є кращий / простіший спосіб зробити це?

Відповіді:


13

Вам доведеться розділити свій код на окремі проекти (в одному і тому ж рішенні). Зазвичай у вас буде така настройка:

-Engine Core       (DLL)
-Game + Game Logic (EXE)
-Content Pipeline  (DLL)
-Editor            (EXE)

Для ще більших проектів ви можете розділити Engine Core на кілька проектів, таких як Core, Physics, Graphics, Audio, Input і Networking. Усі ці проекти не можуть посилатися один на одного, але всі вони посилаються на Core, де ви можете зберігати деякі загальні базові типи.

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

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

Цей поділ також означає, що тепер ви можете використовувати в редакторі лише технології Windows, наприклад WPF, тоді як ваша гра все ще може орієнтуватися на Windows та XBLIG.

Для отримання додаткової інформації про використання XNA у середовищі WPF див. Посилання: http://blogs.msdn.com/b/nicgrave/archive/2010/07/25/rendering-with-xna-framework-4-0-inside- of-a-wpf-application.aspx


Спасибі! Трохи більше оглядаючись, і я виявив це - create.msdn.com/en-US/education/catalog/sample/… - Схоже, WinForms підтримується краще, ніж WPF!
Utkarsh Sinha

Гей, це правда, але цей зразок є з 2008 року, перш ніж WPF дійсно зійшов з місця. Я перейшов з WinForms на WPF рік тому, і не хотів би, щоб світ повернувся назад :). Якщо ви хочете залишатися сумісними з цим зразком, ви завжди можете використовувати WinFormsControlHost у додатку WPF :).
Рой Т.

4

Розробляйте логіку візуалізації якнайкраще від реальної логіки гри під час проектування свого ігрового двигуна. Одним із способів цього є використання шаблону компонентів при створенні ігрового двигуна. Наприклад, XNA використовує цю модель на рамковому рівні для гнучкості. Використовуйте ту саму базу коду для візуалізації з редактором рівня; пишіть обгортки, якщо вам доведеться.

Аналогічно, ще одна дещо популярна модель - MVC (Model-View-Controller), яка також може допомогти. Кодуйте свій двигун, використовуючи звичайно MVC. Потім ви можете використовувати той самий код для View і Model, але ввести спеціальний контролер для редагування моделі для редактора рівня замість контролера ігрового двигуна, який оновлюється відповідно до вводу гри. Реалізуйте серіалізацію для ігрових моделей, щоб завантажити / зберегти їх із редактора чи гри.

Зберігання компонентів в окремих збірках, звичайно, сприятиме роз'єднанню ...

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