Voir la version complète : [PSP][Aide] Chercher Fork() ou quelquechose y ressemblant
benschaff
28/09/2006, 21h45
Bonjour à toutes et à tous,
J'ai actuellement un projet de developpement sur PSP et je cherche à pouvoir par exemple déplacer plusieurs personnages à l'écran en même temps.
Mon problème est que visiblement la psp ne répond pas à l'appel de fork() (ou je ne sais pas correctement m'en servir) et je n'ai pas trouvé de fonction de threading sur le web donc si une âme charritable pouvait éclairer ma lanterne ou éventuellement me montrer une méthode de conception autre qu'avec du multi-threading je lui en serai grandement reconnaissant.
en vous remerciant et à une prochaine fois.
Multithreading pour plusieurs persos? :lol:
C'est... une idée :D
Mais normalement, si on a plusieurs objets, persos, ennemis ou autres à gérer, c'est simplement qu'on les garde dans une liste, et qu'on les processe un à un à chaque frame.
En fait normalement un jeu PSP tourne à 60 images secondes (boucle simple qui attend sur la VSync une fois le processing terminé) et dans cette boucle on va par exemple parcourir tous les objets et persos et les gérer avec les fonctions adaptées (de façon à ce que chacun "vive" pendant son 1/60ème de seconde, donc si ton perso se déplace d'un pixel à chaque frame, il avancera à une vitesse constante de 60 pixels/seconde par exemple). Ensuite, tu fais pareil à l'affichage, une boucle for qui affiche tous les objets de la liste sur l'écran ^^ et le dernier dessiné aura la plus grande priorité ^^
Mais peut-être que je suis complètement à la masse et je n'ai pas compris ta question :p Pour le multithreading, l'OS de la PSP le supporte par défaut donc c'est pas très compliqué, mais c'est associatif, donc les threads comptent les uns sur les autres, et c'est donc très important de ne pas briser la chaîne ;)
benschaff
28/09/2006, 21h56
Non non ta réponse me convient tres bien je vais tenter le coup et oui je c'est que le multi-threadin ça fait un peut l'effet de la bombe atomique pour tuer une mouche mais quand je faisiait des animations en java c'était la seule méthode que j'avais trouvé donc merci du conseil je vais essayer
Huhu... oui alors effectivement je vois ce que tu veux dire mais c'est pas du tout pareil ;)
En effet comme tu l'as dit c'est tuer une mouche avec une bombe atomique, ça **marche** mais ça te limite très vite ^^
L'avantage sur PSP c'est que c'est un peu comme sur une feuille de papier, pour le rendu au début tu effaces l'écran et puis tu dessines par-dessus tous les éléments dont tu as besoin, chacun aparaissant par-dessus ce qui existe déjà.
Par exemple d'abord on aura un fond pour le ciel, des nuages, puis des montagnes, puis des arbres devant, puis un plan de jeu, puis des persos, ennemis ou autres, puis d'autres arbres en avant-plan, et pour terminer un HUD (afficheur de vies, temps, etc.) qui est dessiné en dernier car il vient par-dessus tout ^^
Je ne sais pas si tu vois ce que je veux dire, mais de cette manière tout est fait dans un seul thread, c'est beaucoup plus simple à gérer (tous les objets sont gérés puis dessinés un à un, l'un après l'autre, dans un certain ordre) et ça évite tout problème de synchro, des threads morts vivants et autres ^^
En gros, si tu aurais fait ceci:
monThreadObjet(Objet *o) {
o.left = 0;
for (i=0;i<60;i++) {
o.left ++; //Déplace l'objet sur la droite
synchronisation();
}
}
Ca donnerait cela en séquenciel:
main() {
Objet *o = new Objet();
o.left = 0;
// Boucle principale
while(1) {
//Gestion du gameplay (persos, objets, ennemis, ...)
if (o.left < 60)
o.left ++; //Déplace l'objet sur la droite
[...]
//Dessin
EffaceEcran();
DessineObjet(o);
//Dessin terminé, attend la VSync
Synchronise60fps();
}
En espérant que ça t'aide ^^ Sinon il doit y avoir pas mal de tutos à ce sujet :)
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org