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

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

Страницы: 1 2 330 31 Следующая »
#0
(Правка: 17 июля 2018, 4:10) 16:49, 26 ноя. 2016

Название: 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. По плану до весны выйдет ещё две альфы с периодичностью в месяц.

+ ЧаВо
+ юмор

#1
17:25, 26 ноя. 2016

Есть такие вопросы:

  • Открыты ли какие-то исходники у оригинальной игры?
  • Используются ли наработки других проектов?
  • Откуда известны форматы данных оригинальной игры - текстур, уровней, моделей и т. д.?
  • Откуда берутся параметры игровой логики - скорости врагов, урон оружия и т. д?
  • Насколько вообще игровая логика соответствует оригиналу?
  • #2
    17:41, 26 ноя. 2016

    Panzerschrek[CN]

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

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

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

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

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

    #3
    23:17, 26 ноя. 2016

    Вау. Какое же это извращенство.Я до сих пор завидую людям которые способны достать из скомпилированной игры исходник.
    У оригинальной игры движок на с++ ?

    #4
    23:33, 26 ноя. 2016

    endeavour_pr
    Чистый C с примесью ассемблера, насколько я понимаю.

    #5
    1:15, 27 ноя. 2016

    Напомнило

    + Показать

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

    #6
    6:42, 27 ноя. 2016

    У этой игры был крутой движок. Благодаря ему маленькая команда смогла сделать ААА игру за не большой срок.

    #7
    7:06, 27 ноя. 2016


    Мне Лара больше всего вот этим запомнилась)
    #8
    13:01, 27 ноя. 2016

    Глянул код - а там всё в .h файлах.
    XProger, Как так?

    #9
    (Правка: 13:08) 13:07, 27 ноя. 2016

    Panzerschrek[CN]
    > Глянул код - а там всё в .h файлах.
    > XProger, Как так?
    +1.

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

    #10
    16:07, 27 ноя. 2016

    нетривиальная задротская работа) круть.
    только велосипед же. причем конкретной модели

    #11
    16:38, 27 ноя. 2016

    amd.fx6100
    > Почему они из больших кубов устроены при этом в каждом кубе много полигонов.
    BSP-разбиение, может быть?

    #12
    17:29, 27 ноя. 2016

    а может разрушаемость. правда не припомню это в томбрайдер

    #13
    (Правка: 19:10) 18:13, 27 ноя. 2016

    amd.fx6100
    Абсолютно все модели, звуки, анимации, стейты, текстуры, иерархии костей, враги, объекты и главная героиня и т.д. находятся в одном файле уровня. Т.е. для работы игры достаточно файла LEVEL*.PHD.

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

    + отсечение

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

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

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

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

    #14
    19:29, 27 ноя. 2016

    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 330 31 Следующая »
    ПроектыФорумОцените