04-01-2020, 01:26 PM
J'ai surtout sorti des minis-jeux sans inscription ni rien ECLERD, à part notre petite communauté de créateurs de jeux, je ne l'ai jamais vraiment fait décoller (probablement car il faudrait, encore une fois, que je le simplifie à mort dans ses mécanismes de gameplay avant de le diffuser... donc, que je passe du temps à supprimer des trucs sur lesquels j'ai déjà passé du temps!)
Sinon, côté Variispace, quelles nouvelles? Ben.. J'ai tout refondu et tout remoulé... :/
Côté gameplay
Carte galactique
D'abord, j'ai dégagé la grosse carte centrale:
Pourquoi? Parce qu'elle squattait toute la place de l'écran, rendant très difficile la possibilité d'afficher des informations supplémentaires (comme la taille des planètes, la masse, les flottes dessus, ou autre info qui sera nécessaire après). J'ai donc choisi de revenir à une disposition bien plus "tabulaire" des données. Alors, oui, certains trouveront peut-être que ça va faire un "jeu à formulaire", mais en pratique, je trouve que le formulaire (et les tableaux) n'existent pas sans raison: ce sont d'excellentes (si ce n'est souvent la meilleure!) façon de présenter aux gens des données complexes, et de recueuillir d'autres données (entrées) complexes. Donc, si je veux un jeu avec un peu de richesse, je ne m'étonne pas de voir apparaitre ces éléments tabulaires/formulaires (sur les minis-jeux, c'était différent: la faiblesse du gameplay permet de se passer de ce type d'input/output)
Types d'objets célestes
Ensuite, je vais structures les objets célestes en "types": plutôt que d'avoir un nom générique "objet céleste", j'aurai donc des étoiles, des planètes, et par la suite, des lunes, des astéroïdes, des étoiles à neutron, des trous noirs, etc. Chacun pourra alors avoir ses propres caractéristiques, et sa propre "nature": il ne sera pas possible d'extraire de la matière d'un trou noir par exemple, alors qu'un trou de ver permettrait d'être présent dans plusieurs endroits du jeu *en même temps*. Cela me permettra, au fil du temps, d'ajouter des types d'objets célestes facilement et de rendre le jeu attractif pour les vrais férus d'espace (et de faire découvrir à un peu tout le monde [moi inclus] des types d'objets exotiques!)
Pour le moment, je n'ai donc implémenté que les étoiles (cf ci-dessus) et les planètes (cf ci-dessous):
Orbite planétaire
Chaque planète aura 2 orbites: une basse, et une haute. Exit donc l'idée d'avoir un nombre d'orbites différents en fonction de la masse de la planète: c'était mon idée initiale, mais elle apporte au final plus de complexité (tant au code qu'au gameplay) que d'intérêt pour le gameplay. L'avantage d'avoir 2 orbites serait de dire que l'orbite basse permet d'extraire de la matière de la planète (ce que l'orbite haute ne permet pas), et que l'orbite haute permet de quitter la planète pour aller vers une autre (ce que l'orbite basse ne permet pas). Les joueurs devront donc changer d'orbite avant de faire certaines actions... Vous sentez venir le concept de "blocus", avec une flotte sur l'orbite haute qui empêche celle de l'orbite basse de partir?! Ou l'inverse, une flotte puissante sur l'orbite passe empêchant la flotte de l'orbite haute de venir récupérer des ressources?! Là, je trouve un intérêt de gameplay donc je garde le concept de 2 orbites, que l'on peu voir sur la page des flottes ci-dessous (il faudra que j'affiche ces deux orbites sur la page de la planète ci-dessus ainsi que la présente ou non de flotte sur ces orbites)
Flottes
Chaque flotte est constitués de vaisseaux, de différents types (bas du tableau), ce qui lui confère des caractéristiques (haut du tableau) que sa position pourra influer: si je suis en orbite haute ou basse, je n'ai pas les mêmes caractéristiques (ni les mêmes possibilités), de même suivant la masse de la planète autour de laquelle j'orbite (ou, plus tard, la masse de l'étoile). Pour l'instant, les actions sur les flottes ne sont pas implémentées (à part renommer la flotte).
Les vaisseaux
Les vaisseaux de Variispace ne sont pas pré-déterminés par le jeu: le joueur a la possibilité de les "designer" lui-même, et d'en choisir les caractéristiques: matériau de la coque, taille des équipements, composition, etc. En fonction de ces choix, le vaisseau aura des capacités et des propriétés différentes. Ainsi, ce premier vaisseau ci-dessous a la capacité d'extraire des ressources:
Mais cette capacité n'aura d'intérêt, bien sûr, que si le vaisseau est en orbite basse autour d'une planète! Un autre exemple est ce vaisseau, qui a la capacité de commander d'autres vaisseaux:
Cette capacité sera, elle, toujours active, et nécessaire si le joueur souhaite donner des ordres à sa flotte (plus exactement, faute de commandement suffisant, les ordres du joueur seront moins bien exécutés, ce qui peut faire de ces vaisseaux une cible privilégiée). Pour le moment, les algos de calcul de ces capacités ne sont pas au point...!
Je ne travaille pas sur cet équilibrage pour le moment. Aujourd'hui, je m'occupe du sélecteur permettant de choisir le matériau (l'atome) dans lequel faire la coque et les équipements du vaisseau. Exit donc la conception de molécule (je pense la mettre dans un autre jeu à part, un genre de Chimie-Eleusis peut-être?) qui alourdissait trop les choses.
Restriction des plans
Les plans des vaisseaux ont toutefois quelques restrictions: on ne peut pas les modifier une fois un vaisseau de ce type construit (on peut, bien sûr, construire plusieurs fois le même type de vaisseau: je peux avoir 10 vaisseaux de commandement qui utilisent le plan "vaisseau de commandement" que j'ai designé). De plus, on ne peut pas créer un vaisseau "de zéro": on ne peut que dupliquer les plans! Cette petite restriction, l'air de rien, est géniale car elle empêche un joueur de créer de son propre chef un vaisseau ayant les capacités "extraire ET commander", à moins de fouiller la galaxie pour espérer trouver un vaisseau de ce type (même un très mauvais vaisseau: il pourrait alors tenter de capturer ce vaisseau, ou au moins d'en voler le plan, pour ensuite le dupliquer et l'améliorer!)... Sentez-vous venir le roleplay similaire au vol des plans de l'étoile noire de Star Wars? Moi, oui...
Côté création
Je dois dire que tout s'est admirablement déroulé pendant ces vacances de fin d'année?! Aucune difficulté technique majeur n'est venue se mettre en travers du développement (franchement, j'ai trouvé ça hyper-reposant par rapport à mon taf... :/ mais je digresse!)
En revanche, côté "création du gameplay", put*** j'en ai chié! La reconstitution de la galaxie a été facile et naturelle: j'ai plusieurs types d'objets célestes, avec des propriétés et des caractéristiques bien différentes, donc, j'ai 1 table par type d'objet céleste et une page web par objet céleste dans la carte. Jusque là, pas de soucis.
Mais côté vaisseau, wow, la m*rde que ce fut...
J'avais tenté une première approche avec 1 table SQL pour tous les plans de vaisseau, et une colonne "type", pour définir si c'est un vaisseau d'extraction, de commandement, de construction, etc... Ce fut la merde... Y'a pas d'autre mot. Parce que la page web d'affichage d'un plan de vaisseau (que j'avais fait unique contrairement aux objets célestes, puisque je n'avais qu'une table SQL cela me semblait naturel) devenait un foutoir sans nom, car elle devait s'adapter aux types de vaisseaux.
J'avais donc ensuite envisagé de faire 1 table par type de vaisseau, et 1 page web... sauf que là encore, ce fut le bordel car les vaisseau doivent aussi partager des caractéristiques communes: si chaque type de vaisseau réagit de manière totalement différente des autres, alors les combats seront bordéliques car il faudra traiter chaque type de vaisseau attaquant chaque autre type de vaisseau... Et niveau joueur, c'était incompréhensible (et terrifiant!) D'autant que pour indiquer combien de vaisseau se trouvent dans chaque flotte, c'était également difficile...
J'avais alors pensé mettre les caractéristiques globales dans une table, et de garder 1 table par type de vaisseau (donc, au total, N+1 tables pour N types de vaisseaux). Cela résout facilement le problème des flottes (la table SQL des flottes fait référence à la table commune des vaisseaux), mais cela pose des soucis pour lier chacune des tables de type de vaisseau avec la table commune... Ca devient un graphe bordélique, et j'ai déjà expérimenté la complexité dans ECLERD: cela finit par 0 (ok, 20) joueurs maxi, et ce n'est finalement pas si fun que ça... Quand une problématique réelle est complexe, que le système pour la résoudre soit complexe ne me dérange pas. Mais pour un jeu, cela ne m'attirait pas...
Et là, hier matin, boum, révélation: je ne vais pas faire des "types" de vaisseaux différents! Je vais plutôt faire 1 seul concept, "spaceship", et lui accrocher des capacités/caractéristiques (coque, commandement, extraction, construction, stockage etc). Un vaisseau aura alors potentiellement plusieurs caractéristiques, mais sera toujours vu comme un seul et même concept de "vaisseau". Et là, tout devient simple?! La table de flotte référence la table "spaceship"; et les tables de caractéristiques référencent la table "spaceship"... Quelle différence par rapport à l'idée précédente? Un vaisseau peut avoir plusieurs caractéristiques (alors que le modèle précédent implique qu'un vaisseau ne peut être que d'un type, donc, n'avoir qu'un bloc de "caractéristiques"). Cela empêchait donc la création de vaisseaux ayant la capacité de commander et d'extraire (or, j'ai envie de rajouter, via des évènements de jeu, ce genre de vaisseau, pour relancer l'intérêt et la curiosité des joueurs).
J'ai donc, après ces multiples essais, fini par arriver à la structure actuelle de jeu, qui me permet de présenter 1 seule page pour modifier le plan de son vaisseau, avec plusieurs "blocs" dans cette page: 1 par caractéristique. La coque est donc une caractéristique (commune à quasiment tous les vaisseaux: je n'exclus pas de permettre la création d'un vaisseau "sans coque", qui serait alors hyper vulnérable mais hyper léger et rapide, typiquement adapté pour les attaques-éclairs ou pour l'espionnage!), l'extraction en est une autre, le commandement aussi, etc... Notez que la caractéristique "commandement" inclus le fait de commander les autres vaisseaux, mais aussi le fait d'être commandé (ou plutôt, d'avoir besoin de l'être)! Je pourrai les séparer au besoin plus tard...
Voilà les péripéties de Variispace jusqu'à maintenant. Merci d'avoir lu, et je serai ravi de vos retours si vous en avez
Sinon, côté Variispace, quelles nouvelles? Ben.. J'ai tout refondu et tout remoulé... :/
Côté gameplay
Carte galactique
D'abord, j'ai dégagé la grosse carte centrale:
Pourquoi? Parce qu'elle squattait toute la place de l'écran, rendant très difficile la possibilité d'afficher des informations supplémentaires (comme la taille des planètes, la masse, les flottes dessus, ou autre info qui sera nécessaire après). J'ai donc choisi de revenir à une disposition bien plus "tabulaire" des données. Alors, oui, certains trouveront peut-être que ça va faire un "jeu à formulaire", mais en pratique, je trouve que le formulaire (et les tableaux) n'existent pas sans raison: ce sont d'excellentes (si ce n'est souvent la meilleure!) façon de présenter aux gens des données complexes, et de recueuillir d'autres données (entrées) complexes. Donc, si je veux un jeu avec un peu de richesse, je ne m'étonne pas de voir apparaitre ces éléments tabulaires/formulaires (sur les minis-jeux, c'était différent: la faiblesse du gameplay permet de se passer de ce type d'input/output)
Types d'objets célestes
Ensuite, je vais structures les objets célestes en "types": plutôt que d'avoir un nom générique "objet céleste", j'aurai donc des étoiles, des planètes, et par la suite, des lunes, des astéroïdes, des étoiles à neutron, des trous noirs, etc. Chacun pourra alors avoir ses propres caractéristiques, et sa propre "nature": il ne sera pas possible d'extraire de la matière d'un trou noir par exemple, alors qu'un trou de ver permettrait d'être présent dans plusieurs endroits du jeu *en même temps*. Cela me permettra, au fil du temps, d'ajouter des types d'objets célestes facilement et de rendre le jeu attractif pour les vrais férus d'espace (et de faire découvrir à un peu tout le monde [moi inclus] des types d'objets exotiques!)
Pour le moment, je n'ai donc implémenté que les étoiles (cf ci-dessus) et les planètes (cf ci-dessous):
Orbite planétaire
Chaque planète aura 2 orbites: une basse, et une haute. Exit donc l'idée d'avoir un nombre d'orbites différents en fonction de la masse de la planète: c'était mon idée initiale, mais elle apporte au final plus de complexité (tant au code qu'au gameplay) que d'intérêt pour le gameplay. L'avantage d'avoir 2 orbites serait de dire que l'orbite basse permet d'extraire de la matière de la planète (ce que l'orbite haute ne permet pas), et que l'orbite haute permet de quitter la planète pour aller vers une autre (ce que l'orbite basse ne permet pas). Les joueurs devront donc changer d'orbite avant de faire certaines actions... Vous sentez venir le concept de "blocus", avec une flotte sur l'orbite haute qui empêche celle de l'orbite basse de partir?! Ou l'inverse, une flotte puissante sur l'orbite passe empêchant la flotte de l'orbite haute de venir récupérer des ressources?! Là, je trouve un intérêt de gameplay donc je garde le concept de 2 orbites, que l'on peu voir sur la page des flottes ci-dessous (il faudra que j'affiche ces deux orbites sur la page de la planète ci-dessus ainsi que la présente ou non de flotte sur ces orbites)
Flottes
Chaque flotte est constitués de vaisseaux, de différents types (bas du tableau), ce qui lui confère des caractéristiques (haut du tableau) que sa position pourra influer: si je suis en orbite haute ou basse, je n'ai pas les mêmes caractéristiques (ni les mêmes possibilités), de même suivant la masse de la planète autour de laquelle j'orbite (ou, plus tard, la masse de l'étoile). Pour l'instant, les actions sur les flottes ne sont pas implémentées (à part renommer la flotte).
Les vaisseaux
Les vaisseaux de Variispace ne sont pas pré-déterminés par le jeu: le joueur a la possibilité de les "designer" lui-même, et d'en choisir les caractéristiques: matériau de la coque, taille des équipements, composition, etc. En fonction de ces choix, le vaisseau aura des capacités et des propriétés différentes. Ainsi, ce premier vaisseau ci-dessous a la capacité d'extraire des ressources:
Mais cette capacité n'aura d'intérêt, bien sûr, que si le vaisseau est en orbite basse autour d'une planète! Un autre exemple est ce vaisseau, qui a la capacité de commander d'autres vaisseaux:
Cette capacité sera, elle, toujours active, et nécessaire si le joueur souhaite donner des ordres à sa flotte (plus exactement, faute de commandement suffisant, les ordres du joueur seront moins bien exécutés, ce qui peut faire de ces vaisseaux une cible privilégiée). Pour le moment, les algos de calcul de ces capacités ne sont pas au point...!
Je ne travaille pas sur cet équilibrage pour le moment. Aujourd'hui, je m'occupe du sélecteur permettant de choisir le matériau (l'atome) dans lequel faire la coque et les équipements du vaisseau. Exit donc la conception de molécule (je pense la mettre dans un autre jeu à part, un genre de Chimie-Eleusis peut-être?) qui alourdissait trop les choses.
Restriction des plans
Les plans des vaisseaux ont toutefois quelques restrictions: on ne peut pas les modifier une fois un vaisseau de ce type construit (on peut, bien sûr, construire plusieurs fois le même type de vaisseau: je peux avoir 10 vaisseaux de commandement qui utilisent le plan "vaisseau de commandement" que j'ai designé). De plus, on ne peut pas créer un vaisseau "de zéro": on ne peut que dupliquer les plans! Cette petite restriction, l'air de rien, est géniale car elle empêche un joueur de créer de son propre chef un vaisseau ayant les capacités "extraire ET commander", à moins de fouiller la galaxie pour espérer trouver un vaisseau de ce type (même un très mauvais vaisseau: il pourrait alors tenter de capturer ce vaisseau, ou au moins d'en voler le plan, pour ensuite le dupliquer et l'améliorer!)... Sentez-vous venir le roleplay similaire au vol des plans de l'étoile noire de Star Wars? Moi, oui...
Côté création
Je dois dire que tout s'est admirablement déroulé pendant ces vacances de fin d'année?! Aucune difficulté technique majeur n'est venue se mettre en travers du développement (franchement, j'ai trouvé ça hyper-reposant par rapport à mon taf... :/ mais je digresse!)
En revanche, côté "création du gameplay", put*** j'en ai chié! La reconstitution de la galaxie a été facile et naturelle: j'ai plusieurs types d'objets célestes, avec des propriétés et des caractéristiques bien différentes, donc, j'ai 1 table par type d'objet céleste et une page web par objet céleste dans la carte. Jusque là, pas de soucis.
Mais côté vaisseau, wow, la m*rde que ce fut...
J'avais tenté une première approche avec 1 table SQL pour tous les plans de vaisseau, et une colonne "type", pour définir si c'est un vaisseau d'extraction, de commandement, de construction, etc... Ce fut la merde... Y'a pas d'autre mot. Parce que la page web d'affichage d'un plan de vaisseau (que j'avais fait unique contrairement aux objets célestes, puisque je n'avais qu'une table SQL cela me semblait naturel) devenait un foutoir sans nom, car elle devait s'adapter aux types de vaisseaux.
J'avais donc ensuite envisagé de faire 1 table par type de vaisseau, et 1 page web... sauf que là encore, ce fut le bordel car les vaisseau doivent aussi partager des caractéristiques communes: si chaque type de vaisseau réagit de manière totalement différente des autres, alors les combats seront bordéliques car il faudra traiter chaque type de vaisseau attaquant chaque autre type de vaisseau... Et niveau joueur, c'était incompréhensible (et terrifiant!) D'autant que pour indiquer combien de vaisseau se trouvent dans chaque flotte, c'était également difficile...
J'avais alors pensé mettre les caractéristiques globales dans une table, et de garder 1 table par type de vaisseau (donc, au total, N+1 tables pour N types de vaisseaux). Cela résout facilement le problème des flottes (la table SQL des flottes fait référence à la table commune des vaisseaux), mais cela pose des soucis pour lier chacune des tables de type de vaisseau avec la table commune... Ca devient un graphe bordélique, et j'ai déjà expérimenté la complexité dans ECLERD: cela finit par 0 (ok, 20) joueurs maxi, et ce n'est finalement pas si fun que ça... Quand une problématique réelle est complexe, que le système pour la résoudre soit complexe ne me dérange pas. Mais pour un jeu, cela ne m'attirait pas...
Et là, hier matin, boum, révélation: je ne vais pas faire des "types" de vaisseaux différents! Je vais plutôt faire 1 seul concept, "spaceship", et lui accrocher des capacités/caractéristiques (coque, commandement, extraction, construction, stockage etc). Un vaisseau aura alors potentiellement plusieurs caractéristiques, mais sera toujours vu comme un seul et même concept de "vaisseau". Et là, tout devient simple?! La table de flotte référence la table "spaceship"; et les tables de caractéristiques référencent la table "spaceship"... Quelle différence par rapport à l'idée précédente? Un vaisseau peut avoir plusieurs caractéristiques (alors que le modèle précédent implique qu'un vaisseau ne peut être que d'un type, donc, n'avoir qu'un bloc de "caractéristiques"). Cela empêchait donc la création de vaisseaux ayant la capacité de commander et d'extraire (or, j'ai envie de rajouter, via des évènements de jeu, ce genre de vaisseau, pour relancer l'intérêt et la curiosité des joueurs).
J'ai donc, après ces multiples essais, fini par arriver à la structure actuelle de jeu, qui me permet de présenter 1 seule page pour modifier le plan de son vaisseau, avec plusieurs "blocs" dans cette page: 1 par caractéristique. La coque est donc une caractéristique (commune à quasiment tous les vaisseaux: je n'exclus pas de permettre la création d'un vaisseau "sans coque", qui serait alors hyper vulnérable mais hyper léger et rapide, typiquement adapté pour les attaques-éclairs ou pour l'espionnage!), l'extraction en est une autre, le commandement aussi, etc... Notez que la caractéristique "commandement" inclus le fait de commander les autres vaisseaux, mais aussi le fait d'être commandé (ou plutôt, d'avoir besoin de l'être)! Je pourrai les séparer au besoin plus tard...
Voilà les péripéties de Variispace jusqu'à maintenant. Merci d'avoir lu, et je serai ravi de vos retours si vous en avez