Инди
Howling_Shame_n12
1058

50 оттенков Сапера

Опыт создания мини игры для WEB, разговор об итерациях.

В закладки
Аудио

Приветствие

Здравствуйте читатели DTF, меня зовут Андрей я как и часть сидящих здесь периодически пишу свою игру, потом теряю к ней интерес и пишу новую. И кстати считаю что это правильным. Здесь я расскажу про то как сделал игру-сборник на несколько вариаций сапера, почему так получилось и зачем, покажу цифры с itch.io. Также поупражняюсь на вас в написании текстов.

Интерес к играм

Сначала о том в чем заключается мой интерес к играм, постараюсь написать как можно более кратко не ударяясь в детские воспоминания. В двух словах так : я считаю это совершенно новым видом искусства.

Это не новая точка зрения. Можно сказать да: "и что с этого? Мало ли других областей где можно заниматься творчеством", дело в том что ключевым тут является слово "новым". На мой взгляд 95% всех игры просто не являются играми и притом никто не знает как это вообще работает. Да есть индустрия огромный маркетинг, заводы со своими конвеерами, мобильный фастфуд, есть и мастера своего цеха, тема геймдева для меня нечто вроде океана из английских романах 19в в котором меня в основном привлекает та область где находится тема непрямого управления.

​Гулливер в стране великанов

К примеру попытки использовать теории из психологии, вас никогда не раздражало когда в играх вам за любой квест выдавалась награда? Как будто вы не человек а крыса которую поощряют куском сыра за правильное действие. Враги которые находятся в схватке с NPC но они не умрут пока игрок их не победит, потому что нужно чтобы игрок чувствовал себя звездой происходящего, ведь это же так работает(это комментарий со сценариста ведьмака 3 с юбилейного стрима на твиче). Притом есть куча популярных каналов на ютубе которые рассказывают о том почему та или иная игра хороша разбирают её механики, как бы вдохновляя зрителя. На мой взгляд они также ничего не знают, они наблюдают вершину айсберга но это не мешает им вещать от имени разбирающихся людей. Это чем то схоже с кинокритиками или зрителями которые пытаются рассказать режиссеру о том что ему нужно было делать чтобы снять хороший фильм. Но как бы то ни было и я сам не имею веса и опыта чтобы чтобы объяснять людям как они должны думать.

Работа на интересе не происходит без интереса особенно когда понимаешь что игра работает не так как задумывалось и превращается во что то другое. Метафорично это можно сравнить с нелюбимым приемным ребенком на которого ты должен тратить силы и деньги, только из за обязательств или нежелания потерять то что уже было вложено. Добавлю только что это довольно известные явления, это часто называют поиском прототипа, Сид Майер называл это Valley of Doom, а Джош Сойер Quick Sands.

Идея

Хоть интерес был потерян не полностью, а по причине накопившихся мыслей и случившейся бессонницы. Я решил сменить тему, переключиться на что то более простое, сделать для себя опыт участия в Ludum Dare. Только без таких жестких ограничений. Игру за 2-3 дня с минимумом ресурсозатрат, небольшой идеей и внутренней сложностью.

Среди всех пришедших мыслей по очкам победила идея сделать "сапера наоборот", ты видишь или размещаешь мины, указываешь боту точку старта и он берется за свое. Решения разной сложности и типа занимают разное время. Игрок должен оценить поле и сделать правильный выбор чтобы бот встретил как можно меньше спорных решений и прошел поле не ошибившись.

Реализация

Первоначально задумывалась только одна игра она должна была выглядеть так как её многие помнили, но работать наоборот. Решение сделать рабочий стол пришло само собойю. Из за того что в игре меняется размер минного поля и игру помнят именно такой - на рабочем столе, а не в рамке браузера. Итерация 1.

