Magic: The Gathering -------------------- Version en cours: 0.0.3 Objectifs --------- Version 0.0.3: - Gestion du grouppement des terrains. (FAIT) - Corriger tous les bugs connus de la version 0.0.2. (FAIT). - Gestion des abilités des créatures (Vol, Initiative, ...) (EN COURS). Version 0.0.4: - Optimiser le temps de vérification de mises à jour en faisant toutes les vérifications MD5 en 1 seule requête. - Optimiser la consomation en mémoire des cartes. - Ajouter des commandes de script pour pouvoir charger / sauver une partie. - Gestion des sorts de type fast effect (instant, interrupt, sorcery). - 75 cartes de l'édition Revised complètement utilisables. Version 0.0.5: - Gestion de la mise en jeu d'artefacts et de l'utilisation de leurs abilités. - 150 cartes de l'édition Revised complètement utilisables. - Gestion des coûts des abilités coutant autre chose que rien ou d'engager la carte. Version 0.1.0: - Modularisation de l'interpréteur de scripts par un système de plug-ins. - Rajouter des effets graphiques lorsqu'un joueur ou une créature subit des dégâts. - Les effets seront modulables et chargeables comme des plug-ins. - Un paramètre DamageEffect sera rajouté aux cartes offensives indiquant quel effet utiliser pour afficher les dégâts qu'elles infligent. Version 0.2.0: - Implémenter un écran de titre et un menu "Nouveau Duel" permettant de commencer une partie. - Implémenter le Multijoueur par TCP/IP. - Gestion complète des sorts de type Rituel, Ephémère ou Interruption. - Intégrer les symboles de sets lorsqu'ils sont présents dans le rendu des cartes. - Gérer la possibilité de spécifier un jeu de symboles alternatifs par combinaison Set + Langue. - Implémenter des paramètres supplémentaires dans les .xml des cartes relatifs à la mise en page de la carte (alignement du copyright, format d'affichage illus/copyright, couleurs illus/copyright symbole de set, etc...) Version 0.3.0: - Implémenter un Editeur de decks. - Gérer les effets permanents (Enchantements, artefacts, ...). - 200 cartes de l'édition Revised complètement utilisables. Version 0.4.0: - Gestion de l'Ante et des Mulligans. - Gérer les subtilités des parties à plus de 2 joueurs. Version 0.5.0: - Gestion complète de toutes les cartes de la 3ème edition (Revised). - Dessiner les accents dans la fonte qui sert à afficher le titre des cartes. Version 1.0.0: - Intégrer un module IA pouvant prendre la place du ou des adversaires. - Intégrer l'aspect "Collection" du jeu, avec un système d'achat de starters / boosters (avec de l'argent virtuel biensur). - 9ème et 8ème editon complètement gérées et jouables (histoire d'intégrer la majorité des nouvelles diverses règles). - Au moins 5 sets complets et opérationnels à fournir avec le jeu au moment de la sortie. Bugs Connus ----------- Aucun à l'heure actuelle, pourvu que ça dure ! ;) Changements ----------- Version 0.0.3 (Revised Jouables: 57/296) (Développement en cours): - Ajout d'un paramètre "uid" dans la catégorie "properties" des fichiers de données de cartes. Ce numéro est composé comme suit: AAABCDDD A = Set ID, B = Color ID, C = CardType ID, D = Card ID. Si une carte provenant de 2 editions différentes est dans le deck, lui attribuer un CardID identique pour chaque version. - Tri dynamique de la zone de jeu: - Les terrains de base en premier (groupés par sous-type), puis les terrains autres, groupés par UID - Les créatures en premier, triées par UID (donc par couleur puis par carte) puis les murs, triés par UID également. - Les artefacts triés par UID. - Les enchantements triés par UID. - Afin d'éviter les mises en jeu accidentelles durant le replacement automatique d'une carte, les cartes en train d'être animées ne peuvent plus être déclanchées. - Les cartes affichées en dessous de l'affichage de la main (donc non-visibles) ne peuvent plus être séléctionnées. - Grouppement des terrains de base similaires. - Changement de l'effet graphique lors de l'arrivée en jeu ou en main d'une carte. - Correction du bug de vérification de débordement lors du placement de l'aperçu d'une carte. - Traduction des textes encore non-traduits de la console de chargement et de la ligne de commande. - La carte d'aperçu n'empêche plus de lire la barre de texte de la zone de la main (pratique pour switcher d'abilité). - Correction d'un bug qui faisait apparaitre des taches bleues lors de la transition entre l'écran de chargement et l'écran de jeu. - Le nombre indiqué pour les dégâts distribués sur une cible est plus facilement lisible. - Correction d'un bug qui faisait que la résolution de dégats ne fonctionnait que pour le premier bloccage. - Ajout d'un symbole R.I.P. pour mettre une créature en évidence lorsque sa mort est imminente. - Correction d'un problème de placement des cartes dans la main lorsque cela remplissait plus d'une ligne. - Correction d'un bug qui faisait réagir de facon instable lorsqu'on selectionnait une cible dans une zone scrollée. - Ajout d'un mode SandBox pour le test (permet d'être en mode test et d'avoir 99 cartes en mains maximum, jouer 99 terrains par tour, et tirer 10 cartes.) (ligne de commande -S ou --sandbox) (non-documenté). - Correction d'un bug qui faisait disparaître les créatures en attaque et défense si elles étaient au bord de l'écran. - La taille de la zone des cartes en mains s'adaptera désormais dynamiquement au nombre de lignes de cartes en main. - Correction d'un bug qui faisait disparaître le bloqueur lors du choix de qui bloquer. - Les cartes de la zone de jeu ne clignottent plus lorsqu'on définit les bloqueurs. - Correction d'un bug faisant mal réagir le paiement à l'avance en mana ayant un coût en un mana spécifique suppérieur à 1. - Correction d'un bug qui faisait planter lorsqu'on presse la barre d'espace et qu'aucune carte n'est séléctionnée. - Correction d'un bug de "créatures-fantômes" qui se battaient après leur mort accidentellement. - Correction d'un problème de placement des terrains qui se faisait en 2 étapes. La carte va désormais directement à la bonne place. - Correction d'un problème de contre-fondu lors du fondu de fin de tour. - Optimisation du temps de chargement des decks en mettant en place un cache du rendu des cartes (prend beaucoup de place, 21Mo pour 94 variétés de cartes mais ça vaut la peine, le chargement est considérablement plus rapide). Activé par défaut, -U pour ne pas l'utiliser. - Amélioration de la qualité du filtrage des images lors de leur redimensionnement (GPU Side). - Correction d'un bug qui faisait que les terrains adverses n'avaient pas la bonne échelle lors de la résolution des dégâts. - Ajout des commandes de script suivantes: UNTAP - Correction d'un bug de rendu de cartes qui faisait que l'alignement du commentaire ne correspondait pas toujours à celui du reste du texte. - Correction d'un bug qui faisait bouger n'importe comment les créatures-artefact lors du réarangement de la zone de jeu. - Correction d'un bug qui empéchait la mise à jour du texte dans la barre de la zone de la main lorsqu'on pointait sur la première carte. - La vitesse du scrolling vertical des zones a été doublée. - Gestion des capacités de combat de traversée de terrains, vol, piétinnement, protections, défenseur, ne s'untap pas, ne se tap pas, bloque les créatures volantes, inbloquable par murs/couleur/artefacts, attaque forcée, bloquage forcé (leure). - Ajout d'un tooltip avec des informations sur la carte sous le curseur et les actions possibles (s'affiche au bout d'1 seconde). Version 0.0.2 (Revised Jouables: 26/296) (08.11.2006): - Ajout du support de curseurs animés. - Ajout d'un curseur "Sablier" en forme de dos de carte Magic tournant lors de l'écran de chargement. - Ajout du support pour 2 joueurs humains à tour de rôle en "Hot Seat" (solution temporaire, l'adversaire pouvant intervenir, pas gérable en hot seat, sera remplacé par le netplay rapidement). - Ajout des variables "de profil" du joueur, indiquant sa couleur et son nickname (Par défaut Player 1/Player 2 en attendant l'éditeur de profils de la version 0.2.0). - Séparation de la zone de jeu verticalement. Moitié inférieure = Zone de jeu du joueur, suppérieure = Zone de jeu de l'adversaire. Ligne de séparation = Informations sur les joueurs. - Lors d'une partie à 2 joueurs, le gagnant est indiqué sur l'écran de fin de partie. - Amélioration de la gestion des collision: Les cartes étant dans la main auront la priorité et le clic n'est appliqué que sur une des 2 cartes (celle en main). - Si aucune intervention n'est proposée entre les 2 phases principales, la 2ème n'est plus proposée. - Correction d'un bug qui faisait que la console de message n'était pas toujours affichée correctement. - Gestion de la phase de déclaration des attaquants et intégration de ses conséquences à la phase de résolution des dégâts. - Lorsque la main passe d'un joueur à l'autre, les cartes disparaissent toutes et réaparaissent en fondu enchaîné. - Ajout de l'affichage de la zone de jeu de l'adversaire dans la partie suppérieure de l'écran. - Ajout d'une nuance de transparence du curseur lorsque le bouton gauche de la souris est enfoncé. - Mise en place d'un système de cache qui détecte si une carte identique a été rendue. Accélère considérablement le chargement des decks des autres joueurs lors de parties à plusieurs utilisant des cartes similaires. - Ajout de la possibilité de faire défiler la zone de jeu du joueur et de l'adversaire verticalement. - Ajout du nombre de cartes restants dans la bibliothèque et dans le cimetière au centre de l'écran. - Un joueur avec sa bibliothèque vide à la fin d'un tour meurt. - Correction d'un bug qui faisait que lors de la phase de défausse, on pouvait parfois accidentellement défausser 2 cartes. - Correction d'un bug qui faisait réagir parfois une autre carte que celle étant sous la pointe du curseur. - Ajout des points de vie du joueur et adversaire en cours sur la barre centrale à côté de leur nickname. - Correction d'un bug qui permettait de choisir parmi les créatures adversaires en déclarant les attaquants. - Gestion de la phase de déclaration des bloqueurs et du choix de la carte à bloquer. - Gestion de la résolution des dégâts (ne tient pas encore compte des capacités des créatures (vol, etc...)). - Réorganisation de la zone de jeu lorsqu'une carte est détruite. - Changement d'approche pour une approche plus dynamique dans la façon de placer les cartes sur la zone de jeu. - Les cartes en "Sumonning Sickness" ne sont plus "bêtement" engagées à l'invocation bien que l'effet soit le même que si elles étaient engagées à l'exception qu'on peut les utiliser comme bloqueurs. - Replacement dynamique intelligent en fonction de la phase de tour en cours (pendant la phase de combats, les créatures passent en haut). - Correction de certains petits problèmes de l'highlight de cartes. - Correction d'une partie des problèmes d'affichage dans les résolutions autres que 1024x768. - La carte séléctionnée ne s'affiche plus par dessus la main. Version 0.0.1 (Revised Jouables: 26/296) (27.10.2006): - Fix d'un problème qui faisait que l'application ne fonctionnait que compilée en mode "Debug" (du coup la version 0.0.0 "publique" ne fonctionne pas). - Recodage complet de la séquence de démarrage du jeu et de nouvelle partie avec un mechanisme de chargement détaillé. - Amélioration de la fréquence d'affichage lors d'interactions distantes. - Transitions par fondu enchainé d'un fond d'écran à un autre. - Gestion de la mort du joueur. - Ajout de messages d'aide en lancant le jeu avec une syntaxe demandant de l'aide ou une syntaxe erronée ou incomplète. - Ajout de noms de variables longs à l'interprétation de la ligne de commande (-d --> --deck, -w --> windowed, etc...) - Ajout du paramètre -n / --no-update aux options de la ligne de commande. - La console de messages ne s'affiche plus par la souris au bord de l'écran mais avec la touche TAB. - Recodage complet de la gestion des zooms sur les cartes. La version actuelle fait réelement un zoom au lieu d'afficher une carte d'apercu par dessus. (Gestion du replacement en cas de débordement à revoir, pose problèmes dans les résolutions autres que 1024x768) - Correction d'un bug qui permettait de cliquer sur une carte à invoquer dans la main alors qu'une carte est déjà en cours de paiement. - Mise en évidence de la carte séléctionnée (la dernière carte sur laquelle le curseur est passé). - Fusion des 3 fonctions de rendu de texte afin de ne pas modifier l'interpréteur 3 fois pour chaque modification (pour les cartes, pour les textes à l'écran et pour la console). - Ajout du support de changement de couleur dans l'interpréteur de textes (utilisable à la fois dans le texte des cartes et de la console mais surtout destiné à la console). - Ajout du support de changement d'alignement dans l'interpréteur de texte (utilisable uniquement pendant le rendu des cartes, dans les autres cas l'alignement est faisable sans) (lorsqu'un texte est réaligné, cela ralentit considérablement le temps de chargement de la carte... À améliorer.). - Ajout des accents et de l'alignement dans le texte des cartes dans les .xml. Version 0.0.0 (Cartes Revised complètement jouables: 26/296) (Terminé le 21.10.2006): - Passage à BlitzMax 1.22. - Modularisation du code source. - Fontes, symboles et curseurs inclus dans le fichier binaire. - Zoom sur la carte sous le curseur avec le bouton droit de la souris. - Optimisation majeure du chargement de cartes similaires lors du chargement d'un deck. - Optimisation majeure de la generation du zoom de la carte, maintenant instantanne. - Correction de quelques problemes d'animation mineurs. - Grande amélioration de la lisibilité du texte de la carte. - Fonte du texte de la carte plus ressemblante à l'originale. - Ajout de carractères accentués à la fonte des titres de cartes (sans les accents pour le moment, mais au moins les caractères d'affichent). - Correction du problème de chargement de cartes avec des "'" dans le nom. - Correction du problème qui empéchait le chargement de certaines cartes avec plusieurs symboles à la suite dans le texte. - Amélioration du rendu du texte: Si le texte de la carte déborde du cadre, il sera automatiquement redimensionné. - Ajout de nuances et de détails à la barre de progression. - Ajout des bordures de cartes au rendu des cartes. - Gestion de la zone d'affichage des cartes en mains (Apparaît si le curseur est en bas de l'écran ou que H est pressé. Se redimensionne dynamiquement.). - Ajout du réglage de la résolution via la ligne de commande - Légère optimisation de la consommation en RAM. - Ajout de l'affichage du texte de la carte dans la barre de cartes en mains lorsque le curseur pointe dessus. - Gestion du déroulement d'un tour et implémentation des "piles evenementielles" de script des évenements se reliant aux phases d'un tour. - Mise en évidence des cartes jouables. - Ajout d'une temporisation pour empécher les changements de phase. Max 1 changement par seconde. - Réduction considérable du pack data. Le moteur de jeu téléchargera les images à mesure des besoins lors du chargement de deck. - Suppression de l'affichage "test" de cartes tournantes encore dans la bibliothèque. - Gestion complète de la phase de défausse. - Implementation d'un réalignement des cartes dans la main lorsqu'une carte est jouée ou défaussée. - Il est désormais possible de mettre des terrains en jeu et d'en tirer du mana (première fonction de script "ADDMANA" implémentée!) (Disposition des cartes à revoir). - Gestion de la phase de dégagement. - Gestion du Manaburn. - Accélération des animations (vitesse des effets visuels, aucun rapport avec les performences.). - Les terrains restant en main sont désormais marquées comme non-jouables (à moitié transparentes) lorsqu'on atteint le nombre maximal de terrains joués par tour. - Lorsqu'on passe le curseur sur une carte en jeu qui possède des abilités, le texte dans la zone de la main ne contient non pas le texte de la carte mais le texte de l'abilité actuellement séléctionnée sur la carte. - Ajout d'une console d'affichage des évenements (apparaît en mettant le curseur tout en haut de l'écran). - Gestion du choix de l'abilité à utiliser (--> Les double-lands sont désormais utilisables!) à l'aide de la barre d'espace (affecte la carte sous le curseur) (Solution temporaire en attendant de faire un choix à la souris). - Correction de quelques petits problèmes lors de la mise en évidence des cartes et de la phase de défausse. - Téléchargement à la demande de tous les fichiers à l'exception du binaire. Le pack data est désormais obsolète. - Mise à jour automatique au lancement (si la connexion à Internet fonctionne) des cartes et decks de base (avec vérification MD5). - La console permet désormais de saisir des commandes "à la quake style". C'est en fait un interpréteur de script en temps réel avec vérification de syntaxe. Une aide précieuse pour le débug à venir sur l'interpréteur. - Ajouts de fonds d'écrans afin de mieux délimiter les différentes zones de l'interface de jeu. - Nettoyage du code source et commentage rudimentaire. - Suppression d'un bug lors de la phase de défausse qui faisait que la carte défaussée ne disparaissait pas. - Gestion du paiement du cout d'invocation d'une carte. - Gestion préliminaire de l'invocation de créatures (Work in progress). - Correction d'un bug critique dans le code de changement de zone des cartes Pre-0.0.0: - Editeur de cartes via Web. - Cartes au format XML. - Chargement et rendu des cartes dans le futur moteur de jeu. - Gestion de decks. - Gestion des animations des cartes lors de leur placement / deplacement. Commandes --------- Enter: Durant la partie: Terminer la phase en cours. Console de messages: Executer la commande en cours. 0 à 9 pendant la rés. des dégâts: Définit le nombre de dégâts à subîr pour la créature séléctionnée. H: Afficher les cartes en main. Flèches Haut/Bas: Durant la partie: Faire défiler la zone de jeu du joueur ou de l'adversaire selon la position verticale de la souris. Console de messages: Se ballader dans le buffer de saisie de la console. PageDown/PageUp: Console de messages uniquement. Faire défiller le buffer de sortie de la console. Barre d'espace ou clic droit quand zoom: Changer l'abilité en cours de la carte sous le curseur. Clic droit sur une carte: Zoomer sur la carte. Résolution des dégâts: La créature sous le curseur subit 1 dégât en moins. Clic gauche sur carte: Si la carte est en main, la jouer (si elle est mise en évidence). Si la carte est en jeu, activer son abilité en cours ou s'il s'agit d'une créature et que la phase est la déclaration des attaquants ou des bloqueurs, la déclare comme tel. Résolution des dégâts: La créature sous le curseur subit 1 dégât en plus. ESC: Quitter. TAB: Afficher/Cacher la console de messages. Ligne de commande ----------------- Le jeu dispose de la possibilité de lui indiquer certaines valeurs en le lancant. Pour plus d'informations, lancez le jeu par la syntaxe suivante: ./magic --help Format des fichiers de Decks ---------------------------- Chaque ligne est construite comme suit: Nom_Carte_EN Set Code_Langue Num_Illustration Qte Bords Chaque valeur est separee par une tabulation. le nom de la carte et du set se trouvent dans les .xml des cartes dans "cards/". Code_Langue peut valoir FR ou EN. Num_Illustration vaut 0 sauf si la carte existe avec plusieurs dessins differents. Qte peut valloir n'importe quoi, mais ne pas depasser un total de 500 cartes. Bords définit la couleur du bord de la carte, peut valoir B ou W pour Black et White. Placez vos cartes à images similaires (si changement de langue et/ou de bord uniquement) à la suite afin d'optimiser le temps de chargement du deck. Langage de scripts de cartes ---------------------------- Les commandes de scripts supportées par le moteur seront documentées ici à mesure que le support pour ces dernières est ajouté. Commandes: ADDMANA - Ajoute mana de couleur à la réserve du joueur en cours. peut valloir BLACK, RED, GREEN, WHITE, BLUE ou COLORLESS. Objectifs accomplis ------------------- Version 0.0.0: - Gestion du déroulement des tours. - Gestion complète (mise en jeu, utilisation) des terrains. - Ajouter la saisie de commandes de script à la console de messages. - Téléchargement des illustrations des cartes à mesure des besoins. - Gestion des abilités de cartes "gratuites". - Ajouter une image de fond pour décorer la zone de la main, du panneau d'informations, et de la console de messages. - Amélioration de la barre de saisie de la console (Gestion backspace, buffer, remise à zéro). - Commentage et nettoyage du code source. - Gestion de l'invocation des créatures. Version 0.0.2: - Gestion de la mort d'un joueur. - Gestion du jeu à 2 avec un adversaire humain. - Gestion préliminaire de la phase de combats.