Jwolfenstein 3d !

Soyez le premier à donner votre avis sur cette source.

Vue 11 691 fois - Téléchargée 1 294 fois

Description

Bonjour,
voici une implémentation très rapide en Java du célèbre Wolfenstein 3D !!!

Le jeu n'est pas complet, on peut seulement se balader dans un niveau et tirer sur les ennemis. J'ai pas encore eu le temps de permettre aux ennemis de vous tirer dessus (actuellement, ils vous ignore !) ! Si quelqu'un est motivé !

Il y a un éditeur de niveau fourni avec. Attention pas trop de critique sur l'éditeur : je l'ai fait rapidement et donc niveau ergonomie et affichage, on fait mieux :) L'important c'est qu'il soit a peu près fonctionnel !

Le moteur du jeu fonctionne pas trop mal, il reste de nombreux bugs a corriger : des bugs d'affichage des objets et des murs, la précision des tirs etc... si j'ai un peu de temps, j'essaierai d'améliorer tous ça!
La technique de Raycasting (technique pour afficher les murs en "3D") s'inspire d'un article que j'avais trouvé par hasard sur le web : http://www.permadi.com/tutorial/raycast/

Note sur les performances : j'ai remarqué sur mes 2 machines de développement, une sous XP et une sous Vista que pour une raison inconnue, le jeu ramait a mort sous XP (a peine 5 images par secondes), apparemment, ça serait DirectX qui bugue. En effet, par défaut sous Windows, Java utilise par défaut DirectX pour l'affichage, en activant l'OpenGL (rajouter l'option -Dsun.java2d.opengl=True au lancement de l'application par Java), il n'y a plus de prb de performances... Les scripts pour exécuter le jeu incluent cette option (ne devrait pas avoir d'incidence sous Vista et Linux, a confirmer...).

Note sur les sources : j'ai essayé de commenter et de faire un code a peu prés propre et structuré, a force de tripatouiller, certaines sources sont un peu crados :) De plus, au début j'avais codé les noms des fonctions et variables en français, en cours de route j'ai changé en anglais donc il doit y avoir des oublis franglais !
Pour ceux que ça interresse, l'éditeur est fait sur le schéma MVC (Modèle Vue Contrôleur).

Touches : (suite MAJ du 26/01/2009)
ESC : quitte le jeu
Avancer : flèche haut du clavier
Reculer : flèche bas du clavier
Pas de coté vers la gauche : flèche gauche du clavier
Pas de coté vers la droite: flèche droite du clavier
Tourner la tête (dirige le personnage) : déplacer la souris
Tirer : espace ou bouton gauche de la souris
Quitter : fermer la fenêtre ou bien Echap.
Afficher le nombre d'images par secondes : appuyer sur la touche f

Pour lancer :
j'ai fait des script BAT pour Windows. Pour Linux, il suffit de reprendre la même commande que dans ces fichiers !

editor.bat : lance l'éditeur de niveau
launch.bat : lance le jeu en mode fenêtré avec une map par défaut (dans le répertoire maps)
launchChoice.bat : lance le jeu en mode fenêtré et donne la possibilité de choisir une carte
launchFullScreen.bat : identique a launch.bat mais le jeu est lancé en plein écran
launchChoiceFullScreen.bat : identique a launchFullScreen.bat mais le jeu est lancé en plein écran
JWolfenstein.html : version applet (cf. plus bas)

Voili c'est tout ;)

Source / Exemple :


La source est dans le ZIP. C'est pour Java 6 (pas testé sur le 5)
Le projet est un projet Eclipse.

Pas besoin de compiler, tout est déjà compilé dans le répertoire bin.

MAJ du 13/03/2009:
-Le projet est désormais sous licence GNU GPL v3
-le curseur disparait (nouveau paramètre dans le fichier de configuration) et amélioration de la visée avec la souris
-Applet régénérée (par contre l'amélioration de la visée fait "ramer" l'applet, je corrigerai plus tard)

NOTE : suite a cette mise à jour, j'ai du enlever l'applet (JWolfenstein.jar), il faut la regénérer (voir le fichier source org/jwolfenstein/main/MainApplet.java pour voir comment)

MAJ du 21/01/2009 :
On peut modifier certains paramètres du jeu en modifiant le fichier de configuration gameConfig.xml. ATTENTION : la moindre erreur fait planter le jeu.
Pour changer la taille de la fenêtre : modifier les valeurs width et height dans le fichier. 

MAJ du 29/01/2009 :
Désormais, le jeu peut se lancer dans une applet d'une page Web. Ouvrir la page JWolfenstein.html pour visualiser dans un navigateur. Vous devez accepter le certificat.
Note : je sais pas pourquoi, parfois, a la première exécution dans le navigateur, la page reste blanche après l'acceptation du certificat, faites F5 (Rafraichir) dans le navigateur et ça marche ! :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Utilisateur anonyme
Merci pour la licence. Pour certains aspects, je pourrai te donner un coup de main. A+
Messages postés
194
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
1 mai 2009
27
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)
Messages postés
194
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
1 mai 2009
27
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
L'éditeur a l'air pas mal aussi, chapeau.
Utilisateur anonyme
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+
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.