Ещё год назад я писал о том, как с помощью совершенно бесплатного Дипсика навайбкодил свою версию alias. После этого проект по сути оказался заброшен до лучших времён. Недавно я вспомнил о нём и решил довести до ума. Как раз появилось новы идей, да и нейросети продолжают развиваться. Напоминаю, что базовый принцип прост: нейросеть сама пишет код, я лишь даю ей задания, планирую архитектуру. Сам я разве что вношу небольшие правки, где быстрее самому что-то изменить, нежели просить ИИ.

Вот так бесхитростно выглядит "морда", то есть главная страница. Здесь можно создать лобби или ввести код для подключения к существующему. Можно также присоединиться по ссылке. Создавать статистику игр, указывать игроков онлайн и т.п. смысла не вижу - проект не планируется как публичный сервис. На этом экране вообще без изменений.
Вот так бесхитростно выглядит "морда", то есть главная страница. Здесь можно создать лобби или ввести код для подключения к существующему. Можно также присоединиться по ссылке. Создавать статистику игр, указывать игроков онлайн и т.п. смысла не вижу - проект не планируется как публичный сервис. На этом экране вообще без изменений.
Основной интерфейс комнаты. Тут тоже незамысловато: пока комната находится в ожидании старта игры, организатор может изменить настройки, а игроки распределиться между командами. Всего на данный момент доступно до 4 команд. Не стал делать больше пока что, однако стоит заметить, что важной частью изменения кода стало то, что теперь вся логика игры не завязана строго на две команды. Раньше расчёт победных очков и перехода хода был жёстко с этим связан. Зрители могут просто наблюдать игру. А ещё названия команд можно изменить.
Основной интерфейс комнаты. Тут тоже незамысловато: пока комната находится в ожидании старта игры, организатор может изменить настройки, а игроки распределиться между командами. Всего на данный момент доступно до 4 команд. Не стал делать больше пока что, однако стоит заметить, что важной частью изменения кода стало то, что теперь вся логика игры не завязана строго на две команды. Раньше расчёт победных очков и перехода хода был жёстко с этим связан. Зрители могут просто наблюдать игру. А ещё названия команд можно изменить.
Интерфейс самой игры. Ведущий видит слово, которое он объясняет, а другие игроки из его команды, что логично, нет. Для второй команды можно настроить - показывать ли им слово в момент объяснения или нет. В любом случае, после нажатия "Верно" или "Пропустить" слово попадает в историю раунда. Пришлось немного повозиться с настройками таймера, так как в игре он разделён на серверный и пользовательский (чисто графический). Есть даже хак: после того, как время в пользовательском таймере истекло можно накликать ещё пару слов, если быстро жать мышкой. Но это не критично - накликать то и до окончания таймера можно, но зачем?
Интерфейс самой игры. Ведущий видит слово, которое он объясняет, а другие игроки из его команды, что логично, нет. Для второй команды можно настроить - показывать ли им слово в момент объяснения или нет. В любом случае, после нажатия "Верно" или "Пропустить" слово попадает в историю раунда. Пришлось немного повозиться с настройками таймера, так как в игре он разделён на серверный и пользовательский (чисто графический). Есть даже хак: после того, как время в пользовательском таймере истекло можно накликать ещё пару слов, если быстро жать мышкой. Но это не критично - накликать то и до окончания таймера можно, но зачем?
Промежуточный результат. На этом этапе игроки всё ещё могут голосовать за слова (как и в процессе раунда). Если ведущий отметил его как правильное, но другие заметили ошибку (например, объяснял с использованием однокоренного слова), они нажимают - "Не угадано". Я реализовал также функционал за голосование за "Угадано правильно", отмену голосов и даже список проголосовавших. Учитываются голоса каждого игрока. Опять же, нет задачи сделать максимально "защищёно от злоупотребления", так как играют свои, просто решил немного углубиться в систему. Заодно, после переписывания кода логики команд существенно улучшился функционал перехода лидерства при смене хода: оно передаётся между командами по очереди и от игроков к игроку внутри команд. Не рандомно, но стабильно.
Промежуточный результат. На этом этапе игроки всё ещё могут голосовать за слова (как и в процессе раунда). Если ведущий отметил его как правильное, но другие заметили ошибку (например, объяснял с использованием однокоренного слова), они нажимают - "Не угадано". Я реализовал также функционал за голосование за "Угадано правильно", отмену голосов и даже список проголосовавших. Учитываются голоса каждого игрока. Опять же, нет задачи сделать максимально "защищёно от злоупотребления", так как играют свои, просто решил немного углубиться в систему. Заодно, после переписывания кода логики команд существенно улучшился функционал перехода лидерства при смене хода: оно передаётся между командами по очереди и от игроков к игроку внутри команд. Не рандомно, но стабильно.
Логика определения победителя продумана: если в одном из "кругов" команда набирает победное количество очков, остальным командам, которые ещё не закончили круг, даётся возможность отыграться. Затем определяется победитель.
Логика определения победителя продумана: если в одном из "кругов" команда набирает победное количество очков, остальным командам, которые ещё не закончили круг, даётся возможность отыграться. Затем определяется победитель.
Настройки комнаты довольно просты: длительность раунда (время на объяснение), количество очков для победы, количество команд, видимость слова другим командам (не влияет на команду объясняющего). После старта игры настройки блокируются. Если организатор покинет комнату, игра назначит организатором другого игрока. Также добавил функционал активности игроков: если они бездействуют, игра сначала пометит их как неактивных, а затем ещё через некоторое время выгонит. Но эта проверка на закрытие вкладки и дисконект, а не на бездействие в самой игре.
Настройки комнаты довольно просты: длительность раунда (время на объяснение), количество очков для победы, количество команд, видимость слова другим командам (не влияет на команду объясняющего). После старта игры настройки блокируются. Если организатор покинет комнату, игра назначит организатором другого игрока. Также добавил функционал активности игроков: если они бездействуют, игра сначала пометит их как неактивных, а затем ещё через некоторое время выгонит. Но эта проверка на закрытие вкладки и дисконект, а не на бездействие в самой игре.
Ну и, наконец, слепил нехитрую админку для управления списком слов и комнатами. Заодно перевёл базу слов в БД (раньше она хранилась в отдельном файле). Так проще добавлять новые слова - меньше возможности добавить повторяющееся. Категории пока что номинальны - во время игры они никак не определяются, но в теории можно добавить настройку, чтобы играть по конкретной категории.
Ну и, наконец, слепил нехитрую админку для управления списком слов и комнатами. Заодно перевёл базу слов в БД (раньше она хранилась в отдельном файле). Так проще добавлять новые слова - меньше возможности добавить повторяющееся. Категории пока что номинальны - во время игры они никак не определяются, но в теории можно добавить настройку, чтобы играть по конкретной категории.

Какие итоги? Помимо того, что игра стала вполне играбельной и функциональной, не могу не отметить того, что DeepSeek стал гораздо лучше справляться с кодом. Ещё год назад он откровенно тупил, гонял по кругу одну и ту же проблему и очень быстро исчерпывал лимит "окна". Теперь он действительно лучше анализирует ситуацию, хорошо помнит контекст. В текущих реалиях я без проблем переписал значимую часть кода, при этом большая часть багов, которые возникали в ходе движения, была связана скорее с моими архитектурными решениями, а не ошибками ИИ. Прогресс на лицо.

Ну и саму игру чисто теоретически уже можно погонять хотя бы в рамках теста.