Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FPS EN RÉSEAU


Information sur la source

Catégorie :Jeux Classé sous : jeu, 3d, réseau, opengl, sdl Niveau : Débutant Date de création : 14/05/2007 Date de mise à jour : 26/05/2007 14:26:57 Vu / téléchargé: 9 974 / 12 516

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
C'est un petit FPS jouable en multijoueur en théorie à 8. Vous êtes un robot et vous devez tuer les autres...

Le jeu se lance depuis la console; il n'y a pas de menu; On peut parler en appuillant sur entré;le jeu affiche des message en cas de mort/connection/deconnection; on se déplace avec Z,Q,S,D; F1 ou Tab pour le score; F2 esc pour debloquer la souris; F6 quitter; On peut modifier les options en tapant "option" dans la console; il y a du son; les maps comportent des murs, des plafonds/sols, des portes, des teleporteur et des caisse de soin;les maps sont sous forme de script.

La fluidité est assez bonne: j'ai simulé un ping variant de 90 à 700 aléatoirement et c'était niquel^^.
 

Conclusion

Il y a sûrement encore quelques modifs à faire. Mais je veux absolument le finir avant début juin (après c'est le bac...) donc je le dépose tout de suite pour bénéficier de vos conseils ^^

TELECHARGEMENT:
Il n'y a que le code. Le jeu prenait trop de place.
Le jeu entier: http://d6r27h59p.free.fr/ekauqm/derniere.zip (4.5mo)

Pour les comme moi et qui n'aiment pas chercher les les lib et qui ne les auraient pas elle sont la: http://d6r27h59p.free.fr/ekauqm/libs_et_includes.zip
(pour VC++)

COMMENTAIRE:
J'ai pas énormément commenté sauf pour le fonctionnement du réseau. D'ailleurs vous avez dans le zip un fichier réseau.txt ou le fonctionnement du jeu est expliqué. Au départ c'est un brouillon donc ce n'est pas très propre et plein de fautes d'orthographes.
Le code est entièrement en français (sauf inatention). Je me suis appliqué parce qu'avant il y avait souvant des fonctions du genre GetTaille() ou des variables IsLePersoWinner... Et la compréhension est plus facile en francais.

BUGS:
Pour ce qui est des bug connus, le seul qui me vient à l'esprit c'est quand on ferme la console avant la fenêtre: il y a un message d'erreur. Il faudrait fermer le thread de la fenêtre avant de quitter mais je sais pas si c'est possible d'exécuter une action quand on ferme...

MAPS:
Si jamais quelqu'un était pris par l'idée de faire une map sa serait sympa de me l'envoyer. J'en ai pas fait beaucoup: 2 toute petite un grande. Je prévois d'en faire une ou 2 autres grandes.

PERFORMENCE:
Il fonctionne sur mon vieux  - PIII 650mhz / 256mo de ram / 32mo video :) mais que pour les petites map :(... Et à 8 joueurs il doit ramer...

SECURITE:
Je n'ai presque rien fait pour la sécurité. C'était pas mon objectif vu que c'est pour jouer entre potes... La seule sécurité c'est une vérification de l'heure de la compilation. Le client est viré automatiquement si c'est pas la même heure.
Un utilisateur mal intentionné peut aisément passer à travers les murs, se teleporter, remplacer son pistolet par un mitraillete, se rajouter des points, changer la map ou encore virer les autres clients.

J'espère que j'ai rien oublié (peut-être quelques fautes...)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

14 mai 2007 21:57:03 :
Le zip ne c'était pas mis...
26 mai 2007 14:26:57 :
Petite mise à jour: - Affichage du nom du joueur quand on le regarde, C'est chian quand on sait pas sur qui on tire - Quand on parle on peut metre des 'é' et des majuscule - On peut plus désactiver l'amélioration de la fluidité dans les options car de toute façon c'est pas jouable sans (sauf en LAN)

Commentaires et avis

signaler à un administrateur
Commentaire de Kirua le 15/05/2007 16:32:59

Un petit screenshot pour les fainéants?

Et les specs côté code? Quelles librairies tu utilises? Tu compiles avec quoi? Etc :)

signaler à un administrateur
Commentaire de Kirua le 15/05/2007 16:33:45

Oups! Au temps pour moi, le screenshot ne s'affichait pas quand j'ai posté mon commentaire!

signaler à un administrateur
Commentaire de D6R26H59P le 15/05/2007 19:52:09

Si tu lit un peu tu vera facilement que c'est VC++ que j'utilise... Sinon pour les libs j'utilise SDL/opengl/glut/fmod/winsock2, sa aussi tu peu facilement voir...
Sinon qu'est que tu appelle les "specs côté code"?

signaler à un administrateur
Commentaire de Cyr62110 le 15/05/2007 20:47:59

