Super Mario 64 jouable dans un navigateur web !

Mickaël Bazoge |

Jouer à Super Mario 64 sur un Mac, un iPhone ou un iPad, c'est assez simple : il suffit de se rendre sur ce site depuis Safari ou un navigateur moderne (cela fonctionne avec à peu près n'importe quel appareil, d'ailleurs). Avec une manette c'est encore mieux, mais on peut jouer au clavier. Il y a bien quelques ralentissements de temps en temps, mais l'essentiel est là. Il est même possible de sauvegarder sa progression !

Par contre, si vous êtes intéressé, il ne faut pas trop traîner : il ne s'agit pas d'un développement de Nintendo mais de l'initiative d'un fan qui pourrait disparaitre assez rapidement. L'éditeur déteste en effet ce genre de pratique et fait régulièrement la chasse aux ROMs. Super Mario 64 est sorti en 1996 (il pesait 8 Mo !), le jeu a connu une nouvelle édition sur DS en 2004, et une version Switch l'an dernier.


Source
Tags
avatar Landric | 

8 Mo!! Wow je ne m’attendais pas à ce qu’il soit aussi léger!

avatar Paquito06 | 

@Landric

"8 Mo!! Wow je ne m’attendais pas à ce qu’il soit aussi léger!"

Parce que la definition, c’etait du 320×240 (max 640×480).
Ajoutons a cela de la fausse 3D (on fait pivoter le fond pour etablir un rendu ~3D) et de l’audio tres basic, ca pese pas lourd au final avec une compression qui tient la route.
“Nintendo 64 games generally used faster and more compact 32-bit data-operations, as these were sufficient to generate 3D-scene data for the console's RSP (Reality Signal Processor) unit. In addition, 32-bit code executes faster and requires less storage space (which is at a premium on the Nintendo 64's cartridges).”

avatar philiipe | 

@Paquito06

Aussi parce qu’il y avait des efforts d’optimisation ! Les éditeurs d’aujourd’hui font moins (voire aucune) effort.

avatar Olivier_D | 

@philiipe

Alors oui et non. C’est surtout que le développeur a de moins en moins le contrôle sur ce qu’il fait. Plus possible de gérer la RAM manuellement par exemple sur les langages récents. Des fichiers 3D pesant de plus en plus lourd à cause des logiciels de modélisation qui exportent des veaux. Gestion du code safe pour interdire de taper dans le proc manuellement, et j’en passe.

En tant qu’étudiant ingé il y a quelques années encore, j’étais le premier à penser comme ça. Puis, j’ai vu ce qu’était les langages utilisés dans les grosses entreprises. Je taff aujourd’hui avec un langage qui ne permet quasi rien, qui est interprété en direct, etc. Mais ça permet d’être rapide et de produire du code propre et réutilisable. Pour avoir vu du code des vieux jeux game boy / N64, on peut clairement pas en dire de même.

Donc in-fine, les développeurs (non-independents) font surtout avec ce qu’on leur donne (des technos choisis par des types qui n’y connaisse pas forcément des masses), et avec la pression du board of director qui veut des résultats toujours plus rapidement.

avatar cecile_aelita | 

@philiipe

🙏 exactement !
En même temps, la mode n’est plus à l’optimisation, car les gens (geeks surtout) aiment voir du groooooos chiffre !
Pourquoi optimiser l’OS d’un smartphone quand on peut afficher sur une fiche de specs chez Darty qu’il a 12-16Go de Ram … et que en plus c’est ce que veut voir le client^^.
En optimisant, tu pourrais avoir la même réactivité et fluidité du système avec 4-6Go de Ram (on ne va citer personne car, c’est juste un coup à se faire traiter de fanboy)… mais tu vas avoir des remarques du genre « pfffff un smarrfeuuuune navec 4Go de raaameu… saiiii trooooo naaaaaze… baaaande de piiiizzzzoooons »!!

avatar iPop | 

@romainB84

J’ai toujours été bluffé par l’optimisation de Quake 3, ce machin pesait 90 ko, les ressources prenaient presque un CD de 650 mo.

avatar stefhan | 

@iPop

😲

avatar Alex Giannelli | 

@romainB84

Ce n'est pas aussi simple, comme l'a expliqué @Olivier_D juste au-dessus. Ce n'est pas une question de choix mais de langage adapté au marché et aux besoins.

avatar oomu | 

@philiipe

C’était faux hier, c’est faux aujourd’hui

Arrêtez avec vos lubies d’optimisation et de parler comme des vieux des années 80

Les,commentaires,suivant disent aussi n’importe quoi, inventant des raisons techniques à l’emporte pièce.

Les ingénieurs utilisent ce qu’ils veulent pour atteindre un but précis.

Si vous vous,ennuyez et que la vieillesse vous prend regardez les documentaires sur:

- ori and the will of the wisp, la quête vers le 6k
- Doom forever sur switch

Ce sont deux exemples d’ingénieries et d’optimisations pour atteindre des buts extrêmes. Tout y est optimisé: le code, l’organisation des contenus de jeu, leur stockage, la prédiction des mouvements du joueurs et d’innombrables astuces pour libérer du temps processeur tout en faisant un rendu qui satisfasse le joueur.

Ne soyez pas aigri, vivez l’industrie.

Les fucking éditeurs « d’aujourd’hui » sont les meme qu’hier. Et déjà lors de mario64, qui vous,paraît vieux, mais récent pour moi, les aigris disaient que les éditeurs faisaient aucun effort et autres niaiseries.

Les éditeurs sont pourris depuis l’était 260l. Faites en votre deuil.

À la place, intéressez vous à l’ingénierie des jeux et leurs optimisations techniques et artistiques.

Aussi: plus jamais ne précommandez un jeu ou cyberpounque 2077. ça n’aide personne.

avatar philiipe | 

@oomu

J’ai bien peur que tu n’apportes aucun argument pour justifier l’absence de frugalité des éditeurs. Il faudra nous expliquer pourquoi l’iPhone comportant des jeux de 1,5go (aujourd’hui plus) sur des iPhone de 16go ?
Les éditeurs ne gagnent rien à optimiser. La voilà la réalité ! Les gens attendent de la nouveauté, des contenus ou visuels sidérants. Point. Que nos disques saturent ils s’en moquent.

avatar YetOneOtherGit | 

@oomu

"C’était faux hier, c’est faux aujourd’hui
Arrêtez avec vos lubies d’optimisation et de parler comme des vieux des années 80
Les,commentaires,suivant disent aussi n’importe quoi, inventant des raisons techniques à l’emporte pièce.

Les ingénieurs utilisent ce qu’ils veulent pour atteindre un but précis.
"

🙏Le nombre de pseudo experts en CS racontant des conneries sans nom sur des enjeux qu’il ne comprennent pas. 🙄🙄

La qualité logicielle n’a strictement rien à voir avec leur lubies 🤓

avatar cybercooll | 

@Paquito06

Quelle est la part des textures dans le poids d’un jeu vidéo?

avatar Paquito06 | 

@cybercooll

"Quelle est la part des textures dans le poids d’un jeu vidéo?"

La majorite du poids, mais ca depend toutefois du jeu dans son ensemble, s’il est court/long, cinematiques, du type de texture surtout (pour une resolution lineaire quand on la double, le poids est lui exponentiel…). On parle d’un jeu avec un cache texture de 4KB, une duree de vie de 20h, utilisant des cartouches (ca joue sur la RAM et donc la technologie adoptee) et specialement pour mario 64 avec le gouraud shading.

avatar iPop | 

@cybercooll

Énorme aujourd’hui, les tailles sont effrayantes ou avant 256 px étaient déjà énorme. Mario c’est l’inverse, les textures étaient en deçà de la PS1.

avatar sekaijin | 

Certains se souviennent peut être du jeux Sapiens de Myriad
La version actuelle (portage sur nos Mac Intel) pèse 2,8 Mo
Mais la version 68k ne pèse que 920 Ko

La façon de packager une application (en faire une app ou exe) a bien changée. Et nos OS ne cherchent plus cette optimisation. Les ressources étaient chères.

