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

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

Очень интересно. Но вот не увидел ссылки на демо (

Спасибо!

Застрял в мусорных контейнерах. Потрачено.

Да, коллизии с мелкими предметами я еще пока не проработал. Там получается, что не машина застревает в предмете, а предмет в машине, и луч надо испускать не от машины, а от этого предмета... Или найти еще какое-то другое решение. Это реализуем чуть позже. А пока есть пункт респаун в меню настроек. Либо можно перезагрузить игру, если закончились деньги.

Залипательно! Будет здорово, если перерастёт в нечто большее.

Насчёт графического движка — не рассматривали PlayCanvas? На его основе есть классные демки: After The Flood, BMW i8. Правда, редактор сцен у них, кажется, закрытый.

Присматривался к нему, но отпугнуло то, что я что-то не могу себе скачать. А могу ли я менять код или выбирать нужную мне версию? С three.js ощущаю как-то больше свободы действий. Ну а так, демки впечатляют, конечно.

"Запомните этот исторический момент. Пусть это будет первая в мире гонка без вида от третьего лица"..

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

Я не испытываю кайфа в том, чтобы выйти из себя, увы.

Все люди разные, больше всего я люблю игры, в которых есть возможность играть как от первого, так и от третьего лица. Сам я пользуюсь обоими вариантами, это зависит от многих факторов: начиная с жанра игры и заканчивая моим настроением в конкретный момент времени. Поэтому и Ваш, и авторский взгляд имеют место быть, а хорошая игрушка должна удовлетворить нас троих.

Генератор города (...)
Игра загружается в браузер. И для сокращения времени загрузки она должна «весить» как можно меньше.

Если используется настолько "квадратная" и повторяющаяся геометрия, не проще вообще было бы не связываться с 3D-редакторами городов и сделать процедурную геометрию? Типа, центр, ориентация, размерность и текстура коробки, а джаваскрипт уж, небось, осилит сделать восемь структурированных полигонов на лету, ну или на два больше, если текстура первого этажа должна отличаться. Небось, вообще на килобайты счёт пойдёт.

поскольку мы пишем не Mortal Combat

Вообще, идея перспективная - вместо того, чтобы, врезавшись в чужое транспортное средство, как ни в чём не бывало поехать далее, чтобы вылезали пацаны и, такие: "Ты куда прёшь, баран? - Да сам-то козёл! - Ты чо буровишь?!..." - и т. д., ветки диалога, потом бой, и, если проиграл, тебя везут квартиру отписывать.

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

Это ж, вроде, стандартная практика - использовать отдельную, сильно упрощённую модель для обсчёта физики? Что там "решать"?

Bounds (границы) строятся вокруг каждого коллайдера в форме боксов, стороны которых ориентированы по осям координат. (..) Почему бы просто не делать рейкастинг со всеми моделями зданий по всему массиву? При десятках тысяч объектов это накладно

В смысле, а какое-нибудь стандартное octree не спасёт отца русской демократии?

на более высоких скоростях довольно часто случались пролеты сквозь препятствия (...)

Есть же, вроде, эти, как их, недискретные какие-то методы расчёта коллизий, как раз для подобных случаев? Типа, не увеличивать до бесконечности частоту, а, имея вектор скорости, посчитать, пересечём мы хитбокс до начала следующей итерации или нет.

Если используется настолько "квадратная" и повторяющаяся геометрия, не проще вообще было бы не связываться с 3D-редакторами городов и сделать процедурную геометрию?

Сгенерировать процедурно такие дороги, как выдает редактор города (изогнутые), довольно непростая задача. Ну и дома не хотелось делать совсем уж повторяющими улицы. Там кое-где есть дворы, проходы между домами и так далее. Реализовать это программно - это, по сути, написать свой такой же генератор города.

Вообще, идея перспективная - вместо того, чтобы, врезавшись в чужое транспортное средство, как ни в чём не бывало поехать далее, чтобы вылезали пацаны и, такие:

Ну, да, все как в реальной жизни. Есть такая передача, "Дорожные войны", кажется.

Это ж, вроде, стандартная практика - использовать отдельную, сильно упрощённую модель для обсчёта физики? Что там "решать"?

Может быть, и есть. Но когда у тебя дома тоже довольно простые, есть выбор - не делать еще и дополнительные упрощенные модели.

В смысле, а какое-нибудь стандартное octree не спасёт отца русской демократии?

Ох, не силен отец русской демократии в octree... И, как понимаю, это все равно не спасает от добавления/удаления элементов в список активных коллайдеров. Просто другой способ. Да и те самые границы (bounds) все равно будут нужны, нет? Чтобы добавлять коллайдеры с определенного минимального расстояния.

Есть же, вроде, эти, как их, недискретные какие-то методы расчёта коллизий, как раз для подобных случаев?

Непрерывное обнаружение столкновений (CCD), к сожалению, не поддерживается cannon.js. А он неплохо моделирует физику отскока от препятствий. CCD есть в three.js, но там нет физики. Вот я и комбинирую эти методы. Впрочем, вы несколько о другом. Рассчитать, произойдет ли коллизия в будущем. Не задумывался об этом. А, хотя, что мне от этой информации. Ну узнаю я, что коллизия будет на следующей итерации. Мне не нужна эта инфа, а нужно, чтобы физический движок среагировал на столкновение. Принудительно его это сделать не заставить, если не влезть глубоко в его код... Если он пропускает коллизию, значит пропускает.

Я конечно всё понимаю про вид от третьего лица, но абсолютно не понимаю почему вы выбрали вид из именно из кабины, где большая часть экрана заблокирована бесполезной мишурой. Я бы рекомендовал попробовать из капота тогда.
Да, если ставить руль на стол, то вид из кабины рушит "реализм" не меньше, чем игра от третьего лица.

А там есть вид от капота, переключается кнопкой V. Но мне почему-то все равно больше нравится - от руля. Ну, как бы, ощущаешь себя водителем машины, что ли.

Но, пожалуй, вы правы. Надо в одном из видов убрать капот совсем, чтобы была видна только дорога.

Действительно. Моя ошибка. Исправил на javascript.

Вау, вот это класс! В соседней статье скептики спекулируют что простые вэб приложения будут тормозить, а тут полноценная 3Д игра. Я когда вижу нечто подобное не перестаю восхищаться до чего продвинулись вэб технологии за последние годы!

В случае с 3D все ограничивается производительностью видеокарты. Это узкое место точно так же, как и в подобных нативных приложениях. А CPU большей частью ожидает завершения операция на видеоподсистеме. Разве что javascript на CPU выполняется помедленнее. Но, раз мы все равно ожидаем GPU, то какая разница.

Немного странно видеть везде var-ы конечно когда есть const/let ну да ладно)

По привычке ставлю var, предполагая повторное использование переменных в рамках функции, например, в последовательно идущих циклах и так далее. Честно говоря, не разбирался, уйдет ли больше памяти, если в каждом цикле и каждом ветвлении задавать отдельную область видимости переменных. Для производительности это может быть критично.

По идее компилятор должен лучше оптимизировать const так как он знает что значение не изменится.

На гонки люди приходят не только покататься, но и обставить своего железного коня. А если есть только вид из кабины, то часть с обставкой становится абсолютно бесполезной. Потому что ты 99% времени не видишь свою машину. В гараже на неё любоваться? А если не видно разницы, зачем тогда вообще машины менять? Всё равно во многих гонках они ездят одинаково. Ну и кроме того, вид из кабины загораживает существенную часть экрана бесполезной торпедой и рулём и всё равно не способствует реалистичности, за которую вы топите, так как даже рук на руле нет. Так и зачем всё это?

По демке — недостаёт описания управления. В начале новой игры что-то мелькает, но быстро пропадает и больше не появляется. Например, полазив по менюшке, я включил показ интерфейса для мобильных устройств и там с удивлением обнаружил кнопку «Ручник», нажатие на которую действительно стопорит машину. Но вот где она на клавиатуре, найти так и не смог… Очевидный вариант — пробел — не работает. Кстати, не всем удобны стрелочки, многие к WASD привыкли — неплохо бы сделать если не кастомизацию всех кнопок, то хотя бы две схемы управления.

