1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Глава 01 — Синопсис

Автор: Jordan 63 · 3 окт 2025 · ·
Категории:
  1. Приветствую!

    Раннее я уже написал 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 года и современным. Выглядит примерно так:)
    [​IMG]
    Ограничения софта и инструментов:

    • Среда: Visual C++ 4.0. Никакого IntelliSense, удобного рефакторинга или быстрого поиска. Программирование, близкое к письму в блокноте.

    • Информация: Нет Google и Stack Overflow. Только MSDN Library на CD-ROM и бумажные мануалы. Ошибка = часы вдумчивого анализа. Конечно у меня нет возможности распечатать эти сотни страниц, но всегда можно открыть pdf на втором экране.

    • Сборка: Полная пересборка проекта за минуты. Это время для обдумывания, а не для скроллинга.
    Важный момент, который стоит упомянуть.

    Компьютер мы будем эмулировать программой 86box. Найти сейчас такой ПК проблематично, он может стоить довольно дорого и при пересылке, банально повредиться. Поэтому эмуляция это один из вариантов прикоснуться к ПК 1995 года.

    Итоговый вариант:
    [​IMG]

    [​IMG]
    Именно в этих условиях — 16 МБ ОЗУ, 2 МБ видеопамяти и 75 МГц — мы будем пытаться рендерить изометрический мир Arcanum.
    [​IMG]
    Часть 3: Философия кода и оптимизация как образ жизни
    Весь движок пишется на C++. Это сознательный выбор в пользу читаемости и переносимости, а не ассемблерных хаков.

    Ключевые принципы:

    1. Простота и портируемость. 95% кода — общее ядро. Зависимый код для каждой ОС (Windows, Linux, DOS) не превышает 2000 строк.

    2. Минимальное API. Тонкий слой абстракции для рендеринга, звука и ввода. Каждый порт реализует его самостоятельно (через WinAPI, Xlib, прямой доступ к VESA).

    3. Оптимизация — это философия.
      • 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 года. Заложим фундамент нашего проекта.
    Метки:
    Leiji, Octohum, Gamerun и 2 другим нравится это.

Комментарии

  1. Дмитрий Токмашов
    Текст для блога ИИ генерировал? Слог подозрительный.
    1. Jordan 63
      Я после написания статьи прокатил её через ИИ, что бы поправил текст, пунктуацию, орфографию.

      У меня довольно грубоватый слог, это видно из моих статей на Хабре. ИИ довольно хорошо причесал.
Чтобы оставить комментарий просто зарегистрируйтесь и станьте участником!
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление