TheFumelgo

[Jeu][TCG] Hexagon Eluvian Cards

9 messages dans ce sujet

HEC

 

Version Courte (31/12/16):

Ce jeu (fait sous Unity) sera un TCG (hearthstone, magic, yugioh,...), où le terrain est une map avec des tuiles hexagonales et pas une simple planche. Le joueur pourra modifier le terrain soit directement soit via les propriétés des unités qu'il posera dessus. Evidemment, le terrain est procédural (tu augmente la hauteur ? pouf c'est une montagne, il neige). Le biome et le dénivellé affectera les combats, etc... Le joueur ne micro pas ses unités, mais peut par exemple placer des montagnes pour les forcer à prendre certains chemins.

 

Version Longue (31/12/16):

Spoiler

 

J’étais tranquille, j’étais pénard, accoudé au comptoir… Je viens de finir un partie de Civilization V, je suis bien.

Ça fait un bout de temps que j’ai envie de recommencer à travailler sur un jeu. Et c’est à ce moment là que je vois l’annonce de Krozmaga par Ankama Games.

Et là, c’est le drame…

image

Un jeu de carte, des tuiles ? Mais oui, c’est complètement ce que j’aimerais faire. A quelques nuances près.

Déjà, je l’ai précisé, je viens de sortir de Civilization V, donc pas question de faire autre chose que des tuiles hexagonales ! De plus, le terrain n’est pas vraiment mis au coeur de leur jeu. Moi je veux des cartes pouvant changer l’aspect du terrain, qui influencerait les combats futurs…

image

 

 

Je me suis dit que le terrain pourrait ressembler un peu à ça. Avec plus de dénivelé.

Répondons à quelques questions sur le design.

Comment le terrain peut-il être modifié ?

On pourrait modifier 3 paramètres : l’altitude, la température, et l’humidité. Bien sûr, les sources créent des rivières, et on peut imaginer des lacs en aval. Pratique pour noyer une armée…
J’hésite entre permettre ces modifications via des cartes dédiées (le joueur aurait 2 decks, et 2 jauges de mana différentes), ou donner cette capacité aux unités. On peut aussi imaginer un mix des deux ou certaines unités ont un peu d’influence.

Comment les unités vont interagir ?

Chaque unité à des points d’attaque et de vie. (De l’ordre de plusieurs centaines). De plus, elles ont une portée en nombre de cellule (tuile). Elles ont également un type (feu, air, eau, terre, or, éther ?), qui ont des forces et des faiblesses (et des biomes préférés ?). Je ne suis pas sûr pour cette histoire de type, si quelqu’un sait me donner son avis sur la question, ça ferait plaisir. Pour la poser, il faudra dépenser l’équivalent de son coût en cristaux de mana.

Comment fonctionneraient les pièges ?

Il faut faire la différence entre des pièges stratégiques (créer un aval et y noyer une unité), et les cartes pièges. J’imagine des cartes pièges ayant un certain rayon d’action, pouvant uniquement être posé par une unité. Bien sûr le joueur adverse ne le voit pas être posé.

Quid du tirage des cartes ?

Alors là, j’ai envie de dire : rien d’original. Des cristaux de mana, qui se remplissent durant les 10 premiers tours. Une pioche par tour, sauf effet spécial qui fait piocher.

Le terrain doit-il être une plaine à la base, ou généré ?

Alors, là aussi, la question vous est ouverte. Même si je partirais plutôt sur une plaine, ce qui permet de laisser moins de place au hasard dans un jeu de stratégie.

Conditions de victoire ?

Pas vraiment d’idée. Un nexus j’imagine.

Ou le joueur peut-il invoquer ses unités ?

Pas trop réfléchit. Près du nexus j’imagine.

Du coup, j'ai suivi un tutoriel sur la création de terrain hexagonal sous unity. J'ai bien sûr adapté 2-3 choses pour que ça corresponde à ce que je voulais faire. image

(ça c'est du suivage de tuto)

Première amélioration personnelle : les brosses. Pour être exact, tout mon système de modification du terrain.

tumblr_inline_oil9vvACvP1uv67ic_500.png

Voilà mon composant “Hex Brush”. A celui-ci, je dois accrocher la carte à modifier (le terrain), la brosse active (qui définit la forme : en cercle, en carré, en triangle, en étoile, en ligne, …), et l’effet actif (ici, la couleur pour tester, mais après, la hauteur, température, humidité, etc…).

De plus, on définit aussi une puissance de base (nombre des pdv soignés, hauteur ajoutée, température ajoutée, …), et bien évidemment, la taille de la brosse.

Fonctionnement ? Hex Brush appelle Active Brush et lui transmet toutes les infos. Active Brush itère sur toutes les cellules et transmet les informations + la distance en appliquant l’effet. L’effet est une méthode de la classe TerrainEffect ou dérivant. Un des intérêts est qu’on peut définir un taux dégressif sur la puissance de l’effet, soit dans la brosse, soit dans l’effet !

Pour l’utilisation, le joueur aura toujours une carte active. Si celle-ci est de type terrain, lors d’un clic, il y aura appel à Hex Brush, avec toutes les caractéristiques de la carte terrain.

Pour la suite, le tuto m'a proposé d'ajouter des rivières. J'ai longtemps hésité à les mettre sur le côté, voir pas du tout. Mais en les mettant sur le centre d'une case, je peux quand même les inclures dans les mécaniques de jeu (si tu attaques une case avec une rivière, t'as un malus car c'est pas facile de traverser une rivière). Et en plus, on peut donner un bonus de mouvement / élan à une unité qui suivrait une rivière. tumblr_inline_oizureMYwE1uv67ic_540.gif

Voici un exemple de carte qui pourrait apparaître en jeu dans les premières parties. Évidemment, ici on est un peu mal à l’aise cas les couleurs ne correspondent pas aux hauteurs. La prochaine modification que j’apporte est de passer des paramètres couleur / hauteur à ceux que j’ai défini pour le jeu (température, hauteur, humidité ? (que je pense avoir supprimé pour simplifier)). Ce sera fait sans tuto, car je les ai bouclés. Gros merci à http/www.twitter.com/catlikecoding !!!

Parallèlement à ça, il me faudrait trouver un thème, un nom, un logo. Les trois vont plus ou moins ensemble. Une remarque qui me fait réagir un peu est celle de Zak sur ironcraft : http://forum.ironcraft.fr/topic/1801-dat-topic–flood/?do=findComment&comment=92663
Comme quoi, le fait de modifier le terrain fait un peu Dieu vs Dieu. Travaillant en parallèle sur un JdR sur les romains, j’ai pensé à utiliser leur panthéon ou celui des grecs. Par contre, au vu de mes graphismes, hors de question d’essayer de les conserver tels quels, ce serait voué à l’échec. Plutôt partir sur une ambiance décontractée / cartoon. Fin, on verra ce que j’arrive à faire / si j’arrive à dégoter un graphiste.
J’imagine plus des dieu rigolos un peu comme dans Hercule, le film de Disney.
Cependant, pour pouvoir créer les monstres / unités spécifiques, ça risque d’être compliqué à justifier. Ce sera plus difficile mais plus agréable de recréer un panthéon. Et donc toute une mythologie, histoire, …
 

Pour ce qui est du logo, j’ai eu une petite avance :

tumblr_inline_oizvfzANd31uv67ic_500.png

C’est un H qui finit en hexagone sur le côté. Peut-être pourrais donner un peu de courbure aux traits pour mieux reconnaître le H, ou utiliser une police plus complexe permettant au H de se différencier plus du K ?

Après, on a H comme hexagone, et O comme… le nom de l’univers qu’on va créer ? Et je trouve que HO en deux lettres, c’est un peu juste. Sauf si on le prononce “ache - o”. Comme “à chaud”. Qui est pas mal pour un jeu de stratégie. J’ai cependant encore envie de rajouter une lettre, pour avoir un acronyme moins commun. La suite au prochain épisode.

 

 

Ajout de nouvelles brosses (1/1/17):

Spoiler

 

Aujourd’hui, je me suis dis que j’allais travailler sur les brosses. J’en ai rajouté deux qui me seront utiles pour la suite, portant le total à 3. Voici les trois brosses actuelles (avec le centre en blanc, et la couleur change avec la distance de vert à bleu. l’effet est appliqué au centre aussi, j’ai juste la même couleur que sur les cases où ce n’est pas appliqué) :

Cercle :

tumblr_inline_oj5kp40u3F1uv67ic_540.png
 

Croix :

tumblr_inline_oj5kr81ScZ1uv67ic_540.png
 

Ligne :

tumblr_inline_oj5ks1dBXc1uv67ic_540.png
 

Bien évidemment, la taille de l’effet peut être paramétrée comme expliqué précédemment. Pour les lignes, on clique une fois pour définir le début, et au second clic, si on est aligné et avec une distance plus petite que la taille de la brosse, l’effet s’applique.

 

 

Terrain Procédural (2/1/17):

Spoiler

 

L’étape suivante était de passer de brosses modifiant la couleur à des brosses modifiant les paramètres qui définiraient le biome :

tumblr_inline_oj61r7ojcI1uv67ic_540.png
 

On remarque déjà plus de vraisemblance dans les couleurs, puisqu’il sera très difficile d’arriver à avoir une température très différente d’une case à l’autre (les brosses de taille 0 seront très chères :D).

 

Voici un tableau des différents biomes en fonction des deux paramètres actuels :

tumblr_inline_oj62bvmOjj1uv67ic_540.png
 

Les brosses ne peuvent maintenant plus modifier les paramètres en dehors de leur domaine de validité (0 et 5 pour la Hauteur, -20 et 40 pour la température).

 

Je suis assez content car, bien que j’aie planifié un peu la structure, et le fonctionnement de ma “procéduralité”, j’ai tout codé d’un coup, et tout à fonctionné directement, sans bug. Je peux donc penser à la suite.

 

Pour ce qui est de la suite :

*Malheureusement, je perçois la perte de 2-3 images (freeze) lorsque je dois refresh le terrain. Je pense donc être obligé de retourner sur le tutoriel, et ainsi découper ma carte en chunks, pour optimiser un peu tout ça

*Maintenant que les paramètres sont “cachés”, il me faudrait un outil pour les voir. Et comme l’interface de debug unity ne servira pas dans le jeu final, autant l’implémenter. De toute façon, le joueur aura besoin de ces informations cruciales. Je vais donc développer une fenêtre qui s’ouvre au clic droit sur une case, affichant les informations nécessaires.

*On y pense toujours, mais l’ajout des cartes serait pas mal. On a techniquement toutes les fonctionnalités requises pour s’y atteler.

*Penser sérieusement à un nom. J’ai un peu travaillé mon ébauche de la dernière fois, et j’ai quelque chose de... mieux.

tumblr_inline_oj62yfaFVW1uv67ic_540.png
 

Pour la H, j’ai trouvé la solution : plier l’autre côté également, et le O devient un C comme Cartes/Cards. Pour le moment le jeu s’apelle donc HexCards (c’est le nom du dossier que j’ai pondu à l’arrache à la création du projet). Mais il manque quelque chose d’autre de plus fort, de plus unique, de plus mélodieux.

*Se documenter sur le multijoueur avec unity. Pas encore implémenter, mais se former. Je songe à une forme Peer-To-Peer, avec un envoi du résultat du match à un serveur mère, qui s’occuperait également du matchmaking. Bien évidemment, il faudra rajouter des sécurités pour les gens qui voudraient envoyer des faux résultats, ou déconnecteraient pour éviter une défaite. Je partirai sur un matchID, et pour ce match, les 2 joueurs doivent envoyer un rapport en fin de partie, IDENTIQUES. Je dois également me documenter sur des algorithmes de ranking et de matchmaking. J’ai également envie d’innover de ce côté là...

 

 

Avancement sur les cartes (3/1/17):

Spoiler

Yow ! Du coup, j’avais dit que je comptais m’attaquer aux cartes ? Un grand pas a été fait aujourd’hui (et cette nuit, durant les quelques pauses dans mon étude).

J’ai donc un template de carte qui donne toutes les informations nécessaires au joueur, et un bel exemple de carte (que je comptes utiliser par la suite, en jeu).

tumblr_inline_oj7lp3fhgl1uv67ic_540.png
 

Ce template fonctionne avec des calques sous GIMP. Du coup, si je veux changer un élement, je n’ai qu’à modifier le calque. Chaque calque sera exporté sous forme d’image séparée. Il y en a 3 notables : l’image, le fond, les “fournitures’.

Le reste, texte et biomes sont des informations tellement simples que je ne songe pas à les stocker dans une image (autant les rendre directement !).

A l’exécution, le jeu fusionnera donc les différents calques pour obtenir le bon résultat (par exemple, les fournitures dépendent de la rareté).

Je vais donc devoir coder le rendu d’une carte sous unity, et j’ai hâte d’y être :) Chaque carte pourra donc être tout à fait unique, mais sans devoir tout refaire, juste en appliquant le bon skin pour chaque calque !

Mais si je veux pouvoir appliquer du code à une carte, et stocker ses données (vie, image, etc,...), il me faut une structure pour la sauvegarder. J’ai choisi de sauvegarder mes cartes au format XML. J’ai donc fournit la structure que mes fichiers devraient respecter pour espérer finir dans le jeu :

tumblr_inline_oj7m87bNE11uv67ic_540.png
 

Toutes les cartes du jeu seront stockées dans un seul fichiers, sur lequel sera effectué le fameux checksum. Les images quant à elles seront stockées ailleurs.

J’avais vraiment envie de toucher aux cartes, mais je sais que je ne suis plus censé y toucher avant d’avoir réglé mon problème de performances.

Ah, j’ai aussi songé au multijoueur, et le P2P est ptet pas une bonne idée, en plus une partie de cartes, c’est pas un surcoût énorme pour un serveur, et le fait de centraliser simplifiera la sécurité, et permettra d’éviter la triche, je l’espère, à 100%.

 

Première tentative de Lore (4/1/17) :

Spoiler

On fait dans le classique, hein, c’est pas notre métier.

“Avant toute chose, existaient les dieux de lumière et d’ombre. Ceux-ci étaient en lutte incessante.

Les dieux de lumières ont créé 9 fils pour les assister dans leurs tâches (side note : les 9 dieux qu’on pourra incarner, pour le moment, j’en ai un en rapport avec la technologie, un avec la fête et l’amour, m’en manque 7). Ce fût très efficace, ils on réussi à chasser les seigneurs sombres, ensemble.

Les 9 dieux non primordiaux se sont chacun créé un petit îlot de paix, ayant plus ou moins cette forme :

tumblr_inline_oj9961MyHV1uv67ic_540.gif
 

Sans l’ombre, évidemment. Chaque plateau avait son propre climat, et c’était bien. Les dieux primordiaux, voyant que ça se passait bien, on décidé de s’éclipser, en créant un portail pour aller de poser dans une autre dimension. Le portail créé par les seigneurs de lumières était si brillant et si imposant qu’il déséquilibra l’univers :

tumblr_inline_oj999iWuUd1uv67ic_540.png
 

(J’en ai mis que 4 car j’avais pas plus de place) Les 9 îlots des dieux restants se sont mis à orbiter le portail, dont la lumière est si imposante que les endroits non atteints sont de nouveau sous l’emprise de l’ombre.

La mission des 9 dieux restants est d’éviter les retour des seigneurs sombres à l’aide des êtres qui se sont développés sur leurs îlots respectifs.

La couche la plus basse est le plus souvent dans l’ombre, ce qui aide à la prolifération de monstre, et la plus haute est tout le temps éclairée, aidant à l’émergence de légendes.”

Voilà, donc ça c’est le GROSSE GROSSE trame de l’univers que je comptes installer. Et comme toujours, quelques détails techniques ont influencé mes choix :

* 9 dieu, ça peut se représenter sur un grille de 3*3, ça m’arrange

*les planètes en plateau, c’est avant tout SUPER CLASSE (je trouve), et ça permet de faire un peu le lien avec l’altitude

* le fait d'avoir un îlot par dieu justifie des cartes spécifique à chaque deck

 

Je suis convaincu que je serai amené à jeter 80-90% de cette histoire, mais je garderai les planètes-disques, j’aime beaucoup trop l’idée :D

 

Premières cartes (14/1/17) :

Spoiler

Je supporte maintenant une forme de structure XML me permettant de configurer mes cartes depuis des fichiers textes :

““

<card>
    <shape>cross</shape>
    <effect>
        <name>spawn</name>
        <unit>cards/models/DeerPrefab</unit>
    </effect>
    <basePower>0</basePower>
    <radius>0</radius>
</card>

““

 

Comme vous pouvez le remarquer, ça ne fait pas vraiment de sens : ici l’effet s’applique sur une seule case, du coup, 3 des 5 paramètres ici sont obsolètes. C’est pour cette raison que je vais nettoyer un peu le code, et le restructurer :

tumblr_inline_ojrwyzU1J41uv67ic_540.png
 

