Витративши сьогодні час, щоб записати деякі замітки щодо втілення стін у свою гру на основі плитки, я раптом зрозумів, що це не буде так просто, як я уявляв раніше. Хоча нинішній етап моєї роботи навіть не близький до того, щоб насправді зробити настінний код, я придумав три різні способи зробити це. Зараз я не впевнений, яка з моїх ідей буде найкраще працювати, і я щось пропустив чи ні.
Важливо: персонаж МОЖЕ стояти на плитці, яка має стіни, незалежно від їх форми.
Загальна річ для всіх трьох варіантів: мапа плитки буде "зберігатися" в одновимірному контейнері на основі std :: вектор (або подібний). Причини цього (приголомшливо) пояснюються у відповідях на інше питання.
Контейнерні класи в іграх на основі плитки.
Назад до стін.
А) Простий підхід.
Тут нічого фантазії. Кожна плитка-контейнер може містити не тільки символи, але й один або кілька предметів стіни, які прикріплені до краю всередині плитки.
Плюси: простота в реалізації, в двигуні нічого не змінюється. Мінуси: дві речі. Одне - це може бути просто в моїй голові, але деякі комбінації просто виглядають некрасиво. По-друге - такий підхід дозволяє зробити подвійну стіну з двох сусідніх плиток. Будівництво буде важливою частиною гри, а подвійні стіни дозволяють будівельникам, можливо, відмовитися від модернізації матеріалу стін за допомогою ігрових засобів, і просто досягти підвищеної міцності при подвоєнні існуючої стіни. Це не бажано. Звичайно, я міг би включити процедуру, яка забороняє подвійні стіни, але це буде погано себе почувати.
Б) Розумний (?) Підхід.
Замість того, щоб дозволити гравцям подрібнити всю карту, я збираюся перемогти їх. Кожна стіна має дві половинки, які прикріплені до краю плитки зсередини. Отже, щоб зробити єдиний "стінний блок", мені доведеться створити два об'єкти Half-Wall з двох сусідніх плиток.
Плюси: це симетрично !!! Крім того, не потрібно змінювати поточних характеристик двигуна. Мінуси: більше клопоту, більше предметів і, звичайно, «шапки». Як ви бачите на малюнку, куточок в основному буде плакати за «шапкою» об’єкта. Я насправді крутий з цим, це не так складно додати. Гей, у мене вже є план тонких стовпців, зроблених із чотирьох з'єднаних кришок. Солодке. Але все ж я хвилююся щодо можливих проблем із полем зору та лінією зору.
В) Загальний варіант капітального ремонту.
Або я можу просто створити межі та куточки як окремі контейнери для ігрових об’єктів. Ось так.
Плюси: Навіть не впевнений. Ну, це просто. Безумовно. Мінуси: знадобиться капітальний ремонт. Не з коду, на щастя, а з поточного менталітету ігрової механіки - це точно. Переваги не такі очевидні. Також для цього заходу потрібно набагато більше контейнерів, ніж два попередні. Математика індексування також буде трохи болю.
Так ось у нас це - три чіткі способи виготовлення стін між плитками. Якщо там є якісь альтернативи - я з радістю їх перевіряю. Якщо є якісь переваги / падіння будь-якого з підходів, яких я не бачив - будь ласка, вкажіть їх.