Skip to content

Latest commit

 

History

History
108 lines (88 loc) · 13.1 KB

SubProjects.md

File metadata and controls

108 lines (88 loc) · 13.1 KB

Части проекта

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

Познакомиться с самой игрой и ее устройством

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

Лично я сам занимаюсь этим "под-проектом", ведь без досконального знания игры я ничего не сделаю! Что мне сейчас надо:

  • Написать пакеры-анпакеры IMG / TXD / DFF-файлов, получить знания о устройстве этих файлов
    • Написать пакер TXD
    • Написать распаковщик DFF -> OBJ с текстурами
    • Написать генератор DFF с плоскостями GoogleMaps
    • Сгенерировать валидный water.dat с корректной водой
    • Разобраться с бинарными IPL (распаковать их)
  • Сделать экспорт всего мира в 3Dsmax и посмотреть глазами на структуру чанков, текстур и вообще устройства.
  • Сделать экспорт дорожного трафика и траекторий пешеходов в 3dsmax и увидеть живой город? Это поможет нам точнее узнать устройство города и его жизни.
  • Если экспорт в 3DSMAX слишком сложен, то можно нарисовать простую тулу на JS, которая просто будет рисовать бегающие кружочки, символизирующие жителей и квадратики, символизирующие автомобили. Главное научиться читать и писать данные о дорожном трафике, пешеходах, работе светофоров и жизни города вообще.
  • Разобраться с особенностями игры и игрового движка
    • Загрузить свою геометрию без modloader, видимо использовав stream*.ipl
    • Сделать карту файлов, которые референсятся прямо из кода (EXE-файла)

Какие источники данных для нашего города будем использовать?

  • OpenStreetMaps для дорог и домиков? Как его скачать и обработать?
  • Google StreetView для панорам и текстур? Как его скачать и обработать?
  • Данные высот STRM1 или aw3d30? Как их скачать и подготовить к работе?

Создать свой формат данных для описания мира

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

  • Попробовать сделать из игровых материалов такие же материалы, как у нас в реальном мире
    • Данные высоты в низком разрешении
    • Снимки "со спутника" с искажениями перспективы и сделать игровой GoogleMaps
    • Сделать панорамы так, словно мы бы их снимали в реальной жизни из самой игры
    • Векторные данные дорог, заборов, поребриков и прочей дорожной метадаты
    • Векторные периметры домов, возможно с использованием тегов OSM Simple 3D Buildings
  • Попробовать собрать наши данные обратно в файлы игры. В те самые, которые мы только что распаковывали в свой формат
    • Сделать хотя бы узнаваемо, чтобы это было похоже на оригинальную игру
    • Сделать неотличимо от оригинальной игры, чтобы после двойной конвертации данных, мы получили пиксель-в-пиксель идентичные игры

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

Сгенерировать данные города в свой промежуточный формат

  • Считать дороги из OSM и засунуть в дорожный граф своего формата
  • Считать полигончики из OSM и засунуть в свой формат
  • Расставить этажность, ручками или специализированным тулом
  • Сделать простой визуализатор своего города в 3dsmax

Упаковывать данные города в формат игры

  • Очистить карту и родиться на плоскости
  • Залить в игру карту Google Maps с требуемой местностью
  • Залить в игру данные STRM с данными о рельефе
  • Перенести геометрию из своего формата, включая дороги и дома
  • Расставить по городу пожарные части, полицию, больницы

Какие ассеты мы будем использовать?

  • Будем рисовать сами?
  • Будем вытаскивать текстуры из панорам?
  • Распакуем игру Workers and Resources: Soviet Republic?
  • Взять ассеты из CitySkylines?

Сделать какие-то вещи, упрощающие жизнь при работе над проектом?

  • Сделать ультимативный репак игры в 50 мегабайт
  • Пережать все текстуры игры, добавив в них отладочную сетку (checkerboard) и названия файлов
  • Сделать тул для расстановки освещения (???), генерация столбов освещения
  • Сделать тул для рисования маршрутов трафика, поездов и педов
  • Сделать тул(ы) для рисования биомов, травы, мусора в городе
  • Или ты можешь предложить свои услуги по написанию недостающего софта? Хороших тулов никогда много не бывает!

Какой софт нам может пригодиться для нашего проекта? Какие курсы и видеоуроки нам стоит пройти?

  • Может быть взять генератор городов CityEngine?
  • Может рисовать город в специальном софте, таком как InfraWorks?
  • Может быть использовать бесплатные утилиты, такие как Blender-OSM и Blender-GIS?
  • Может быть стоит проверять исходные источники данных в QGIS?
  • Может быть сначала нарисовать город в 3DS MAX? Или хотя бы визуализировать его там перед засовыванием в игру?
  • Может быть сгенерить всю растительность самостоятельно в SpeedTree?
  • Может быть сгенерить своих педов в MetaHuman?
  • Может быть у тебя есть самодельный софт, который пригодится в проекте?
  • Или ты можешь предложить свои услуги по написанию недостающего софта? Хороших тулов никогда много не бывает!

Чему-то поучиться? Посмотреть обучающих видео?

Может быть поискать информацию о создании городов вообще?

Выбирай! Присоединяйся! Создавай!