Moi
Hello, marchred, 23ans, survie en France.
le Jeu
PolygonWars (nom honteusement pompe d'un jeu du même nom) est un RTS 2D multiple-joueurs
Comme il n'y a aucune IA vous devrez être plusieurs pour jouer, il n'y a pas de limite de joueur au passage.
L’idée c'est de commander a plusieurs une armée ou chacun peut avoir son rôle.
Si par contre les taches viennent a manquer les joueurs peuvent directement prendre le contrôle d'une unité tout en gérant les unités a portée de vue
Il s'agit ici d’être un minimum original en proposant un gameplay a peu près potable.
Car oui, le jeu est moche (bourre de sf::Shape), le titre est pas original et les unités se déplacent case par case.
Gamplay
Vue de dessusContrôle a la souris :- clic gauche → sélectionner
- clic gauche enfonce → rectangle de sélection
- clique droit → déplacer
Les unités sont des polygones :- Elles se déplacent par cases, dans les 8 directions
- Elles possèdent des points de vie
- Peuvent posséder un effet actif gérer automatiquement
- Quand elles le peuvent, elles attaquent l’unité ennemis la plus proche
- Quand elles le peuvent, elles soigne l’unité amis la plus proche
- Peut posséder un effet passif gérer automatiquement (une sorte d'aura)
- peuvent évoluer vers un meilleur type si on y met le prix
- peuvent s’étendre pour devenir des bâtiments si on y met le prix
- peuvent être contrôle par un joueur, possède alors des avantages :
- peut passer au dessus des bâtiments et des unités
- possède un caractéristique lie a son type (vision++, attaque++, etc …)
- les effets actifs comme l'attaque ou le soin deviennent manuel (c'est plus automatique quoi)
- doit être relâcher sur une case vide (a moins de la sacrifier ou de mourir...)
Les bâtiments sont des unités plus grande et immobiles :- Prennent 3*3cases et sont immobiles
- Elles possèdent 3 fois + de points de vie que leurs ancienne forme
- prise du contrôle des joueurs et le sacrifice est toujours possible
- 255 bâtiments max
Ressource dans le jeu : le triangle- vous pouvez obtenir cette ressource en sacrifiant vos unités/bâtiments (sa dépend de son état, sacrifier un truc a 1PV ne rapporte presque rien)
- un bâtiment (l'octogone étendu) produit constamment l’unité de base, s'il ne peut pas créer de nouvelle unité il la sacrifie automatiquement :
- 255 unités max
- plus de place sur la map
Une partie
Vous démarrez une partie dans un des deux seuls camps (bleu et rouge), vous ne possédez qu'une unité, un octogone
sa capacité de base est de pouvoir tirer des projectile qui convertissent toute unité ennemis en unité allie
sa deuxième capacité est qu'une fois devenu un bâtiment, elle produit des triangles, l’unité de base, a une vitesse de 1 toute les 3 secondes
A vous de voir si vous voulez déplacer l'octogone avant d'en faire un bâtiments, bien qu'en général, la production soit plutôt urgente
Le triangle est un unité faible, capable d'attaquer, mais possède surtout la meilleur vision de toute les unités.
A partir de la vous avez le choix
- explorer la map avec le triangle
- le sacrifier pour peut être faire évoluer le prochain triangle
- le muter en bâtiment pour qu'il deviennent l’équivalent d'une tour de guet (avec un encore meilleur champs de vision)
Puis vous êtes tenté de faire évoluer un triangle, il deviendra un carré, le carré n'attaque pas, mais possède un champs de force
Le carré régénère sont champs de force et c'est tant mieux car il est a peine plus résistant qu'un triangle.
Son champs de force mesure 3*3 cases, il peut donc protéger d'autre unité, il passera a 9*9 case si il devient un bâtiment
Viens ensuite le pentagone, équivalent d'un soldat.
Il attaque plus loin, plus vite et plus fort qu'un triangle, et c'est tout ce qu'on lui demandera
Le transformer en bâtiment en fera une parfaite tourelle de défense
La nouvelle évolution sera l'hexagone, un soigneur, il vise les allies les plus faible en point de vie.
En bâtiment, il générera un aura de régénération pour les bâtiments et les unités (non cumulable).
Avec 7 cote, l'heptagone est une unité d'artillerie, ses tirs explosent et font des dégâts de zone.
Inutile de décrire les effets d'une tel unité une fois devenu un bâtiments, un massacre.
Son point faible? sa très faible vision du terrain.
Viens ensuite l'octogone, mais passons, nous la connaissons déjà.
Le Nonagone est une unité invisible quand rien le la touche, même en déplacement.
Elle n'attaque pas et deviens visible en bâtiment tout en rendant invisible tout ce qui se trouve a sa portée (9*9 cases)
Enfin, le décagone est l’unité ultime, il attaque avec des projectiles perforants passant aux des travers des unités, bâtiments et des boucliers
Sa version bâtiment est l’équivalent d'un générateur avec une aura qui boost les autres bâtiment, et si cela cachait quelque-chose ?
Technique
Ce projet est pure SFML, pas d'OpenGL, rien d'exotique donc « il devrais pouvoir marcher sous Windows » (oui je suis sous Linux
)
Tout action est « Server-side », recherche de chemin, déplacement, construction, sacrifice, upgrade, action automatique et brouillard de guerre
- Donc lors des déplacement c'est le serveur qui calcul le chemin des unités, les client reçoivent juste les coordonnes de mouvement pour l'affichage.
- Lors d'une construction/sacrifice/upgrade d’unité c'est le serveur qui vérifie si les conditions sont remplis
- Si quelque-chose n'est pas visible pour un camps il n'est pas transmis aux clients du camps en question, explication :
- si une unité est invisible ou dans le brouillard de guerre, elle n'existe pas pour les client du camps adverse
- quand elle devient visible, elle est crée est mise a jour pour les clients adverses
- quand elle n'est plus visible, elle est détruite et n'est plus mise a jour pour les clients adverses
- cette « technique » me permet d’économiser des envois réseaux et d’empêcher toute triche
J'utilise la version 1.6 de la SFML (juste pour préciser)
Le jeu est Full TCP (pas d'UDP), il faut regarder le protocole réseau si cela vous semble bizarre car sa marche du tonnerre !
Le programme démarre sur une Shell en SFML, pas de menu, c'est plus pratique pour tester, plusieurs commandes :
- /help : décrit chaque commandes disponible.
- /duplex (port) : reset les données du programme et lance un serveur puis un client, très pratique pour joueur rapidement
- /server (port) : lance un serveur de jeu, très pratique pour spécialiser un machine comme serveur sur le réseau
- /client (port) (IP) : lance un client et le connecte a un serveur
- /reset : éteins le client et le serveur si ils étaient lance.
- /msg (string) : demande au serveur de broadcast un message a tous les client
- /stat : informe si un client ou un serveur sont en cours d'utilisation
- /exit : ancienne commande (Alt+F4 marche mieux;) ) pour quitter le programme
- /join (color) : prend « red » ou « blue » comme argument, sert a rejoindre un camps
- /ip : affiche l'IP locale de la machine, très pratique pour informer les autres de l'IP sur laquelle se connecter si on héberge la partie.
Avancement (dimanche 29 juillet 2012)
- les unités et leurs effets actifs/passifs sont finie (enfin, je cheat encore un peu l’unité finale)
- Tous les bâtiment et leurs effets actifs/passifs sont fait
- Système d’évolution des unités fonctionnel
- Système des buffs d'unités et bâtiments fonctionnel
- Système d'attaque/soin et d'aura fonctionnel
- Système de camouflage et aura d’invisibilité fonctionnel
- Réseau stable est optimisé
- Carte maximale de 255x255 cases
- transmission et affichage des modification des HP, shieldHP et buff
- priorité aux bouclier pour les collisions des projectiles adverses
- Projectiles avec durée de vie et non coordonnée a atteindre
- optimisation du rendu du brouillard de guerre
En cours :
- Je pars 2 semaines en Angleterre, je ne pense pas que le projet avancera vite, dsl
Reste :
- Nettoyage du code avant diffusion
- revue de la conception globale du programme
- rendre la partie Network générique
- Concentrer dans des class communes les nouveaux éléments communs de manière logique
- Séparer proprement le projet dans des fichier source nommée de manière logique
- Séparer proprement le projet dans des répertoire nommée de manière logique
A venir :
- HUD avec les ressources actuelles en triangles
- HUD avec statut de l’unité sélectionné
- HUD avec Minimap
- représentation plus graphique de la vie et de l’état des boucliers
- Contrôle manuel des unités
- Véritable carte stockable et loadable
Idees a confirmer :
- XP aux unités et bâtiments, attribution d'un grade augmentant l'efficacité
- HUD avec explication de l’unité sélectionnée
- nouvelle race aerienne : les "double polygon"
- nouvelle race modifiant le terrain : les "spheres"
- nouvelle race specialiste des debuff : les "electrons"
- modification de la carte par certaine attaques
- unité kamikaze
- unité poseuse de mine
- unité avec un tir orbital
- unité pouvant modifier le terrain
- unité avec tir d'attaque ou de soin rebondissant plusieurs fois
- unité avec aura de debuff
- unité avec aura infligeant des dégâts et laissant juste 1 PV a ses victimes
- unité radar (différent du triangle, on sait qu'il y a quelque-chose sans savoir quoi)
- unité avec un tir (ou une aura) ralentissant le temps des ennemis
- unité pulsar infligeant des degats de zone tout autour d'elle
- Carte avec élément interactifs, voir des aura fixe qui buff/debuff
- capacités spéciales obtenu lors de certaine construction
- balayage radar d'une zone de la carte
- groupe d’unité clone en leurre holographique
- bouclier géant temporaire et impénétrable
- berzerk doublant la fréquence/puissance de tir d'un groupe d’unité
- surproduction sans pouvoir faire de sacrifice/évolution pendant un temps
- soin de zone sur les unités et bâtiments
- arbre de talent modifiant les unités/bâtiments
- unité expérimentales prenant + d'une case d'espace
Notes Diverses :
- Le déplacement de plus de 100 unités ralentit le serveur, mettre une limite ou optimiser le pathfinder
- prévoir ce qu'un tricheur pourra faire des infos reçu du serveur
[attachment deleted by admin]