Історія ще однієї гри на Libgdx+Box2d

Ідеєю написати гру я загорівся ще в 2011 році. У серпні 2011 року, не маючи досвіду розробки на PHP, обклавшись книгами і цими вашими интернетами, ночами писав невелику браузерну космічну стратегію в реальному часі. Такий собі клон OGame. Зрозуміло, зі своїми дамами та преферансом. Але цього проекту не судилося народитися, у грудні 2011-го Батьківщина-мати раптом попросила віддати борг.

Повернувшись в грудні 2012 року, першим ділом влаштувався в місцеву велику IT-компанію. Потрібно було максимально швидко знову увійти в робочий ритм. До весни я вже не міг спокійно спати — мріяв писати гри. Другою спробою було написати простеньку TD на Unity. Щось навіть вийшло — гармати стріляли, моби рухалися. Але постійно мучив страх, що не зможу довести справу до кінця. Так воно і вийшло. Сім'я, робота — вільного часу не було зовсім. І тільки восени 2014 року твердо вирішив — я зроблю гру і крапка. Не буду спати, не буду їсти, але зроблю. Такий собі виклик на «слабо». Що з цього вийшло читайте далі.

Як все починалося

У 2013 році мені подарували планшет. Саме тоді я дізнався, що є таке диво, як Google Play. Коли ж вперше там опинився — захопленню не було меж. Очі розбігалися від кількості пропозицій. Через якийсь час в голові почали з'являтися якісь начерки майбутньої гри. Хотілося щось просте, але цікаве. Я з дитинства любив грати в Чапаєва. Саме на цій грі я і зупинився.

Так як бойових знань з Java і На у у мене не було, були замовлені на Озоні книги «Розробка ігор під Android», «Програмування ігор під Android», «Android для програмістів. Створюємо програми» і «Філософія Java». Після прочитання впевненості в силах додалося. Озброївшись блокнотом (як радили в книгах), я видав два начерку:
разів
і два
На цьому муза мене покинула. Художник з мене, як ви самі могли помітити, ніякої. Але на допомогу прийшов один зі старої роботи — великий майстер Фотошопу. Подивившись на мої шедеври, він видав першу версію дизайну




Я був у дикому захваті. Просто не вірилося, що ось-ось з'явиться гра. Тоді ж були показані ці макети одному-програміста, з яким ми давно вчилися в одному класі. І ось нас гарячих вже двоє. Але радіти довелося не довго, встановивши IntelliJ IDEA, ми зрозуміли, що не знаємо, що робити далі. Розпочався досить тривалий період пошуку інформації — як і на чому написати гру. У підсумку ми натрапили на Libgdx. Пробіглися по документації — воно. Саме те, що потрібно.

Але тут, як грім серед ясного неба до нас приходить ідея прив'язати до гри ще й історичні факти. Оскільки пишемо Чапаєва, то й оформлення має бути відповідним. Значить повинні бути Червоні і Білі (ці кольори були і в першій версії дизайну, але там вони випадково). Повинна бути символіка того часу. Повинна бути тактична карта (вона, до речі, теж є в першій версії і саме вона підштовхнула нас на історичну прив'язку). Повинен бути рейтинг. Повинно бути pvp. Повинен бути хитрий AI.

На виручку (вже вкотре) приходить наш дизайнер і видає зовсім іншу концепціюЗаставка:



Головний екран:



Рейтинги:



Налаштування:



Підготовка до бою:



Екран бою:



