Как стать автором
Обновить

Комментарии 15

Круто! Зря я отложил в долгий ящик работу с SDL+OpenGL, сейчас бы поучаствовал в разработке…
Спасибо! Я сам не сразу за эту связку взялся. До этого и вин апи пробовал и glut и другие прослойки к OpenGL. В принципе при знании Си и основ OpenGL связку SDL+OpenGL несложно освоить даже на ходу.
Никак не пойму, а где здесь C++? И «красное-черные деревья» Вы судя по статье сами реализовывали, когда есть std::map с практически канонической реализацией на rb-tree.
Никак не пойму, а где здесь C++?
Можно уточнить — это к тому, что примеры кода на чистом Си, или к тому, что не рассмотрены особенности языка С++ на конкретных примерах? Выбор C++ обоснован тем, что весь проект написан на C++, однако большая часть кода написана в стиле Си. Если дело в отсутствии текста об особенностях языка, то спасибо за замечание, буду аккуратнее относиться к выбору хабов.
По поводу std::map: думал что реализация основана на хеш таблицах (видно что-то левое прочел по этому поводу) — спасибо за информацию, буду знать. Поскольку реализация есть уже своя, то переделывать особого смысла пока не вижу, зато в других проектах скорее воспользуюсь std::map.
Моё внимание привлек тег game development вкупе с C++. Именно представленный код ввел в некоторое заблуждение, потому что например переменные для цикла for объявлены вне тела цикла (хотя современные версии стандарта C вроде разрешают объявление в первом элементе for?) и активное использование elaborated type specifier'ов.
А на C++ Вы в движке ничего не пишете? Было бы интересно посмотреть :)
Рекомендую посмотреть в сторону Gameplay3d. Неплохая обёртка над opengl & bullet & openal с хорошей поддержкой мобильных девайсов. В своё время перешел на неё после того как понял что мобильный opengl слегка отличается от десктопного :)
Gameplay3d — впервые слышу, надо будет изучить и поковырять исходники, спасибо за инфу. Надеюсь со скриптами там проблем тоже нет.
А чем отличается-то?
У нас прекрасно один и тот же код работает на десктопе и на мобилках.
Единственное отличие — на десктопе при загрузке шейдера автоматически в фрагментном шейдере комментируется строка precision mediump float;
В остальном код идеентичный…
Гм, ну возможно это я просто не так его готовил. Уже точно не помню в чем были отличия, но кажется что-то связанное с тем что в gles2 нет всяких glLoadIdentity, glOrtho, glDrawElements не умеет GL_QUADS, etc.
Этого всего уже и на десктопе нет. :(
Перечисленный вами функционал depricated c 2008 года и доступен в режиме совместимости на OpenGL 3.0. А с 2010 новый OpenGL вообще это все не поддерживает.
В первом видео 1:11 — даже этот небезызвестный прыжок реализовали, респект за внимание к деталям!
а улучшенная графика будет? или планируется полное совпадение с оригиналом?
Улучшение графики планируется (и похоже для этого придется капитально или вообще с нуля переписывать рендерер), но только после решения основных задач геймплея. Просто как неоднократно показывала практика, наличие исходного кода с прописанным геймплеем практически всегда гарантирует последующее добавление улучшенной графики (например jDOOM, Risen3D, Quake Darkplaces, berserker quake II и т.д.).
TR1 и 2 одни из самых любимых игр. Перепройдены вдоль и поперёк со всеми возможными секретами и читами. А в вашей версии будет предусмотрен знаменитый corner bug?

www.youtube.com/watch?v=xRUQN1vOdEE
Понимаю, у меня любимые части 1-ая и 4-ая (т.к. была первой из тех что я играл). С применяемой в данной момент физикой такой баг поблематично реализовать даже специально, т.к. в поекте пименяется физический impulse based движок bullet, который использует реальную геометрию уровня (не самый лучший подход, поскольку для рендеинга могут применяться высокополигональные модели, а физическая модель, как правило, сильно упрощена).
В оригинале каждая комната разбита (2d) на т.н. «сектоа», или квадраты (размер 1024х1024 иговые единицы, напимер размер у кубов которые можно толкать по полу и на которые можно влезть равен 1024х1024х1024). Высоты пола / потолка высчитываются с помощью карты высот из т.н. floor_data, уникальных для каждого сектоа. Когда Лара «влезает» в угол, то она попадает в сектор с большой высотой и игра просто «исправляет» текущую координату высоты Лары так, чтобы она стояла на полу, а не под полом.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации