Vinco Online Games, или просто VOG, — один из старейших русскоязычных игровых серверов для настольных игр. Он появился в 1997 году, пережил три поколения клиентов, смену домена, одну неудачно затянувшуюся технологическую ставку и долгий период тишины. Сегодня vogclub.com снова открыт: в нарды, шахматы, шашки, реверси, червы и эрудит можно играть с любого устройства прямо в браузере, а к старым играм добавились го и домино, которые ждали своей очереди два десятилетия.
Я пришёл в VOG разработчиком в 1999 году и проработал там до конца 2003-го. На этот период пришлись VOG2, оболочка VOG Shell и ставка на ActiveX. Потом жизнь увела в другие проекты. В 2021 году я случайно узнал, что владелец решил VOG не реанимировать и закрыть, и забрал проект почти в последний момент. Эта статья о том, что было до меня, что я застал изнутри и что происходит с VOG сейчас.
Здесь, на khorost.tech, будет закулисье: как устроена платформа и почему именно так. Про сами игры и новые возможности рассказываем на vogclub.com, в разделе новостей. Сначала просто история, потом пойдёт техника: как C++-монолит резали на сервисы на Go, как переезжали с Oracle на PostgreSQL, зачем в проекте про шашки понадобились NATS, ClickHouse и ScyllaDB и как старый бинарный протокол уживается с новым клиентом.
В статье
- 1997: четыре программы и один сайт
- VOG Shell: единый вход и новые игры
- Ставка на Internet Explorer и ActiveX
- 2021–2025: спасти и удержать
- 2026: Go, Kubernetes и веб-клиент
- Что поменялось для игроков
- Что дальше в серии
1997: четыре программы и один сайт
VOG начинался на домене vog.ru, и в 1998 году главная страница выглядела так: заголовок «Vinco Online Games», счётчик игроков онлайн и список из четырёх клиентов, каждый со своей версией и датой релиза. VOG Backgammon, VOG Checkers Club, VOG Chess Club и VOG Othello Club были отдельными Windows-программами. Чтобы поиграть, нужно было зарегистрировать ник, скачать нужный клиент, установить его и запустить «через кнопку Start в Windows 95».
Снимок веб-архива: vog.ru, 11 ноября 1998
Уже тогда в списке возможностей было почти всё, что и сейчас считается нормой для игрового сервера: комнаты, рейтинги по каждой вариации игры, архив партий с возможностью «прокрутить ходы и попробовать свои», наблюдение за чужими партиями, турниры, боты. Среди ботов был Agafonov.Bot для шашек, написанный командой международного гроссмейстера Владимира Агафонова. Каждый месяц проходил турнир чемпионов по нардам с денежным призом.
Так выглядела комната нард внутри клиента: столы с аватарами игроков, список из тридцати четырёх человек в комнате с рейтингами и флагами, чат снизу. Рисованные аватары были фирменной чертой VOG, их можно было нарисовать самому.
Скриншот клиента с сайта vogclub.com, сохранённый веб-архивом: roomscreenshot640x480.gif, 2002
Клиенты соединялись с сервером по собственному бинарному протоколу поверх TCP, его называли TLV (tag-length-value). Этот протокол прожил в проекте почти тридцать лет и станет отдельной темой в технической части серии.
VOG Shell: единый вход и новые игры
Четыре отдельные программы означали четыре установки, четыре окна и четыре точки входа. В начале 2000 года сайт анонсировал публичную бету VOG2: единой оболочки, которая объединила все игры под одним входом. В марте того же года в нардах появился бот Synapse_bot на нейросети, выигрывавший у прежнего Axon_bot больше половины партий. А 31 июля 2000 года VOG1 был закрыт и полностью заменён VOG2, накануне провели турнир открытия сразу по всем четырём играм.
Снимок веб-архива: vog.ru, 15 августа 2000
С этого момента игрок ставил один клиент, VOG Shell, а игры подгружались в него как модули. Слева в оболочке жил список друзей и «гидов», к которым новичок мог обратиться за помощью, справа дерево комнат по всем играм с числом игроков в каждой.
Скриншот из инструкции на vogclub.com, сохранённый веб-архивом: how2shell.gif, 2002
А так та же оболочка выглядит в 2026 году: то же дерево комнат, но игр и вариантов стало больше.
Оболочка позволила быстро добавлять игры. К четырём классическим добавились червы (Hearts) и словесная игра WordEx, свой вариант эрудита со словарями на девяти языках. В 2001 году проект переехал на международный домен vogclub.com, а vog.ru ещё несколько лет оставался зеркалом. Весной 2001-го на сайте бывало больше двухсот игроков онлайн одновременно, интерфейс клиента перевели на шесть языков, а серверу удвоили память: с одного гигабайта до двух.
Снимок веб-архива: vogclub.com, 1 апреля 2001
Ставка на Internet Explorer и ActiveX
В начале 2000-х Internet Explorer был браузером по умолчанию, и казалось разумным строить вокруг него всю доставку клиента. В январе 2002 года вышел новый игровой движок VOG на ActiveX: установка и обновление шли прямо из браузера, а сам движок можно было встроить на любой чужой сайт «одной строкой кода». Зашёл на страницу, нажал «Играть», компонент скачался и запустился. Никаких инсталляторов, всё «бесшовно». Я застал это решение изнутри, и тогда оно выглядело здравым.
Снимок веб-архива: vogclub.com, 1 апреля 2002
Обратная сторона видна на снимке из веб-архива: красная плашка «Этот сайт разработан для Microsoft Internet Explorer 4.0 и выше. С другими браузерами играть не получится. Извините». Она висела на главной странице годами.
Снимок веб-архива: vogclub.com, 1 февраля 2003
Проблемой стала не сама ставка, а то, как долго проект от неё зависел. Пришёл Firefox, потом Chrome, Windows XP сменилась на Vista и 7, ActiveX стали блокировать по умолчанию, а сайт продолжал требовать Internet Explorer. К 2016 году главная страница встречала игроков уже двумя предупреждениями: старым красным про IE и новым жёлтым про то, что в IE 11 нужно включить режим совместимости. Этот урок я держу в голове и сейчас, когда выбираю технологии для нового VOG.
Снимок веб-архива: vogclub.com, 11 января 2016
А вот что видел тот, кто всё-таки открывал сайт в Internet Explorer. Веб-архив эту страницу не сохранил: её целиком рисовал скрипт, а скрипт архив не забрал. Я поднял старый сайт из исходников и отрисовал главную заново, подставив сохранённые в архиве данные.
Восстановлено из исходников старого сайта. Данные турниров — архив 3 апреля 2012, счётчики комнат — архив 9 сентября 2014
Проект не адаптировался, и игроки уходили. Не разом, а по одному: кто-то сменил браузер, кто-то перешёл на Mac, кто-то просто перестал понимать, как «добавить сайт в Compatibility View». Серверы продолжали работать, боты продолжали играть, но живых людей в комнатах становилось меньше. В отдельных снимках веб-архива счётчик «игроков сейчас» показывал всё меньше: в 2001 году больше двухсот, в 2014-м 32, в 2015-м 24, в 2020-м 3, в начале 2021-го ноль. Это случайные моменты в разные часы, а не статистика посещаемости, но настроение тех лет они передают точно.
2021–2025: спасти и удержать
Первые годы после передачи проекта ушли на то, чтобы просто удержать его: серверы работали, рейтинги и архив партий не пропали.
Главное, что удалось сделать за 2021–2025 годы, — уйти с Oracle на PostgreSQL. Базы с рейтингами, архивом партий и профилями игроков копились с 1997 года, и перенос был не просто сменой драйвера: другие типы, другой подход к последовательностям и процедурам, свои сюрпризы в кодировках старых ников.
Но архитектура при этом не изменилась. Платформа оставалась набором монолитных «островов»: у каждой игры свой сервер на C++, общая оболочка, собственный бинарный протокол, Windows-клиент как единственный способ сесть за стол. Сайт превратился в витрину для скачивания установщика, а внутри клиента жил интерфейс из начала 2000-х, плохо переживший экраны с высокой плотностью пикселей.
Снимок веб-архива: vogclub.com, 22 февраля 2024
Все эти годы мне писали люди, которые хотели вернуться и не могли. Не находился установщик, не запускался клиент на новой Windows, не восстанавливался забытый пароль: на сайте не было ни регистрации, ни восстановления доступа. Поддержка в рабочем состоянии этого не решала, нужно было менять сам способ входа в игру.
2026: Go, Kubernetes и веб-клиент
В начале 2026 года я решился на полную переработку. Одному человеку в свободное время такой объём раньше был не по силам, а реальным его сделала работа в паре с ИИ, большой языковой моделью (LLM). Она началась тогда же и продолжается сейчас. Работа ускорилась не только в части написания кода. ИИ помогает развивать архитектуру и продумывать эволюционную миграцию: в каком порядке выводить старые части, чтобы система ни на день не останавливалась. Последнее слово остаётся за мной.
Забавно, что консерватором в этой паре оказался именно ИИ. Это он раз за разом притормаживает смелые идеи и настаивает на переносе игр по одной и на том, чтобы за шаг менялось что-то одно, а я рвусь переписать всё сразу.
Цели перезапуска я сформулировал коротко: старые игроки не теряют доступ, свой рейтинг и историю; играть можно с любого устройства, а не только из Windows; игроки из браузера и из старого клиента играют друг с другом за одним столом, а не на двух разных площадках.
Вот что для этого сделано к октябрю 2026 года.
- Монолит на C++ режется на микросервисы на Go. Авторизация, лобби, рейтинги, архив, боты, новости и веб уже стали отдельными сервисами. Игры переезжают по одной: реверси с сентября 2026 года идёт целиком на новом движке, го и домино написаны сразу под него, остальные пять классических игр пока работают на старых C++-серверах. Эти серверы подключены к той же шине NATS, что и новые сервисы, и обмениваются с ними событиями по общему контракту.
- Новое хранилище данных. PostgreSQL остался основной базой, но рядом появились Redis для сессий и кэша, ClickHouse для аналитики и поиска по тридцати годам партий, ScyllaDB для идущих и отложенных партий, которые пишутся на каждом ходу, и NATS как шина событий между сервисами.
- Всё работает в Kubernetes. Деплой через ArgoCD, сервисы масштабируются независимо, выкатка новой игры стала обычной рабочей задачей, а не проектом.
- Клиенты говорят на JSON по WebSocket. Браузер обменивается с сервером JSON-сообщениями через защищённое соединение WSS, и на тот же WSS сейчас переходит Windows-клиент. Перевод в понятия старого протокола, то есть столы, места и номера партий, свежий клиент делает у себя. Старый бинарный протокол поверх TCP остаётся только для старых версий клиента и уйдёт вместе с последним легаси-сервером.
- Windows-клиент обновляется сам. Вместо ActiveX и ручных установок клиент получил режим оперативных обновлений: поставил один раз, дальше он сам подтягивает свежую версию.
- Появился веб-клиент. Сайт больше не витрина для скачивания. Комнаты, столы, рейтинги и архив партий открываются прямо в браузере, на компьютере и на телефоне. Вход без пароля: код на почту либо через Google, Яндекс, GitHub или Telegram.
Так выглядит загрузчик Windows-клиента при запуске: он проверяет установку и сам ставит обновления.
Та же комната нард в Windows-клиенте в 2026 году. Рисованные аватары и кресла за столами на месте, а сам клиент уже подключается к новым серверам.
Резонный вопрос: зачем столько инфраструктуры проекту с небольшой аудиторией? Самый понятный ответ у NATS: шина позволяет старым C++-серверам и новым Go-сервисам работать рядом, пока идёт переезд, и переносить игры по одной без остановки. Kubernetes даёт одному человеку выкатывать десяток сервисов без ручной возни. ScyllaDB и ClickHouse стоят рядом с PostgreSQL ради другого характера нагрузки: частые записи ходов в одном случае, тяжёлые аналитические запросы по всей истории партий в другом. Оправдан ли этот выбор при нашем объёме данных, разберу в отдельной статье. Цена понятна уже сейчас: больше движущихся частей и больше эксплуатации. Часть стека — сознательный инженерный эксперимент, и я честно покажу, где он себя оправдал, а где хватило бы одного PostgreSQL.
Самый заметный результат пока такой: две игры, которые хотели сделать ещё двадцать лет назад, появились за считанные недели. Для старого клиента каждая новая игра означала отдельный C++-сервер, новый модуль оболочки и месяцы работы. Для нового достаточно движка на Go и React-компонента стола.
Так выглядит главная на телефоне. В «Телескопе» идёт запись партии в нарды против Synapse_bot, того самого бота на нейросети, которого добавили на vog.ru в марте 2000 года. Он играет до сих пор.
Вернутся ли старые игроки, судить пока рано. За пять лет многие говорили, что хотят играть, но не могут. Я обещал сделать VOG снова доступным, и надеюсь, что обещание выполнено и они вернутся.
Что поменялось для игроков
За тридцать лет поменялось время, и вместе с ним часть того, на чём VOG стоял. Перезапуск это учёл.
- Регистрация и игра с людьми бесплатны. Зарегистрироваться, сесть за стол с другими игроками или с ботом можно без оплаты.
- Членство — это поддержка проекта. Оно открывает рейтинговые партии и комнаты без ограничений, и именно на нём держится платформа. Подробности расскажу позже. А пока идёт акция «Год членства в подарок», ограниченная по времени и по числу подарков.
- Игры на деньги больше нет. В 2000-х на VOG были денежные турниры, игры на жетоны и призы в долларах. От всего этого отказались полностью.
- Чат — только после входа и без общих чат-комнат. Чат комнаты и стола читает любой, а писать в него может только вошедший игрок. Отдельных чат-комнат для общения, как в VOG Shell, на сайте нет. Раньше чат был центром клуба, но открытому общему чату нужна постоянная модерация, а её возможностей пока не хватает.
- Один аккаунт для браузера и Windows-клиента. Раньше ники нередко заводили заново: под новую версию клиента, под пробный период. Теперь новые аккаунты не нужны: с одним и тем же входом можно играть и на сайте, и в Windows-клиенте.
Одно не поменялось совсем: история. Рейтинги считаются отдельно по каждой комнате и вариации игры, как и тридцать лет назад, а партии и рейтинги старых игроков перенесены целиком. Если вы играли на VOG в 2005 году, ваш ник и ваши партии на месте: войдите по коду на почту, указанную в старом аккаунте. Если ников на этой почте несколько, сайт предложит выбрать нужный. Если доступа к той почте больше нет, напишите через обратную связь.
Вот один и тот же рейтинг шахмат, категория «Стандарт» за всё время, в двух оформлениях. Сначала так, как его показал бы старый сайт.
Восстановлено из исходников старого сайта. Файлы рейтингов того времени не сохранились, поэтому данные подставлены сегодняшние
И тот же рейтинг на сайте сегодня. Игроки те же, у многих последняя партия сыграна в 2000-х, но рейтинг никуда не делся.
Windows-клиент тоже жив и обновляется сам, но теперь он не единственный вход, а один из. Свежая версия Windows-клиента и браузер используют общие комнаты и игровые столы. Переход Windows-клиента на JSON через WSS сейчас проходит обкатку.
Что дальше в серии
Перезапуск VOG — это не только продукт, но и большой технический эксперимент: как перевести почти тридцатилетнюю систему на новый стек, не останавливая её и сохраняя аккаунты, рейтинги и историю партий. Следующие статьи серии будут именно об этом:
- как резали C++-монолит на сервисы на Go и в каком порядке отключать легаси-серверы, чтобы на каждом шаге менялось только что-то одно;
- переезд с Oracle на PostgreSQL: что сломалось в данных за 1997–2025 годы и как это чинили;
- зачем настольным играм NATS, ClickHouse и ScyllaDB, и где хватило бы одного PostgreSQL;
- как связали старый бинарный протокол поверх TCP и новый API на JSON через WebSocket, чтобы два клиента сели за один стол;
- боты: от Agafonov.Bot 1998 года до перебора раскладов в червах на чистом Go.
Новости про игры и новые возможности — на vogclub.com. А пока — заходите поиграть. Сервер помнит вас, даже если вы не заходили двадцать лет.
Комментарии