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

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

К сожалению, большинство студентов выбирает простые игры типа 2Д платформеров. Я пишу эту статью для того, чтобы показать, что создание иллюзии трёхмерного мира ничуть не сложнее клонирования марио броз.

Может, потому что 3d мир требует априори большей детализации, 3d моделирования. В отличие от 2d/
Так тут моделирования никакого нет, ровно такие же спрайты.
А не хотите сделать такой же краткий и наглядный экскурс в 3d? Я думаю это было бы очень интересно для многих начинающих во имя познания основ.
Не уверен, что комментарий был адресован мне, но вот мои статьи на английском языке:

На русском языке все эти статьи (и даже немного больше) вы легко найдёте, кликнув на мой профиль на хабре :)

Приятного чтения!
Благодарю!
Я не вылизывал свой код, намеренно вывалив грязное бельё. Да, я так пишу (и не я один). Одним субботним утром я просто сел и написал вот это :)
+ Плюсую :)
Очень похоже на:
А. Ла Мот, Д. Ратклифф, М. Семинаторе, Д. Тайлер
Секреты программирования игр

Оригинал 1994, издание на русском 1995

там правда это был Си с вкравлениями ассемблера под DOS
Ага, узнали! Эта книга определила мою профессию, я её до сих пор бережно храню. Обратите внимание, что текстуры для статьи я взял с прилагавшихся к этой книге дискет :)

Точнее, дискет к той книге мне так и не продали, и в детстве я страшно по этому поводу страдал. Ну а двадцать пять лет спустя я вдруг подумал, что интернет помнит всё. Оказывается, оригинальная книга шла с компакт-диском:
Скрытый текст
Книга шла с диском! Ностальгия! Купил её в холле первого корпуса самарского политеха, потом с другом переписали движок трассировки луча на Паскале, куски критичного кода на ассемблере, на 486dx2 66Mhz всё летало.
У нас в городе была с дискетами
Вы какую-то не ту книгу помните. 2 дискеты 3.5 дюймов должны были идти с моей книгой, но их не было. Обратите внимание, что мне пришлось просверлить и прошить книгу леской, настолько я её зачитал :)

Скрытый текст

НЛО прилетело и опубликовало эту надпись здесь
Интересно, можно ли еще ее где в бумаге найти.
486 строк выглядят, конечно, красиво. Но гораздо реалистичнее в плане оценки сложности этого проекта выглядит статистика вашего репозитория на гитхабе: 8,787 ++ 7,972 --. На самом деле вы написали 8787 строк, а это уже совсем другой уровень сложности.
Вы это серьёзно? Загрузить, а потом, когда отпала необходимость, удалить стороннюю библиотеку stb_image.h на семь с половиной тысяч строк — это очень сложно?
Упс. ¯\_(ツ)_/¯
Да, тогда получается 1325 ++ 510 --. Всё ещё в три раза больше работы, чем 486 строк.
Окей, тут мы уже ближе к истине. А что вас удивляет? Разработчики практически никогда не пишут сразу начисто, особенно в тех местах, где ещё не очень очевидно, как оно будет в конце выглядеть. Сначала быстрый прототип, потом рефакторинг. Вот вам сразу умножить на два.

Количество изменений строк кода — очень странная мера сложности проекта, особенно на таких маленьких базах кода.
А еще в гит попадает всякое «удалил строку в одном месте, чтобы вставить в другом».
Ещё хуже. Туда попадает постоянная борьба между \r\n и \n от нескольких разработчиков.
Ну, на это к счастью, есть pre-commit hook, если уж случилось такому несчастью, как разные операционки у разработчиков.
Век живи — век учись. Для моих усохших мозгов гит слишком сложен :)
Спасибо за хинт. Разные операционки — мой каждодневный кошмар.
Вообще, была книжка «Компьютерная графика. Полигональные модели». Ей лет эдак 19. Там движки вольфа, дума и квейка разобраны. Мне, во всяком случае, она тогда позволила сделать игру типа DooM.
А вообще, если есть желание перейти к движку DooM и Duke Nuker (который Build), то у меня была статья про такие движки.

Сам в январе захотел сделать что-то подобное, но в случае с трассировкой, производительность слишком сильно зависит от разрешения.


В итоге за ночь накидал 2d ячейки с трассировкой видимости ячеек(лучи до клеток периметра максимального обзора от краев клетки где стоит игрок на 90 градусов в обе стороны, дают полный обзор без провалов по ячейкам), и отрисовкой видимых ячеек(карта в виде Uint8Array(cols*rows)) пола/потолка и стен.
Это решение показало себя очень хорошо даже на компьютере 10+ летней давности. На картах размерами 4096x4096 ячеек, с текстурами 128x128 и дальностью трассировки 20 блоков.


По итогу скажу что это самая простая часть "игры".


Правда я для рендера использовал webgl, с библиотекой regl (удобная stateless обертка).
Считаю webgl очень удобным для такого рода вещей, так как позволяет легко скинуть друзьям. (И уговорить потестить твою игру куда проще когда человеку не нужно ничего ставить)

Если вы так хотите обучать студентов именно 3Д, почему не поставить им такую задачу? А то вы сразу такой пушистый, я все разрешаю без ограничений, а потом удивляетесь что большинство студентов идет по пути наименьшего сопротивления!
Так я и разрешаю делать любую игру, всё честно. Пусть себе делают что хотят. Я просто пытаюсь показать вещи, которые лично мне кажутся интересными (показать, а не принудить!). И зря вы считаете, что большинство идёт по пути наименьшего сопротивления. Они такие игры выкатывают, что закачаешься, пусть и не в 3д.
Самое оно для публикации в steam :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории