PDA

Voir la version complète : [early dev] Archipel Noir : mon p'tit 4X



Uriak
03/07/2014, 14h41
Salut
Après avoir tergiversé pas mal de temps (quelques années en fait :p) je me suis enfin lancé dans la grande aventure du développement avec un projet de 4X don't l'idée m'était venu sur ce même forum.
J'ai décidé de le faire sous Unity (c'est la mode :siffle:) quitte à prendre en main ce framework et le C# au passage. Côté technique ça se passe plutôt bien, mais il y a un monde entre un doc de gamedesign et la foule de petites choses que demandent de vraies interactions.

Histoire de ne pas nous emballer tout de suite une capture du projet en pleine enfance :p (il est plutôt vilain)

http://tof.canardpc.com/view/85cda1c8-6874-4cac-ab12-b68aae7b18de.jpg

Qu'est-ce que ce sera au final?

Mon but est de parvenir au moins à un jeu solo asymétrique (pas de factions IA) dans un premier temps, permettant d'effectuer de courtes campagnes/missions. Si à ce stade le jeu et ses mécanismes fonctionnent bien... je verrais :p

Le concept :

On joue un groupe exilé sur les rivages d'un archipel sauvage. Le but est évidemment d'explorer cet endroit et mater l'hostile les présences hostiles en ces lieux.

C'est du tour par tour à la civ, un peu plus centré sur les unités et sur une échelle de temps bien plus resserrée
.
Le monde est divisé en régions aux conditions (notamment) climatiques différentes. Cela donnera lieux à des malus parfois très importants avec à la clef l'accès à d'autres ressources ou des objectifs de campagne

On pourra créer des unités de 4 types : construction/militaire/exploration/savoir Ces dernières gagneront de l'expérience au fil de leur utilisation, ce qui permettra d'une part
-d'obtenir des "perks" liées à l'utilisation des unités, en particulier leur acclimatation
-de les améliorées en unités plus puissantes/spécialisées mais au coût d'entretien supérieur

Il y aura des ennemis dans les régions inexplorées ou en cours de conquête. Mais aussi la possibilité de "révoltes" dans les zones où on s'étend trop vite, ou trop mal défendues.

La recherche se fera via un système différent des arbres technologiques. Si tout se passe bien :p On donnera une direction générale à une ou plusieurs équipes. Les évènements en cours de jeu influeront sur le résultat (types d'implantation, combat fréquents ou rares, etc)

Côté graphismes je vais être raisonnable et attendre d'avoir des proto jouables avant de m'atteler à quoi que ce soit de sérieux. Comme je suis illustrateur à mes heures perdues j'espère pouvoir rendre le tout moins austère :)

Voilà c'est encore très tôt (moins d'un mois depuis le début), je vous tiens au courant de la suite (j'ai aussi un petit blog ici http://sombresiles.tumblr.com/)

Uriak
07/07/2014, 12h32
Une petite roadmap

Réalisé ( du moins en première approche)
Génération simple de map en plusieurs régions + plans d'eau
Mouvement d'unité et pathfinding
Système de tours de jeu
Sélection d'unités et de tuiles pour intéragir
Système modulaire pour les capacités des unités
Menus pour la gestion d'une région et construction de structures
Construction de structures
Gestion simple des ressources : création/consommation

Bientôt
Création des unités, coût d'entretien
Gestion de points de ressources
Conditions de constructions et création d'unités ("arbre" de bâtiments en somme)
Sauvegarde du système
Expansion dans plusieurs régions
Version basique du combat
Création et gestion des unités ennemies
Correction des problèmes d'UI les plus ennuyants

Je pense diffuser une version sandbox à ce stade

Enrichissement

Système d'expérience et level up des unités
Climats, effets et compétences associés
Gestion de l'hostilité et de la colonisation
Ajout d'informations dans l'UI (tooltips)
Complétion des menus
Technologie et recherche
Nouveau assets
Scenarisation et objectifs

Fin du proto
Graphismes de l'UI et du terrain
Génération de map avancée
Graphismes pour les unités/bâtiments
Illustrations et textes d'ambiance.

bilbo10
07/07/2014, 21h48
J'aime beaucoup ton concept, je vais suivre tout ça attentivement ;)

Adu
08/07/2014, 14h43
Je vais suivre également ça.
Petite question pour Unity, vu qu'en plus c'est en 2D. Tu apprends comment ? Tu as acheté un bouquin ? Des tutos axés 2D sur le Net ? Tu farfouilles le wiki Unity et tu testes ?

Uriak
08/07/2014, 15h01
Je me suis contenté d'aller lire le manuel sur le site d'Unity et d'aller voir les références de l'API régulièrement. Pour le c# je google les classes dont j'ai besoin et en général je me réfère à ce qui est raconté sur le site de microsoft.
Pour le tout début, après la lecture du manuel unity je me suis aidé d'un tutorial sur les jeux 2d trouvé ici (http://pixelnest.io/tutorials/2d-game-unity/) qui m'a permis de vraiment saisir la base de l'architecture d'un projet unity.

Pour mon travail je développe en C++ et python mais dans un framework très différent, donc j'étais un peu intimidé par la notion de components et de scripts dans un éditeur, ça m'a pas mal aidé :)
Pour le reste je cherche sur le net des réponses à des questions plus précises (pathfinding, GUI...) Par exemple je vais me pencher sur le moyen de faire des sauvegardes, je pense qu'Unity permet de sauver des scènes telles quelles mais peut être que je vais exporter/importer du XML (et il faudra que je fasse ma propre sérialisation des éléments du jeu)

Merci pour vos messages :)

Adu
08/07/2014, 18h38
Merci à toi pour tes réponses, et pour nous faire partager ton jeu ! :)

Uriak
09/07/2014, 01h30
De rien ;)
J'ai enfin corrigé une poignée de bugs agaçant au niveau de l'interface. Je n'aurais pas pensé que le fait de voir les unités se déplacer en continu dans un système tour par tour causerait autant d'ennuis :p

Uriak
10/07/2014, 15h37
Commencé la création d'unités, en attendant une petite roadmap économique, que je vais trier en terme de court, moyen et long terme pour la réalisation.

L'unité de base est la région. Elle contient un centre qui va de l'avant poste à la ville. Chaque upgrade ouvre plus de possibilités en terme de construction et offre d'autres avantages

une région a plusieurs points de ressources qu'on peut exploiter
Certains seront visibles ou cachés et il faudra prospecter pour les identifier
Ces points auront un niveau qui indiquera le niveau max de l'exploitation qui l'utilise
Il y aura des ressources basiques et d'autres rares, soupoudrées dans les régions

Une région possède une capacité agricole. Des structures permettent d'en exploiter une partie
Ce potentiel total pourra augmenter avec les technos qui vont bien
Peut être à terme une gestion de stock de nourriture

La nourriture disponible n'affecte pas la population totale (qu'on ne controle pas), mais libère de la main d'oeuvre. Certains bâtiments consomment cette main d'oeuvre de même que les unités actives. Par exemple avec 4 de support disponible je peux faire fonctionner deux bâtiments et deux unités.**
Les unités avancée consommeront davantage de main s'oeuvre.
Introduction d'une ou plusieurs autres ressources de supports pour les unités avancées (or, vêtements, carburant...)


Evidemment certaines régions n'auront pas de quoi soutenir une activité directement. On pourra transférer de la production ou de la bouffe d'une région à l'autre.
Introduction d'une capacité de transport pour chaque région (améliorable) Si j'envoie une ressource par tour à une autre, je consomme 1 "cran" de transport de chacun*
Pour éviter le problème complexe du transit, chaque région ne pourra transférer qu'à une région limitrophe. Une ressource mettra donc plusieurs tours à arriver d'une région à une autre lointaine.

Les unités consomment de la nourriture comme les bâtiments actifs.
Peut être plus tard une notion de l'ancrage de l'unité à une région

* Je ne vais pas implémenter de notion de stock de nourriture, parce que je n'aime pas trop le concept dans les autres jeux. Cela signifie évidemment que certaines régions ne seront pas autosuffisantes (voir plus bas)

**Si une région a un réseau routier d'une capacité de 4, elle peut donc émettre ou recevoir 4 unités de ressources par tour. Les allez-retours s'annuleront (pas les cycles je ne vais pas babysitter les joueurs ^_^ )

En résumé, dans une région on produira des ressources qui s'accumulent et de la nourriture/support qui fournit juste une capacité disponible.
Le support est employé pour alimenter certaines structures (typiquement celles qui fournissent des ressources) et les unités.
On peut transférer en continu soit les ressources stockables, soit le support (sans doute pas avec un ratio 1/1) dans une limite dépendant des infrastructures.

Voilà, en plus du code, il faudra que je m'assure que ce soit clair au niveau des interfaces.

bilbo10
10/07/2014, 21h06
Ce projet m'a vraiment l'air prometteur :)

tu t'es inspiré d'Endless Legend pour le concept des régions ? ^^