Миникарта в левом нижнем углу выглядит бесполезно. Она слишком мелкая для ориентирования по городу (проще глазами вокруг посмотреть), а деньги или ключевые места (банк) на ней не отображаются.

Кстати, о деньгах. Со стартовой локации после мусорных баков повернул сразу направо — подобрал одну купюру (вроде 10-ку) и дальше в том направлении денег не видел, хотя колесил довольно долго. Судя по всему, они все сосредоточены в другой части города. Огромный пустой город никому не будет интересен. Надо более равномерно заполнить его предметами.

Звук какой-то странный, вроде иногда слышны звуки грозы, но ни звука мотора, ни прочих звуков езды я не слышал. Может, не работает?

Firefox 115.14.0esr (64-разрядный), Windows 7

вид из кабины загораживает существенную часть экрана бесполезной торпедой и рулём

А почему бесполезной? Ведь в реальной машине мы их тоже видим. Чем не реализм? Кроме того, как я уже показал в статье на примере с NFS-3, угол обзора от первого лица все равно шире и дорогу перед машиной видно лучше, чем от третьего, даже несмотря на загораживание обзора некоторыми внутренними элементами.

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

То есть, с руками на руле уже будет реалистично? А если взглянуть на это под таким углом: с торпедой и рулем просто недостаточно реалистично, а с руками - полностью реалистично? А с видом сзади - не реалистично совсем.

 А если не видно разницы, зачем тогда вообще машины менять? Всё равно во многих гонках они ездят одинаково. 

Физику делают одинаковой, видимо, чтобы игроку сильно не заморачиваться с выбором тачки. А что, если сделать ее разной? Одна машина быстрее на прямых, но ее больше заносит на поворотах, а с другой - все наоборот. Я еще пока не особо работал над физикой, но постараюсь сделать именно так. И ведь вид внутри у тачек тоже разный. Почему можно любоваться их разнообразием снаружи, но нельзя изнутри.

По демке — недостаёт описания управления.

Согласен. Вынесу это в справку по игре, чтобы было доступно в любой момент.

обнаружил кнопку «Ручник», нажатие на которую действительно стопорит машину. Но вот где она на клавиатуре, найти так и не смог… Очевидный вариант — пробел — не работает

Кнопка B - brakes. Соглашусь, пробел удобнее. Особенно, когда несешься и надо резко затормозить, сложно так сразу ткнуть в кнопку B. Я ее почему-то взял из примеров cannnon.js с транспортом. Перенесу на пробел.

Кстати, не всем удобны стрелочки, многие к WASD привыкли — неплохо бы сделать если не кастомизацию всех кнопок, то хотя бы две схемы управления.

А вот с WASD не все так однозначно. Я бы сказал, это философский вопрос) Сейчас я включу Стива Дждобса и буду доказывать, что эта возможность вам не нужна и все портит) WASD используется, скажем, в той же ГТА, чтобы правой рукой во время движения можно было крутить камеру мышкой. Но когда так едешь, крутя камерой, то сшибаешь все столбы и все, что находится вообще рядом. И не получается вписаться не то, чтобы в свою полосу, а даже в дорогу в целом. Какие уж тут гонки. Кроме того, управлять машиной кнопками левой рукой невозможно так же хорошо, как правой (ну если вы не левша, конечно). Вроде бы все качественные автосимы имеют управление стрелочками. Управлять левой рукой можно, если вождение в игре - это какая-то побочная механика. А здесь она основная.

Единственная причина убрать управление со стрелок - это то, что на многих клавиатурах их зачем-то делают миниатюрными, я имею в виду стрелки вверх и вниз. Тогда да, это боль... Пожалуй, я продублирую управление, но не на WASD, на, например, на IJKL - чтобы играть не стрелочками, но все равно правой рукой. могу еще на numpad продублировать, например - 5123.

