
В минувшие выходные проходил очередной (уже 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
Если игра понравилась - голосуйте, комментируйте :) Я только рад буду!
Community Info