Проекты
GameDev.ru / Проекты / Форум / OpenLara - движок классического Tomb Raider (alpha 1)

OpenLara - движок классического Tomb Raider (alpha 1)

Поделиться
Страницы: 1 2 322 23 Следующая »
XProgerПостоялецwww26 ноя. 201616:49#0

Название: OpenLara
Жанр: Action-adventure, puzzle-platform
Движок: С++ / OpenGL
Платформа: Windows, Linux, Mac OS X, WebGL (Android, iOS, RaspberryPi в планах)
Исходный код: GitHub / задачи
Видео: youtube
Демо: WebGL версия (обновляется постоянно)

Всем привет, после просмотра истории серии игр Tomb Raider в июле 2016 года, движимый ностальгией и любопытством веду разработку движка с целью повторить механику классических игр серии Tomb Raider (1-5) с некоторыми графическими и геймплейными плюшками. Проект разрабатывается в свободное от работы время и никаких коммерческих целей не преследует.
Контент используется оригинальный без изменений.

На данный момент проект разрабатывается уже 4 месяца и находится в состоянии alpha 1. По плану до весны выйдет ещё две альфы с периодичностью в месяц.

+ ЧаВо
+ юмор

Правка: 27 окт. 2017 16:34

Panzerschrek[CN]Участникwww26 ноя. 201617:25#1
Есть такие вопросы:
  • Открыты ли какие-то исходники у оригинальной игры?
  • Используются ли наработки других проектов?
  • Откуда известны форматы данных оригинальной игры - текстур, уровней, моделей и т. д.?
  • Откуда берутся параметры игровой логики - скорости врагов, урон оружия и т. д?
  • Насколько вообще игровая логика соответствует оригиналу?
  • XProgerПостоялецwww26 ноя. 201617:41#2
    Panzerschrek[CN]

    > Открыты ли какие-то исходники у оригинальной игры?
    Нет, но есть дизассемблер

    > Используются ли наработки других проектов?
    Меня консультируют ребята из аналогичного проекта OpenTomb

    > Откуда известны форматы данных оригинальной игры - текстур, уровней, моделей и т. д.?
    В 1999 году в сети появился анонимный документ частично описывающий форматы данных. Его со временем развило сообщество.

    > Откуда берутся параметры игровой логики - скорости врагов, урон оружия и т. д?
    Скорость и ускорение хранится в параметрах самой анимации. Урон худо-бедно из асм листинга достаётся.

    > Насколько вообще игровая логика соответствует оригиналу?
    Целью является полное воссоздание, так что в перспективе все недочёты будут пофикшены.

    endeavour_prПостоялецwww26 ноя. 201623:17#3
    Вау. Какое же это извращенство.Я до сих пор завидую людям которые способны достать из скомпилированной игры исходник.
    У оригинальной игры движок на с++ ?
    XProgerПостоялецwww26 ноя. 201623:33#4
    endeavour_pr
    Чистый C с примесью ассемблера, насколько я понимаю.
    fantomassПостоялецwww27 ноя. 20161:15#5
    Напомнило
    + Показать

    Хотя если это пойдёт по идейному пути OpenXcoM'а, то было бы интересно поглядеть.

    amd.fx6100Постоялецwww27 ноя. 20166:42#6
    У этой игры был крутой движок. Благодаря ему маленькая команда смогла сделать ААА игру за не большой срок.
    E-ConeУчастникwww27 ноя. 20167:06#7

    Мне Лара больше всего вот этим запомнилась)
    Panzerschrek[CN]Участникwww27 ноя. 201613:01#8
    Глянул код - а там всё в .h файлах.
    XProger, Как так?
    amd.fx6100Постоялецwww27 ноя. 201613:07#9
    Panzerschrek[CN]
    > Глянул код - а там всё в .h файлах.
    > XProger, Как так?
    +1.

    XProger
    Не хочется в коде копаться. Расскажи как уровни устроены с алгоритмической точки зрения. Почему они из больших кубов устроены при этом в каждом кубе много полигонов.

    Правка: 27 ноя. 2016 13:08

    MiraПостоялецwww27 ноя. 201616:07#10
    нетривиальная задротская работа) круть.
    только велосипед же. причем конкретной модели
    Лис®©™Постоялецwww27 ноя. 201616:38#11
    amd.fx6100
    > Почему они из больших кубов устроены при этом в каждом кубе много полигонов.
    BSP-разбиение, может быть?
    MiraПостоялецwww27 ноя. 201617:29#12
    а может разрушаемость. правда не припомню это в томбрайдер
    XProgerПостоялецwww27 ноя. 201618:13#13
    amd.fx6100
    Абсолютно все модели, звуки, анимации, стейты, текстуры, иерархии костей, враги, объекты и главная героиня и т.д. находятся в одном файле уровня. Т.е. для работы игры достаточно файла LEVEL*.PHD.

    Уровень разбит на комнаты, каждая комната разбита на ячейки размером 1024х1024. В проходах между комнатами расставлены порталы которые используются для отсечения, соответственно каждая комната знает какие порталы в ней находятся и куда ведут.

    + отсечение

    В свою очередь, каждая ячейка может хранить в себе дополнительную информацию: высоту пола и потолка, значения уклонов пола и потолка, индекс комнаты над ячейкой и под ячейкой, список команд тригера и портальный переход в другую комнату. Последний как раз отвечает за переходы из комнаты в комнату и сделан благодаря тому, что комнаты идут с нахлёстом. Т.е. переходя на такой переход игрок переносится в комнату, для которой перход обратно находится в предыдущей клетке %)
    + переходы

    Все эти данные используются в основном для расчёта коллизий, минимальный шаг высоты пола равен четверти ячейки (256). Визуальная геометрия хранится отдельно и никак к ячейкам не привязана. Индексированная геометрия состоит из квадов и треугольников, причём для моделей они могут быть не отекстурены (задан только цвет).

    Из плюсов такой структуры: в игре существуют большие блоки 1024^3 которые можно двигать, они по факту подменяют высоту пола. Двери обычно расположены на границе порталов, в закрытом состоянии ставят за собой невидимую стену, и такую же стену ставят в комнате которую получают из ячейки за дверью, выходит своего рода 4D пространство, когда наличие стены зависит от того с какой стороны подошёл к двери 8) Благодаря портальной системе в TR3 смогли сделать НЛО небольшое снаружи, огромное внутри.

    upd: в нулевой пост добавил спойлер с забавными багами в процессе разработки :)

    Правка: 27 ноя. 2016 19:10

    AndreyПостоялецwww27 ноя. 201619:29#14
    XProger
    Глянул исходники.
       #ifdef __APPLE__
            extern char *contentPath;
            int len = strlen(contentPath);
            strcat(contentPath, name);
            f = fopen(contentPath, "rb");
            contentPath[len] = '\0';
        #else
    что за contentPath ? можно же намного проще через _NSGetExecutablePath получить пусть к исполняемому файлу, потом уже получать путь к папкам, это отлично работает для IOS/Mac OS X
    Страницы: 1 2 322 23 Следующая »

    / Форум / Проекты / Оцените

    2001—2017 © GameDev.ru — Разработка игр