Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » 1v1 3D, projet de jeu de FPS en multijoueur
MilangHors ligneMembrePoints: 76 Défis: 0 Message

1v1 3D, projet de jeu de FPS en multijoueur

Posté le 10/04/2019 20:45

Image destinée a être dans le futur un écran d'accueil

Bonjour à tous !
Ce topic regroupe l'ensemble des évolutions du projet de jeu 1v1 3D.

Ce projet est un AddIn. Pour ceux qui ont une graph 35+USB (E ou non) et qui ne l'ont toujours pas mise à jour, allez le faire sur ce lien :
http://www.planet-casio.com/Fr/forums/topic13930-1-Ameliore-ta-Graph-35+-USB-E-en-Graph-75(+E)-!.html

Brève présentation du jeu :
1v1 3D est un projet de jeu de tir à la première personne (fps) en multijoueur sur graph 75/85/95 en utilisant le cable 3pin...
Vous commencez la partie dans une arène avec l'une des 3 armes disponibles (voir plus bas), le but étant, bien évidemment, de dégommer votre adversaire qui aura le même but que vous ! Il faudra donc établir des stratégies, quant au choix de l'arme et aux points stratégiques de la map qui est fermée.


Avancement du projet :
Pour l'instant, j'effectue des tests sur le moteur 3D en affichant les sommets d'un cube, ainsi que la fonction de remplissage des triangles.

