Приветствую, Хабравчане!
Раннее я уже написал 3 статьи.
Пилим движок Arcanum. Урок 01. Начало
Пилим движок Arcanum. Урок 02. Работа с файлами игры, рисуем первый спрайт
Пилим движок Arcanum. Урок 03. Работа с памятью, используем полиморфные аллокаторы
Но теперь хотелось бы начать цикл статей, но с учетом использования старого аутентичного железа, софта, операционных систем и инструментов разработки. И решил взять отсчет с 1995 год.
Пролог: Мечта сбылась, но эксперимент продолжается
Недавно сообщество фанатов классической RPG Arcanum: Of Steamworks and Magick Obscura потрясла новость: разработчик по имени Alex завершил титанический труд по реверс-инжинирингу оригинального движка игры. Теперь у нас есть его полнофункциональные исходные коды, которые можно компилировать под Windows, Linux и macOS с использованием современной библиотеки SDL3.
Это осуществление мечты. Теперь игру можно улучшать, исправлять многолетние баги, добавлять новый контент. И я, как и многие, планирую поучаствовать в этом процессе. Но этот прорыв заставил меня задуматься: а как создавалась такая магия тогда, в середине 90-х? Каково это — строить подобный движок внутри той самой эпохи, с её железом, софтом и мировоззрением?
Так родился этот личный эксперимент. Я не буду переделывать готовый движок. Я попытаюсь с нуля написать свой движок для Arcanum так, как если бы на дворе был 1995 год.
Часть 1: Суть эксперимента. Не ностальгия, а цифровая археология
В 1995 году мне было шесть лет. Мои воспоминания о той эпохе — это Dendy и мультфильмы, а не строки кода. Поэтому мой проект — не ностальгия. Это — практическая цифровая археология.
Моя цель — погрузиться в эпоху для её изучения. Почувствовать на себе те же ограничения, ту же среду и те же инструменты. Это попытка понять не «что» сделали разработчики, а «как» и «в каких условиях» они это делали. Воссоздать их контекст, чтобы по-настоящему оценить их гений и те сложнейшие решения, что стояли за каждым пикселем.
Два подхода к одному миру:
Подход Alex (Настоящее): Взять готовый движок и с помощью современных инструментов распутать и улучшить его. Это ювелирная хирургия.
Мой подход (Прошлое): Взять чистый лист и с помощью инструментов той эпохи понять, как такой движок мог бы быть построен изначально. Это выращивание организма с нуля в его исконной среде.
Этот эксперимент — мой мост между эпохами, способ отдать дань уважения инженерам прошлого и напомнить о фундаментальных принципах, которые мы, бывает, забываем в век изобилия вычислительных мощностей.
Часть 2: Стенды из прошлого. Детальный разбор «народного» ПК 1995 года
Чтобы по-настоящему понять эпоху, нужно знать её фундамент. Наша целевая платформа — это тщательно сбалансированная система, где каждый компонент был компромиссом между ценой и производительностью.
Конфигурация «Игровой ПК среднего класса»:
-
Процессор: Intel Pentium 75 МГц
Архитектура: Первый массовый суперскалярный CPU (два конвейера). Революция, которая научила процессор выполнять две инструкции за такт.
Кэш: 16 КБ (8+8 КБ). Это в 4000 раз меньше, чем кэш современного CPU. Промах кэша был катастрофой.
FPU: Встроенный математический сопроцессор — спасение для изометрической 2D-графики.
-
Оперативная память: 16 МБ EDO DRAM
Реалистичный стандарт для игр 1995-96 гг. Windows 95 «съедала» 5-8 МБ, оставляя игре драгоценные 8-10 МБ.
Модули: 72-контактные SIMM, которые требовалось устанавливать парами.
-
Видеоподсистема: Карта на чипе S3 ViRGE (2 МБ VRAM)
Одна из первых «3D-ускорителей для бедных». Её 3D была слаба, но 2D-часть — отлична.
VRAM — двухпортовая память, позволявшая процессору записывать данные, а RAMDAC — одновременно выводить их на монитор.
Разрешения: 800x600 в True Color, 1024x768 в High Color.
-
Накопитель: Жесткий диск Quantum Fireball 1.2 ГБ
Интерфейс: IDE (ATA-2). Скорость: 4-8 МБ/с (против 5000+ МБ/с у SSD).
Характеристики: 5400 RPM, время доступа 12-14 мс, характерное «стрекотание».
-
Звуковая карта: Creative Sound Blaster 16
Золотой стандарт с 16-битным звуком и FM-синтезатором Yamaha OPL3 для совместимости.
Головная боль: Ручная настройка IRQ и DMA-каналов перемычками на карте.
-
Монитор: 15-дюймовый ЭЛТ (ViewSonic 15GS)
Разрешение: 1024x768. Идеальная цветопередача, нулевая задержка, вес — 15 кг.
В итоге если наглядно показать разницу между ПК 1995 года и современным. Выглядит примерно так:)

Ограничения софта и инструментов:
Среда: Visual C++ 4.0. Никакого IntelliSense, удобного рефакторинга или быстрого поиска. Программирование, близкое к письму в блокноте.
Информация: Нет Google и Stack Overflow. Только MSDN Library на CD-ROM и бумажные мануалы. Ошибка = часы вдумчивого анализа. Конечно у меня нет возможности распечатать эти сотни страниц, но всегда можно открыть pdf на втором экране.
Сборка: Полная пересборка проекта за минуты. Это время для обдумывания, а не для скроллинга.
Важный момент, который стоит упомянуть.
Компьютер мы будем эмулировать программой 86box. Найти сейчас такой ПК проблематично, он может стоить довольно дорого и при пересылке, банально повредиться. Поэтому эмуляция это один из вариантов прикоснуться к ПК 1995 года.
Итоговый вариант:


Именно в этих условиях — 16 МБ ОЗУ, 2 МБ видеопамяти и 75 МГц — мы будем пытаться рендерить изометрический мир Arcanum.

Часть 3: Философия кода и оптимизация как образ жизни
Весь движок пишется на C++. Это сознательный выбор в пользу читаемости и переносимости, а не ассемблерных хаков.
Ключевые принципы:
Простота и портируемость. 95% кода — общее ядро. Зависимый код для каждой ОС (Windows, Linux, DOS) не превышает 2000 строк.
Минимальное API. Тонкий слой абстракции для рендеринга, звука и ввода. Каждый порт реализует его самостоятельно (через WinAPI, Xlib, прямой доступ к VESA).
-
Оптимизация — это философия.
8-битный цветовой буфер (256 цветов). Снижает объем памяти и операций копирования в 3-4 раза по сравнению с RGB.
Отсечение невидимой геометрии. Рисуется только то, что видит камера, а не вся карта 100x100 тайлов.
Оптимизированный софтверный рендеринг. Быстрые процедуры копирования спрайтов с прозрачностью (цветовым ключом).
Минимизация динамических аллокаций памяти.
В будущем эти наработки переедут в библиотеку LDL, цель которой — дать современным разработчикам инструмент для легкого портирования кода на платформы ушедшей эпохи, включая 32-битный DOS через DPMI.
Часть 4: Взгляд из будущего. Уроки, утерянные в эру изобилия
Погружение в 1995 год с высоты 2025-го — это шок от контрастов и бесценный опыт.
Программирование в вакууме. Отсутствие интернета — не недостаток, а функция. Это возврат к состоянию глубокой работы, которое сегодня стало роскошью. Ожидание компиляции превращается в продуктивный момент для обдумывания архитектуры.
Тактильность и осознанность. Установка софта с CD-болванок, борьба за каждый мегабайт на диске — это воспитывает предельную осознанность в каждом действии.
Документация как искусство. Необходимость читать мануалы от корки до корки формирует системное, а не фрагментарное, понимание технологии.
Этот проект хочу сделать как напоминание о том, что производительность рождается не от тонн ассемблерного кода, а от элегантности решений. Что самые красивые алгоритмы и оптимизации часто рождаются в условиях жесточайших ограничений.
Часть 5: Чем так привлекателен 1995 год?
Это не просто год, а эра перехода на 32-битный софт. Начало появление DirectX. Продвижение на ПК пользователей 3D технологий, пока робких, но уже полигональных:) Windows 95 окончательно завоевала мир на многие десятилетия вперед. Это был переломный год для ИТ. Новая ОС, новые инструменты разработки, новое API.
Эпилог: Зачем?
Этот проект — мой личный способ отдать дань уважения инженерам и программистам, которые на ограниченных ресурсах создавали магию, которую мы сегодня помним и любим. Это способ лучше понять настоящее, изучив прошлое.
И теперь, когда у сообщества есть исходники оригинального движка, мой эксперимент стал частью большего целого. Это диалог. С одной стороны — мощь современного сообщества, дарящая старой игре новую жизнь. С другой — попытка одного разработчика понять истоки этой жизни, добровольно вернувшись в ту среду, где она зародилась.
Великие игры не умирают. Они живут в памяти фанатов, в коде современных портов и в таких вот безумных экспериментах, как мой.
В следующей статье, я установлю Windows 95, драйвера, настроим Visual C++ 4.0 и погрузимся в суровые будни программирования 1995 года. Заложим фундамент нашего проекта.
Комментарии (24)
jakobz
02.10.2025 18:04У меня примерно такой первый ПК был, p90 250мб винт, 8 метров оперативы, s3 trio. Писал на Watcom C с ассемблерными вставками. Было прикольно: честное плоское адресное пространство наконец, после 16 бит real mode с всратыми сегментами этими. С другой стороны, чуть что - в перезагрузку. И дебаггера никакого (или может не разобрался). Ощущения, близкие к спектруму.
JordanCpp Автор
02.10.2025 18:04Спасибо это очень ценный комментарий. Вот такие крупицы знаний, более полно позволяют реставрировать то время ИТ. Так как у меня есть мое представление нагугленное, как было раньше. Те кто в это время программировал могут дополнить картину мира.
Tuxman
02.10.2025 18:04Информация: Нет Google и Stack Overflow. Только MSDN Library на CD-ROM и бумажные мануалы.
Есть ChatGPT, Sonnet/Opus и кросс-платформенные тулы/либы. Why бы и not? И зачем писать под Windows only?
JordanCpp Автор
02.10.2025 18:04Предполагается порт под, windows, linux, dos. В 1995 году не было ChatGPT:)
И цель все же изучить 1995 с максимальной возможной достоверностью.
nick758
02.10.2025 18:04Ваш конфиг в 1995 стоил примерно 1500 USD при средней зарплате в РФ тогда 120 USD. Win95 появилась сентябре 95, и основная система тогда была DOS, игры могли использовать 32-битные DOS extender'ы. Про DirectX мало кто слышал, порт Doom 95 вышел в 1996, и портировала его сама Microsoft. Первые независимые игры для DirectX выходят в 1997.
codecity
02.10.2025 18:04Сейчас все это трудно вспомнить. Как один дедушка говорил - смартфоны и компьютеры эти как будто инопланетные технологии, как с небес спустилось. Не было не было - и раз - все уже есть, не прослеживается постепенность развития, как с теми транзисторными приемниками. Но это взгляд прожившего большую часть жизни в СССР.
А так первый ключевой переломный момент - создание Intel 8080 (1974) и его брата Z80. Транзисторов около 6 тыс. штук - не так много, еще укладывается в голове и в принципе можно осознать его схему.
Второй переломный момент - это Intel 80486 (1989) - там уже 1.2 млн. транзисторов, что в голове не укладывается и осознать схему вряд ли получится в классическом понимании. Это уже фактически новая эра, стандарт, который живет и в наши дни.
JordanCpp Автор
02.10.2025 18:04Если проследить развитие с 1990 по 2000-ый. Это было время постоянного повышения производительности всего железа. Процессоры от десятков мегагерц к концу 90-ых уже стали 1000 mhz. Росло количество ОЗУ, vram.
Насколько я понимаю можно было купить ПК, а через пол года он мог устареть, а через год он уже отставал от новых комплектующих.
Время постоянных улучшений, меняются инструменты, подходы к программированию. И это все за 10 лет.
unreal_undead2
02.10.2025 18:04Я свой первый комп купил как раз в 1995ом, и это бы 486 dx2 66 c 4Mb оперативки и видеокартой от Cirrus Logic (сходу номер не вспомню) и 14" монитором (15" стали массовыми уже позже, тогда вообще не помню таких); звуковуху (что-то дешёвое на ESS688) и CD ROM прикупил уже позже. В 1995ом Pentium стоил запредельно (я только года через два взял у знакомых б/ушную материнку с Pentium 100), S3 Virge ещё не вышла, и Windows 95 ещё только начинала свои завоевания - я её поставил только когда вышла демка Diablo, а так первое время хватало доса и Windows 3.x (уже потом приползли OS/2 Warp и Linux). 16Mb оперативки в 95'ом - тоже какая то запредельная цифра; помню, при покупке раздумывал насчёт размера винчестера (они тогда быстро дешевели - выбирал между 420 и 540Mb, в результате взял 850), но про память не раздумывал, казалось что 4Mb более чем достаточно и по деньгам разумно. Windows 95 на таком объёме вполне себе грузилась. На мамке с Pentium было 8Mb и я с такой конфигурацией жил до 2003го (понятно, что о новых игрушках речи не было).
В общем, ваша конфигурация на народную 1995ого года никак не тянет. Но если говорить по Arcanum - он всё таки вышел в конце 2000го, когда железо было совсем другим.
JordanCpp Автор
02.10.2025 18:04Спасибо за информацию. И вы полностью правы, моя конфигурация для 1995 года больше пред топ, чем массовая. Но с другой стороны это усредненная конфигурация, которая позволяет начать археологическое решение и разработку движка Arcanum. Конфигурация в разы слабее, но отсюда и интерес, возможно ли приблизиться.
Графически Arcanum плоть от плоти 90-ых, 8 битный буфер экрана, разрешение 800x600. Для ускорения используется DirectDraw для быстрого вывода буфера.
К примеру Fallout 2 использовал тоже самое для графики, но разрешение было 640x480. Технически они не сильно различаются.
Тем и интереснее покопаться и разобраться, как ускорить графику. Какие ещё методы тогда существовали.
Большое вам спасибо, за ваш подробный комментарий. Именно такие комментарии и восстанавливают общую картину, как было тогда.
unreal_undead2
02.10.2025 18:048 битный буфер экрана, разрешение 800x600
В принципе во второй половине 90х нормой были карты с поддержкой HiColor/TrueColor, и в квестах тех времён оно использовалось (скажем, в Zork Nemesis) - но там картинка в основном статичная, проблем со скоростью нет.
JordanCpp Автор
02.10.2025 18:04В первую очередь это сделано для экономии ЦПУ. Так как попиксельным копированием и рисованием занимается процессор, ему приходилось копировать меньше. А так как Arcanum динамическая игра, то экран приходилось перерисовывать полностью каждый кадр. Вместо 3 байт всего 1. Ещё это позволяет делать более оптимизированные алгоритмы заливки и рисования. Экономили как могли.
JordanCpp Автор
02.10.2025 18:04Спасибо за подробный комментарий. Моя цель приблизиться к 1995 году, но все равно будут неточности. Главное для меня в целом аутентичность пусть не 100%, но очень приближенная к тому, что было.
hira
02.10.2025 18:04Но почему 95 год, Арканум много позже вышел, совсем другое уже железо было.
JordanCpp Автор
02.10.2025 18:04Мне нравится игра Arcanum и это предположение, возможно ли на таком железе приблизиться к оригиналу.
Есть ещё ограничения. Мой ретро ПК celeron 1700 mhz, 256 ОЗУ, geforce 4. Слишком мощный для времени разработки Arcanum. А если эмулировать железо 1998, мой основной ПК просто его не вывозит.
Потому я выбрал ключевой год 1995.
hira
02.10.2025 18:04В арканум я играл на пентиум3 500, 256 памяти, riva tnt2 m64 (? вроде так).
Тормозил он сильно на этом железе.
JordanCpp Автор
02.10.2025 18:04Нашел ветку 24 летней давности:)
Арканум (ФАРГУС) тормозит страшно! В Туманных Холмах все нормально, а когда в Тарант прихожу то играть невозможно, тормоза жуткие!
Комп Cel 333, 160 Mb ram, в чем дело то?
У меня тоже Cel333, 64mb, TNT16mb. Через минут 10 нормальной игры начинал жутко трещать хард. Дело оказалось в том, что ему под кэш нужно мин. 300 метров (для win386.swp), а у меня "своп" был на отдельном разделе 200 метров, так что главное - МЕСТО под кэш, а остальное потянет...
160 метров мало?....НЕ ВЕРЮ, а вобще-то Arcanum идет под D3D, на Rive128-ой скроллинг в городе не тормозит, но у нее другой глюк-она вешает систему намертво при использовании в игре какого-то эффекта (при лечении).Попрбуй запустить под софт с ключом-no3d в 16ти битах, если тормоза будут такие же то проблема в велике.
hira
02.10.2025 18:04Я и не искал, просто помню свои ощущения. Я даже прекратил играть до лучших времен, ибо в одном месте начались такие тормоза, что играть было практически невозможно.
Cel 333 - неудивительно, если полноценный P3-500 тормозил.
160 рам - неудивительно, ему и 256 было маловато.
TNT16 - ну так 32 не памяти ему мало было....
А ещё он часто вис по вин98 и был суперстабильный под XP.
Zara6502
02.10.2025 18:04Теперь у нас есть его полнофункциональные исходные коды, которые можно компилировать под Windows, Linux и macOS с использованием современной библиотеки SDL3
о, видимо когда-то будет OpenArcanum?
Найти сейчас такой ПК проблематично, он может стоить довольно дорого и при пересылке, банально повредиться. Поэтому эмуляция это один из вариантов прикоснуться к ПК 1995 года.
Есть два варианта, поступить как я покупая ноутбуки или собрать свой десктопный вариант. С первым вам поможет Авито, а вот со вторым могу помочь я, в качестве доната на вашу мечту и на хорошее дело могу собрать те комплектухи что есть у меня, одна сложность - после переезда у меня всё по коробкам и чтобы найти нужное потребуется время. Память я нашёл в прошлые выходные, коробочку уже отложил, ЦПУ есть очень много и разных, как и видеокарт и звуковух. Корпус и блок питания лучше искать в городе проживания, пересылка может быть финансово непрактичной. Найду ил я материнку - вопрос. HDD IDE старые есть. Так что до мечты вас отделяет только монитор, корпус, БП и мать. Хотя БП у меня скорее всего есть, но они стоят копейки на самом деле и в худшем случае нужно провести ревизию конденсаторов.
В общем пишите если заинтересует, всё же лучше когда железо работает чем лежит у меня и пылится.
JordanCpp Автор
02.10.2025 18:04Спасибо за такой ценный донат. Я на Авито периодически просматриваю ПК и комплектующие середины 90-ых но именно для моего города они редки. Или автор не может ответить о работоспособности. Ретро ПК 2002 есть и он не редко используется.
В идеале было бы не плохо собрать +- аутентичный ПК 1995-1997 году. Пока это не сделано буду использовать эмулятор 86box. Очень удобно выкладывать его уже настроенный, что бы любой желающий мог сам его скачать, запустить и оказаться в 1995:)
Zara6502
02.10.2025 18:04так, расшифруйте, вам нужны железки или нет? )
если да, то присылайте список желаемого от сих до сих, что буду находить - договоримся о пересылке. процесс точно будет долгий, скорее всего до весны, так как я разборами и поисками в коробках занимаюсь не часто и только в выходные, то есть 1-2 часа в не каждую неделю. Но если интересно то для вас возможно это будет адекватный вариант особенно по цене, учитывая что сейчас древнее барахло продают по каким-то космическим ценам. у меня точно полно памяти и если рассмотреть мать с 4 слотами под SIMM, то можно я думаю сделать 32-64 Мб ОЗУ. Цпу у меня точно есть куча вариантов Пентиум в керамике, есть MMX, который вам наверное и не нужен. Должен быть звук или ESS или ASUS SB, и должна быть в/к Trio и Virge 2/4 Мб, там обычно слоты под память есть, попробую подобрать. Ну это я пишу, лучше если вы мне вилку распишете по каждому пункту.
JordanCpp Автор
02.10.2025 18:04Да железки нужны. Что у меня есть и могу добыть в своем городе.
Привод cd 2 штуки
Корпус
Блок питания
Жесткие диски есть штуки 3
Шлейфы и кабеля в достатке
Что нужно.
Мат плата
Процессор
Кулер именно под старый процессор
ОЗУ
Видеокарта тех лет
Все на ваше усмотрение, для меня не принципиальны конкретные железки. +- 1995-1997 на ваше усмотрение.
Главное подскажите, какую мне мат плату приобрести, что бы компоненты подошли. И есть возможность вам скидывать к примеру лоты с Авито, а вы бы посмотрели и написали, брать не брать.
Большое спасибо за участие. Конечно настоящий ПК того времени добавит более аутентичное погружение в то время. Железка есть железка:)
codecity
А не лучше ли энергию направить на что-то аналогичное для KolibriOS (и подобных миниатюрных)?
JordanCpp Автор
Так как это кроссплатформенный проект и когда он станет осязаемым для использования, нет ни каких причин не портировать на колибри или другие маленькие и очень быстрые ос.
Но именно сейчас мне интересно изучить то время и те инструменты, обстановку, сложности и радости. Это именно желание практической археологии. Похожее на восстановление старого корабля и его эксплуатации, так как это бы делали в то время.
Весь мой интузиазм, горение направлено именно в эту практическую археологию.