Миникарта в левом нижнем углу выглядит бесполезно. Она слишком мелкая для ориентирования по городу (проще глазами вокруг посмотреть), а деньги или ключевые места (банк) на ней не отображаются.

Насчет ее размера подумаю. И правда, мелкая. А какие-то метки на ней будут - банк, деньги, географические названия и т.д Просто пока не реализовано. Как раз работаю над большой картой и текстовыми слоями. Все это будет и на маленькой тоже.

подобрал одну купюру (вроде 10-ку) и дальше в том направлении денег не видел

Я упомянул в конце статьи, что игры как таковой еще нет. Из главного меню сейчас доступно только свободное вождение. Я туда запихнул всего 4 купюры так, для примера. Купюры будут очень часто и по всему городу. Будет также и трафик.

Звук какой-то странный, вроде иногда слышны звуки грозы, но ни звука мотора, ни прочих звуков езды я не слышал. Может, не работает?

Звуков пока просто нет. Только гроза.

Firefox 115.14.0esr (64-разрядный), Windows 7

Спасибо. Кстати, попробуйте Хром. У меня 10-ка и в Firefox больше фризов. В Хроме все плавнее. По-моему, не только в моей игре, но и во всех, где WebGL, Firefox его отображает как-то рывками.

А почему бесполезной? Ведь в реальной машине мы их тоже видим.

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

Спасибо. Кстати, попробуйте Хром.

Хрома у меня нет, а проблем с Firefox'ом я не заметил, всё работает плавно на максимальных настройках — я выставил их до начала игры. Кстати, не уверен, что в процессе игры они меняются правильно, потому что я снизил дальность прорисовки с максимума до нуля, но в картинке вообще ничего не поменялось. Возможно, это только с новой игровой сессией работает?

А вот с WASD не все так однозначно.

WASD — это привычно. Нет смысла делать управление а-ля vim, им ещё меньше народу пользоваться будет. (в сторону) И с мелкими стрелочками — это прямо по-больному, не думал, что будет так сложно найти ноутбук с нормальной полноразмерной клавиатурой и не посечёнными стрелками — все производители как с ума посходили с этой экономией на спичках. И то она далека от идеала. (кхм-кхм)

Я туда запихнул всего 4 купюры так, для примера.

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

В реальной жизни на торпеде полезные индикаторы скорости, расхода топлива и прочие штуки, нужные для управления, здесь же этого нет.

Ну хорошо, нет, но будет. Будет еще зеркало заднего вида. Думаю, это как-то компенсирует ограниченный обзор. В конце концов, у водителя он такой и есть. Реальный водитель - тоже не бог.

Хрома у меня нет, а проблем с Firefox'ом я не заметил, всё работает плавно на максимальных настройках

Хорошо. Вероятно, у вас мощное железо. На моем Firefox лагает.

я снизил дальность прорисовки с максимума до нуля, но в картинке вообще ничего не поменялось

Там до игры настраивается только количество второстепенных объектов. Самая последняя настройка. Вероятно, вы ее и имели в виду? Остальные оказывают эффект прямо в игре - "Дальность обзора" и "Дальность объектов". Просто они не дают снизить значение прямо до нуля, поэтому их можно наблюдать только на какой-то длинной улице.

 не думал, что будет так сложно найти ноутбук с нормальной полноразмерной клавиатурой и не посечёнными стрелками — все производители как с ума посходили с этой экономией на спичках

Это точно. Я нашел. Но там другие кнопки расположены не очень удобно... Питание, например и так далее.

Ведь в реальной машине мы их тоже видим. Чем не реализм?

