The Jerusalem PostA dangerous habit: Legislating hatred one step at a time - opinionESPN'No way this guy's a backup': How Malik Willis prepared for his second chanceRTP DesportoMundial de Hóquei. Seleção feminina bate ColômbiaESPN DeportesVinícius, Brahim y otros convocados ya se entrenan con Real MadridBollywood HungamaNeil Bhoopalam wants to work with Rajkumar Hirani to explore family-oriented films: “It would be a good shift for me”Daily MaverickSOCCER INTEGRITY: Senegal vs Morocco Afcon final saga set to be heard in Swiss courtPunch2027: INEC lists states with most registered votersZDF heuteEntdecken Sie das ZDF-NachrichtenstudioSCMP ChinaUS firm to make battle-tested drones in Taiwan, boosting supply chain resilienceBillboardBillboard Latin Music Week 2026 Adds Rubén Blades, Anthony Ramos, Lenny Tavárez, Tito Nieves & More to LineupThe Hollywood ReporterEmmy Awards Enter Streaming Era: Prime Video, TV Academy Ink Six-Year DealThe RegisterZombie instructions on carefully constructed web pages could trick GitHub Copilot CLI into sharing secrets
The Daily Newsstand · Free, Always
Tuesday, October 6, 2026

От школьного «Коммерсанта» до собственной экономической игры: проект, к которому я вернулся через семь лет

Translate


В 2019 году я решил написать экономическую игру. План казался скромным: взять идею любимого «Коммерсанта» времён MS‑DOS, добавить несколько банков, новости и чуть более осмысленное поведение цен.

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

Проект отправился в папку со старыми поделками.

В 2026 году я нашёл его снова. За это время успел пройти путь от начинающего разработчика до ведущего инженера‑программиста. Посмотрел на старый код, вспомнил, что хотел сделать, и решил вернуться к идее. Но теперь — не ради улучшенной копии игры из детства, а ради собственной экономической стратегии.

Это первая статья о проекте: откуда он появился, какую игру я хочу получить, что в ней уже работает и куда я собираюсь двигаться дальше.

Игра, которая осталась в памяти

Примерно в 1999 году, когда мне было десять лет, в нашей школе стояли компьютеры ЕС-1840. Мы играли на них во всё, что удавалось найти и запустить. Среди этих игр был и «Коммерсант» от Rada Ltd.

К тому времени я уже познакомился с Dendy, немного играл на Sega и даже успел погонять в Need for Speed II у знакомого. Поэтому дело было не в том, что я впервые увидел компьютерную игру.

И всё же «Коммерсант» меня зацепил.

Скриншот из игры Коммерсант 1991 года от Rada Ltd.

Скриншот из игры Коммерсант 1991 года от Rada Ltd.

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

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

Но сама идея осталась со мной надолго.

Позже я играл в Capitalism, “Бизнесманию”, «Виртономику» и другие экономические игры. Из современных особенно выделяю для себя Victoria 3: мне нравится, когда экономика зависит не от одного показателя, а от множества связанных обстоятельств.

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

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

Начать с ограниченного капитала. Выбрать, куда его вложить. Ошибиться. Пережить изменение ставок или падение рынка. И постепенно вырасти — если получится.

Три дня разработки в 2019-м

Впервые программированием я заинтересовался ещё в 2007 году. Тогда разбирался, как сделать собственный сайт, что такое HTML, хостинг, домен и база данных. Сейчас эти слова кажутся обыденными, но в тот момент за каждым стоял отдельный набор вопросов.

К 2019 году мои знания стали заметно шире, однако опыта создания сложных приложений всё ещё не хватало.

Это было время до привычных сегодня ИИ‑помощников. В моём случае обучение выглядело так: сформулировать вопрос, найти обсуждение на форуме или Stack Overflow, прочитать несколько вариантов решения, попытаться понять, какой относится к моей проблеме, и проверить его у себя. Иногда поиск ответа занимал больше времени, чем написание самого кода.

На этом фоне я и решил сделать своего «Коммерсанта».

Изначально хотел добавить всего несколько вещей. Например, вместо одного банка сделать четыре — с разными ставками по кредитам и вкладам. Но сразу возникал вопрос: почему эти ставки меняются?

Мне не нравился вариант, при котором банк каждую неделю просто получает новое случайное число. Хотелось, чтобы у него была причина: решение Центрального банка, изменение общей экономической ситуации, собственные особенности.

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

На уровне идеи всё выглядело логично. На уровне реализации я очень быстро запутался.

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

Уже через три дня код перестал быть для меня управляемым. Я ещё помнил, что хотел сделать, но всё хуже понимал, как безопасно это изменить.

Проект был заброшен. Как выяснилось позже — не навсегда.

Скриншот из 2019 года. Еще про Ковид-19 только-только начали говорить.

Скриншот из 2019 года. Еще про Ковид-19 только‑только начали говорить.

Семь лет спустя

После той попытки я нашёл работу, начал заниматься реальными задачами и постепенно набрался опыта. Сегодня я ведущий инженер‑программист в компании, где более 1400 сотрудников разрабатывают заказное и продуктовое программное обеспечение.

В 2026 году я разбирал старые проекты: небольшие программы, эксперименты, попытки написать игры. Среди них нашёл и недоделанного «Коммерсанта».

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

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

Главный вопрос теперь звучит так:

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

Мне хочется, чтобы банковский сектор, валюты, облигации, товары и работа компаний были частями одной системы. Чтобы решение в одном месте меняло условия в другом, а игроку приходилось учитывать не только сегодняшнюю доходность.

При этом я не ставлю знак равенства между игрой и реальной экономикой. У модели есть упрощения, коэффициенты и ограничения. Моя задача — не воспроизвести мир с абсолютной точностью, а добиться понятных причинно‑следственных связей и интересных решений.

Случайность тоже остаётся. Я не хочу полностью предсказуемый калькулятор. Но хочу, чтобы случайность создавала неопределённость внутри модели, а не заменяла собой всю модель.

Главное окно. Тут все самое основное.

Главное окно. Тут все самое основное.

Почему сначала Беларусь

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

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

События и настройки для каждой страны вынесены в JSON‑файлы. Общую экономическую логику я стараюсь отделять от страновых данных: конкретных настроек, новостного наполнения и особенностей выбранного сценария.

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

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

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

Почему всего восемь товаров

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

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

Так на сегодня выглядит Товарная биржа

Так на сегодня выглядит Товарная биржа

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

Что уже работает

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

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

Товарный и валютный рынки

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

Например, сезон урожая влияет на предложение зерна, а строительная активность — на спрос на связанные с ней товары. Мне важно, чтобы эти различия имели смысл: зерно, золото и стройматериалы не должны быть одной и той же механикой с разными названиями.

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

Банки и Центральный банк

Вместо задуманных в 2019 году четырёх банков в текущей версии их уже четырнадцать. У банков различаются капитал и условия работы; модель учитывает вклады и кредиты не только игрока, но и населения и компаний‑соперников. Предусмотрены банковские потери, отзыв лицензий и частичное страховое возмещение вкладов. Последнее — правило игрового мира, а не попытка воспроизвести действующее законодательство.

Кредиты тоже не сводятся к кнопке «получить деньги». Есть начисление процентов, график выплат, просрочки, штрафы и кредитный профиль игрока. В текущей реализации ставка по кредиту может меняться вслед за базовыми условиями банка, тогда как ставка открытого вклада фиксируется в договоре.

Пока интерфейс ЦБ еще не доработан окончательно.

Пока интерфейс ЦБ еще не доработан окончательно.

Центральный банк принимает решения на плановых заседаниях, а при серьёзных рисках может собраться вне очереди. При выборе ставки учитываются отклонение прогнозируемой инфляции от цели и деловая активность. Перед некоторыми заседаниями регулятор публикует сигналы о возможном изменении политики — и банковские условия могут начать реагировать ещё до самого решения.

Это создаёт пространство для выбора: зафиксировать доходность сейчас, сохранить свободные деньги или отказаться от расширения, которое после изменения ставки станет слишком дорогим.

Облигации и инфляция

В игре есть государственные облигации в BYN, USD и EUR: размещение новых выпусков, покупка и продажа, купонные выплаты и погашение. Для рублёвых выпусков рыночная доходность связана со ставкой Центрального банка, а цена уже выпущенной бумаги зависит от соотношения её купона и текущей доходности, а также оставшегося срока.

Формула пока упрощённая, но облигация уже отличается от вклада: при продаже до погашения её стоимость может оказаться ниже цены покупки.

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

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

Компания и соперники

У игрока есть собственная компания: офис, сотрудники, зарплаты, мотивация персонала и склады. Компания получает выручку от финансовых услуг, несёт расходы и платит налоги. Зарплата сравнивается с рыночной: чрезмерная экономия может ухудшить мотивацию и привести к уходу сотрудников.

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

Рейтинг компаний. Некоторые компании похожи на больше на ИП, с этим еще решим что делать.

Рейтинг компаний. Некоторые компании похожи на больше на ИП, с этим еще решим что делать.

В мире игры действуют 50 компаний‑соперников из десяти отраслей. Они производят, торгуют, пользуются банковскими инструментами, растут и разоряются. В игре также есть аукционы имущества банкротов и судебные разбирательства с выбором юридической защиты или мирового соглашения.

Новости и объяснимость

Новости здесь — не только текстовая лента. Их эффекты могут менять параметры экономики, действовать несколько недель и включаться с задержкой. Реализованы вероятностные цепочки событий и альтернативные продолжения: первая новость ещё не всегда означает, что последствия уже окончательно определены.

Мне хочется, чтобы чтение новостей было частью принятия решений, а не обязательным просмотром декоративных сообщений перед следующим ходом.

Окно итогов хода. Показ новости с подсказкой на что она влияет.

Окно итогов хода. Показ новости с подсказкой на что она влияет.

Чтобы игрок мог разобраться в происходящем, есть история котировок, графики экономических показателей, итоги недели и годовые отчёты. Для меня объяснимость происходящего не менее важна, чем количество механик: сложная модель мало что даёт, если её поведение выглядит для игрока случайным.

Разработка продолжается

Технически сейчас игра написана на C# под.NET 10, а её интерфейс — на Windows Forms. Однако Forms здесь отвечает за представление игры, а не определяет устройство её экономики.

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

Для меня это принципиальный момент. Я не хочу, чтобы смена интерфейса означала необходимость заново писать экономическую модель.

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

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

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

Для меня всё это — существенная разница по сравнению с попыткой 2019 года. Тогда я довольно быстро перестал понимать, как безопасно изменить собственную программу. Сейчас стараюсь строить проект так, чтобы можно было развивать экономическую модель, менять интерфейс и добавлять новые страновые сценарии, не переписывая каждый раз игру целиком.

Но наличие отдельных классов ещё не делает экономику хорошей, а большое количество механик не гарантирует интересную игру.

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

Мне важно проверить не только то, что отдельная формула выдаёт разумное число. Нужно понять, что происходит через десятки игровых лет. Не превращается ли какая‑то стратегия в беспроигрышную? Есть ли смысл пользоваться разными инструментами? Можно ли восстановиться после ошибки? Понимает ли игрок, почему он потерял деньги?

Отдельная задача — не повторить то, что я запомнил по игре из детства: момент, когда капитал уже накоплен, а принимать интересные решения больше не нужно.

Я не хочу решать это бесконечным повышением расходов или случайными катастрофами. Хочется, чтобы с ростом компании менялся характер задач: сначала важно выжить, потом — выбрать направление роста, а затем — управлять рисками и сохранять устойчивость.

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

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

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

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

В 2019 году мне хотелось просто добавить в старого «Коммерсанта» несколько банков. В 2026-м — построить мир, в котором даже знакомый вопрос «куда вложить деньги?» каждый раз требует немного другого ответа.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.