un emulateur console virtuelle pour des jeux universels. - Android - Programmation
Marsh Posté le 09-01-2015 à 04:17:34
Tu peux jeter un œil aux sources de ZSNES ici: http://sourceforge.net/projects/zs [...] S%20v1.51/
Beaucoup de développeurs proposent leur source en téléchargement, tu peux déjà commencer par ça.
Mais c'est assez loin du travail d'amateur, ces personnes font souvent un boulot monstre.
Marsh Posté le 09-01-2015 à 10:48:49
Une console virtuelle, c'est comme la JVM pour faire tourner un programme écrit en Java. Il faut en développer une pour chaque OS. Donc très gros boulot Je te raconte même pas si ton ambition est de faire un émulateur qui soit capable de prendre en charge plusieurs consoles!
Par ailleurs, un émulateur, ça demande beaucoup de puissance de calcul à la machine hôte. N'espère pas faire un émulateur de PS4 et que ça tourne de manière fluide autrement que sur un PC de fou furieux Les machines Androïd sont souvent assez "légères" : faire un émulateur de gameboy ou de veille console OK, mais pas pour des consoles récentes (même PS2 ou 3)...
Marsh Posté le 09-01-2015 à 19:03:28
deja merci pour les reponses.
mais il y a erreur sur la marchandise je veut pas re inventé la roue au niveaux snes et autre (y'a deja des emulateurs excellents la dessus. je voudrais faire une machine virtuelle qui aurait une version sur tout supports ou presque et une fois cette machine installee on puisse jouer a des jeux sans installation comme une version de half life. on telechargera le fichier iso du jeux et ce meme fichier iso sera utilisable sur toutes les machines sans installation.
la console aurait open gl et préconfigurerait la machine pour le jeux.
j'imagine meme des stockages en lignes de sauvegarde pour commencer une partie sur le telephone et la finire en ex sur la télé.
un module permettrait de faire des parties a plusieurs facilement sur un reseaux wifi ou en ad hoc.
les jeux seraient repartits en niveaux suivant la puissance demandé et les machines aussi suivant la puissance que l'on peut en tirer.
lle but serait de ne pas me demander si le jeux existe sur ma machine. jouer sur un ordi ou une tablette avec sa puissance (meme un peut amoindrie par la machine virtuelle) et jouer a des jeux comme si cetais des consoles ou on met la galette on branche une manette le jeux se lance et on joue simplement. je voudrais simplifier le jeux pc et tablette.
Marsh Posté le 09-01-2015 à 23:29:09
Je comprend pas le délire..
Tu veux juste écrire un programme capable de démarrer un jeu sans l'installer en gros
Marsh Posté le 09-01-2015 à 23:41:28
Ou réinventer le travail qui est fait autour du html5 et de webgl par exemple?
Que toute les plateforme qui ont un navigateur compatible puissent faire tourner l'application.
Marsh Posté le 10-01-2015 à 00:06:40
html5? interessant. on pourrait faire tourner un jeux style half life 2? ou meme plus recent style un halo ou un assassin's creed? je veut un logiciel qui transformerait sa machine en console de jeu. et pas une snes ou une ps2. une nouvelle console de jeux. une console de jeux videos virtuelle libre.
pus d'installations, pus d'incompatibilité entre ati nvidia mali ou powervx. facilité de jouer a plusieurs sans fil.
Marsh Posté le 10-01-2015 à 00:54:16
Tu m'a l'air de t'engager dans une voie que tu ne connait pas du tout
Un logiciel qui transforme une machine en console de jeu, non ça n'existe pas.
A partir du moment où tu cherche à exécuter du code défini pour une plateforme sur une autre plateforme (par exemple du code destiné à être exécuté par le processeur de la PS3 sur PC), tu dois obligatoirement passer par de l'émulation.
Même si les architectures commencent à se ressembler de plus en plus, tu pourra jamais exécuter un jeu PS4 sur PC (faudrait faire un portage entre-autre de toute le SDK sur PC, par exemple )
Écrire un émulateur est une sacrée galère, et en terme de performance c'est impossible de retrouver celle de la console originel...
Marsh Posté le 10-01-2015 à 22:54:18
si je vous dis que je veut faire un genre de steam os ça passe mieux? j'ai l'impression de mal m'exprimer.
prenons un exemple le jeux pier solar. c'est un jeux fait en 2010 pour la mega drive a la base. l'idee m'a parus geniale car n'importe qui qui possede un emulateur megadrive peut faire tourner le jeux sur la machine sans se posé de question. limite sur une xbox 1 une 360 une ps3 un pc une tablette. tout ce qui peut emuler
une megadrive. apres il est sorti des versions ps3 xbox 360 android windows et meme en hd de pier solar et c'est la que ça me chagrine....
mon intention n'est pas d'emuler une architecture compliquee mais plutot de rassembler toutes les technologies dont aurait besoin un jeux "recent" pc pour fonctionner. et que cette boite a outil soit installable sur pleins de supports. a partir du moment ou cette environnement est installé ou lui fait ouvrir le fichier jeux et le jeux se lancera sans posé de question. une sorte de langage java mais uniquement fait pour le jeux. nous aurions un environnement pré configurer qui permet de jouer a des jeux pc d'un nouveaux format sans aucune installations.
admettons que l'on y perde un peut sur tablette avec l'architecture arm par rapport au x86 mais l'idee serait la avec la scene indépendante qui fait des jeux geniaux mais pas basé sur une puissance indécente.
un pote me dit que je voudrais faire en gros un nouveaux "support de jeux" il a pas tort.
j'ai l'impression que je me fait pas comprendre mais je veut prendre le probleme des jeux a l'envers. aujourd'huis vous avez une version mac android et windows d'un meme jeux. qui dois etres instalee et compilee suivant votre carte graphique (ati nvidia) et votre proc (intel amd) entre autre sans parler des incompatibilités. mon systeme serait plus simple.
il s'occupe de fournir au jeux la puissance necessaire en lui parlant dans le bon langage. le jeux se pose pas de question il se lance et puis c'est tout. on aurait le jeux dans une seule et unique version (dans le monde pc linux mac android au moins) et effectivement l'environnement devra etre optimisé suivant son support.
une autre comparaison imaginez qu'il y ai un format de divx different pour chaques os et biensur ils sont incompatible. donc en gros on auurait 5 versions d'un meme films suivant sur quoi on veut le lire. moi je voudrais creer un lecteur façon vlc qui serait utilisable sur tout les supports et surement qu'il faudra aussi inventer le format videos ou au moins l'adapté d'un existent. vous comprenez l'analogie?
Marsh Posté le 10-01-2015 à 23:46:10
Faire ce que tu veux, c'est le principe de Java : du semi compilé (byte code) à partir d'un code source cross-OS qui est ensuite exécuté par une machine virtuelle. Y'a juste un pb : les jeux demandant une grosse puissance de calcul, le semi-compilé comme Java, c'est pas assez rapide à l'exécution C'est pour ça que les jeux sont codés en C/C++ le plus souvent, certes, cross-OS mais ça nécessite une version compilée pour chaque OS et en fonction de l'API graphique cible (DirectX, OpenGL...). Du reste, actuellement, la tendance côté API graphique est plutôt de revenir à qq chose de plus bas niveau (cf Mantle) chez AMD pour obtenir plus de puissance des GPU. Ca va donc à l'inverse de ce que tu veux faire...
Marsh Posté le 11-01-2015 à 00:45:39
bsteph27 a écrit : si je vous dis que je veut faire un genre de steam os ça passe mieux? j'ai l'impression de mal m'exprimer. |
Ouais je vois où tu veux en venir, ça s'appelle la cross-compilation
Plus sérieusement, ça revient à écrire effectivement un langage interprété, et dans tout les cas tu auras des perfs de merde (à moins de faire du JIT, paraît que certain langages interprété sont plus performant que du compilé).
J'te parle même pas de l'horreur à faire pour les shaders, et au final tu retombe face au même problème : Une implémentation de la VM par architecture CPU/GPU.
Maintenant je trouve que tu dramatise un peu la situation, Intel & AMD (pour le "grand public" ) propose les même jeux d'instructions (x86/x64, le code x86 est même compatible x64), à moins d'utiliser des instructions spéciale (optimisation pour un seul type de proco), ton code est portable.
Après bien sûr, tu dois avoir une version par OS, d'où l'utilité de la cross-compilation.
Pour ce qui est des CGs, le GLSL & le HLSL sont déjà "unifié", tu n'a pas à changer le code source selon les drivers (disons en théorie, en pratique j'ai déjà eu pas mal de soucis de ce côté, mais ça relève de soucis d'implém' ).
Dans tout les cas, vouloir rajouter une couche d'abstraction supplémentaire est un immense travail, et tu fera que plomber les perfs. (Regarde les perfs dégueu de Minecraft par exemple, même si le code est pas franchement optimisé c'est assez triste à voir).
Qui plus est, il faudra réussir à convaincre les devs d'utiliser ton langage/framework/whatever it is
Marsh Posté le 11-01-2015 à 01:05:41
L'autre voie qui est en cours de developpement, c'est : un client léger qui ne fait qu'afficher un flux d'image et envoyer un flux de commandes utilisateur à un serveur qui va se charger des calculs/graphismes.
En gros, une seule plateforme ou le jeux/code tourne, et un client écrit par architecture ou tu veux pouvoir jouer.
Je pense à Ouya par exemple ou le stream via steam de windows vers mac os comme autre exemple.
Marsh Posté le 11-01-2015 à 11:57:23
ha bah merci je me sens enfin compris! donc maintenant je sais malheureusement que c'est pas une bonne idee....
arl guhr ce que tu me parle c'est le cloud computing qui effectivement selon moi c'est une voie d'avenir mais a encore besoin de nombreuses ameliorations.
j'imaginais a un moment lier toutes les puissances des ordis d'une maison pour les gros usages genre le jeux ou le montage videos ou photos mais on m'a deja dis que c'etais extremement difficile il fallait de la programmation recurcive. et puis apres mur reflexion meme avec un reseaux gigabit ideale ça serait pas suffisant en bande passante pour reunir les informations en temps reel.
j'avais entendu parler de minecraft ecris en java avec ses perfs horribles et que certaines personnes voulaient faire des jeux equivalent mais en c pour etre hachement plus legers.
pour vous situé mon probleme j'ai essayer la programmation. j'ai été accepté a la piscine de 42. ça allait trop vite pour moi au point que je me suis noyé. mais j'aimais ça surtout faire les algorithmes. apres la piscine j'ai voulu continuer a apprendre mais ça allait tellement vite a 42 que j'ai plus la patience de lire des livres je saute des etapes et finalement j'avance plu.... j'arrive pas a ecrire les programmes. j'ecris les algorythmes en pseudo code. j'ai voulu essayer le ruby car tiré du "c" et ça a l'aire vraiment simple mais je trouve pas de "compilateur" ça parle toujours de ruby on rail mais je sais pas l'utilisé.
mais merci de m'avoir répondu.
Marsh Posté le 12-01-2015 à 13:57:31
bsteph27 a écrit : ha bah merci je me sens enfin compris! donc maintenant je sais malheureusement que c'est pas une bonne idee.... |
Tu veux parler de programmation parallèle, plutôt, non ? La prog récursive, c'est pas bon pour les perfs en général et ajoute du risque de voir le programme planter à cause d'une trop grande alloc de ressources (souvent provoqué par une boucle/récursivité infinie). En plus, c'est bien souvent inutile un algo récursif car il peut toujours se transformer en algo itératif...
Par rapport au cloud computing, tant qu'on n'aura pas des réseaux de fous, ça va être dur de pouvoir jouer de cette manière (client léger, traitement fiat sur un gros serveur à l'autre bout de la planète). Quand je vois qu'on fait maintenant des claviers avec des touches particulières pour avoir un lag proche de zéro, je me dis que jamais les hardcore gamers accepteront de jouer ainsi avec un tel lag...
Marsh Posté le 09-01-2015 à 00:24:02
bonjour a tous je viens discuter d'un projet un peut fou pour savoir la faisabilité et la pertinence.
je voudrais faire une console virtuelle libre qui permetrait a un jeux sous forme iso ou rom (c'est quoi le difference?) d'etre jouer sur absoluement toute machine qui pourrait faire tourner ce fameux emulateur 'appellont le econsole" android mac linux windows bsd ou que sais je encore.
j'ai toujours été fasciné par les emulateur snes en exemple. on installe l'emulateur, on configure la manette et les jeux se lancent sous forme de rom sans aucune installations et souvent sans aucunes incompatibilité.
je me suis dis que ça existait deja avec le java mais une application android ne fonctionne pas comme ça sur tout support malgré que c'est du java... car en contre partie il y a une quantité ginorme de materiel absoluments incompatibles.
y'avait la ngp je crois une console libre et y'en avait meme plusieurs, la gameduino une espece de gameboy en arduino libre de plan, les gameboys les psp et que sais je encore. les smartphones et tablettes sont des outils formidables selon moi et cassent la figure a la pluspart des gameboys et psvita niveaux hardware.
vous pensez quoi de l'idee d'une console virtuelle donc? qu'est ce qui empecherait le programme d'etre faisable?
pour info en programmation j'ai quelques bases minables je sais a peine faire une hello word et quelques boucles donc vous etonnez pas si certaines question vous paraissent simplistes.
merci d'avance pour vos reponses