Осспаде, да забудьте вы уже слово "реализм" применительно к компьютерным играм (не конкретно вы, а вообще все забудьте). Нет там реализма. Есть набор декораций "под реализм", который нужен не для вящего усложнения, а совсем наоборот - для того, чтобы привычные визуальные метафоры хорошо накладывались на привычный гештальт реального мира ("я бегу с ружьём и во врагов стреляю"), а не требовали привыкания и постоянного осмысления ("я передвигаю свой хитбокс и трассирую лучи в направлении других хитбоксов"). В "реальной машине" у юзера разрешение выше, угол зрения больше, VR-гарнитура навороченная встроена прямо в башку, манипуляторы с тактильным фидбэком и пр., и пр. А тут он сидит, будто весь в гипс залитый после травмы позвоночника, вызвавшей паралич глазодвигательных мышц, и пырится - действительно, "чем не реализм"? (Но за наезд на висящую над дорогой огромную зелёную купюру снял бы перед автором шляпу, если бы носил - вот уж реализм такой, что прямо всем реализмам реализм :)

Одна машина быстрее на прямых, но ее больше заносит на поворотах

Играл лет десять назад в гоночную игру ReVolt, там всё так и было.

управлять машиной кнопками левой рукой невозможно так же хорошо, как правой (ну если вы не левша, конечно)

Не особо фанат гонок, но в некоторые поигрывал - везде, насколько я помню, был WASD по-дефолту. Так лучше и привычнее - во всяком случае, для нефаната гонок (фанат бы, наверное, купил руль или хотя бы джойстик, но, с другой стороны, вряд ли вообще стал бы играть в гонки в браузере). Оглядываться мышью помогает хоть как-то ощутить габариты происходящего и не мешает управлять транспортным средством. А что, сделать управление настраиваемым - это совсем нельзя, потому что не по стивджобски?

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

Ну хорошо. В таком случае визуальная метафора вида от руля лучше, чем вид от третьего лица, для восприятия вождения автомобиля.

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

Согласен, здесь нет такой свободы обзора, как в реальном мире. Но вид от бога - еще хуже, такого в реале и в помине нет.

Но за наезд на висящую над дорогой огромную зелёную купюру снял бы перед автором шляпу, если бы носил - вот уж реализм такой

Упрощения тоже должны быть. Но только упрощения, а не увод совсем в сторону (как от вида от руля к виду от третьего лица). Если не собирать купюры, то надо тогда устраиваться на работу, ехать в офис, разбирать бумажки... Совсем другая игра получается. Я считаю, упрощение со сбором купюр допустимо.

Не особо фанат гонок, но в некоторые поигрывал - везде, насколько я помню, был WASD по-дефолту.

А я вот что-то не припомню таких. Может быть, я давно в них не играл. Всегда было на стрелочках управление. Разве что иначе в ГТА и иже с ними, где механика вождения - не основная механика.

Оглядываться мышью помогает хоть как-то ощутить габариты происходящего и не мешает управлять транспортным средством

Не мешает?? Да вы с ума сошли!) Отклонить камеру мышкой и при этом не потерять направление движения - наверно надо иметь железную координацию.

А что, сделать управление настраиваемым - это совсем нельзя, потому что не по стивджобски?

Нет. :)

В таком случае визуальная метафора вида от руля лучше, чем вид от третьего лица, для восприятия вождения автомобиля.

Это не "визуальная метафора", а "страдай, чтобы страдать, потому что, сука, страдай". Визуальная метафора здесь - "я веду автомобиль". И от первого лица я веду автомобиль, и от третьего лица я веду автомобиль. Если бы геймплейные механики были как-то завязаны на рулевое колесо - к примеру, надо было бы мышкой его мацать и вручную вертеть туда-сюда - тогда бы да бы, это было бы ужасно, но это была бы "визуальная метафора вида от руля". При том, что вид от третьего лица позволяет оценить габариты авто и как оно вписывается между объектами окружающей среды - да, в реале такого нет, но в реале бинокулярное зрение и пр. органы чувств позволяют оценить габариты авто и пр., а в особых случаях можно голову из окна высунуть. У вас можно голову из окна высунуть, или водитель сидит привязанный, как заводной апельсин?

