Instancing (continued)

Коротке повторення

Instancing has many handy uses. At a glance, with instancing you have:

  • Можливість розподілити сцени та полегшити керування ними.
  • Інструмент для управління та редагування декількох екземплярів вузлів одночасно.
  • Спосіб організації та вбудовування складних ігрових потоків, або, навіть, інтерфейсів користувача (у Godot елементи інтерфейсу також є вузлами).

Стиль проектування

Але найбільша сила використання екземплярів сцен, полягає в тому, що це чудовий стиль проектування. Це відрізняє Godot від усіх інших редакторів. Godot був розроблений з нуля саме навколо цієї концепції.

При створенні ігор з Godot, рекомендується відмовитись від найбільш поширених моделей проектування, таких як діаграми MVC, або Entity-Relationship, а замість цього продумати свої сцени більш природним чином. Почніть з уявлення видимих елементів у вашій грі, тих, які може назвати не просто програміст, а будь-хто.

For example, here’s how a simple shooter game could be imagined:

../../_images/shooter_instancing.png

You can come up with a diagram like this for almost any kind of game. Write down the parts of the game that you can visualize, and then add arrows to represent ownership of one component by another.

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

A lot of time spent in programming games (or software in general) is on designing an architecture and fitting game components to that architecture. Designing based on scenes replaces that approach and makes development much faster and more straightforward, allowing you to concentrate on the game logic itself. Because most game components map directly to a scene, using a design based on scene instantiation means little other architectural code is needed.

Давайте розглянемо ще один, дещо складніший, приклад гри відкритого типу з великою кількістю ресурсів та вкладених елементів:

../../_images/openworld_instancing.png

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

Потім ми могли б зробити сцену цитаделі, яка зроблена з багатьох екземплярів будинків. Далі ми могли б почати працювати над місцевою картою світу, додавши на неї цитадель.

Пізніше ми могли б створити сцени, які представляють охоронців (та інших NPC) і додати їх до цитаделі. Як результат, вони будуть опосередковано додані до загального ігрового світу.

With Godot, it’s easy to iterate on your game like this, as all you need to do is create and instance more scenes. Furthermore, the editor UI is designed to be user friendly for programmers and non-programmers alike. A typical team development process can involve 2D or 3D artists, level designers, game designers, and animators, all working with the editor interface.

Інформаційне перевантаження!

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

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