Как бы то ни было чтобы сделать бота первоначально нужно реализовать классическую версию, это было интересно тем что оригинальная версия была написана довольно криво, разработчики позволяли в ней те вещи которые я себе стараюсь запрещать, к примеру не форматированный ввод данных в окнах меню, странное поведение при нажатие средней или обоих кнопок мыши. Копируя поведение их программы можно было почувствовать себя историческим реконструктором, ощутить как жили древние люди. Ограничение символов на ввод имени в таблицу лидера было 33! Имя с такой длиной даже не влазит в таблицу! И я серьёзно думаю что это является отсылкой на возрасту Христа. Графику я извлек прямо из exe файла. Интересная деталь в ресурсах есть неиспользованное в игре пустое значение счетчика, видимо разработчики сначала сделали обычный таймер но позже захотели чтобы он выглядел как таймер обратного отсчета на бомбах в кино. Сделал я все довольно быстро на это ушло 2 дня больше всего времени ушло на дизайн архитектуры программы и изучение материалов по игре, об этом я писать не буду тк статья получится слишком растянутой.

Сделанный мною сапер на фоне рабочего стола Windows XP оказался вполне играбельным и вызывал у меня ностальгические чувства я решил его оставить. Итерация 2. Все-таки главное чем я руководствовался при создании игры делать интересную мне игру.

Сделать бота тоже было не так уж и сложно. День на написание второй на отладку. Правила у игры, довольно простые и определенные. Кстати, в некоторых версиях разработчики помогают игроку тем что автоматически расставляют флаги и открывают поля где присутствует простая однозначность.

​MSD Special modes Radomír Odstrčil

Он выглядел прекрасно именно наблюдать как игра из детства играет сама в себя. Также всплыло много проблем, например если игрок соревнуется за лучший счет и может размещать мины, то можно просто поставить все мины в угол и выиграть игру в один клик. Это можно было решить вводя дополнительные правила, например игрок мог разместить не все мины или не рядом, идея мутировала и все дальше и для её поддержки должен был быть целый комплекс решений чтобы объяснить игроку что как работает, которые притом вписывались бы в общую картину. Я понимал что это будет уже гораздо более серьезная игра, в которую в 2к20 никто не будет всерьез пытаться играть на рекорд тем более в какой-то одной из веб версий сапера. На этом интерес угас бот был сделан, создавать новую игру я не горел желанием. Да и сказать по правде изначальный геймплей сапера довольно сломанный.

Когда изучаешь материал и работаешь над архитектурой приходят новые идеи некоторые которые легко ложились на игру я и реализовал когда полишил игру.

Например версию сапера Minesweeper Marine, обычный сапер только через определенный промежуток времени бомбы которые не помечены фагом могут сместится на клетку(например на ту которую вы хотите открыть). Реализация её была очень простой из за наработанного кода. Итерация 3. С добавлением нового режима игра стала больше похожа на недоколлекцию.

В игре не было нормального музыкально сопровождения сделал подобие медиаплеера. Без кнопки пуска среда не походила на рабочий стол, сделал и её. С добавлением эти небольших деталей игра сдвинулась в сторону симулятора рабочего стола. Итерация 4.

​Время на часах всегда показывает 2004 год

Проверяя как все работает вспомнил как за неимением чем заняться за компьютером проверял себя на сообразительно прохождением сапера, сейчас мне кажется это довольно жутким. Захотелось сделать атмосферу игры более шизоидной. Чтобы с течением времени она меняла впечатление о себе и было более интересна при продолжительном знакомстве. Обои безмятежность менялись на портрет Бетховена который висел у гг из фильма Заводной Апельсин и "необычно" смотрящих деятелей науки Циолковского и Ньютона. Так случилась Итерация 5.

Находка

Я старался не добавлять в игру отсебятины чтобы все выглядело в одном стиле, но бота я все таки изменил добавив ему озвучку действий по аналогии с музыкальными версиями Игры Жизнь. Получилось на мой взгляд не плохо. Если развивать идею в этом направлении то можно сделать что то на подобии музыкальной шкатулки, роль музыкального паттерна которой будет исполнять карта для игры в Сапера, её может исполнять робот или человек. ШУЕ.

