Google présente ses nouveaux processus de facilitation de développement de jeux sur Stadia, à lire par simple curiosité sur leur blog !
https://stadia.dev/blog/play-and-develop-anywhere-with-stadia/
J'ai pas tout saisi mais apparemment porter un jeu sur Stadia est ( devenu ? [ était ce compliqué avant ? ] très facile pour les développeurs qui souhaiteraient porter leurs jeux sur la console dématérialisée " Stadia ".
Bon apparemment en toute objectivité, Google fait de réelles efforts
pour attirer les éditeurs de jeux, plus qu'à espérer que ça porte ses fruits.
Note je l'ai lu, en me servant de Google traduction.
Le 12 février 2022 à 16:04:28 :
apparemment porter un jeu sur Stadia est ( devenu ? [ était ce compliqué avant ? ] très facile pour les développeurs qui souhaiteraient porter leurs jeux sur la console dématérialisée " Stadia ".
Google fait des efforts pour faciliter le portage de jeux vers Stadia, mais ça n'est en rien "très facile". Ce qui a le plus aidé les dev. utilisant des moteur propriétaire, c'est le Stadia Porting Tool :
https://stadia.dev/intl/fr_fr/blog/less-time-porting-certing-more-time-creating-session-video/
Plus spécifiquement la conversion de librairies (en particulier DirectX -> Vulkan) et la conversion des programmes 32 bits vers 64 bits.
Après, ça reste une build spécifique, avec ses spécificités (Linux, caractéristique techniques définies de la plateforme, options de contrôles et d'affiches particulière dont il faut tenir compte, etc...).
Si c'était si simple que ça, sans même parler des multis qui ne sortent pas sur Stadia, les versions Stadia des jeux seraient mise à jour (quasiment) en même temps que les autres versions. Ce qui s'est passé pour DIRT 5 ou se qui se passe pour Humankind est juste scandaleux, mais doit s'expliquer par les difficultés qu'il y a de proposer et supporter des versions Stadia des jeux..
Le 13 février 2022 à 04:09:47 :
Le 12 février 2022 à 16:04:28 :
apparemment porter un jeu sur Stadia est ( devenu ? [ était ce compliqué avant ? ] très facile pour les développeurs qui souhaiteraient porter leurs jeux sur la console dématérialisée " Stadia ".Google fait des efforts pour faciliter le portage de jeux vers Stadia, mais ça n'est en rien "très facile". Ce qui a le plus aidé les dev. utilisant des moteur propriétaire, c'est le Stadia Porting Tool :
https://stadia.dev/intl/fr_fr/blog/less-time-porting-certing-more-time-creating-session-video/
Plus spécifiquement la conversion de librairies (en particulier DirectX -> Vulkan) et la conversion des programmes 32 bits vers 64 bits.Après, ça reste une build spécifique, avec ses spécificités (Linux, caractéristique techniques définies de la plateforme, options de contrôles et d'affiches particulière dont il faut tenir compte, etc...).
Si c'était si simple que ça, sans même parler des multis qui ne sortent pas sur Stadia, les versions Stadia des jeux seraient mise à jour (quasiment) en même temps que les autres versions. Ce qui s'est passé pour DIRT 5 ou se qui se passe pour Humankind est juste scandaleux, mais doit s'expliquer par les difficultés qu'il y a de proposer et supporter des versions Stadia des jeux..
Ça ne doit pas être d'une difficulté trop grande faut pas exagérer non plus, c'est juste un portage d'une version PC ils ne refont pas tout le jeu pour qu'il tourne sur Stadia.
Non c'est juste que la concurrence est rude et qu'il y a des deals entre les éditeurs et les constructeurs. Néanmoins porter un jeu sur Stadia à un coût aussi minimes soit il :
" Vais je rentrer dans mes frais. "
Il ne faut pas non plus sous estimer l'ampleur de la tâche.
C'était avant les nouveaux outils de Google, mais :
https://www.ign.com/articles/2019/11/13/destiny-2-on-stadia-google-sent-devs-to-work-at-bungie-for-6-months-a-ign-first
Le portage de Destiny 2 a pris plus de 6 mois à Bungie, et avec l'aide de développeurs de chez Stadia
Faut pas croire non plus qu'une version Stadia c'est un clique sur un convertisseur de programme PC.
Si les portages étaient facile, s'il suffisait de mobiliser quelques personnes une semaine ou deux, les portages seraient peu couteux et la question de la rentabilité se poserait pas (suffirait de quelques centaines de copies pour amortir le portage qui, en cas de méchant four, serait absorbé en un rien de temps par les ventes sur une autre plateforme).
Or, ce n'est pas le cas. Encore une fois, je ne parle même pas de portage de jeux, mais de patches et DLCs (ce qui est plus simple, moins couteux). Et lorsque l'on voit à quel rythme ils arrivent, lorsqu'ils arrivent...
La réalité est qu'il faut vraiment une base de consommateur plus importante que ce qu'il y a généralement pour que les éditeurs daignent sortir leurs jeux sur Stadia, tant c'est couteux et complexe. Aujourd'hui, probablement pas plus que pour n'importe quelle autre console, mais comme les ventes ne sont pas équivalentes à celle de n'importe quelle autre console...
Le 13 février 2022 à 11:17:08 :
Le 13 février 2022 à 04:09:47 :
Le 12 février 2022 à 16:04:28 :
apparemment porter un jeu sur Stadia est ( devenu ? [ était ce compliqué avant ? ] très facile pour les développeurs qui souhaiteraient porter leurs jeux sur la console dématérialisée " Stadia ".Google fait des efforts pour faciliter le portage de jeux vers Stadia, mais ça n'est en rien "très facile". Ce qui a le plus aidé les dev. utilisant des moteur propriétaire, c'est le Stadia Porting Tool :
https://stadia.dev/intl/fr_fr/blog/less-time-porting-certing-more-time-creating-session-video/
Plus spécifiquement la conversion de librairies (en particulier DirectX -> Vulkan) et la conversion des programmes 32 bits vers 64 bits.Après, ça reste une build spécifique, avec ses spécificités (Linux, caractéristique techniques définies de la plateforme, options de contrôles et d'affiches particulière dont il faut tenir compte, etc...).
Si c'était si simple que ça, sans même parler des multis qui ne sortent pas sur Stadia, les versions Stadia des jeux seraient mise à jour (quasiment) en même temps que les autres versions. Ce qui s'est passé pour DIRT 5 ou se qui se passe pour Humankind est juste scandaleux, mais doit s'expliquer par les difficultés qu'il y a de proposer et supporter des versions Stadia des jeux..
Ça ne doit pas être d'une difficulté trop grande faut pas exagérer non plus, c'est juste un portage d'une version PC ils ne refont pas tout le jeu pour qu'il tourne sur Stadia.
Tu sais, déployer sur un serveur Linux un simple projet web qui a été dev sur une machine Windows est déjà parfois une galère juste à cause du système de fichier différent. (Et du fonctionnement different de pleins de techno sur les deux)
Regarde les deux premières réponses sur ce post ça devrais t’aider à conceptualiser :
https://gamedev.stackexchange.com/questions/167105/what-do-game-developers-do-when-they-have-to-port-their-directx-games-to-ps4-swi
Dernier exemple que tu vois un peu l’énorme différence, un morceau de code pour créer un vertex Shader en Dx11
struct VERTEX{FLOAT X, Y, Z; D3DXCOLOR Color;}; // a struct to define a vertex
ID3D11Buffer *pVBuffer; // the vertex buffervoid InitGraphics()
{
// create a triangle using the VERTEX struct
VERTEX OurVertices[] =
{
{0.0f, 0.5f, 0.0f, D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f)},
{0.45f, -0.5, 0.0f, D3DXCOLOR(0.0f, 1.0f, 0.0f, 1.0f)},
{-0.45f, -0.5f, 0.0f, D3DXCOLOR(0.0f, 0.0f, 1.0f, 1.0f)}
};// create the vertex buffer
D3D11_BUFFER_DESC bd;
ZeroMemory(&bd, sizeof(bd));bd.Usage = D3D11_USAGE_DYNAMIC; // write access access by CPU and GPU
bd.ByteWidth = sizeof(VERTEX) * 3; // size is the VERTEX struct * 3
bd.BindFlags = D3D11_BIND_VERTEX_BUFFER; // use as a vertex buffer
bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; // allow CPU to write in bufferdev->CreateBuffer(&bd, NULL, &pVBuffer); // create the buffer
// copy the vertices into the buffer
D3D11_MAPPED_SUBRESOURCE ms;
devcon->Map(pVBuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
memcpy(ms.pData, OurVertices, sizeof(OurVertices)); // copy the data
devcon->Unmap(pVBuffer, NULL); // unmap the buffer
}
Et avec l’API Vulkan :
VkBuffer vertexBuffer;
...
void createVertexBuffer() {
VkBufferCreateInfo bufferInfo{};
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferInfo.size = sizeof(vertices[0]) * vertices.size();
bufferInfo.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;if (vkCreateBuffer(device, &bufferInfo, nullptr, &vertexBuffer) != VK_SUCCESS) {
throw std::runtime_error("failed to create vertex buffer!");
}
}