Bon travail, il faut avoir le courage de déveloper un FPS online.
Sinon tu travaille avec quoi pour le réseau, j'arrive pas vraiment a determiner le type de connection : FTP,etc...
Bonne continuation si tu souhaite le mettre à jour.
Bye

signaler à un administrateur
Commentaire de D6R26H59P le 15/05/2007 21:05:34

C'est une connection TCP/IP avec winsock. Toutes mes connaissance sur les socket son là: http://c.developpez.com/WalrusSock/ à quelques détails près...

signaler à un administrateur
Commentaire de Cyr62110 le 16/05/2007 14:37:25

Merci, je vais pouvoir maintenant essayer les connections TCP/IP.
Bonne Continuation.
Bye

signaler à un administrateur
Commentaire de XT95 le 16/05/2007 18:45:35

TCP/IP, pas d'UDP pour le déplacement des joueurs et tu n'as aucun lag ?

signaler à un administrateur
Commentaire de D6R26H59P le 17/05/2007 13:44:02

non en fait lors de l'envoie du message de position j'enregistre le tps sur l'ordi qui envoie. Je compare en suite sur l'ordi qui reçoit. Au message suivant je fait la difference des 2 et sa me donne le tps qu'il faut attendre. S'il est negatif je remplace l'ancien temps par le nouveau.

Pour l'UDP en fait je sais pas m'en servir... J'ai peu de connaissance, j'essaie de faire le mieux avec les moyens que j'ai. Si tu connais un bon tuto et si c'est pas trop dur je suis partant pour modifier, ça pourrait diminuer le decalage... j'ai fait une partie avec des potes et sa se joue beaucoup au hasard...

signaler à un administrateur
Commentaire de Arnaud16022 le 21/05/2007 15:45:10

Woa
Vraiment, chapeau ... ( bon mon stupide voisin me dit : " c'est moche ... j'préfère UT " ) , mais c'est franchement sympa...
Je n'ai pas encore regardé le code; reste à voir si tu as codé ça comme un cochon :p mais le résultat, je le trouve plutôt convaincant. J'ai joué tout seul à 2 sur le même PC, c'était un peu galère (vive le alt-tab ) , ça permet quand même de se faire une idée. Je vois que tu gères même la transparence.

Je reposte quand j'aurais vu ton code de plus près :)

signaler à un administrateur
Commentaire de D6R26H59P le 26/05/2007 14:33:42

Merci pour le commentaire ^^ sa fait plaisir. Pour le code j'ai essayé de faire propre, j'espere que c'est bien.
Sinon j'ai joué à 4 l'autre jour par internet et c'est marrant ^^. Par contre en général on sait pas trop ou tirer à cause du décalage. Mais ça c'est vrai pour tout les FPS en réseau quand c'est la première fois qu'on joue...

signaler à un administrateur
Commentaire de Arnaud16022 le 26/05/2007 16:03:58

Quelques remarques vite fait:
Pas assez d'encapsulation ! regarde balle.cpp par exemple ... là dedans devrait y avoir un truc genre draw(), update(), checkCollision()... aucun de ses membres ne devrait être public, aucun.

Touches[4] -> bien, tu ne l'as pas hardcodé :) +1 pour toi, mais -1 car faudrait le faire aussi pour la souris, idéalement :p

Si j'ai bien compris, pour toi, Scrit = Map ?? eclaire moi ...
et c'est compteur, comme compter, et non conteur, comme raconter ;)

Inversion et InverseInt : arrg, alors 1) ca a 2 noms différents comment tu fais pour t'y retrouver, la surcharge ça existe et 2) utilise les templates. ça t'inversera tout ce que tu voudra.

DessinePave et très bourrin. Passe par un FBO, ou , au minimum ( vu que c'est un peu chiant à mettre en place de manière sécurisée ) un array. C'est tue-perfs, ça. Encore pour le dessin du perso passe encore, mais pas trop quand il s'agit de la map.

if BALLE_DANS_INTERVALLE // Dieu que c'est crade

Ta gestion des balles te fait courir droit au bug !! ok tu vérifies si (Conteur>=BALLE_MAX), mais si tel est le cas, tu risques de supprimer l'une des balles au prochain tir, c'est balot. Tu devrais plutôt boucler sur ton tableau et prendre la première balle " morte ", et grader un compteur pour savoir où était la dernière balle morte trouvée, ça peut éviter de reparcourir le tableau à chaque fois et, dans certains cas, optimiser un peu.

La gestion du réseau a l'air pas mal du tout :) idem pour les thread :)

Voilà je pense que c'est tout, c'est déjà pas mal ;)
@+, bon code.

signaler à un administrateur
Commentaire de Kirua le 26/05/2007 19:24:09

"if BALLE_DANS_INTERVALLE // Dieu que c'est crade"

