Os embeds são realmente possíveis tanto na interface do Discourse (por exemplo, acima de uma lista de tópicos) usando um tema, quanto no Plugin Landing Pages. Para este último, criei um exemplo usando esta pequena versão do Dinosaur Game. Você pode jogar aqui: Pavilion (apenas desktop).

Nenhuma codificação foi necessária para este. Tudo o que fiz foi fazer upload desses ativos para nosso CDN (arrastar e soltar a pasta em um ‘space’ do DigitalOcean), criar uma página com o caminho “dinosaur” e copiar/colar este HTML (ambos via a interface administrativa).
HTML
<div class="landing page dinosaur">
<div class="container">
<h1>Dinosaur Game!</h1>
<canvas id="game" height="200" width="800"></canvas>
<p class="controls">pressione a barra de espaço para começar</p>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/helpers.js"></script>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/game-object.js"></script>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/cactus.js"></script>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/dinosaur.js"></script>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/background.js"></script>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/score.js"></script>
<script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/game.js"></script>
<script>
new Game({
el: document.getElementById("game")
});
window.onkeydown = function(e) {
return e.keyCode !== 32;
};
</script>
</div>
</div>
O Plugin Landing Pages implementa as configurações de CSP e CORS do Discourse, que já configurei para lidar com scripts do nosso CDN (através das configurações do site relevantes).
Na próxima semana, postarei um tópico completo da base de conhecimento “Como hospedar e incorporar ativos” para esse plugin, cobrindo esse caso de uso.