Приветствую!
Раннее я уже написал 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 года
Чтобы по-настоящему понять эпоху, нужно знать её фундамент. Наша целевая платформа — это тщательно сбалансированная система, где каждый компонент был компромиссом между ценой и производительностью.
Конфигурация «Игровой ПК среднего класса»:
В итоге если наглядно показать разницу между ПК 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 кг.
Ограничения софта и инструментов:
Важный момент, который стоит упомянуть.
- Среда: Visual C++ 4.0. Никакого IntelliSense, удобного рефакторинга или быстрого поиска. Программирование, близкое к письму в блокноте.
- Информация: Нет Google и Stack Overflow. Только MSDN Library на CD-ROM и бумажные мануалы. Ошибка = часы вдумчивого анализа. Конечно у меня нет возможности распечатать эти сотни страниц, но всегда можно открыть pdf на втором экране.
- Сборка: Полная пересборка проекта за минуты. Это время для обдумывания, а не для скроллинга.
Компьютер мы будем эмулировать программой 86box. Найти сейчас такой ПК проблематично, он может стоить довольно дорого и при пересылке, банально повредиться. Поэтому эмуляция это один из вариантов прикоснуться к ПК 1995 года.
Итоговый вариант:
Именно в этих условиях — 16 МБ ОЗУ, 2 МБ видеопамяти и 75 МГц — мы будем пытаться рендерить изометрический мир Arcanum.
Часть 3: Философия кода и оптимизация как образ жизни
Весь движок пишется на C++. Это сознательный выбор в пользу читаемости и переносимости, а не ассемблерных хаков.
Ключевые принципы:
В будущем эти наработки переедут в библиотеку LDL, цель которой — дать современным разработчикам инструмент для легкого портирования кода на платформы ушедшей эпохи, включая 32-битный DOS через DPMI.
- Простота и портируемость. 95% кода — общее ядро. Зависимый код для каждой ОС (Windows, Linux, DOS) не превышает 2000 строк.
- Минимальное API. Тонкий слой абстракции для рендеринга, звука и ввода. Каждый порт реализует его самостоятельно (через WinAPI, Xlib, прямой доступ к VESA).
- Оптимизация — это философия.
- 8-битный цветовой буфер (256 цветов). Снижает объем памяти и операций копирования в 3-4 раза по сравнению с RGB.
- Отсечение невидимой геометрии. Рисуется только то, что видит камера, а не вся карта 100x100 тайлов.
- Оптимизированный софтверный рендеринг. Быстрые процедуры копирования спрайтов с прозрачностью (цветовым ключом).
- Минимизация динамических аллокаций памяти.
Часть 4: Взгляд из будущего. Уроки, утерянные в эру изобилия
Погружение в 1995 год с высоты 2025-го — это шок от контрастов и бесценный опыт.
Этот проект хочу сделать как напоминание о том, что производительность рождается не от тонн ассемблерного кода, а от элегантности решений. Что самые красивые алгоритмы и оптимизации часто рождаются в условиях жесточайших ограничений.
- Программирование в вакууме. Отсутствие интернета — не недостаток, а функция. Это возврат к состоянию глубокой работы, которое сегодня стало роскошью. Ожидание компиляции превращается в продуктивный момент для обдумывания архитектуры.
- Тактильность и осознанность. Установка софта с CD-болванок, борьба за каждый мегабайт на диске — это воспитывает предельную осознанность в каждом действии.
- Документация как искусство. Необходимость читать мануалы от корки до корки формирует системное, а не фрагментарное, понимание технологии.
Часть 5: Чем так привлекателен 1995 год?
Это не просто год, а эра перехода на 32-битный софт. Начало появление DirectX. Продвижение на ПК пользователей 3D технологий, пока робких, но уже полигональныхWindows 95 окончательно завоевала мир на многие десятилетия вперед. Это был переломный год для ИТ. Новая ОС, новые инструменты разработки, новое API.
Эпилог: Зачем?
Этот проект — мой личный способ отдать дань уважения инженерам и программистам, которые на ограниченных ресурсах создавали магию, которую мы сегодня помним и любим. Это способ лучше понять настоящее, изучив прошлое.
И теперь, когда у сообщества есть исходники оригинального движка, мой эксперимент стал частью большего целого. Это диалог. С одной стороны — мощь современного сообщества, дарящая старой игре новую жизнь. С другой — попытка одного разработчика понять истоки этой жизни, добровольно вернувшись в ту среду, где она зародилась.
Великие игры не умирают. Они живут в памяти фанатов, в коде современных портов и в таких вот безумных экспериментах, как мой.
В следующей статье, я установлю Windows 95, драйвера, настроим Visual C++ 4.0 и погрузимся в суровые будни программирования 1995 года. Заложим фундамент нашего проекта.
-
Скрыть объявление
Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.
-
Скрыть объявлениеЕсли Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.
Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
- Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
- Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
- Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
- Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
С уважением, администрация форума Old-Games.RU

![[IMG]](proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fr%2Fw1560%2Fgetpro%2Fhabr%2Fupload_files%2F95c%2F94e%2F7e0%2F95c94e7e041e17861daa54b10c12f2b0.png&hash=d6b8731f5a2df5e7dee62f334cd66bdc)
![[IMG]](proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fr%2Fw1560%2Fgetpro%2Fhabr%2Fupload_files%2F744%2F211%2Fad7%2F744211ad77c572740431d19084ad2ee5.png&hash=449b03af003b202020dab63e2b6dc0f1)
![[IMG]](proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fr%2Fw1560%2Fgetpro%2Fhabr%2Fupload_files%2F796%2Ff7f%2F18c%2F796f7f18c314a5cca2f791d934313a38.png&hash=5ee2cb72a4d36d697541b27b4a3760c6)
![[IMG]](proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fr%2Fw1560%2Fgetpro%2Fhabr%2Fupload_files%2Fdd5%2Febe%2F4fa%2Fdd5ebe4fa4d1b274c2c1521e609bb3e3.png&hash=5510d8eb08e876da6587ae9358b2060b)
Комментарии
Сортировать комментарии по