Moteur 3D
Comme son nom l'indique ce jeu est en 3D . Cependant il repose sur un moteur complètement à créer. Et j'en suis encore là... En effet, le joueur évoluera dans un monde découpés en cubes de type minecraft (sans textures). Donc pas de raycasting, mais un vrai moteur bien compliqué à mettre en oeuvre.
avancement du moteur 3D (je ne compte pas ceux que j'ai créés et abandonnés, je dois en être au quatrième)
   25%



Armes :
3 armes possibles à choisir en début de partie :
Le pistolet simple (fréquence de tir moyenne, dégâts moyens, et croix pour viser)
Le fusil d'assaut (fréquence élevée, faibles dégâts par balle, et croix pour viser)
Le fusil de sniper (fréquence de tir basse, mais dégâts puissants, pas de croix et présence d'un viseur avec zoom et masque)

Communication par le port 3-pin :
Une vague idée pour l'instant, mais rien de concret...


Historique de l'évolution :
2019-02-21 >> Création de la page du programme et début d'un moteur 3D en raycasting
3 moteurs 3D plus tard ...
2019-03-18 >> Création d'un nouveau moteur 3D (pas en raycasting) et adaptation du code en C++

⇩ Informations contenant le Fichier joint ⇩
...

Le *.zip contient une librairie de 3D de c++ (nécéssite les classes) qui est plus évoluée que celle présente sur la page du programme (qui elle n'est pas à jour et qui ne marche pas)
Elle est constituée de quatre fichiers :
1. master_3d.cpp
2. master_3d.hpp
3. point_3d.cpp
4. point_3d.hpp

1 et 2 header et module de la classe master 3D et le pointeur sur le z_buffer associé
3 et 4 header et module de la classe point et ses fonctions de calcul vers coordonnées 2D


Fichier joint


NinestarsHors ligneMembrePoints: 2171 Défis: 22 Message

Citer : Posté le 11/04/2019 23:25 | #


Et bien, je suis intéressé de voir comment tu vas réaliser un moteur 3D.
Qu'est-ce qui te plait le plus ? Créer le moteur graphique 3D ou le jeu ?
KikoodxHors ligneMembrePoints: 984 Défis: 7 Message

Citer : Posté le 12/04/2019 07:52 | #


Milang a écrit :
Donc pas de raycasting, mais un vrai moteur bien chiant.

Que comptes-tu faire alors ?
Un moteur de raycasting est déjà compliqué à coder, et pour ce que tu veux faire ce sera très efficace (gérer trois axes sur une croix directionnelle est abominable).
2+2=5
MilangHors ligneMembrePoints: 76 Défis: 0 Message

Citer : Posté le 12/04/2019 12:06 | # | Fichier joint


Pour le moteur 3D, je découpe chaque cube en 12 triangles de couleur noire ou blanche
Je fais le calcul des coordonnées projetées pour les 3 sommets et je remplis le triangle en même temps que le buffer pour la profondeur...
Pour l'instant le problème est la gestion des coordonnées projetées lorsque le point est derrière et cela ce voit lors du dessin des triangles
Ninestars a écrit :
Qu'est-ce qui te plait le plus ? Créer le moteur graphique 3D ou le jeu ?

En fait quand ça marche le degré de fierté est énorme , mais il y a des jours ou je casse tout ce que j'ai fait !
Sinon je trouve globalement le codage du moteur très intéressant : J'y ai appris plus (niveau math) en codant que pendant les cours depuis que j'ai commencé

Ajouté le 12/04/2019 à 12:55 :
Kikoodx a écrit :
Milang a écrit :
Donc pas de raycasting, mais un vrai moteur bien chiant.

Que comptes-tu faire alors ?
Un moteur de raycasting est déjà compliqué à coder, et pour ce que tu veux faire ce sera très efficace (gérer trois axes sur une croix directionnelle est abominable).

D'après ce que j'ai compris :
Wkipédia a écrit :
Autre limitation courante de la technique du raycasting : le champ de vision est parallèle au sol, il n'est pas possible d'avoir un axe de la caméra entièrement libre.

Or j'en ai absolument besoin pour la gestion du viseur. C'est pour cela que j'en ai commencé une puis abandonné pour passer en "3D pure"
Une alternative intéressante à toutes les boucles que vous avez vu jusque là :
For 1→X To 2:X-1→X:Next :E

Projet de jeu multijoueur : 1V1 3D
MilangHors ligneMembrePoints: 76 Défis: 0 Message

Citer : Posté le 12/04/2019 19:23 | # | Fichier joint


12/04/19 ajout image presentation
Une alternative intéressante à toutes les boucles que vous avez vu jusque là :
For 1→X To 2:X-1→X:Next :E

Projet de jeu multijoueur : 1V1 3D
NinestarsHors ligneMembrePoints: 2171 Défis: 22 Message

Citer : Posté le 12/04/2019 19:52 | #


Hmmm elle fait quoi comme dimension l'image ?
Très sympa cette image.
C'est bien de vouloir faire toi même un "vrai" moteur 3D ! Mais attention ! Pour en arriver à ce niveau là avec Windmill c'est 3 ans de boulot
Si ça t'intéresse, je peux t'expliquer comment utiliser Windmill pour ton application. J'ai presque fini la doc
MilangHors ligneMembrePoints: 76 Défis: 0 Message

Citer : Posté le 12/04/2019 20:22 | #


Merci


Le zbuffer fait 85*64, mais pas sur l'image de présentation, qui n'est qu'un petit dessin
Et sinon pour windmill ça m'intéresse ! Après je n'ai pas besoin de toutes les fonctions, juste afficher des cubes + 1 adversaire

Une alternative intéressante à toutes les boucles que vous avez vu jusque là :
For 1→X To 2:X-1→X:Next :E

Projet de jeu multijoueur : 1V1 3D
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 12/04/2019 20:32 | #


@Ninestars: Quand tu aura terminé la doc je pense quevca intéressera tt le monde. Donc la poster serait super mais je pense que c'est prévu..?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
LephenixnoirHors ligneAdministrateurPoints: 14144 Défis: 136 Message

Citer : Posté le 12/04/2019 20:35 | #


Wow, c'est joli ça ! Ça donne envie d'y jouer :o
MilangHors ligneMembrePoints: 76 Défis: 0 Message

Citer : Posté le 12/04/2019 20:37 | #


Mais ce n'est qu'un dessin. Pour l'instant sur mon G1A j'ai 8 petits points (sommets d'un cube) que je déplace...
On en est trèèèèèèèèèèèèèèèèèèèèès loin !
Une alternative intéressante à toutes les boucles que vous avez vu jusque là :
For 1→X To 2:X-1→X:Next :E

Projet de jeu multijoueur : 1V1 3D
KikoodxHors ligneMembrePoints: 984 Défis: 7 Message

Citer : Posté le 13/04/2019 10:49 | #


Alors arrête de vendre du rêve et montre plutôt tes progrès réels
(Ou ajoute au moins l'indication que ce n'est pas une image tirée du jeu)
2+2=5

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 32 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd