От BASIC до AI-агентов
Примерно раз в пять лет я заново осваивал ремесло: Pascal, C++ и OpenGL, Unity, Solidity, TypeScript, а теперь разработка с AI-агентами. Вот что я построил по дороге.
- 1994+ BASIC, Pascal и олимпиады
- 1994
Первые программы на BASIC
Начал программировать на BASIC на советском домашнем компьютере БК-0010.
BASICBK-0010 - 1996
Pascal
Перешёл на Pascal — язык всех олимпиад и моих первых настоящих игр.
Pascal - 1997
Super Amik
Придумал платформер на бумаге, уровень за уровнем в школьной тетради: геймдизайн ещё до того, как появилась машина, на которой его можно сделать.
Paper - 1998
Tank — мой первый доведённый до конца продукт
Первая большая программа, которую я довёл от идеи до готовой игры: танковый бой на Паскале в текстовом режиме на сетке 80×50, с уровнями, оружием, меню и заставкой. Около тысячи строк, выросших с марта по май 1998 года до версии 1.60; осенью появился Tank 2 уже с графикой.
Turbo PascalText mode - 1999
Space War
Моя первая хорошая игра: дуэль двух корабликов, повороты через синусы и косинусы, до которых я дошёл сам, деформация корабля при таране, векторный редактор кораблей, десяток видов оружия, миссии и свои загрузчики BMP и WAV.
PascalBGIVector graphics - 1998–2001
Игры DiVision
Другие мои игры того времени, среди них Capture or Destroy.
PascalFree PascalDelphi - 2000
Lamer-Killer: 3D без движка
Шутер с видом сверху, который мы начинали с одноклассником, вырос в мой собственный программный 3D-рендер: без движка и без видеокарты, каждый пиксель считался на процессоре по формуле проекции, которую я вывел сам, — задолго до того, как узнал, как это сделано в Doom. Редактор хранил уровень как матрицу проходимости, а оптимизатор объединял длинные стены в один полигон.
PascalSoftware rendering - 2000
Space War 2K: один движок — три игры
Вдохновившись тем, как устроены моды к Half-Life, я сделал один движок и один exe-файл, на котором работали три разные игры — бои кораблей, танчики с видом сверху в духе GTA и артиллерийская игра вроде Worms, — достаточно было подменить папку с ресурсами и правила в конфиге. В главном меню играло видео, отрендеренное в 3ds Max, — через мой собственный формат с дельтой кадров и свой загрузчик BMP, на Паскале, который видео не поддерживал вообще.
PascalEngineVideo codec - 2001
Doom RF
Сделал за две недели в подарок однокласснику на день рождения, потом почти год дорабатывал: 4 игрока за одним компьютером плюс 8 ботов на вейпоинтах, редактор уровней и трюк с переключением банков, чтобы рисовать 640×480 за пределами 64-килобайтного окна видеопамяти. В 2026 портировал на 64 бита и SDL2, добавил звук и выпустил как полноценный релиз.
Borland PascalFree PascalSDL2
- 2002
Золото IOI
От книг по алгоритмам и спонсорской группы Progmeistars — ко второму месту на Латвийской олимпиаде, Балтийской олимпиаде и золоту Международной олимпиады по информатике в Йонъине (Корея): 18-е место в абсолютном зачёте, одна из 23 золотых медалей (в протоколе — Andrejs Ivanovs, Латвия).
AlgorithmsPascal - 2002–2006
ACM ICPC
Пять сезонов студенческого чемпионата ACM ICPC за Латвийский университет. 2002: лучшая команда Балтии на полуфинале Северо-Восточной Европы. 2003: победитель 12-го Турнира компьютерных программ (как Андрей Иванов).
AlgorithmsC++ - 2002
Карты, демки и F(x)
Карты для Half-Life и Counter-Strike, программки, которые красиво что-то рендерят, и F(x) — построитель графиков функций с зумом и скроллом, написанный на Delphi.
Delphi - 2002–2011
Преподавание в Progmeistars
Девять лет преподавал программирование группам учеников в крупнейшей детской школе программирования Латвии; разработал новую учебную программу.
- 2003
Свой курс по PHP
Написал и вёл в Progmeistars собственный курс веб-программирования на PHP; сделал IRC-прокси и систему тестирования для олимпиадных задач; администрировал Linux-серверы школы.
PHPMySQLLinux - 2004+ C++, OpenGL и свои движки
- 2004
C++ и OpenGL: Chess 3D
Перешёл на C++ (с STL олимпиады решать намного проще) и на полноценное 3D. Первый проект на заказ — трёхмерные шахматы с bump mapping и картами отражений.
C++OpenGL - 2004–2006
Physics 2D
Курсовая, выросшая в бакалаврскую: свой движок с физикой и полноценная игра на нём — вдохновлялся Elasto Mania и Half-Life 2.
C++ - 2005
Xray
Демо на заказ на моём движке: рентгеновские лучи проходят через полупрозрачную кость.
C++OpenGL - 2005–2018
muo.lv
Частный сервер MuOnline, который я соосновал и запрограммировал: через несколько недель после запуска в 2006 году — 300–400 игроков онлайн. Всё вокруг игры сделал я: сайт на PHP с рынком игроков, рейтингами, аукционами, обменом вещами и квестами, SMS-платежи, экономика на кредитах, VIP-сервер, публичные бан-листы — плюс свой античит, серверный туннель, лаунчер с автообновлением и бот, который проводил ивенты в игре.
PHPSQL - 2006
Steel Engine
Свой движок на C++: сцена описывается в конфигах, префабы с переопределяемыми параметрами — идея, которую потом сделал массовой Unity, — плюс графика и простая физика. Исходники открыты.
C++OpenGL
- 2006–2012
whiteCryption
Архитектор ПО в области white-box криптографии и защиты кода (RSA, ECC, SHA, AES). Спроектировал архитектуру v5, которая работает в продакшене уже около 15 лет, теперь в составе Zimperium.
C++Cryptography - 2008
Labyrinth
Магистерская работа: мультиплеерная гонка по лабиринту на Steel Engine. Свой сетевой протокол, графика и звук — всё с нуля.
C++OpenGLNetworking
- 2010+ Unity и студия на 35 человек
- 2011
Unity: Bastions
Первая игра на Unity: две башни — строишь свою и обстреливаешь башню противника из пушек. Задумывалась как мультиплеер.
UnityC# - 2011
Nunnery
Хакатон в Лондоне на один день: платформер про прыгающую монашку на движке друга, на котором он делал игры для консолей Sony.
- 2012
MyCountry в innoWate
Два месяца в студии Game Insight на MyCountry — градостроителе с 5M+ установок в Google Play: исправлял баги и возвращал старые механики.
C++Mobile - 2012–2018
MadSword →
Соосновал игровую студию и вырастил её до 35 человек. Начинали Steam Defense за кухонным столом, нашли инвестора, потом перешли на игры на заказ для издателей: один переиспользуемый Unity-движок с редактором уровней и общим сервером дал 100+ игр и рескинов и тысячи уровней. Всего 160+ игр и 20M+ скачиваний, в основном через голландского издателя. Были и VR-игры.
UnityC#Java
- 2013
Global Game Jam: Tankraft
Сетевая танковая битва, сделанная за выходные вдвоём с напарником: свой или выделенный сервер, два вида оружия, танки на физике. Сборки под Windows, macOS, Linux и браузер.
UnityC#Networking
- 2013
Запуск Steam Defense
Первый собственный релиз MadSword — на Kongregate, ВКонтакте и Одноклассниках: свой скриптинг сценариев, AI для скирмиша и PvP и BotWars — ночной стресс-тест с десятками тысяч юнитов, после которого игра за три недели перестала падать.
UnityC#Networking
- 2015–2020
Zebrainy
Совладелец и технический директор компании, делающей развивающие игры для маленьких детей.
Unity - 2017+ Web3 и real-time платформы
- 2017
Decrypted Kitties
Игра в духе CryptoKitties, сделанная примерно за неделю и выпущенная в Google Play, — первый шаг в крипто-игры.
Unity - 2017–2021
Blockchain Cuties →
Писал контракты на Ethereum для других, потом соосновал Cuties и запустил её за четыре месяца (апрель 2018) — до того, как стандарт ERC-721 был окончательно принят. Персонажи и скрещивание — в блокчейне, предметы и бои — на сервере с одноразовыми подписями, которые проверяют контракты. Ethereum, затем EOS, TRON, NEO и Polygon — мультичейн-архитектура, которую позже расширили до 7 сетей. #1 на DappRadar; 2021: контракты governance-токена и IDO.
SolidityNode.jsEOSTRON
- 2020–2024
Dice Chess →
Шахматы в реальном времени с вариантом на кубиках — от идеи до запуска: ТЗ, архитектура, своя система тестирования шахматных позиций; нагрузочные тесты на 20 000 одновременных игроков.
JavaVueTypeScriptMicroservices
- 2021–
Roach Racing Club →
Web3-гонки с нуля: смарт-контракты, токеномика, свой WebGL-движок для живых заездов и биологическая симуляция бега.
SolidityThree.jsTypeScript
- 2022–
Fractional CTO
Технический партнёр для фаундеров: разработка с фиксированным объёмом, ревью архитектуры и due diligence.
- 2025+ Разработка с AI-агентами
- 2026
TaleCheck →
Статический анализ художественного текста, построенный в одиночку с Claude Code и параллельными агентами: ~2 300 коммитов меньше чем за три месяца, работает с платными пользователями.
TypeScriptNestJSClaude CodeAnthropic API