<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Nefrace</title><subtitle>Занимаюсь разработкой игр на Godot и исследованием малоизвестных движков, фреймворков и языков программирования.</subtitle><author><name>Nefrace</name></author><id>https://teletype.in/atom/nefrace</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/nefrace?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@nefrace?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=nefrace"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/nefrace?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-07-26T13:13:26.556Z</updated><entry><id>nefrace:godot-and-html5</id><link rel="alternate" type="text/html" href="https://teletype.in/@nefrace/godot-and-html5?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=nefrace"></link><title>Godot Engine и браузерные игры</title><published>2023-07-07T13:04:53.796Z</published><updated>2023-07-11T09:05:57.239Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/38/ea/38eaecfc-35a1-4612-8d0a-75f296a8ab68.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/86/d6/86d6ced9-1113-4f99-97e3-c6fa4da9bde6.png&quot;&gt;Браузерные игры давно укрепились в сознании людей как способ быстренько скоротать несколько минут времени, не парясь установкой чего либо на своё устройство. И со временем появляется всё больше способов их создавать. Чистый JavaScript, фреймворки, и даже экспорт из Unity. Godot Engine также предоставляет средства для создания браузерных игр. </summary><content type="html">
  &lt;p id=&quot;iUPh&quot;&gt;Браузерные игры давно укрепились в сознании людей как способ быстренько скоротать несколько минут времени, не парясь установкой чего либо на своё устройство. И со временем появляется всё больше способов их создавать. Чистый JavaScript, фреймворки, и даже экспорт из Unity. Godot Engine также предоставляет средства для создания браузерных игр. &lt;/p&gt;
  &lt;p id=&quot;NxzK&quot;&gt;Однако, с приходом версии 4.0 появилась целая волна сообщений от разных авторов о том, что их игры на Годо абсолютно не работают в вебе, а только показывают небольшое окно с непонятной ошибкой, говорящей об отсутствии каких-то &lt;strong&gt;Cross Origin Isolation &lt;/strong&gt;и&lt;strong&gt; SharedArrayBuffer&lt;/strong&gt;…&lt;/p&gt;
  &lt;figure id=&quot;zUes&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/86/d6/86d6ced9-1113-4f99-97e3-c6fa4da9bde6.png&quot; width=&quot;640&quot; /&gt;
    &lt;figcaption&gt;Страшный сон разработчика на Godot 4.0&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;YBD3&quot;&gt;Что такое SharedArrayBuffer и зачем он нужен?&lt;/h2&gt;
  &lt;p id=&quot;LJpI&quot;&gt;Если очень сильно упрощать — SharedArrayBuffer позволяет нескольким потокам приложения эффективно обмениваться информацией из одного источника. В Godot 3 нельзя создавать новые потоки, а также есть проблемы со звуком, проявляющиеся в виде задержек или подвисаний. Большинство современных браузеров поддерживают эту технологию, однако требуют включения межсайтовой изоляции (Ещё один термин, встречающийся в ошибке - &lt;strong&gt;Cross Origin Isolation&lt;/strong&gt;), чтобы предотвратить доступ к данным из общей памяти другими страницами. В общем случае делается это при помощи отдачи сервером, который показывает страницу, двух заголовков:&lt;/p&gt;
  &lt;pre id=&quot;zfg5&quot;&gt;Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp&lt;/pre&gt;
  &lt;p id=&quot;wSvI&quot;&gt;По этому поводу есть отличная статья на &lt;a href=&quot;https://web.dev/i18n/ru/cross-origin-isolation-guide/&quot; target=&quot;_blank&quot;&gt;web.dev&lt;/a&gt;&lt;/p&gt;
  &lt;h2 id=&quot;gSJN&quot;&gt;Решение проблемы&lt;/h2&gt;
  &lt;p id=&quot;sZdz&quot;&gt;А что с этим делать нам? Ну, есть несколько вариантов, зависящих от того, куда вы выкладываете игру:&lt;/p&gt;
  &lt;ul id=&quot;tRmS&quot;&gt;
    &lt;li id=&quot;NyAM&quot;&gt;Если вы делаете игру для площадки Itch.io, то поздравляю! Вам достаточно на странице игры включить пункт &amp;quot;SharedArrayBuffer support&amp;quot;, который сразу же заставит игру работать.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;3lNC&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5f/60/5f60f6a9-b949-4a39-bf02-495963f8c07f.png&quot; width=&quot;608&quot; /&gt;
    &lt;figcaption&gt;Почти в самом низу страницы с настройками проекта.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;Xy5D&quot;&gt;
    &lt;li id=&quot;OttU&quot;&gt;Если же игра, внезапно, находится на вашем собственном веб-сайте значит скорее всего у вас есть доступ к настройкам веб-сервера и вы сможете указать нужные заголовки самостоятельно. Тут я не буду на этом останавливаться подробно, потому что конфиги явно будут менятся от сервера к серверу, будь то Apache, Nginx, Caddy или всё происходит через панель управления вашего хостинга.&lt;/li&gt;
    &lt;li id=&quot;O3NZ&quot;&gt;Если вы не имеете доступа к серверной части и не можете менять отправляемые им заголовки, то недавно появился обходной путь в виде небольшого проекта под названием &lt;a href=&quot;https://github.com/gzuidhof/coi-serviceworker&quot; target=&quot;_blank&quot;&gt;coi-serviceworker&lt;/a&gt;, который один добрый человек под ником Nisovin обернул в &lt;a href=&quot;https://godotengine.org/asset-library/asset/1818&quot; target=&quot;_blank&quot;&gt;ассет&lt;/a&gt;. Достаточно установить этот плагин в проект и включить в настройках!&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;3bk0&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3f/20/3f209b4e-4592-4a30-9650-500600867f9d.png&quot; width=&quot;386&quot; /&gt;
    &lt;figcaption&gt;Так ассет выглядит в каталоге&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;u4gt&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/25/f1/25f10e3c-f1d3-4989-96f6-dbe95057d230.png&quot; width=&quot;678&quot; /&gt;
    &lt;figcaption&gt;Здесь он включается&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Lk9b&quot;&gt;После этого ничего больше не нужно настраивать, игра запустится без каких либо проблем, но с одной оговоркой: страница с игрой должна один раз перезагрузиться после первоначальной подгрузки скрипта, благо, это дело автоматизировано. Однако, если вы хотите такую игру где-то опубликовать, например, на тех же Яндекс Играх, то скорее всего, она не пройдёт модерацию как раз по причине перезагрузки. Я лично это не тестировал, но шансы не нулевые.&lt;/p&gt;
  &lt;h2 id=&quot;y2z2&quot;&gt;Что можно сделать ещё?&lt;/h2&gt;
  &lt;p id=&quot;TEvE&quot;&gt;Какой же самый идеальный вариант? На данный момент, если вы заранее знаете, что хотите выпускать игру для браузеров и хотите охватить максимум устройств, используйте Godot 3 версии. Это всё ещё отличный движок, который будет продолжать поддерживаться ещё долгое время, так как обрёл статус LTS-релиза, и игры на нём будут работать на большинстве устройств, хоть и не без проблем в виде подлагивающего звука на слабых телефонах.&lt;/p&gt;
  &lt;p id=&quot;QBzJ&quot;&gt;В пользу выбора третьей версии говорит ещё то, игры на Godot 4 могут не работать на устройствах фирмы Apple из-за того, что в их браузерах на данный момент не поддерживается WebGL 2, который, опять же, является требованием для веб-экспорта из Godot 4. Так что если вы планируете не оставить владельцев данных устройств без своей игры, или сами являетесь гордым пользователем Apple - смело берите Godot 3.5.2 и в дальнейшем 3.6.&lt;/p&gt;
  &lt;p id=&quot;8S00&quot;&gt;Если же вы только начинаете осваивать Godot и знаете наверняка, что хотите делать браузерные игры, советую всё же обратить внимание на специализированные движки вроде Defold, Phaser.JS и другие. Они буквально заточены под работу с HTML5, а значит являются отличным выбором конкретно для этой цели. Всё-таки, нет того движка, который был бы идеален во всём, верно?&lt;/p&gt;

</content></entry></feed>