Oui, mais ça rime.

désolé.

signaler à un administrateur
Commentaire de D6R26H59P le 30/05/2007 19:45:04

Quelques répondes vite fait:

- Pour l'encapsulation j'ai pas cherché à faire niquel. Mais ton exemple est mal choisi ^^. Si tu regarde dans tir.cpp tu vera que ce que tu dit est fait.
- Pour les map c'est le terme de script qu'est surement mal choisis. Ouvre une map ou regarde le fichier "comment faire une map.txt" C'est tout expliqué.
- Inversion() sert pas. J'ai oublié de l'enlevé. Et je connais pas les template :(... J'ai apris sur des petits tuto j'ai donc pas une connaissance exhaustive.
- J'vais encore passer pour un ignar mais c'est quoi un FBO? Puis vus que c'est vraiment que le perso qui l'utilise j'ai pas cherché à faire mieux
- Jtrouve que if BALLE_DANS_INTERVALLE est plus plaisant à l'oeil que ((BALLE_X_MIN*UNITE<Balle[i].X)&&(Balle[i].X<BALLE_X_MAX*UNITE)&&(BALLE_Y_MIN*UNITE<Balle[i].Y)&&(Balle[i].Y<BALLE_Y_MAX*UNITE)&&(BALLE_Z_MIN*UNITE<Balle[i].Z)&&(Balle[i].Z<BALLE_Z_MAX*UNITE))
- Pour les balle jme suis dit que c'était suffisant. Vus qu'à grande distance la chance de touché est presque nule et que la balle vas suffisament vite:
Si on considere qu'on touche jusqu'à 400u (Ce qui correspond à plus de 2 minutes de marche sans interuption), Vu qu'on tire 3 balle par seconde max, Si les 8 joueur tire en même temps le nombre de balle qu'il faut est 3*8*4=96.
- Pour le réseau: C'est sur quoi je me suis le plus appliqué :)

signaler à un administrateur
Commentaire de Unenlagia le 12/08/2007 17:48:43

BOULETE !!!! :\


j'ai cliquer sans faire expres sur assigné 5 a cette source...

signaler à un administrateur
Commentaire de SamyPesse le 23/06/2009 14:02:12

vraiment de l'excellet travail !!!!!!!!!!!!!!!!!!!!!!
je vais me baser dessus pour mon fps, :) je viens de comprendre le fonctionnement des collision et du mode reseau !!! ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

[SDL - OpenGL - POO] cherche collaborateurs pour jeu 2D [ par MrdJack ] salut, je projetes de faire un jeu 2D de type bomberman/dynablaster en SDL/OpenGL/POO, je cherche des programmeurs interress&#233; ayant juste des not J'ai besoins d'aide please ! [ par mondrone ] #include #include SDL_Surface *screen = NULL; void demarre_opengl(); void creer_fenetre_opengl(); void init_opengl(); void stop_opengl(); void tou SDL/Glut Direct3D/OpenGL ... [ par mondrone ] Je pense que certaines personnes ont deja du poser cette question, et si c'est le cas merci de m'indiquer le post en question car je ne l'ai pas trouv Interfacer 3DSMax avec DirectX ? [ par bubbathemaster ] Bonjour,Il y a quelques mois je me suis mis &#224; m'interresser en d&#233;tails &#224; DirectX. Ma premi&#232;re approche a &#233;t&#233; d'utiliser Tutoriaux Complet SDL OpenGL C++ [ par Fireflect ] Bonjours, Je recherche des bons tutoriaux sur le m&#233;lange OpenGL SDL C++ sans glut ou quoi que ce soit d'autre avec des sources bien optimis&#233 Visualiser des objets 3d [ par philas ] Bonjour! Je n'ai strictement aucune connaissance en c++, alors peut-être pouvez-vous m'éclairer: Je travaille sur un jeu 3d en collaboration avec un p Différence SDL - SDL avec OpenGL et OpenGl [ par Turok ] Donc voila, j'ai recemment commenc&#233; &#224; programmer en C++ avec SDL. La question que je me pose, en sachant que je ne veux faire que de la 2d, menu et opengl [ par turie ] J'ai commenc&#233; de faire un petit jeu en opengl en c++ via glut qui tourne. Maintenant j'aimerai y integrer un menu dans la meme fenetre, mais je Modelisation facile 3D avec OpenGL [ par nico4nicolas ] Bonjour, J'ai pour projet de modeliser un visage en trois dimensions a partir de photographies, mon probleme est que je suis un veritable novice en ce texte openGL et SDL [ par vangeurmasker ] Bonjour Je cherche &#224; afficher du texte dans une fen&#234;tre OpenGL g&#233;r&#233;e par SDL. Mon application doit &#234;tre portable sur windows


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.