Не мешает?? Да вы с ума сошли!

Не мешает. Если сделано по-уму - совершенно не мешает. Обычно это было так, что зажимаешь какую-то кнопку, активирующую режим "freelok", быстро осматриваешься, отпускаешь кнопку, и взгляд автоцентрируется обратно по линии движения. Разумеется, это делается не в особо сложные и напряжённые моменты.

Нет. :)

Минус один потенциальный клиент. Шучу. Я бы и так не стал играть :)

И от первого лица я веду автомобиль, и от третьего лица я веду автомобиль.

От третьего лица вы ведете автомобиль не как водитель.

зажимаешь какую-то кнопку, активирующую режим "freelok", быстро осматриваешься, отпускаешь кнопку, и взгляд автоцентрируется обратно по линии движения

Ну это совсем другое дело. Пожалуй, добавлю кнопки - посмотреть по сторонам и назад. Это будет вполне достаточно.

А я наоборот не знаю ни одной гонки с управлением не на WASD. И не стал бы играть в такую, мышечную память никто не отменял, а переучиваться не хочется

Ребят, у кого есть неофициальный патч для вида от третьего лица ? ))

Да я на вас в суд подам! :)

Круто👍👍👍. Мне нравится! Я верю, что этот проэкт будет конкурировать с DTA! Возможно это GTA VI: Hi From Russia 🤣🤣🤣

Удачи с разработкой 💪

Спасибо! Такие комментарии мотивируют продолжать.

Первое, что не понравилось - слишком большие и слишком резкие перепады яркости при изменении погоды. В реальных условиях глаза/мозг подстраиваются, но на мониторе это смотрится дискомфортно и контраст при облачности дискомфортно мал.

Слишком чувствительный "поворот", вообще не чувствительный тормоз и ручник, со 100 км по ощущениям останавливаешься чуть ли не сто метров, зажав и стрелку назад и ручник. Как писали ранее, ручник надо на пробел.

Не отпуская ручник, можно надавить на газ и ускорение будет работать "как обычно"

Слишком хороший накат - отпустив газ можно проехать несколько кварталов (в т.ч. по газону).

Не понятно почему я врезаюсь в воду, надо как-то этот момент доработать.

Урон от столкновения неплохо бы сопоставить со скоростью

Излишне ломанные линии жёлтой полосы смотрятся странно

Ускорение и макс. скорость назад таки же, как и вперед.

Сдавая назад застрял в дереве...

P.S. жду форк с видом от третьего лица xD

Спасибо за комментарий. Приму к сведению для доработки к следующей версии. По поводу форка - это уже не ко мне.) А так согласен со всем, кроме, может быть, некомфортного контраста при облачности. Но это наверно из области субъективного восприятия. Я вообще не чувствителен к таким вещам, для меня любая яркость и контраст при любом освещении комфортны. И тут уж я не знаю, какой контраст должен быть.

Управляемость авто надо очень сильно доделывать, ощущения как от трамвая на рельсах.
Как минимум сделать, чтобы вначале нажатия на клавишу поворота автомобиль не сразу "на максимум" поворачивал, а чуть-чуть. Чтобы переход от прямого движения к максимально поворачивающему был плавным и занимал доли секунды.

Ускорение у авто не зависит от скорости и тупо срезано у 140 км/ч. Сопротивления воздуха нет (оно пропорционально квадрату скорости). Это тоже тупо, советую посмотреть на формулу E = mv^2 / 2, и сказать, что ускорение - не константа, а = (Power - с v^3) / max(v, power * k / g)

Спасибо за комментарий. Я сейчас как раз экспериментирую с управлением, подбирая параметры. Там для транспорта есть ряд настроек типа - жесткость подвески, влияние качки (или как это перевести), трение скольжения, мощность двигателя и так далее. Результата можно добиться как-то комбинируя эти значения. Задать ускорение напрямую, похоже, невозможно. А вот плавный угол поворота колес вполне можно.

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

Публикации