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

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

Отличный, кстати, пример того, как питон плохо справляется с работой, когда простые вычисления приходится делать ему самому, а не полагаться на C/C++ библиотеки.

На самом деле здесь используется технология Ray Casting, третьего измерения тут просто не существует.

Так. Сначала показан Wolf-3D, а потом DooM. Это утверждение, полагаю, относится и к DooM? В таком случае, разочарую — в DooM используется BSP-дерево, и третье измерение, внезапно, существует и в нём тоже можно перемещаться сколько угодно! :) Это уже вторая статья про Ray Casting за последние пару месяцев, и опять автор не удосужился почитать, как же сделан DooM (у меня есть подозрение, что вы родилисль сильно позже, чем этот DooM был уже почти забыт)! Ну пожалуйста, не надо фантазий. Да поиграйте ж вы в этот DooM, наконец. Сравните со своим движком и задайтесь вопросом, как же это у вас такие сцены, как в DooM, не получаются физически?


Мне стало интересно на сколько это сложно реализовать.

Несложно. Но лучше реализуйте экранный портал. Он тоже несложный, но 3D у вас будет уровня DooM и Duke Nukem 3D.


Вот и получается игра с 2.5D измерением, сотнями лучей, маленьким FPS

А вы на I5 запускали? :) Шутка. А сравните ваш код и подход с кодом из книги Шикин, Боресков "Компьютерная графика. Полигональные модели". Там этот метод разобран детально. А то что-то у вас как-то FPS даже для питона не очень.
Сколько вы, кстати, лучей-то запускаете? А то у меня нехорошее предчувствие появилось, что их число у вас не равно разрешению по X экрана.


Кстати, как дела со скольжением при столкновении с блоком (когда игрок упирается в блок под некоторым углом)? :) Помнится, правильно сделать это скольжение была весёлая задачка. :)


В итоге получаем адекватное отображение текстур:

А где же текстуры? Вот эти цветные вертикальные линии? Ну нет, это не серьёзно...

как-то слишком много сурового русского фидбека. :) А книжка - ну понятно что автор не из тех, кто может закрыть глаза и вспомнить как выглядели отдельные страницы Шикина и Борескова, да еще и как пахли. И всю историю эволюции wolf3d->doom->и затем уже полноценные полигональные 3д движки (с вставкой спрайтов иногда от бедности). А чтобы поностальгировать, для сведения олдскул - сама книжка (хотя мне кажется, что это и правда очень хорошее историческое чтиво для кого угодно кто немного занимается компьютерной графикой):

Hidden text

Да ну бросьте, где же тут суровость? :) Скорее, сарказм.


ну понятно что автор не из тех, кто может закрыть глаза и вспомнить как выглядели отдельные страницы

Конечно, нет. Автор, думаю, только-только узнал, что может сделать Ray Casting и получить хоть какое-то 3D и спешит поделиться этой технологией. :)
Но я ему завидую — у него всё впереди. :) Даже плюсиков наставил ему, вот.

разочарую — в DooM используется BSP-дерево, и третье измерение, внезапно, существует и в нём тоже можно перемещаться сколько угодно!

Правильно подметили, спасибо! Действительно, даже не удосужился почитать про эту игру побольше, просто визуально уж больно похож он на Ray Casting) Впредь постараюсь поглубже вникать в тему.

А то что-то у вас как-то FPS даже для питона не очень.

Эту всю штуку можно оптимизировать, в том числе и с помощью любого JIT компилятора, но проблема в том, что на пайтоне они уж очень не дружат с ООП и с некоторыми видами данных, а чинить всю эту тему мне не очень то и хотелось. Как-нибудь на досуге ознакомлюсь с книгой.

Сколько вы, кстати, лучей-то запускаете? А то у меня нехорошее предчувствие появилось, что их число у вас не равно разрешению по X экрана.

Это все можно настроить, конечно. А так, разрешение экрана 1600 по ширине, запускаю в основном 400 лучей, 4 к 1 получается, путем проб и ошибок выяснилось, что лучше запускать число лучей такое, чтобы это число имело общий знаменатель с шириной экрана, как то так.

Кстати, как дела со скольжением при столкновении с блоком (когда игрок упирается в блок под некоторым углом)?

О да, в точку! Но уже честно не помню как, но это проблему я как то сгладил, конечно присутствуют иногда глитчи, но в основном игрок именно скользит по стенам.

А где же текстуры? Вот эти цветные вертикальные линии?

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

Спасибо за такую полную критику, а также за то, что верно подмечали ошибки и недочеты!

Про рейкастинг на хабре (да и вообще в сети) уже много статей было, и во всех примерно одно и то же, только языки отличаются. Хотелось бы увидеть какое-то отклонение от "нормы" - округлые стены, полупрозрачность, освещение, или еще что-нибудь интересное придумать. Алгоритм то позволяет делать игры на железе 30-летней давности, в его чистом виде мощности современных ПК почти не задействованы. Интересно посмотреть, какие прикольные штуки можно получить если заменить рейкастинг на ray marching.

по теме смотрел этот канал на ютубе

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории