Епізод 00. Вступ

Нещодавно, вивчаючи роботу з мультимедійною бібліотекою SDL 2.0 засобами мови програмування Object Pascal, я вишукував приклади готових прости ігор, реалізованих за допомогою цієї бібліотеки. Аналізуючи вихідні коди готових робочих ігор, краще зрозуміти як це працює. Проте більшість прикладів наводились на мові C++ і використовували додаткові сторонні компоненти, що значно ускладнювало перенос таких проектів на Object Pascal.

Проте, переглядаючи результати пошуку на Github, я натрапив на один цікавий проект, який називається "Let`s make Dangerous Dave". Цікавість його в тому, що засобами мови C (не C++!), лише з використанням стандартних засобів мови та бібліотеки SDL2.0, за два дні, приблизно біля 4 годин кожен (за словами автора) було максимально близько до оригіналу відтворено цю всесвітньо відому ретро гру. Хоча й відтворено не на 100%, відсутній початковий екран, переходи між рівнями та звуковий супровід, але геймплей відтворено навіть дуже близько! І до всього цього навіть створено 10 відео на Youtube та коротка стаття на сайті автора як і чому це все робилось та що для цього потрібно.

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

Посидівши декілька вечорів, по цих відео в мене вийшло майже повністю відтворити цю гру на Object Pascal + SDL2.0 (лишилось декілька невеличких "косяків", які мені просто ліньки було виловлювати). Це дозволило мені краще зрозуміти як спланувати процес розробки і внутрішню структуру гри. До цього в мене ще не було досвіду розробки ігор за допомогою SDL 2.0, тому цей проект значно допоміг мені підготуватись до реалізації більш масштабного та серйозного проекту, до якого я вже досить давно готувався. І його реалізація починається саме сьогодні, з цього вступного епізоду, де ми розглянемо концепцію гри та спробуємо скласти "дорожню карту" розробки.

Що я використовував:

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

 
Поетапна розробка гри з використанням SDL2 з механікою аналогічною “Dangerous Dave In The Desert Pirates Hideout”. Попутно розібрати формат рівнів Tiled, сформувати фреймворк з можливістю повторного використання напрацювань і записати відео робочого процесу.

*****************
*Roadmap*
*****************
   ☐ Базовий ігровий цикл і відображення вікна
   ☐ Базова обробка подій і реакція на закриття вікна
   ☐ Завантаження та відображення графіки:
   ☐ винесення в окремий клас роботи з текстурами, тести
   ☐ менеджер текстур з розширеним управлінням текстурами, тести
   ☐ Базові ігрові структури:
      ☐ структура ігрового стану (режими гри):
         ☐ меню
         ☐ гра
         ☐ перехід між рівнями
      ☐ структури ігрових об'єктів
      ☐ структура рівня
      ☐ завантаження рівня з файла (формат JSON Tiled):
         ☐ завантаження тайлсетів
         ☐ завантаження тайлового прошарку
         ☐ завантаження прошарку об'єктів, які можна взяти
         ☐ завантаження інших об'єктів (точка входу, двері виходу, вороги...)
      ☐ відображення даних рівня в вікні
3. Реалізація ігрової логіки
    ☐ рухомі об'єкти і шляхи руху
    ☐ анімація об'єктів
    ☐ рух ГГ:
      ☐ обробка вводу користувача
      ☐ обробка колізій
      ☐ взаємодія між різними ігровими об'єктами
      ☐ реалізація камери та прокрутка рівня
    ☐ звуковий супровід гри
5. Розширені ігрові події:
   ☐ перевірка умови завершення рівня
   ☐ реалізація динамічної анімації об'єктів
6. Стани гри:
   ☐ режими меню/паузи/гри/перехід між рівнями
   ☐ збереження та завантаження стану гри - система сейвів (JSON)

З задачами ми визначились, тепер потрібно визначитись чим будемо користуватись. Найперше, що потрібно зробити, це підготувати систему для розробки. Я користуюсь розширеним дистрибутивом Lazarus: Code Typhon - The Pascal Visual Programming Studio. Операційна система, під якою постійно працюю - Linux Mint x64 (хоча все те ж саме можна виконатиі в ОС Windows), гра буде крос-платформною завдячуючи бібліотеці SDL 2.0 та компілятору FPC. Про те, що, як і куди встановити, детально розібрано в перекладі підручнику по SDL 2.0 в моєму блозі, тому не буду повторюватись, а перейду відразу до налаштування.

Що ж, в мене вже все встановлено, налаштовано і протестовано, тому в наступному епізоді приступаємо до розробки з "розбором польотів" що, як і чому саме так.

Немає коментарів:

Дописати коментар