Sinon plein de bonnes idées, j'espère que tu nous feras tester ton jeu ;)

Uriak
11/07/2014, 02h06
Ce projet m'a vraiment l'air prometteur :)

tu t'es inspiré d'Endless Legend pour le concept des régions ? ^^

Sinon plein de bonnes idées, j'espère que tu nous feras tester ton jeu ;)

Merci :) En fait, j'avais l'idée de région depuis le projet de départ, mais j'ai longtemps hésité sur leur forme. Pendant un temps je songais à un système comme Europa Universalis (en terme de répresentation) mais ça aurait été très dur à faire en paramétrique. Endless legend m'a convaincu que des régions en hexagones fonctionneraient bien, même si au début je ne souhaitais pas utiliser les hexagones proprement dit mais plutôt rester sur une interface au niveau de la région. Mais des tuiles individuelles facilitent pas mal de choses et évitent des abstractions compliquées en terme de jeu et d'interface.

http://tof.canardpc.com/view/ec61b2c3-fea2-444a-ad1d-1dc6cc6b6c36.jpg
Les points de ressource sont en bonne voie (enfin j'ai de quoi les instancier au moins :p)

Uriak
16/07/2014, 12h20
http://tof.canardpc.com/preview2/9635a5c0-a2d6-432f-8fb9-9a80c04a2fd7.jpg (http://tof.canardpc.com/view/9635a5c0-a2d6-432f-8fb9-9a80c04a2fd7.jpg)

Juste une petite mise à jour. malgré la concurrence déloyale de DotA2, j'ai pu implémenter les points de ressource, la présence du support (ou nourriture), l'activation ou désactivation des bâtiments et l'installation d'une nouvelle ville dans d'autres régions à l'aide de l'unité ad hoc.
Il me reste à régler le problème de la destruction d'unités/bâtiments, l'utilisation du support par les unités? (liés à une région fixe ou à un lieu actuel de positionnement? je n'ai pas décidé)... ensuite je ferai la base du combat

bilbo10
17/07/2014, 15h37
Content de voir que ça avance bien :)

En regardant tes screens, je me suis fait la réflexion que le bleu de l'océan était peut-être un peu trop foncé, mais je sais pas trop ce que ca donne exactement sur ordi donc bon à toi de voir ^^

Uriak
18/07/2014, 18h05
Merci, pas trop bougé cette semaine, mais j'espère reprendre ce week end.

Les couleurs sont évidemment temporaires, mais pour la petite histoire j'utilise un générateur aléatoire pour le terrain en gardant les couleurs suffisamment claires pour afficher les bâtiments dessus. Du coup pour distinguer, l'ocean est bleu sombre, voilà :)

deathdigger
20/07/2014, 14h18
Je me suis contenté d'aller lire le manuel sur le site d'Unity et d'aller voir les références de l'API régulièrement. Pour le c# je google les classes dont j'ai besoin et en général je me réfère à ce qui est raconté sur le site de microsoft.
Pour le tout début, après la lecture du manuel unity je me suis aidé d'un tutorial sur les jeux 2d trouvé ici (http://pixelnest.io/tutorials/2d-game-unity/) qui m'a permis de vraiment saisir la base de l'architecture d'un projet unity.

Pour mon travail je développe en C++ et python mais dans un framework très différent, donc j'étais un peu intimidé par la notion de components et de scripts dans un éditeur, ça m'a pas mal aidé :)
Pour le reste je cherche sur le net des réponses à des questions plus précises (pathfinding, GUI...) Par exemple je vais me pencher sur le moyen de faire des sauvegardes, je pense qu'Unity permet de sauver des scènes telles quelles mais peut être que je vais exporter/importer du XML (et il faudra que je fasse ma propre sérialisation des éléments du jeu)

Merci pour vos messages :)

Pour les XML, pas besoin de développer ton propre serializer, il est déjà présent dans le framework .Net, et marche très bien ;)

Uriak
10/08/2014, 22h40
Il serialize directement des classes c# ou on parle juste d'un parser/writer?
Bref, pas trop trop bossé ces semaines ci mais j'ai complèté une première version du système d'échanges entre régions. L'interface m'a encore une fois donne du him à retordre, entre autre parce qu'elle affiche les flux théoriques tandis qu'en réalité seuls les ressources réellement disponibles sont transférées. Pour l'instant mon code me permettrait d'utiliser les mêmes fonctions pour la mise à jour de l'UI et du jeu mais j'ai du y renoncer.

Je pars en bananes mais quand je reprendrai il sera temps d'implémenter les unités hostiles et le combat.