| Parlez de ce que vous voulez | |
|
+39MoodyClown SPLN Maniac206 Alec Mr_Twister mortelkill Pixel-boy Mobi Arkanisa red-error SonnixVI [TheDarkTiger] DeinDall robinlife zebdal glcraft master47 Caly -Coco- Bast lv3895 nicoulas marty Ablationer Chulien louckas M@d_Doc Oculus Termite Craki Wargamer Mass D-z DarkYoshi Sekigo Le Magnifique supmaster004 Rem_101 onilink_ Qual 43 participants |
|
Auteur | Message |
---|
Craki Utilisateur confirmé: Rang ****
Messages : 1496 Localisation : Dans l’univers de métamatière
| Sujet: Re: Parlez de ce que vous voulez Lun 31 Oct 2011 - 17:35 | |
| _________________ |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 11:34 | |
| Quelqu'un touche à ogre ici ? Nan parce que j'ai aucune idée de comment faire un minecraft like sans que ça ram ou plante. Parce que si une entity = un cube |
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 11:51 | |
| vous connaissez? pour faire des jeux web gratuitement. http://tululoo.com/ça ressemble à GM en plus! |
|
| |
Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 12:28 | |
| hey ho ! faut pas poussez mémé dans les marty _________________ |
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 13:13 | |
| |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 14:03 | |
| Perso je le trouve pas mal ce GM like. Même si l'interface est pas top rien qu'a voir les fonctions ça a l'air quand même assez puissant. |
|
| |
Sekigo Le Magnifique Utilisateur confirmé: Rang *****
Messages : 1720
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 18:18 | |
| Bon, les champions du C++, j'ai besoin de vous. Y a une fonction en C dont je ne comprends pas trop le fonctionnement. La fonction size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );Dans le code de l'émulateur, il y a cette ligne : - Code:
-
fread(&cpu.memoire[ADRESSEDEBUT],sizeof(Uint8)*(TAILLEMEMOIRE-ADRESSEDEBUT), 1, jeu); // cpu.memoire est un tableau de int8 représentant la RAM, jeu est un fichier binaire., ADRESSEDEBUT est de 512, et TAILLEMEMOIRE de 4096
Je ne comprends pas l'argument size. Là, il lui donne la taille de toute la "mémoire vive" restante (les 512 premiers octets sont réservés), et c'est composé d'un seul élement de base (argument count) Si je comprends bien, la fonction va découper automatiquement le fichier dans le tableau cpu.memoire où chaque partie va peser int8. Dans ce cas, c'est quoi l’intérêt d'indiquer la taille et le nombre d'élement dans la fonction ? Ou alors, il met autre chose dans le tableau cpu.memoire ? Du genre, une structure qu'il colle dans le tableau. Je ne vois pas trop comment traduire cette fonction en python. Faut que je lise le fichier d'un bloc et que je le découpe pour le blitter dans les cases de mon tableau cpu.memoire ? Ou alors, que je le case dans un struct (pour convertir les struct du C++ en python). Puis, il se passe quoi si le fichier est plus grand que la RAM ? Logiquement, ça devrait planter par un débordement. Du coup, il faut un fichier binaire tout petit, ou une ram "gigantesque" pour tout prévoir. C'est ******, c'est le seul truc qu'il me reste à faire, avant d’optimiser le tout. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 18:48 | |
| La c'est aux champions du C qu'il faut faire appel :p (donc pas moi lawl)
A ce que j'ai compris de cette fonction, le second argument sert a découper ouai, mais au final on peut s'en passer. Écrire fread(pt, 10, 4, file) reviens a écrire fread(pt, 40, 1, file) Quand a l'organisation des données je ne pourrais pas te dire. Ça doit dépendre de l'endianess (?).
En python en gros te faut juste une fonction qui te permet de lire 8*(TAILLEMEMOIRE-ADRESSEDEBUT) octets dans un fichier, et de le mettre dans un buffer. |
|
| |
Sekigo Le Magnifique Utilisateur confirmé: Rang *****
Messages : 1720
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 19:30 | |
| Non, mais je ne sais même pas pourquoi il a foutu 8*(TAILLEMEMOIRE-ADRESSEDEBUT). Sûrement pour éviter les dépassements de mémoire. On réserve l'ensemble, et advienne que pourra. Ou alors, il y a un truc qui m'échappe. Y a aussi un truc que je soupçonne d'être un peu "dégueulasse" niveau code. Son timer de fréquence du cpu. C'est n'importe quoi. Là, il a voulu simuler un 250MhZ, avec un FPS de ~60 pour l'affichage. Je trouve ça vraiment tordu comme manière de faire. - Code:
-
#cpu.h & cpu.c VITESSECPU = 4 FPS = 16 void decompter() { if(cpu.compteurJeu>0) cpu.compteurJeu--;
if(cpu.compteurSon>0) cpu.compteurSon--; }
#main.c do { for(compteur=0;compteur<VITESSECPU && continuer==1;compteur++) //Si continuer=0, on quitte l'émulateur { continuer=interpreterOpcode(recupererOpcode()); }
if(cpu.compteurSon!=0) { Mix_PlayChannel(0, son, 0); cpu.compteurSon=0; }
updateEcran(); decompter(); SDL_Delay(FPS); //Une pause de 16 ms }while(continuer==1);
Bon, pour traduire son fread en python, je vais aller au plus simple. Lire le fichier binaire, le découper par bloc de 8 octets et les coller dans le tableau representant la ram (où chaque cellule fait 8 octets). |
|
| |
Chulien Utilisateur confirmé: Rang *****
Messages : 2232
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 20:46 | |
| - jbg77 a écrit:
- Quelqu'un touche à ogre ici ?
Nan parce que j'ai aucune idée de comment faire un minecraft like sans que ça ram ou plante. Parce que si une entity = un cube pourquoi est-ce que ça n'irait pas 1entity = 1cube ? c'est pas le moteur 3d de GM mais il faudrait jouer sur le fog tout de même... et sinon, GMOgre a tendance à planter ou faire nimporte quoi quand ya une erreur de code, sans afficher une quelconque info. edit : je me rends compte que mon avatar est quelque peu dérangeant
Dernière édition par Chulien le Mar 1 Nov 2011 - 20:49, édité 1 fois |
|
| |
Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 20:48 | |
| - Sekigo Le Magnifique a écrit:
- Bon, les champions du C++, j'ai besoin de vous.
Y a une fonction en C dont je ne comprends pas trop le fonctionnement. La fonction size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
Dans le code de l'émulateur, il y a cette ligne : - Code:
-
fread(&cpu.memoire[ADRESSEDEBUT],sizeof(Uint8)*(TAILLEMEMOIRE-ADRESSEDEBUT), 1, jeu); // cpu.memoire est un tableau de int8 représentant la RAM, jeu est un fichier binaire., ADRESSEDEBUT est de 512, et TAILLEMEMOIRE de 4096
Je ne comprends pas l'argument size. Là, il lui donne la taille de toute la "mémoire vive" restante (les 512 premiers octets sont réservés), et c'est composé d'un seul élement de base (argument count) Si je comprends bien, la fonction va découper automatiquement le fichier dans le tableau cpu.memoire où chaque partie va peser int8. Dans ce cas, c'est quoi l’intérêt d'indiquer la taille et le nombre d'élement dans la fonction ? Ou alors, il met autre chose dans le tableau cpu.memoire ? Du genre, une structure qu'il colle dans le tableau.
Je ne vois pas trop comment traduire cette fonction en python. Faut que je lise le fichier d'un bloc et que je le découpe pour le blitter dans les cases de mon tableau cpu.memoire ? Ou alors, que je le case dans un struct (pour convertir les struct du C++ en python).
Puis, il se passe quoi si le fichier est plus grand que la RAM ? Logiquement, ça devrait planter par un débordement. Du coup, il faut un fichier binaire tout petit, ou une ram "gigantesque" pour tout prévoir.
C'est ******, c'est le seul truc qu'il me reste à faire, avant d’optimiser le tout. Voila pourquoi je préfère Game Maker _________________ |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 20:54 | |
| Chais pas ce qu'ils ont les gens avec MC >.> Tu fait un array 3d. Une triple loop for. T'affiche la peau du décors, face par face (donc t'affiche pas les faces qui sont entre 2 cubes). T'affiche les faces que si leur normale est dans ta direction. Tu fait un cross product pour ne pas afficher ce qu'il y a en dehors du cône de vision. Et si tu sais pas afficher un quad avec ogre, va te pendre :p D'ailleurs le top est d'utiliser du raycasting, mais bon c'est beaucoup plus dur a implémenter. La preuve notch n'utilise pas ce système Sekigo > rien qu'a voir son code source on vois que c'est dégueux. Normal qu'il fasse un truc a l'arrache pour simuler la fréquence du cpu... Qual > Voila pourquoi tu ferras jamais des jeux plus compliqué que ton return All |
|
| |
Craki Utilisateur confirmé: Rang ****
Messages : 1496 Localisation : Dans l’univers de métamatière
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 20:58 | |
| - onilink_ a écrit:
- Tu fait un cross product pour ne pas afficher ce qu'il y a en dehors du cône de vision.
Ce genre de truc se fait avec un produit en croix ? J'aimerais savoir quels termes mettre… _________________ |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 21:30 | |
| C'est produit scalaire.
Pour savoir si un objet de coordonnées O se situe devant la caméra de coordonnées C, il faut que D.CO > 0 avec D la direction de la caméra. |
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: Parlez de ce que vous voulez Mar 1 Nov 2011 - 22:59 | |
| |
|
| |
Craki Utilisateur confirmé: Rang ****
Messages : 1496 Localisation : Dans l’univers de métamatière
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 1:54 | |
| - onilink_ a écrit:
- C'est produit scalaire.
Pour savoir si un objet de coordonnées O se situe devant la caméra de coordonnées C, il faut que D.CO > 0 avec D la direction de la caméra. Mais ça prend pas en compte le champ de vision de la caméra ; si ? _________________ |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 8:59 | |
| Je crois qu'il faut modifier 0 par un truc qui prend en compte l'angle. Mais je n'en sais pas plus En tout cas je sais que c'est avec le produit scalaire qu'on fait ça :p |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 10:01 | |
| - onilink_ a écrit:
- Chais pas ce qu'ils ont les gens avec MC >.>
Tu fait un array 3d. Une triple loop for.
T'affiche la peau du décors, face par face (donc t'affiche pas les faces qui sont entre 2 cubes). T'affiche les faces que si leur normale est dans ta direction. Tu fait un cross product pour ne pas afficher ce qu'il y a en dehors du cône de vision.
Et si tu sais pas afficher un quad avec ogre, va te pendre :p
D'ailleurs le top est d'utiliser du raycasting, mais bon c'est beaucoup plus dur a implémenter. La preuve notch n'utilise pas ce système
Bah justement la version d'ogre en purebasic me semble limiter. Et puis qu'est ça fait une entity = un cube, bah ça prend beaucoup de ram genre 4 go. Apparemment faut utiliser des dll de voxel mais lol juste pour des cube.En plus ça à l'air de marcher juste en c++. Je vais essayer en c++ et puis si ça marche pas je ferais en openGl. Par contre les objets on les stocks dans quoi ? Il y a des arraylist en c++ ? |
|
| |
-Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 10:49 | |
| Je rappelle qu'il n'est absolument pas nécessaire d'utiliser Ogre pour faire un Minecraft. Au contraire OpenGL semble plus approprié/simple/rapide.
D'ailleurs maintenant que je maîtrise le Perlin Noise je pourrai reprendre le Minecraft que j'avais commencé (avec OpenGL et la précieuse aide d'Onilink), mais bon, flemme de faire un système de chunk, et j'ai pas une maîtrise assez avancée du bruit de Perlin pour une génération au fur et à mesure du terrain... Minecraft ça semble vachement simple à faire et comme c'est cool tout le monde veut en faire (moi y compris), mais souvent on s'y casse les dents (moi y compris) ^^
En fait il te suffit de faire un tableau en 3D de char (0-256), qui prennent 1 octet chacun, puis tu fais un triple for() et par exemple si la case est un 0, tu fais rien, si c'est un 1, tu affiches 6 carrés (un cube) représentant un cube de bouse, si c'est un 2, un cube de pierre etc... Si tu t'entêtes à utiliser Ogre, faire 1 entity par cube c'est juste faire griller ton PC, je pense qu'il vaut mieux faire une grande entity qui affiche tous les cubes d'un coup. _________________ Oh, snap.
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 12:10 | |
| Justement je n'utilise pas de système d'entity pour les cubes. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 12:26 | |
| En principe avec ogre y a pas de soucis. Faut juste être capable de dessiner des quads (ce que notre jbg n'a pas l'air de savoir faire ) D'ailleurs a ce que j'ai compris ogre s’occupera lui même de toutes les optimisations a faire (vertex buffer objects, etc) Mais bon c'est toujours mieux d'avoir un contrôle total, et opengl c'est le truc le plus bas niveau pour faire de la 3d, donc forcément la on en a. Mais bon faut connaitre certaines notions, et c'est pas super simple a utiliser au début :p |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 12:46 | |
| Bah en purebasic pour afficher un quads je suis obliger créer une entity. Bon là je regarde en c++. Juste une question c'est dure de coder un loader de models ou pas ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 13:52 | |
| Ben ça dépend du format que tu veux charger quoi... |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Parlez de ce que vous voulez Mer 2 Nov 2011 - 14:13 | |
| Bah un format qui nous permet de texturé les models facilement par exemple un .mesh edit : Bon je crois que je vais me mettre à l'openGL, parce qu'autant ogre en purebasic c'est facile mais c++... Surtout que ça n'a l'aire pas si difficile que ça un moteur de lumière : http://mdeverdelhan.developpez.com/tutoriel/dynamiclight/tutoriel1/ |
|
| |
Sekigo Le Magnifique Utilisateur confirmé: Rang *****
Messages : 1720
| Sujet: Re: Parlez de ce que vous voulez Jeu 3 Nov 2011 - 0:34 | |
| ******, j'ai des bugs de partout avec mon adaptation de l'émulateur :/ Ça tourne en boucle dans les mêmes instructions.
Bon, tout n'est pas à jeter ceci dit. Vu que j'ai bien découpé la partie moteur avec la partie interface, du coup, j'ai pu rajouter une interface pygame et pysfml en quelques lignes de codes, en ajout à la version ncurses déjà existante pour les terminaux. Et ça marche en double thread (\o/ surtout que je l'ai implémenté cet aprèm pour tester, et en trois lignes, ça a fonctionné direct, sans toucher à rien d'autres).
Non, mais ça m'énerve, je suis sûr que ça bug sur un truc de marde en plus. Bon, c'est la première fois que j'utilise sérieusement un debugger, au lieu d'y aller à grand coup de print() dans tout les sens.
Ceci dit, j'ai été zieuter quelques autres codes sources d'émulateur chip8. J'ai l'impression que c'est une constante, de faire du code pourri pour cet émulateur. Je ne sais pas, avant de publier du code, je le relis et j'essaye de l'organiser un minimum pour que les lecteurs ne pleurent pas du sang en essayant de le comprendre.
J'en suis ~ à 900 lignes de codes (bon, avec le tiers de commentaires au moins ceci dit). Mais j'ai un tas de déchets dedans, et je pense que ça tirera autour de 400 lignes en version final.
J'ai appris un tas de truc avec ce mini-projet, mine de rien. Je ferais un petit "truc & astuce" sur le thread python quand j'aurais terminé. Après, je ne sais pas si y a d'autres personnes qui utilisent python ici. |
|
| |
Sekigo Le Magnifique Utilisateur confirmé: Rang *****
Messages : 1720
| Sujet: Re: Parlez de ce que vous voulez Jeu 3 Nov 2011 - 11:50 | |
| Lolilolul. En fait, mon émulateur fonctionne bien. C'est juste que j'avais oublié de mettre la cadence du CPU en float, au lieu d'être en int. Du coup, ça faisait tout le temps 1/Y=0 (au lieu de 0.nnnnn). Et le cpu allait trop vite et je ne pouvais rien voir, vu que les trucs se passaient de manière instantanée. Mais j'ai encore un vilain bug au niveau de l'affichage des caractères. Normalement, il devrait y avoir écris "space invaders". - Spoiler:
|
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Parlez de ce que vous voulez Jeu 3 Nov 2011 - 23:41 | |
| |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Parlez de ce que vous voulez Ven 4 Nov 2011 - 10:08 | |
| - Sekigo Le Magnifique a écrit:
- Lolilolul. En fait, mon émulateur fonctionne bien. C'est juste que j'avais oublié de mettre la cadence du CPU en float, au lieu d'être en int.
Du coup, ça faisait tout le temps 1/Y=0 (au lieu de 0.nnnnn). Et le cpu allait trop vite et je ne pouvais rien voir, vu que les trucs se passaient de manière instantanée.
Mais j'ai encore un vilain bug au niveau de l'affichage des caractères. Normalement, il devrait y avoir écris "space invaders".
- Spoiler:
Awi le truc a la con x) Sinon pour le texte, t'est sur que les caractères qu'il faut entrer a la main a un moment sont correctement entrés ? Ou peut être qu'il y a une histoire que ça donne pas pareil en C et en python pour une quelconque histoire ? >Caly : old |
|
| |
Rem_101 *Excellent utilisateur*
Messages : 4356 Localisation : chez votre marchand de journaux
| Sujet: Re: Parlez de ce que vous voulez Ven 4 Nov 2011 - 18:48 | |
| Pour ceux que cela intéresse, j'ai mis en ligne le trailer de mon let's play sur Lylat Wars. Je posterais un épisode tous les weeks end qui devrait comprendre 1 voir 2 niveaux. Si vous voulez jeter un oeil c'est ici: https://www.youtube.com/watch?v=4voQ1oclwSw&feature=channel_video_titleJe vous invites à vous inscrire sur la chaîne si vous souhaitez être mit au courant de la parution d'un épisode. Voilà, fini la pub, et merci. _________________ "Nan... C'est rien le vieux... C'est le compte qui n'y était pas... Il en manquait un..."
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Parlez de ce que vous voulez Ven 4 Nov 2011 - 21:07 | |
| Je me suis encore fait bannir mon pseudo sur jvc alors que je ne poste presque jamais, je ne reçois rien concernant mon ban, faudrait peut être qu'il arrête d'avoir des modos kikoos message++. Je vais DDos jeuxvideo.com ça va les calmer. Sinon comment on stock des objets dynamiquement en c++ ? |
|
| |
Contenu sponsorisé
| Sujet: Re: Parlez de ce que vous voulez | |
| |
|
| |
| Parlez de ce que vous voulez | |
|