Демонстрация игры бота. Немного налажал с записью, звук отстает.

Резюме

Так сколько же народу поиграло в игру?

Вот скрин аналитики с itch.io на данный момент. Говорить тут особо не о чем, по нему видно что в игру поиграло 15 человек, 4 пришло с темы на Gamedev.ru.

Ну это и не удивительно я не планировал заниматься продвижением, игра небольшая, да и показывать в ней особо нечего, особенно когда её делаешь.

В общем на игру ушло 8 дней, она далеко "уплыла" от того чем задумывалась изначально и я считаю это пошло её только на пользу. У меня полностью пропал интерес, последнее что я сделал добавил вариацию Minesweeper Crazy может называется по другому, в ней бомбы имеют разный вес. Также добавил что то вроде пасхалки : через 2 минуты на рабочем столе появляется мелодия которая добавляет новые обои и увеличивает их ротацию.

Кто то может сказать: "Игра должна быть веселой", "Игры они для игроков", "Нужно заранее составлять план и следовать ему". Может и так, но целью этой игры было собрать резную шкатулку которая как минимум хотя бы лежала в списке моих игр на itch.io и радовала глаз.

Ну, на этом все, кто выдержал тот молодец, и "Все это как водится реклама, до новых встреч".

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Howling_Shame_n12", "author_type": "self", "tags": [], "comments": 7, "likes": 21, "favorites": 25, "is_advertisement": false, "subsite_label": "indie", "id": 95354, "is_wide": false, "is_ugc": true, "date": "Tue, 21 Jan 2020 19:50:52 +0300", "is_special": false }
0
{ "id": 95354, "author_id": 23684, "diff_limit": 1000, "urls": {"diff":"\/comments\/95354\/get","add":"\/comments\/95354\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/95354"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64960, "last_count_and_date": null }
7 комментариев
Популярные
По порядку
Написать комментарий...
3

странное поведение при нажатие средней или обоих кнопок мыши

Это не странное поведение, это фишка, которая так и задумывалась. Что-то уровня "ctrl+пробел ускоряет время в M&B:Warband" - оно есть, но обыватели этом не знают, пока они сами случайно на это не наткнутся или об этом им прямо не скажет кто-то другой.

Ответить
1

А еще в M&B клавишами "ctrl+J" можно поставить коня на дыбы!

Ответить
3

На первой картинке криво затертая ластиком png'шка с прозрачностью - вот уж действительно больной ублюдок)

Ответить
0

Да. К сожалению человеческий глаз устроен таким образом что не способен видеть всю png'шку целиком, как и правильно расставлять запятые)

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

0

Автор, где запятые? Больно читать подобный текст :с

Ответить
0

Сначала, когда только увидел пикчу, подумал, что только что узнал о скрытой функции в сапёре, о которой не знал никогда.
Заметку прочитал с удовольствием, единственный минус это конечно жесткое игнорирование пунктуации)

Ответить
0

 странное поведение при нажатие средней или обоих кнопок

Про среднюю не скажу, ее, вероятно, не было в лохматые года. Но при нажатии двух кнопок одновременно происходило вполне понятное действие. Например, если ты открыл уже одну мину и кликнул двумя кнопками по единичке возле этой мины, то такое действие открывало все закрытые ячейки в пределах одного радиуса от этой единицы. Это ускоряло процесс - не надо было прокликивать каждую ячейку, ведь мы уже знаем, что у этой единицы мина открыта, значит все остальные ячейки безопасны.

Ответить

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "chvjx", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ] { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcm9qZWN0SWQiOiI1ZTRmZjUyNjYyOGE2Yzc4NDQxNWY0ZGMiLCJpYXQiOjE1ODI1MzY0Nzd9.BFsYFBgalfu_3oH9Fj-oBhiEgVx976VQfprRahAELFQ", "release": "b62dd097" }
{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }