Pull to refresh
174
Karma
17
Rating
Валентин @GlukKazan

Программист, Администратор БД

Hex: Мастерим бота

JavaScript *Machine learning *Logic games TensorFlow *
✏️ Technotext 2022
— Стало быть, эта штуковина только выглядит так, будто умеет думать? — Э… да.
— А на самом деле не думает? — Э… нет.
— То есть просто создаёт впечатление, будто бы думает, а на самом деле это всё показуха?
— Э… да. — Ну точь-в-точь как все мы.

                    Терри Пратчетт "Санта-Хрякус"

Триумфальные победы AlphaGo (и впоследствии AlphaZero) всколыхнули интерес общественности как к нейросетям, так и к настольным играм. Конечно, есть люди, которые считают, что AlphaZero «побеждает нечестно», поскольку на самом деле учится не совсем с нуля, а использует поиск Монте-Карло, в дополнение к тому, что ему советует нейросеть (говоря серьёзно, использование языковых моделей, в применении к настольным играм, выглядит интригующим и я желаю всяческих успехов в этом направлении), но хочется поэкспериментировать с чем-то не требующим грандиозных вычислительных мощностей и получить на выходе что-то, пусть и не играющее «на уровне Бога», но вполне пригодное для того чтобы играть с ним было интересно.

Мне важен результат и я готов использовать минимакс, Монте-Карло или даже нейросети, лишь бы добиться хоть какого-то успеха (особенно с учётом некоторых ограничений накладываемых JavaScript на производительность, по сравнению с компилируемыми языками и массовым использованием GPU). Разумеется, начинать эксперименты с Го несколько самонадеянно. К счастью, это не проблема. Я знаю много других игр.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 1.8K
Comments 10

Го: Дообучаем модель

JavaScript *Machine learning *Logic games TensorFlow *
What will we do with a drunken sailor,
What will we do with a drunken sailor,
What will we do with a drunken sailor,
Early in the morning?

Drunken Sailor


В прошлый раз мы остановились на том, что модели на основе свёрточных нейросетей, вполне способны подсказывать интересные и неочевидные ходы и, таким образом, могут использоваться как основа для построения бота для игры Го. Напомню, что источником модели послужила вот эта замечательная книга. Для того чтобы двигаться дальше: дообучать модель, просто с ней экспериментировать или вообще полностью переделать и обучить с нуля, требовались вычислительные ресурсы. И они появились…
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 1.8K
Comments 4

Го: Долгая дорога к боту

JavaScript *Machine learning *Logic games TensorFlow *
✏️ Technotext 2021
There is no difference between theory and practice in theory,
but there is often a great deal of difference between theory
and practice in practice.

Yogi Berra

Я слепым вместо глаз вставил звезды и синее небо.

Юрий Шевчук


Тема игровых ботов с самого начала была для меня довольно чувствительной. Используя Dagaz, я научился воссоздавать самые разнообразные игры, но что в них толку, если с тобой никто не играет? Nest позволил разработать сервер, для игры по сети, но до тех пор пока на нём не слишком много народу, боты продолжают оставаться актуальными. Универсальные боты, которые я писал, были медленными и слабыми. К счастью, знакомство с Garbochess позволило переломить ситуацию, по крайней мере в том, что касалось шахматных игр. Признаюсь честно, я никогда не думал, что у меня появится бот для игры в Го
Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Views 5.1K
Comments 11

День программиста на носу

JavaScript *Programming *Logic games
Думаю, ни для кого не секрет, какой именно праздник собирается отмечать вся прогрессивная часть общественности 13 сентября сего года. Вот и мы решили отметить. Мы — это компания ТЕНЕТ г.Казань. Отмечать будем путём проведения хакатона (с 11 по 12 сентября) и последующего турнира. Будем писать бота для настольной игры. Все желающие могут поучаствовать в режиме online. Призы будут (мы просто пока не решили какие именно). Подробности под катом.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 2.7K
Comments 5

Путеводитель разработчика по Garbo-боту

JavaScript *Game development *Logic games
у него есть два больших преимущества

Во-первых, он дешевле; а во-вторых, на обложке у него большими веселыми буквами напечатан дружеский совет: Don’t panic!

Дуглас Адамс


Из всего многообразия шахматных движков, Garbochess я выбрал по двум причинам: для него есть понятный JavaScript-код и он неплохо играет в Шахматы. Мне совсем не требовался гроссмейстерский уровень! Если бот играет слишком сильно, то обычных людей (вроде меня) это только отпугивает. Требовалась лишь игра достаточно разумная, похожая на игру человека, без глупых раздражающих ошибок и Garbochess мне всё это дал. К сожалению, как и большинство других шахматных движков, он играл только в одну игру — традиционные Шахматы. Именно это мне и предстояло исправить.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 860
Comments 9

DagazServer: Встречайте Garbo Chess

JavaScript *Game development *Logic games
Кто мне сказал, — «не получится»?
Если мне хочется, сбудется!

Земфира

Плюнь тому в глаза, кто скажет,
что можно объять необъятное!

Козьма Прутков "Плоды раздумья"


Новогодние праздники вновь навалились внезапно. Такое обилие свободного времени было просто необходимо разбавить какой-то осмысленной деятельностью и я решил приделать к своему серверу бота для игры в Шахматы. Готовых шахматных движков существует множество. Я решил остановиться на Garbochess-JS — простой и понятной реализации, на языке JavaScript, названной в честь знаменитой актрисы Греты Гарбо (вы можете видеть её на фотографии).
О том, что из этого вышло, читайте далее...
Total votes 18: ↑18 and ↓0 +18
Views 2.8K
Comments 5

DagazServer: Чему научили пользователи

JavaScript *Game development *Game design *TypeScript *Logic games
Детали, мелочи, нюансы. Сочетание пустяков.
От перестановки слагаемых всё меняется.
Раз, и будущее – открытая книга.

Нюанс за нюансом, подробность за подробностью…
Это была не игра, это была откровенная дерзость.

Генри Лайон Олди «Нюансеры»

Предусмотреть всё невозможно. Именно поэтому умные люди и придумали бета-тестирование. Поскольку, в моём случае, проект открытый и бесплатный, оно мало чем отличается от обычного функционирования сайта. Люди играют в игры, а я наблюдаю, исправляю найденные ошибки, извиняюсь и наблюдаю снова. А ещё, я прислушиваюсь к советам, порой неожиданным и, часто, очень полезным.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Views 1.5K
Comments 4

Десять игр от Dagaz

Self Promo

Долго ли, коротко ли, но я развернул свой сервер. Теперь это не просто коллекция игрушек, в меру укомплектованная слабенькими ботами, а полноценная возможность игры с другими людьми по сети. Сразу скажу, что игры, в основном, тяготеют к традиционным, но есть и авторские, порой довольно экзотичные. Кстати, если по вашему мнению какой-то из игр не хватает — пишите мне, я постараюсь добавить.
Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 1.9K
Comments 11

DagazServer: Как всё устроено

JavaScript *Game development *TypeScript *Logic games
По всей видимости, я не самый правильный фронтедщик. Большую часть сознательной жизни я занимаюсь базами данных и немного бакендом. Любовь к настольным играм — вот что заставило меня связаться с web-разработкой. Новый, совершенно незнакомый мне язык программирования — JavaScript, я изучал по ходу дела. Допускаю, что многое из того что я делал, способно ужаснуть опытных web-разработчиков, но я стараюсь стать лучше. Этот текст не для тех, кто привык во всём следовать раз и навсегда написанным инструкциям. Но если вы любите экспериментировать, докапываться до каждой мелочи, открывать новое для себя, добро пожаловать под сень моего леса.


Total votes 21: ↑20 and ↓1 +19
Views 2.8K
Comments 7

Как мы турнир провели

Game development *Logic games
🔥 Technotext 2020
Потому что совместный труд, для моей пользы
— он объединяет.

Матроскин