Екран вибором типу управління (надалі ми його прибрали, але він з'явиться у 2-й версії):



Пауза:



Бій закінчено!




Від макетів до коду

Писалося все у вільний від усього час. Треба зізнатися, що основна робота займала і займає більшу частину доби. Плюсом сім'я і домашнє суєта. У результаті ми були раді, якщо виходило попрацювати над грою хоча б 2-3 години. Але іноді траплялося чудо і ми ударними темпами, практично по-стахановськи, ночами створювали екрани гри один за одним. Насправді це виявилося простіше, ніж ми очікували. І вже через пару тижнів у нас був робочий прототип, який ми запускали на наших девайсах. Настав час писати сам ігровий світ з фізикою. Звичайно ж, натхнені ми кинули всі сили на свій велосипед. Але чим довше ми його писали і шліфували, то розуміли — ми провалюємося в нескінченний цикл. Написали щось нове — протестили, знайшли помилки виправили. І так до нескінченності. Іноді відвалюється те, що працювало ще вчора. Так тривати довго не могло, і ми вирушили на пошуки фізичного движка. До нашого великого здивування, ми знайшли те, що працювало в Angry birds, а саме Box2d. Зараз причини того захвату як-то незрозумілі. Зараз це все очевидно, але тоді ми раділи як діти.

Але тут нас подстерегало ще одна перешкода. Box2d дуже добре підходить для платформерів (на хабре досить статей з прикладами). У нас же гра з виглядом зверху. Вимикаємо гравітацію і допускаємо дуже серйозну помилку, а саме вибираємо неправильний масштаб ігрового світу, він виходить у нас ДУЖЕ великим. В результаті шашка рухається дуже повільно. Надалі, коли ми виправили цю помилку, виявилося, що при перерахунку на фізичні величини шашка рухалася зі швидкістю близькою до швидкості світла.

Підходив до кінця другий місяць розробки. Досвід накопичувався. Гра ставала все цікавішою. Але дуже багато чого ми ще не реалізували. У підсумку вирішили тимчасово відмовитися від мережевої гри і винести pvp-режим у другу версію гри. Натомість прикручуємо локальний рейтинг. Використовуємо SQLite і просто вважаємо статистику по іграх за AI і кожному гравцеві(коли дві людини грають на одному пристрої).

Для гри з «комп'ютером» ми написали простенький AI. Але вийшло, що він робив ходи шаблонно і після декількох партій гравець вже знає який шашкою піде бот. Довелося вдосконалити, а заодно додати хід по черзі і інверсію управління.

Гру ми перевели на англійську і німецьку.

Підсумок

30 грудня настав час «Ч». Витративши тиждень на тестування і виправлення помилок, ми довели справу до кінця. Зараз гра в Маркеті набирає скачування та рейтинги. На написання всієї гри пішло 2 місяці. Писали удвох. Всього ж у команді 3 людини.

Графіки викладати поки не має сенсу, так як гра всього два дні в продакшені, але на рекламі вже заробили майже 3$. Це не досягнення. Це просто факт.

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

1. Вивчайте конкурентів. Шукайте, аналізуйте, читайте відгуки.
2. Починайте збирати помилки ще на етапі тестування, це дуже економить час. Ми у своєму проекті використовуємо Crashlytics.
3. Проектування. Проектування. І ще раз проектування.
4. Прототипируйте. Візьміть папір. Намалюйте, наріжте. Спробуйте пограти в паперову версію. Дуже багато моменти будуть вирішуватися саме на цьому етапі.
5. Продумуйте способи монетизації на етапах з пунктів 3 і 4. Так як у нас нема що продавати (принаймні зараз), ми обійшлися лише показом реклами.
6. Краще — ворог хорошого. Ніколи не настане момент «Ну ось! Нарешті все готово!». Вмійте розставляти пріоритети задачам. Якщо реалізація нової фічі займає більше тижня і без неї грати цілком комфортно — знижуйте пріоритет. Переводите завдання на наступну ітерацію розвитку. Краще випустити версію, в яку можна грати, ніж потонути в морі «хотілок». Не ускладнюйте, будьте простіше.
7. Не соромтеся показувати проміжні версії друзям, колегам, знайомим. У них свіжий погляд. У них не упереджене ставлення до продукту. Вислуховуйте критику. Не ображайтеся, якщо жорстка критика. Всі люди різні. Не кидайтеся реалізовувати те, що на думку деяких людей буде бомбою. Візьміть на замітку. Хто знає, може бути це реально буде бомба.
8. Я завжди носив з собою блокнот. Ідеї приходили іноді зовсім несподівано. Намагайтеся все записувати. Куди легше і правильніше (імхо, звичайно ж) вибрати кілька вартісних ідей з купи начерків.
9. Ніколи! Чуєте? Ніколи не зупиняйтеся. Не бійтеся невдач. Невдачі — це прекрасно. Це показник того, що ви рухаєтеся. Це досвід. Його не купиш.
10. Вірте в себе. Навіть якщо ніхто більше у вас або в ідею не вірить (так, буває і таке). Це ваша ідея. І ви зобов'язані довести її до кінця.

На цьому у мене все. Дякую за увагу.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.