A+JYT

avatar Yohmi | 

Oui ça dérange Nintendo ce genre d'initiative parce que du coup ils passent pour des radins à vendre une rom de 1996 sommairement émulée (20 images par secondes sur Switch, ce luxe !) à 30 balles.
Moi j'suis pour le droit d'auteur. Mais Nintendo c'est de la rétention et soit ils n'en font rien, soit ils font de la merde.

avatar bazino | 

@Yohmi

En même temps c’est à eux.

avatar pat3 | 

@Yohmi

"Moi j'suis pour le droit d'auteur. Mais Nintendo c'est de la rétention et soit ils n'en font rien, soit ils font de la merde."

La solution est dans la réduction du droit d’auteur et non pas dans son augmentation. On devrait passer les œuvres dans le domaine public 25 ans après leur première exploitation. Ça décuplerait la richesse culturelle des populations sans nuire à la richesse pécuniaire des auteurs et ça désencombrerait les tribunaux de nombreuses affaires d’ayant droits.

avatar Vivid | 

Mais vas-y bosse mon grand ! montre l'exemple. Oui mais c'est un autre niveau ! que de prêcher pour sa paroisse, d'ailleurs je suis sur que le même principe, appliqué à votre salaire ferait fureur auprès de votre patron

avatar iPop | 

@pat3

Idem, il y a pas mal de vielles perles qui mériteraient de perdurer au lieu de disparaître pour des histoires de licence.

avatar farscape54 | 

Moi je reste impressionné par les 8Mo pour la taille de ce jeu.
OK les graphismes n'étaient pas dingues mais seulement 8Mo, il devait être vachement optimisé !!!

avatar anti2703 | 

@farscape54

Vu le prix du stockage à l’époque il n’avait pas vraiment le choix ^^

avatar AirForceThree | 

@anti2703
À l'époque, les concurrent étaient sur CD, avec un coût de stockage nul, mais avec un temps de chargement affreux.
C'est Nintendo qui s'est imposé cette limite, mais si c'était sur CD, on aurait pu imaginer un Mario 64 avec la BO enregistrée par un orchestre symphonique, des vrais dialogues enregistrés...

avatar Florent Morin | 

@farscape54

Un Tetris original faisait 494 octets.
Super Mario Bros : 30 ko.

Nintendo a toujours optimisé au max le code. Pour ça, ils ont du talent.

avatar Pyjamane | 

Rien de réellement impressionnant : les développeurs étaient bons. Très bons. De nos jours, il font juste du gros travail de bourrin, sans aucune créativité. Ils misent tout sur la puissance brute des machines, sans réel vrai travail de fond. C’est assez pathétique et pitoyable de voir l’évolution de la programmation depuis les années 90.

avatar morpheusz63 | 

@Pyjamane

👏👏👏👏👍👍👍👍👍👍👍 tu as tout dis

avatar philiipe | 

@Pyjamane

Je partage totalement !
Il suffit de voir le poids des jeux sur iOS: une catastrophe pour certains 😅

avatar Olivier_D | 

@Pyjamane

Je vous renvoi au message que j’ai marqué plus haut. Ce n’est clairement plus autant la faute du développeur.

Pour répondre à @philippe, il y a rien qu’à voir le poids d’un exécutable pour iOS tout droit sorti de xCode, sans rien dedans à part un « bonjour » dans une console. Ça pèse. Lourd, très lourd.

Par contre, ne nous méprenons pas. Il y a toujours une part de responsabilité du dév et du choix de la techno finale (électron 🤮), mais c’est clairement devenu impossible de faire du code léger, vu que en entreprise, il n’y a quasiment plus de code natif utilisé, si ce n’est que pour l’Internet des objets.

avatar IceWizard | 

@Olivier_D

« Pour répondre à @philippe, il y a rien qu’à voir le poids d’un exécutable pour iOS tout droit sorti de xCode, sans rien dedans à part un « bonjour » dans une console. Ça pèse. Lourd, très lourd. »

Euh .. 217 Ko pour le Hello World d’une application de type Games (Swift), utilisant SpriteKit, avec la bibliothèque de gestion des sprites 2D. C’est rien du tout, comparé à la taille d’une SEULE texture de 1024x1024 pixels. Et des textures, il y en a vraiment beaucoup dans les jeux modernes.

avatar Olivier_D | 

@IceWizard

Si tu trouves pas ça gargantuesque pour un simple Hello World, c’est que visiblement tu ne comprends pas ce que tu critiques.

Surtout qu’en théorie, si les choses sont bien faites, les librairies ne sont compilés avec l’exécutable uniquement si elles sont utilisées. Donc dans le cas d’un Hello World, je vois pas bien la différence d’ajouter une pléthore de lib ou non.

avatar IceWizard | 

@Olivier_D

« Si tu trouves pas ça gargantuesque pour un simple Hello World, c’est que visiblement tu ne comprends pas ce que tu critiques. « 

Si je voulais critiquer j’aurais ironisé sur le programmeur « classique », projetant les problèmes techniques qu’il rencontre dans son travail, sur le domaine de la création des jeux, où les contraintes sont très différentes.

Un jeu actuel c’est des textures, des modèles 3D composées des dizaines de milliers de polygones (ou plus), des ressources sonores, des cartes géographiques contenant la définition d’une scène (un simple petit village c’est des dizaines de milliers d’éléments), des données de comportement, des tableaux de caractéristiques, etc ..

DES DONNÉES, DES MILLIONS DE DONNÉES ! Sans parler de ces fichus cinématiques si gourmandes en mémoire !

La taille disque prise par le code d’un jeu est minuscule par rapport à l’immensité de l’océan des données, tout spécialement les textures.

Dans ma jeunesse, j’étais fier d’avoir codé un Hello World, directement en assembleur, ne prenant que quelques octets. Mais j’ai passé cette phase depuis longtemps.

avatar BeePotato | 

@ Olivier_D : « c’est clairement devenu impossible de faire du code léger, vu que en entreprise, il n’y a quasiment plus de code natif utilisé, si ce n’est que pour l’Internet des objets. »

Ben l’exemple que tu cites, d’un « exécutable pour iOS tout droit sorti de Xcode », c’est pourtant bien du code natif.

avatar morpheusz63 | 

@BeePotato

Flawless Victory

avatar Olivier_D | 

@BeePotato

Je montrais l’exemple d’un exécutable natif pour déjà montrer à quel point même à ce stade, ça reste lourd. En attendant, peu de grosses companies produisent des applications natives. En réalité, il s’agit bien plus souvent d’application Électron / Dart / Xamarin pour le mobile, si tenté qu’on parle d’application mobile. Et pour le desktop, du .NET ou du Java. Donc, rien de natif ici, et des exécutables lourds comme pas possible.

avatar IceWizard | 

@Olivier_D
"Je montrais l’exemple d’un exécutable natif pour déjà montrer à quel point même à ce stade, ça reste lourd. En attendant, peu de grosses companies produisent des applications natives. "

Considérer des cas réels est plus approprié, que des explications alambiqués.

------
Civilization 5 (version MacOS Intel):

- Code exécutable (binaire principal + bibliothèques) : 34,7 Mo
- Ressources graphiques : 7,96 Go

Ratio code/graphisme : 0,4 %

------
Civilization 6 (version MacOS Intel):

- Code exécutable : (binaire principal et bibliothèques) : 433,6 Mo
- Ressources graphiques : 13,96 Go

Ratio code/graphisme : 3%

------------

Le ratio a pas mal augmenté entre les deux versions, mais c'est toujours négligeable par rapport au poids total du jeu.

avatar Musexp | 

@Olivier_D

Il y a plein de raisons pour lesquelles il n’est plus intéressant de chercher à optimiser son code en fonction du poids de l’exécutable.

À l’époque déjà les programmes étaient souvent plus simples, et quand on avait besoin d’une fonction il fallait la développer. Les problèmes ce cette approche sont nombreux :
- ça prend du temps
- les fonctions sont spécifiques à chaque programme donc c’est plus complexe pour partager son code avec des collègues qui doivent tout relire plutôt que de reconnaître des fonctions standard
- c’est très lourd à maintenir puisqu’il faut tout relire.
- si l’idée est de programmer au plus bas niveau alors il faut programmer pour chaque processeur chaque système etc…
-…

Au contrainte aux fil du temps on a développé dès librairies et des framework pour :
- multiplier les boîtes noires optimisées et maintenues séparément, et donc réduire le nombre de bugs
- avoir des fonctions connues par une communauté de développeurs de sorte à ce que le code soit plus facile à partager
- centrer le développement sur le projet et non sur toutes les fonctions annexes
- limiter le travail d’adaptation aux OS et matériels (on peut discuter des limites de la standardisation sur ce point !)
-…

Alors forcément inclure une librairie pour une seule fonction est plus lourd en poids que de coder soi-même la fonction dont on a besoin. Mais est-ce si grave après tout ? On a de la place à revendre.
Vu la complexité des programmes actuels, les codes sources seraient totalement impossibles à debugger si tout était en code natif, les développements seraient sans fin, il faudrait un nombre de développeurs encore plus important et de gros problèmes de coordination. Je n’imagine même pas le coût et l’inefficacité du bazar !!

avatar cecile_aelita | 

@Pyjamane

Tu as tout dit !
Bravo!
J’ai déjà répondu un peu à ça plus haut, mais en même temps … ils donnent aussi aux gens ce qu’ils veulent voir ^^.

avatar cybercooll | 

@Pyjamane

Tu peux faire du code de merde en 8Mo aussi hein. Ça n’a pas de sens le poids d’un jeu, ça ne donne aucune information utile pour juger la qualité du code.

avatar iPop | 

@Pyjamane

A l’époque on faisait et refaisait tout de but en blanc, vu que l’on créait quelque chose.

avatar gbretin | 

Léger effectivement

avatar Florian | 

Je pense pas que ça disparaisse rapidement, ça fait un moment que le site est up

avatar blogostef | 

C’est quand même stupéfiant, c’est l’aboutissement du travail de décompilation du jeu réussi il y quelques années.

avatar quentinf33 | 

@blogostef

Il a été plus que décompilé, c’est carrément le code source du jeu qui a leaké.

avatar blogostef | 

@quentinf33
Pas que je sache. Le code décompilé a permis à la communauté de travailler sur le build du jeu sur de multiples architectures bien avant que le leak ne se produise.

avatar fredsoo | 

Il n’y a qu’a jeter un œil aux rom des jeux de consoles Mame, et autres d’époque que l’on utilise aujourd’hui avec Recalbox ou batocera, pour se rendre compte que les jeux a l’époque pesaient peanuts… 😀
Pour les nostalgiques de jeux anciens, quel pied.

avatar guigus31 | 

Pour faire disparaitre le bandeau d'accueil, faire page down (touches fn+flèche du bas)

avatar heu | 

Nyanyanya saytay mieuh avang on savay optimisay. On « savait » pas mieux, on n’avait pas le choix. Une cartouche avait une capacité limitée.

avatar cecile_aelita | 

@heu

« Une cartouche avait une capacité limitée. »

Et?
Je vais t’apprendre un scoop, si tu peux faire rentrer une machine à laver dans un kangoo et que tu as une camionnette… tu n’es pas obligé de doubler la taille de ta machine à laver sous prétexte que t’as plus de place dans le coffre 🤣🤣🤣!
Chaque fois que tu vas faire les courses, tu remplis le coffre toi? « Beuuuhh ouiiaaaii.. zaaai de la plaaaaceuuu… alors zeeee rempliiii mouaaaa » 🤣🤣

avatar heu | 

@romainB84

Évite les analogies, c’est pas ton truc

avatar cecile_aelita | 

@heu

Ce n’est pas parce que tu ne les comprends pas que le problème vient de moi!
Encore une analogie : quand tu n’entends pas un correspondant au téléphone … le problème ne vient pas systématiquement du côté de celui qui parle ^^.

Pages

CONNEXION UTILISATEUR