Бросая в воду камешки, смотри на круги, ими образуемые; иначе такое бросание будет пустою забавою.

Козьма Прутков «Мысли и афоризмы».


Недавно, в прошлую пятницу, мы решили слегка разнообразить свои будни, проведя программистский турнир. Повестка определилась не сразу. Были мысли про аналитическую обработку данных, машинное обучение, но в конце концов, остановились на настольных играх. Нам хотелось ввести в мероприятие элемент соревнования, а что, как не игры, позволяет легко это сделать?
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 1.6K
Comments 6

Сплетая дизайн

Game development *Game design *Logic games
Три кольца — премудрым эльфам
— для добра их гордого.
Семь колец — пещерным гномам
— для труда их горного.
Девять — людям Средиземья…

Джон Рональд Руэл Толкин


Работая над играми, я уделяю большое внимание дизайну. Речь идёт не о красивой картинке, хотя и она конечно имеет значение. Прежде всего, для меня важны удобные игровые механики. Игра должна приносить удовольствие. Когда в Сапёре при клике на пустое поле автоматически открываются все поля, не соседствующие с минами — это удобно. Известный всем пасьянс также можно значительно улучшить, просто избавив пользователя от необходимости выполнения лишних действий. Но сегодня я хочу рассказать о другой игре. Той самой, которая изображена на КДПВ (как обычно, все картинки в статье кликабельные).
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 4.1K
Comments 12

Dagaz: История с персистентностью

JavaScript *Game development *Logic games
Любая достаточно развитая технология неотличима от магии.
Артур Кларк
 
— Я больше не хочу быть сравнением… Сделайте меня метафорой.
Чайна Мьевиль


Работа над большим проектом похожа на метроидванию. Решая частные проблемы, мы открываем новые возможности. Со временем, эти возможности крепнут, соединяются с другими возможностями и это позволяет решать застарелые, куда более важные и сложные проблемы новым, совершенно неожиданным способом. У меня есть хороший пример на эту тему. И я хочу о нём рассказать.
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Views 2K
Comments 4

Dagaz: Сумма технологий

JavaScript *Game development *Logic games
          Итак, технологии интересуют меня, так сказать, по необходимости: потому что всякая цивилизация включает и то, к чему общество стремилось, и то, чего никто не замышлял.

          Порой, и довольно часто, путь технологии открывал случай: искали же когда-то философский камень, а нашли фарфор.
 
 
Станислав Лем.


С самого начала работы над проектом, было понятно, что качественный AI мне жизненно необходим! Самому с собой играть скучно, а модуль для игры по сети — он неизвестно когда ещё будет. Я пытался писать ботов сам, но все они работали либо плохо, либо плохо и медленно. В конце концов, я устал заниматься этой самодеятельностью и нашёл шахматного бота, качество игры которого меня вполне устраивало. Но тут возникла проблема. Мне-то были нужны не только Шахматы. Тому, как я с этим боролся, и посвящена эта статья.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 2.3K
Comments 19

Dagaz: A new Beginning

JavaScript *Game development *Logic games
Translation
It runs south and circles north, circling, circling to run with its wind
And according to its circuits the wind returns;
All the rivers run into the sea — and the sea does not overflow,
To the place where the rivers run, — There they continue to run;

The book of Ecclesiastes


In 1998, a completely unique, for its time, application was developed that allows you to reduce the process of developing an abstract board game (or puzzle) to a small text description language, vaguely reminiscent of Lisp. This project was called Zillions of Games. It created a furor among fans of board games. Currently, over 2,000 applications have been created using this technology.
Total votes 7: ↑7 and ↓0 +7
Views 1.5K
Comments 2

Dagaz: Эпизоды (часть 2)

Game development *Game design *Logic games
— Один слон, одна колесница, пятеро пехотинцев и трое всадников составляют ПАТТИ, утроенное ПАТТИ составляет СЕНАМУКХУ,…
а десять АНИКИНИ составляют АКШАУХИНИ, и это есть самая крупная войсковая единица…
                                           Генри Лайон Олди «Гроза в безначалье»


В прошлой статье я рассказывал о шашках и это не случайно. Шашечные игры, с их составными ходами, послужили основой проекта, составили его костяк. До сих пор, шашки подкидывают мне сюрпризы. Например, буквально на днях, мне довелось исправлять застарелый баг, связанный с опцией отложенного взятия. И вообще, как я уже говорил, шашечные игры сильно недооценены. Но одними лишь шашками дело не ограничивается…
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 1.6K
Comments 7

Dagaz: Конец одиночества

JavaScript *Game development *Logic games
Счастье для всех, даром
и пусть никто не уйдёт обиженный! 
 
А. и Б. Стругацкие «Пикник на обочине»
 
          

Боты, как бы хорошо они не играли, плохая замена живым игрокам. Если бот играет слабо — это не интересно. Если сильно — это обидно и снова не интересно. Баланс соблюсти чертовски трудно (тем более, что для каждого игрока он индивидуальный). Я уже давно собирался реализовать сетевую игру, но всё упиралось в необходимость содержания собственного сервера. К счастью, решение пришло с неожиданной стороны.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 2.7K
Comments 5

Dagaz: Эпизоды (часть 1)

JavaScript *Game development *Game design *Logic games
Мы расшатали ваши умственные фильтры, и в результате появился ответ. Метод сработал, он будет действенным всегда. Все, что необходимо сделать — это избавиться от лишнего груза предрассудков…

Раймонд Джоунс "Уровень шума"


Dagaz появился не на пустом месте. Я всегда увлекался настольными играми и головоломками, а программированием занимаюсь сколько себя помню, но мысль о некоем «универсальном» движке просто не могла бы прийти мне в голову. К самой этой идее я относился скептически. Пока не увидел Zillions. К сожалению, продукт, на тот момент, уже не развивался, исходный код был недоступен, да и вообще, программа работала только под Windows. Спустя некоторое время, я решил взяться за открытый проект.
Total votes 24: ↑24 and ↓0 +24
Views 2.5K
Comments 5

Dagaz: Ошибки

JavaScript *Game development *
imageДело помощи утопающим —  
дело рук самих утопающих.

И.Ильф и Е.Петров.

 
 
Ошибки ошибкам рознь. Работая над проектом, я веду свой личный рейтинг ошибок. Что-то исправляется совсем легко, при первом запуске, что-то намертво прибито гвоздями к архитектуре и потому отравляет жизнь годами. Некоторые ошибки просто вымораживают. Когда их исправляешь — чувствуешь, что живешь. Я люблю такие ошибки.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 2.1K
Comments 4

Dagaz: Подробности

JavaScript *Game development *Game design *
imageВ «пи» цифр не пересчитать,
«е» — бесконечно столь же.
А если их с конца писать, какое будет больше?

Мартин Гарднер «Крестики-нолики»


Для этой статьи, я хотел выбрать другой эпиграф, но счёл его излишне пафосным. Очередной релиз вновь затянулся. За это время, я успел сменить работу! Работа на новом месте отнимает уйму сил, но я продолжаю находить время для своего маленького увлечения. И надо сказать, то, с чем мне приходится сталкиваться в процессе, становится всё сложнее и сложнее. Я расскажу вам об этом. Я хотел начать с другого эпиграфа, но этот тоже неплох.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Views 2.8K
Comments 13

Dagaz: Из тумана

JavaScript *Game development *Logic games
imageВсе это плутни королевы Маб.
Она в конюшнях гривы заплетает
И волосы сбивает колтуном…

Вильям Шекспир


Это был долгий релиз, но и сделано было немало. Появился session-manager, позволяющий откатывать ошибочно сделанные ходы. Кое где добавилось звуковое оформление. А ещё, я придумал прикольный способ, позволяющий затолкнуть несколько альтернативных вариантов начальной расстановки в одну игру. И самое главное — я наконец добрался до игр с неполной информацией.
Total votes 15: ↑15 and ↓0 +15
Views 2.4K
Comments 15

Information

Rating
282-nd
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity