JWOLFENSTEIN 3D !

provenzano24 Messages postés 12 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 28 janvier 2009 - 24 janv. 2009 à 01:47
 Utilisateur anonyme - 13 mars 2009 à 21:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49060-jwolfenstein-3d

Utilisateur anonyme
13 mars 2009 à 21:45
Merci pour la licence. Pour certains aspects, je pourrai te donner un coup de main. A+
tucobouch Messages postés 194 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 1 mai 2009 50
13 mars 2009 à 15:11
Suite aux commentaires précédents, j'ai mis à jour mon projet :
-il est désormais sous licence GNU GPL
-la visée a été améliorée (sauf pour les applets)
tucobouch Messages postés 194 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 1 mai 2009 50
13 mars 2009 à 11:09
Merci pour tes remarques constructives, malheureusement j'ai un boulot et plus trop le temps en ce moment pour coder mais vu la crise financière gagnant de plus en plus de terrain dans le secteur où je travaille, je sens que j'aurai plus de temps en chômage :(

Pour la licence, je vais y réfléchir
Pour l'applet, c'est étonnant j'ai encore testé tout a l'heure sur mon navigateur (firefox sous windaube), ça fonctionne chez moi...
Pour OpenGL, j'avoue honteusement m'être jamais attelé à cette API (par manque de temps et patience). J'avais vaguement approché le DirectX à une époque.

Bonne continuation
A+
Utilisateur anonyme
13 mars 2009 à 10:13
L'éditeur a l'air pas mal aussi, chapeau.
Utilisateur anonyme
13 mars 2009 à 10:12
Déjà, rien qu'en passant ton "tableau" de pixels à OpenGL (ce qui demande très peu de modification, c'est ce que j'avais fait il y a quelques années pour un jeu basé sur le raycasting, regarde la méthode glDrawPixels), j'obtenais un frame rate 4 fois supérieur. Ce qui prend le plus de temps, c'est de se débarasser complètement du raycasting car ça demande un sacré refactoring. Un bon compromis est de mélanger raycasting et OpenGL.

Cependant, si un jour tu envisages de passer complètement à OpenGL, tu pourras t'inspirer de mon code source pour convertir tes structures de données adaptées au raycasting en données interprétables par OpenGL, j'ai des programmes non graphiques qui font ça très bien pour les niveaux orthogonaux comme les notres, ils calculent tous les quadrilatères à partir d'une carte en 2D, ça t'évite de te taper ça à la main et après, c'est du gâteau comme j'ai aussi écrit plein de choses pour prendre en charge tous les modes de tracé d'OpenGL de façon transparente (tu gères des ensembles de points sans savoir comment OpenGL les gère en interne).

Ensuite, justement, si ça va aussi vite même quand tu augmentes la résolution, c'est parce que tu ne fais qu'un simple redimensionnement.

D'autre part, pour le clavier, j'ai l'habitude des applets alors mon premier réflexe a été de cliquer dessus et ça n'a rien changé, je testerai aussi sous forme d'application dès que j'aurai un peu de temps.

Enfin, je t'ai demandé de choisir une licence connue car j'aimerais publier ton jeu sur le portail de la FGF qui regroupe tous les jeux vidéo Java open source portables et installables facilement (voire sans installation) et je ne peux pas le faire tant que tu utilises une licence "maison" du genre "c'est libre, mets juste mon nom si tu t'en sers". Je vais aussi parler de ton jeu sur javagaming.org car je le trouve pas mal, je t'encourage à continuer de bosser dessus. A+
tucobouch Messages postés 194 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 1 mai 2009 50
13 mars 2009 à 09:39
Ouah tout ça ! :)
Pour les performances, j'ai dit que c'était pas ma priorité. De plus, tu peux constater que le jeu est toujours rapide même à des résolutions élevées (certe sur des machines puissantes) car pour afficher les murs, j'utilise une fonction Java2D trés simple (un simple redimensionnement) et optimisé par Java en utilisant des fonctions de la carte graphique (par l'intermédiaire d'OpenGL ou DirectX) certes ça sera toujours plus lent que des accès direct à la carte graphique...
Passer mon code en OpenGl, pourquoi ? il faudrait reprendre à mon avis plein de chose : je sais pas si l'OpenGl peut afficher ligne par ligne qui est la base du raycasting. De plus, faut pas oublier que la fonction Java2d utilise indirectement l'accélération graphique derrière.
Sur ta remarque sur la résolution et framerate, augmenter la résolution n'est pas si couteux que ça car seul la largeur de l'écran entre en compte dans le raycasting (nombre de "bande" de mur à afficher). De plus, je n'affiche pas pixel par pixel directement dans le code java mais j'utilise des fonction accélérées qui vont afficher par "groupe de pixel" (comme le plafond et le sol où c'est juste un fillRect tout bête, les murs un simple drawImage etc...), c'est la puce graphique derrière qui fait la plus grosse partie du boulot.
Pour ton problème de clavier sur l'applet, en général se problème se produit si on a pas cliqué une fois sur l'applet pour gagner le focus.
Pour l'autocentrage, je viens de le rajouter dans mon code, je republierai ce week end quand j'aurai un peu plus de temps...
Merci
Utilisateur anonyme
13 mars 2009 à 01:11
Pour la souris, ajoute l'auto-centrage du curseur si tu peux, inspire-toi de mon code car c'est un peu pénible que le curseur sorte de la fenêtre quand on tourne. C'est bête que je ne puisse pas avancer :(
Utilisateur anonyme
13 mars 2009 à 01:10
Je viens de tester l'applet. Déjà la souris marche chez moi mais pas le clavier, je peux juste tourner et tirer. De plus, c'est normal que ça aille vite, tu utilises les petites astuces habituelles pour masquer la lenteur du raycasting. En gros, tu réduis la résolution (comme dans le jeu "Scared") et le niveau de détail. Comme le frame rate dépend beaucoup du nombre de pixels dont tu dois calculer la couleur, il est tout à fait normal que ton jeu tourne aussi vite, il est fluide chez moi. Par contre, je ferai le test de mettre la résolution à 1280*1024 et d'augmenter le niveau de détail si c'est possible et là, tu verras que ça commencera à ramer. A plus tard.
Utilisateur anonyme
13 mars 2009 à 00:58
Utiliser ANT et Eclipse n'est pas contradictoire, tu peux même utiliser ANT à l'intérieur d'Eclipse et de Netbeans. Les performances de ton jeu ne dépendent pas que du processeur mais aussi de la carte graphique même si tu penses faire du rendu logiciel (car Java est accéléré graphiquement matériellement d'où la différence quand tu bidouilles les pipelines mais pas au point que tu aies les mêmes performances qu'avec JOGL). Le meilleur moyen de montrer que Java est rapide n'est pas d'utiliser les méthodes les plus lentes et si je prends mon vieux céléron 700 Mhz avec une vieille carte 3D Matrox Millenium, je doute fort que ton jeu dépasse 10 FPS. Prends Art Attack, modifie l'applet pour que ça tourne en plein écran, prends un bécane avec 1 Ghz mais avec une carte graphique modeste et tu verras que les performances seront nazes. Pour la licence, ce serait quand même mieux que tu fasses référence à une licence connue au cas où quelqu'un voudrait réutiliser ton code, par exemple BSD, LGPL, GPL... Bon courage et je pourrai te donner un coup de main pour Java Webstart.
tucobouch Messages postés 194 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 1 mai 2009 50
12 mars 2009 à 18:03
Bonjour,
lol pour les fautes d'orthographes !! en général en codant, quand je suis un peu fatigué, j'ai tendance en faire encore plus ! :) désolé pour les fautes!
Pour ANT, oui tout a fait mais en général, Eclipse est le plus répandu dans le domaine java... si tu es motivé pour écrire le script, le l'inclurai avec plaisir :)
Pour l'OpenGL, le but de mon projet n'était pas d'utiliser des librairies annexes mais de prouver que Java n'est pas si lent que ça... Sur mes bécanes (minimum 1Ghz tout de même), le jeu tourne sans problème à 60 images par secondes sans avoir particulièrement optimisé mon code (l'optimisation n'a pas été ma priorité d'ailleurs ça se confirme car j'ai utilisé que des double à la place de float bien plus rapides!), quand on pense que Wolfenstein tournait sur des machines n'allant même pas à 100 Mhz... :)
Licence ? en gros mon projet est libre sauf qu'on doit laisser mon nom dans les sources ;)
Pour WebStart, je sais pas faire donc il faut que je me renseigne, j'ai pas trop le temps pour le moment. Une version applet est tout de même dispo à l'adresse suivante :
http://gbouchon1.free.fr/jwolfenstein.php

Merci pour tes remarques!

Bonne continuation
Utilisateur anonyme
12 mars 2009 à 17:22
C'est pas mal du tout, sacré projet, chapeau. Par contre, il y a plein de fautes dans les commentaires du code source, il aurait été plus sympa d'utiliser ANT pour ne forcer personne à utiliser Eclipse et pour avoir de vrais scripts portables. Enfin, pourquoi avoir utilisé le raycasting alors qu'on peut faire de l'OpenGL en Java et que ça va bien plus vite que le rendu logiciel? Il existe déjà des jeux Java utilisant le raycasting (Art Attack, Tesseract...). Je vais tester ce soir sous Linux sur un ordinateur modeste qui fait tourner mon propre doomlike à presque 40 FPS (0.5 FPS avec Art Attack), on va voir si c'est jouable. Bon courage et bonne continuation. S'il te plaît, pourrais-tu préciser la licence que tu utilises? Ce n'est pas clair pour le moment. Prévois-tu de faire une version avec Java Webstart?
tucobouch Messages postés 194 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 1 mai 2009 50
26 janv. 2009 à 11:34
Bonjour,
suite a votre remarque j'ai modifié les déplacement : on peut désormais utiliser la souris. C'est pas encore terrible mais c'est beaucoup mieux!
Merci
A+
provenzano24 Messages postés 12 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 28 janvier 2009
24 janv. 2009 à 01:47
Salut,
juste une remarque rapide a ajouter dans le code, je trouve dommage qu'on ne puisse pas tourner en avancant ou reculant ...
niveau deplacement, ca rend le gameplay tres moyen
@+
Rejoignez-nous