В минувшие выходные проходил очередной (уже 26 по счету) чемпионат по скоростной разработке игр под названием Ludum Dare.
Разработчикам-одиночкам давалось 48 часов, чтобы от начала и до конца сделать игру по теме "Minimalism".
Погода в тот день не задалась, вечер был свободный - вот я и решил поучаствовать ради интереса. Небольшой дневник разработки - под катом :)
21:32
За окном дождь. Только вошел домой. Чашечка кофе, пригласить в гости кота и за дело!
21:35
Если верить сайту,
Ludum Dare 26 Compo Ends: in 1 day, 8 hours, 24 minutes, 24 seconds
Я планирую разобраться с игрой за вечер - завтра свободного времени уже не будет.
Общая идея проекта, который созрел у меня в голове - минималистичное домино. Я обратил внимание, что когда люди играют в домино и выкладывают из косточек на столе “змейку” - значение для следующего хода имеют только две крайних косточки с их числом точек. Соответственно, я решил сжать весь игровой стол до одной косточки, у которой, в зависимости от сделанного хода, будет меняться левая или правая цифра.
Соперника - убрать.
Просчет косточек, которые уже были в игре - обойдемся без него.
Рабочее название игры - “Minimalistic Dominoes”.
Посмотрим, что выйдет!
21:47
Как выяснилось, под Виндой стоит только Visual Studio в версии для Windows Phone… Плохо дело! Качаю Express вариант для настольных приложений.
21:48
Одновременно кодирую все номера косточек домино, которые будут использоваться в игре:
00 - 1
01 - 2
02 - 3
03 - 4
04 - 5
05 - 6
06 - 7
11 - 8
12 - 9
13 - 10
14 - 11
15 - 12
16 - 13
22 - 14
23 - 15
24 - 16
25 - 17
26 - 18
33 - 19
34 - 20
35 - 21
36 - 22
44 - 23
45 - 24
46 - 25
55 - 26
56 - 27
66 - 28
Стандартный набор 28 косточек - цифры сошлись.
21:57
Visual Studio все качается, пока делаю графику для доминошек в фотошопе.
22:00
Надоело сидеть в тишине - включаю музыку.
22:07
Visual Studio установилась. Сейчас буду проверять, подойдет ли эта версия для разработки домино-игрушки.
22:11
Генерируем стандартную форму. 1280х720, тонкая полоска сверху.
Первый запуск!
Вот и мысли мгновенно растерялись - думаю, с чего теперь начать.
22:13
28 косточек будут расположены в 2 ряда
По 14 в одном ряду
По горизонтали 1280 пикселей
Нужен заметный отступ по краям, чтобы был воздух
50 точек по горизонтали для каждой - мало
70 - много
60 - в самый раз
14 * каждая по 60 = 840
Ок
Между ними отступы по 10 пикселей - это еще 130 точек
840+130 = 970 пикселей вся зона домино “на руках” игрока
310 на отступы
Значит слева и справа считаем по 155
Высота каждой косточки, соответственно, 60*2 = 120 точек (два квадратных сектора с точками).
22:22
Присутствие или отсутствие домино решено менять за счет FlatStyle стиля кнопки.
22:28
Дизайн формы
Первый ряд домино выстроен.
22:30
Есть второй ряд. Отсутствие домино решено менять за счет его сокрытия со стола игрока (FlatStyle себя не оправдал).
22:42
Вся графика по доминошкам в руках игрока завершена.
22:49
Загружаю графику в проект.
Понимаю, что нужно взять перерыв на еду.
***
23:15
Конец перерыва. Сажусь за программирование. Для начала пишу модули отображения домино в руках и их обновления.
23:26
Для домино в центре (то что лежит на игровом поле) нужна новая графика из отдельных левой и правой частей. Так будет проще эту доминошку отрисовывать. Делаю.
23:35
Отдельная графика по центральной доминошке готова.
Дописываю переменную, по которой она отслеживается.
23:40
Отрисовка центральной доминошки работает!
23:50
Занимаюсь случайными числами. Первое домино в центре экрана появляется случайное, набор домино в руках игрока тоже случаен.
00:10
Делаю для одной кнопки рабочий функционал “хода” игрока (если подходит к центральное доминошке - ход происходит, если нет - облом).
Выношу его в отдельную функцию и прикрепляю ко всем доминошкам в руках игрока.
00:20
Теперь при наличии возможности игрок может ходить любой доминошкой, которая есть у него на руках.
0:31
Добавил возможность взять еще одну доминошку, если игроку нечем ходить (кнопка TAKE).
Игру уже можно пройти до конца, потратив все свои доминошки.
0:32
Волевым усилием решено переименовать игру из Minimalistic Dominoes в Pixel Dominoes. Да, так стало правда лучше.
0:37
Добавил в код обработку победы игрока. Пока она пустая, но только что я формально прошел игру до нее. Почувствовал приятное чувство кхм… “близости завершенности”.
0:47
Прячу все элементы на загрузке, добавляю логотип Sometimes You и кнопку “BEGIN”, которая позволяет начать игру.
0:57
Еще немного доработки по титульному экрану и кнопка “AGAIN ?” для повтора игры.
Вроде бы по коду все готово :)
0:59
Из половинки центральной доминошки с пятью точками делаю иконку для игрушки в онлайн-редакторе иконок.
1:10
Оптимизация графики - снижаю разрешение у всех картинок в десять раз (в оригинале они были просто огромными).
Результат - 1,64Mb откомпилированного EXE превратились в 358Kb.
Время 3,5 дискет вроде бы давно прошли, но подобная оптимизация - это все-равно приятно!
Игра готова!
***
Напоследок - немного ссылок.
Скачать игру (меньше 64Кб в архиве):
http://sometimesyou.com/PixelDominoes_LD26.zipСкачать исходники:
http://sometimesyou.com/PixelDominoes_LD26_Src.zip Страница игры на Ludum Dare:
http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=23092Если игра понравилась - голосуйте, комментируйте :) Я только рад буду!