Ce diagramme n’est pas complet, mais assez représentatif de ce que je veux obtenir au final. Sauf peut-être que je renommerai UnitCard juste Unit car elle sera également utilisable sur le terrain. Je n’ai pas pris la peine de représenter un package Trap Conditions, qui ressemblerait beaucoup aux Effets, et dépendrait également des évènements. J’ai sûrement encore plusieurs modifications à faire, n’hésitez pas à me faire part de remarques.

tumblr_inline_ojrxffFz8F1uv67ic_540.gif
 

Voilà ce que ça donne. Encore tellement de choses à penser (orientation de l’unité en fonction du joueur qui la pose, un code couleur, des animations, le combat, ...).

J’ai également décidé d’utiliser un taux dégressif pour mes brosses, rendant le fondu plus naturel après quelques utilisations.

 

Petite amélioration graphique (29/1/17) :

Spoiler
tumblr_inline_okjffxtx7o1uv67ic_540.png

Je me suis dit que c’était pas encore assez beau, du coup, j’ai traficoté mes classes de triangulation du terrain pour avoir des coordonnées UV (qui disent comment placer une texture).

Ensuite, j’ai modifié le shader pour permettre les normal maps, ajouté une texture et une normal map. Elles ne correspondent pas, mais maintenant, je peux changer le style du terrain en 2-3 clics !

Avancement :

Fait :

  • Terrain Hexagonal
  • Brosses
  • Rivières
  • Terrain procédural
  • Trouver un nom (HEC : Hexagon Eluvian Cards)

A Faire :

  • Terminer le système de cartes
  • Points de vie ? Conditions de victoire ?
  • Multijoueur
  • Trouver d'autres trucs à faire
  • Lore

 

Sont les bienvenus :

Des encouragements, des idées de nom / logo, des idées de cartes et de mécanique (j'en ai un bon paquet, mais je suis sûr que vous vous amuseriez à en inventer). Pour ce qui est des cartes, celles avec une image auront plus de chances de finir dans le jeu. Rappel : je pars sur un panthéon de dieux assez sympathiques (d'où des couleurs claires, vives), mais relativement sérieux (pas de dildo magique s'il-vous-plaît). Une histoire du panthéon, ..., ...

Si quelqu'un qui a des connaissances en unity veut me donner des conseils, je prends tout. (Là, je me débrouille comme vous pouvez voir, mais ne sait-on jamais).

C'est un projet que je fais seul, et donc, à priori, je ne recrute pas, du moins pas dans l'état embryonnaire des choses.

 

 

Modifié par TheFumelgo
J'ai rassemblé toutes les infos dans le premier post
2

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

Mise à jour du post.

Modifié par TheFumelgo
J'ai rassemblé toutes les infos dans le premier post
0

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai pas mal utilisé Unity à Epitech, si t'as besoin de conseils ou autres n'hésite pas :)

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

Il y a 23 heures, azword a dit :

J'ai pas mal utilisé Unity à Epitech, si t'as besoin de conseils ou autres n'hésite pas :)

Merci azword :) Si tu as mêlé ça à du multi, ça m'intéresserait (au fait, j'ai cru comprendre qu'Unity proposait gratuitement de serveurs pour supporter un jeu (20 joueurs max)). Pour l'interface graphique, je vais chercher des bons tutoriels, mais si tu as des conseils de "bon comportement", tu peux les taper dans le doute :D

 

Modifié par TheFumelgo
J'ai rassemblé toutes les infos dans le premier post
0

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le multi j'y ai touché ;) 

Je t'enverai un petit pavé plutard.

Par contre 40°c max pour le volcan on voit que t'étais dernier de ta classe en SVT :3

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour Catane (ville au pied de l'Etna) : "Son climat méditerranéen est caractérisé par des étés très chauds et très secs, les 42 °C peuvent être atteints. " (Wikipédia).

En vrai, j'avais plus trop d'idée de biome, et un truc chaud en hauteur ça collait bien avec un volcan :D Après, fallait uniformiser pour les mécaniques (on pourrait ne pas uniformiser, c'est possible techniquement, mais ce serait trop chiant pour jouer)

0

Partager ce message


Lien à poster
Partager sur d’autres sites

*modification du premier post, ajout de deux rubriques*

0

Partager ce message


Lien à poster
Partager sur d’autres sites

T'inquiètes, je suis tout aussi excité à l'idée du développement futur, mais je dois faire passer ma session avant tout :D

Pour le coup, j'ai quand même réussi à trouver un peu de temps, et j'ai rajouté les premières cartes (voir premier post, 14/01) :)

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant