Робимо гру, частина 8 — ривок

0
1

Гра-бій мене дістала. Вона висить з 2008 року, в тому чи іншому вигляді — концепту, консольного додатка, флеш-прототипу, начерків коду, рисуночков на папері. Звичайно 1.5 року вона просто припадала пилом, поки я займався участю в проекті FOnline, а робочих сесій сумарно набереться кілька десятків, не більше + ще стільки ж навчальних спроб. Але все одно для прототипу, який в нормальних умовах створюється за вечір, три роки — занадто великий термін.

З ранку було бажання згорнути всю роботу в наказовому порядку, повісити табличку R. I. P. і переключитися на щось більш цікаве і привабливе. Наприклад, був милий прототип стратегічної іграшки, в якій потрібно було розвивати невелике умовне поселення. Жителі вирощували їжу, будували будиночки і розмножувалися. Іноді їжі не вистачало і вони їли один одного, знижуючи загальний населення. Іноді вдавалися ворожі гобліни і доставляли всім проблеми. Розробляючи місцеву «формулу канібалізму» я був щасливий. Веселий і в міру божевільний геймдев. У грі-битві веселощів вже не залишилося, чиста технічна робота. І тут виникла думка про те, що важливо все ж доходити до кінця. Чи гра-бій увійде в моє портфоліо або збере армію відданих фанатів, але довести ігрове додаток до точки — цікава задача. Цим і вирішено займатися, придушивши всі довгострокові плани і перспективні ідеї. Робимо базовий функціонал, наводимо візуальну частину до приємного увазі, вішаємо ярлик «Реліз» та переходимо до наступного проекту. До речі, на Гамине мене в свій час поправили і вірно помітили використовувати термін «функціонал» некоректно. У мене це просто калька з англійської functional. Але це так, лінгвістичні дрібниці, будемо відучуватися.

Останні кілька днів по 20-30 хвилин приділяється переписування коду. Я все одно до цього дістався, як і очікував. Пробігся по документації до ActionScript 3, ввів базові класи, розібрався з виникаючими проблемами і почав перенесення напрацювань у новий формат. Не дивлячись на простоту завдання, просувається все дуже повільно, не вистачає витримки і терпіння. Це, до речі, теж важлива якість при ігровий розробці. Але нічого, продовжуємо роботу потихеньку. Сьогодні спробуємо зробити неможливе — ривок до закінченої версії. Ось так відразу, без зайвих вагань. За роботу.

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

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

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

*годину роботи через*

Інтернет все ж таки чудова річ. Відповіді на всі виникаючі питання і рішення всіх проблем вже давно є, залишається тільки шукати і навчатися. І як же здорово, коли все починає працювати так, як потрібно. Ще дуже зручно виявилося створювати клас на основі існуючого. Ні, мова не про наслідування, це занадто крутий рівень. Просто структура та формат одного класу стали в нагоді при створенні іншого. Приємно. Працюючи багато над ігровими проектами, все одно буде збільшуватись папка з різними корисними напрацюваннями, функціями, алгоритмами і класами. А якщо виробити для себе певний стиль і спочатку готувати всі класи до максимально швидкому повторному і автономного використання — можна отримати дуже цікаві результати.

На сьогодні зробимо перерву. Ривок вдався, код переписаний в нормальному вигляді, заготівля для арсеналу є. Залишається переписати бойові функції під використання зброї та реалізувати саму зброю. Потім досвід-золото, лікування-відступ і далі дрібниці за списком завдань. І буде вже щось цілком іграбельне. І це здорово.

Зміни-оновлення репозитарію:

  • Напівробочий версія 0.5, на якій роботи були зупинені
  • Версія 0.6 (Combat Game New.swf), з переписанным кодом
  • Заготівля для арсеналу (кнопочки)
  • Класи і зброї воїна
  • Дрібні правки коду і алгоритмів

Що вийшло:

До речі, на фтп-сервері знайшлися два файли з минулим підходом до флешем. Для історії. Перший файл щодо симпатичний і з самої базової механікою, наноситься просто фіксований зазначений шкоди. З цікавого там метальні ножі, раптово виникла ідея, тут же і базово реалізована. Суть в тому, що можна в процесі бою метати, наприклад, витрачаються ножі, як додаткову дію до основної атаці. Відповідно можна було б вводити різні використовувані предмети, які змінювали б хід бою. І ще мені дуже подобається відтворення ножів, переносив у вектор з фотографії, дуже акуратно і точно, приємний досвід. Теоретично, можна і поточну гру наповнити більш ніж приємною графікою, отрисовав її з реальних об’єктів. Це не вимагає навичок малювання, терпіння і техніка. Але все одно хочеться художника, який буде цим займатися. Мене особисто і чистий текст влаштовує.

Другий файл зустрічає нас слетевшими шрифтами і трохи більш складною механікою. Хоча якщо придивитися, тут вже реалізований нормальний бій, вибір зброї, критичні удари (здається) і до більш-менш завершеного вигляду не вистачає тільки підрахунку результатів і завершення бою. Також є автоатака, незамінна для тестів. Автоматизація будь-яких повторюваних дій — корисна, на мій погляд, річ. 20 кліків мишкою — не геймплей, а рутина, так що можна їх замінити однією кнопкою. Зрештою, в попередніх нарисах по ідеям гри-битви основна мета позначалася як «втілення манчкизма», наголос на прокачування і статистику (в даному випадку досвід, золото і збитків). Бої це вже справа десята, як би абсурдно це не звучало. У первісній консольної версії, яка була найкрутішою з механіки (на ній я обкатував всі знання з товстого підручника З с++), було навіть подобу бойового інтелекту, примітивного звичайно. Персонаж пив зілля, здавався, атакував.

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

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here