Cryptovoxels — это виртуальный мир на блокчейне Ethereum. Следите за нами в Twitter или присоединяйтесь к Discord.

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

Это история о 3 больших долгосрочных ветках, которые у меня были для Cryptovoxels.

функция/видео

Эта функция добавляет элементы видео, возможность встроить мир в вашу посылку. Будь то предварительно записанное видео, которое вы размещаете в формате .mp4, или прямая трансляция в формате HTTP Live Streaming.

Эта ветвь на самом деле не заняла много времени, чтобы появиться, но я думал об этом в течение долгого времени. Есть несколько проблем, о которых следует помнить:

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

Как оказалось, основную проблему синхронизации видео мы решили, включив HLS/он же потоковое видео. Если все смотрят прямую трансляцию, то она в основном синхронизирована.

Эту ветку я надеюсь выпустить сегодня.

функция/микрофон

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

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

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

функция/сценарий

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

Ключом к запуску этой ветки было решение, что все редактирование должно происходить в мире, что нет отдельной страницы для написания сценариев для посылки, вы просто добавляете модель .JS, и этот физический объект содержит сценарии. для вашей посылки.

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

Эта ветвь очень важна, потому что за скриптами скрывается множество функций (процедурное создание сцен, создание галерей, создание простых игр, упрощение транзакций ethereum) — так что я продолжу ломать эту, даже базовую (но безопасную) реализацию. будет хорошим местом для начала, будет интересно посмотреть, что люди построят с его помощью!

Cryptovoxels — это виртуальный мир на блокчейне Ethereum. Следите за нами в Twitter или присоединяйтесь к Discord.