Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Asci] Island of the Dead Kings (IDK)
Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

[Asci] Island of the Dead Kings (IDK)

Posté le 01/11/2021 19:54

Bonjour à tous !

Déjà merci à KikooDX pour le titre xD

>> le dépôt Gitea <<


Présentation générale
IDK est un jeu de rôle en Python (conçu avec Asci). L'univers est la mythologie nordique. Pour l'instant, je me concentre sur la création de la carte du monde. Je ne sais pas trop où je vais pour l'instant, je pense que ça va finir en openworld avec des quêtes annexes et voila xD

Cartes
Je vous avoue que pour l'instant c'est un gros point fort, je vise une map particulièrement énorme.
Dans la mythologie Nordique, le "monde" est divisée en 9 parties distinctes. Ces neufs mondes sont dans le jeu. Ajoutez à cela les quelques 30 maisons qui parsèment le tout.

Scénario et histoire
En terme de scénario rien n'est fait.

Mécaniques
Au niveau des mécaniques, je vise un truc un peu chiadé. Il y a notamment :
  • une gestion du temps (avec une heure in-game)
  • dans la droite ligne de ce qui précède un système pour dormir, sans doute la possibilité de dormir dans une auberge pour récupérer des points de vie
  • la possibilité d'acheter armes et armures (dans la limite d'une seule arme et d'une seule armure)
  • Un système de consommation type taverne où l'on peut acheter des trucs à boire et à manger
  • Un système de quêtes annexes et indépendantes pour gagner de l'argent
  • Le moteur de combat est en tour par tour
  • Une gestion minimale des classes avec un système de statistiques simples
  • Quelques sort avec un système de niveau


Avancé du projets
Création des cartes des mondes
   100%

Création des cartes des maisons
   100%

Scénario et histoire
   3%

Mécaniques
   93%


@RDP


Inikiwi Hors ligne Membre Points: 194 Défis: 0 Message

Citer : Posté le 01/11/2021 21:33 | #


on peut avoir des Screenshots? ou du "texte"
Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 01/11/2021 21:43 | # | Fichier joint


Je ne met que la carte de Midgard (le monde des Hommes, là où le joueur commence) pour pas trop dévoiler les cartes non plus. Pour ceux qui veulent vraiment les voir, le dépôt gitea contient les .tmx.

Midgard, c'est la première map du jeu, j'avais pas trop l'habitude des grandes cartes donc y a beaucoup de blanc. D'autres cartes sont beaucoup plus chargées.


"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Massena Hors ligne Rédacteur Points: 1921 Défis: 11 Message

Citer : Posté le 01/11/2021 22:09 | #


Wow c'est... Grand...
Je sais pas si ASCI le permet, mais éventuellement ajoute des caractères discrets pour faire de la végétation/des chemins et ainsi donner de la consistance au décor ?

Bonne chance en tout cas, c'est ambitieux
Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 01/11/2021 22:15 | #


Merci !
J'ai les 7 premiers mondes de fait, à peu près tous de cet ordre de grandeur

C'est bien vu, Asci le gère en plus Je sais pas trop ce que ça peut donner, mais je pense essayer avec des points, virgules, apostrophes… Merci pour l'idée !

Le gros point faible pour le moment, c'est surtout le scénario quoi xD
Je pense voir une fois que les décors seront bien en place, peut-être que j'aurais un déclic à ce moment…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 02/11/2021 13:59 | # | Fichier joint


Une image d'un intérieur :

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 11/11/2021 17:13 | # | Fichier joint


Quelques nouvelles !
J'ai bien avancé les cartes des maisons (34 / 50) ainsi que les mécaniques. Ayant avancé les cartes, j'ai pu tester les premières mécaniques, la gestion du temps in game est confirmée ! Les premiers essais sont tout à fait satisfaisants. Pour l'instant les achats dans les auberges sont plutôt limités, on peut "manger" ou "dormir".

Le joueur peut également dormir dehors ce qui permet de remettre le temps à 6h du matin. Ça peut paraître futile, mais certains PnJ refusent de répondre si vous les dérangez de nuit et le temps passant relativement lentement, c'est finalement plutôt pratique. xD

À noter que le joueur possède une maison. Si vous dormez dans votre maison ou une auberge (moyennant espèces sonnantes et trébuchantes évidemment ) vous récupérez des points de vie. De même les auberges sont fermées la nuit.

En termes d’affichage, je confirme que les maps sont plutôt grandes, j'ai réussi à me perdre dans les différents mondes. Petit teaser, Midgard possède quatre points de passage vers d'autres monde et ils sont sur la carte depuis le début (donc sur l'image de la carte que vous connaissez).

Pour vous aider un peu, l'écran de statistiques affiche le monde dans lequel vous êtes ainsi que le moment de la journée (aube, matin, après-midi, crépuscule, nuit) et l'heure (plus la vie et l'argent).

Dans les prochaines avancées, j'aimerai notamment :
  • Poursuivre les cartes
  • Proposer différents items selon l'auberge dans laquelle le joueur se trouve
  • Implémenter les armureries
  • Regarder de plus près pour un système de combat potable
  • Implémenter quelques quêtes


Je reste sur l'idée que j'avais eue, à savoir donner une version sandbox sans les quêtes, mais avec les mécaniques pour découvrir un peu le monde

Pour vous teaser un peu plus, Helheim, le monde des morts :


Quelques grandes nouveautés sur les mécaniques. Pour ceux qui connaissent, j'ai piqué pas mal d'idées aux premiers Final Fantasy. Le joueur possède ainsi 4 capacités : vitesse, agilité, attaque et défense. Ces capacités sont influencées par les armes / armures (pour attaque et défense), par des sorts et par la classe du joueur (guerrier, voleur, moine, mage, assassin).

Le joueur possède en plus des points de Magie. Ceux-ci agissent comme un réservoir : à chaque fois que vous lancez un sort, un certain nombre de points de magie sont consommés. Ils sont régénérés petit à petit par la suite (à raison d'un ou deux points par heure dans le jeu).

Sorts
Autre nouveauté importante : les sorts, il y en a assez peu (je vous donne pas la liste volontairement ) chaque sort peut avoir 5 niveaux (ce qui change le prix lors de l'achat s'il y a eu achat, mais aussi le coût en points de magie et l'efficacité). Les sorts peuvent être obtenus de deux manière différentes : soit en les achetant (pas encore implémenté), soit par certaines quêtes.

Combats
Le système de combat est terminé (il me reste quelques ajustements à faire, mais globalement, c'est fonctionnel). Il s'agit d'un système au tour par tour. Vous pouvez attaquer, lancer un sort, fuir ou consulter les statistiques. Regarder les statistiques met en pause le combat. Pour les autres choix, une comparaison des lancers de vitesse détermine qui commence (je reviens sur les lancers juste après), ensuite pour l'attaque, le score des points d'attaque (attaque naturelle + attaque de l'arme) est multiplié par deux, on soustrait à cela la défense de l'autre (défense naturelle + défense de l'armure). Si le total est supérieur (strict) à 0, le défenseur fait un lancer d'agilité, s'il réussit, le défenseur esquive le coup. Sinon il prend des dégâts.

Pour lancer un sort en combat, cela se déroule un peu de la même manière : le programme détermine qui commence, quand c'est à votre tour, vous choisissez le sort à lancer. Si vous n'avez aucun sort ou pas assez de points de magie, vous avez perdu votre tour.

Les lancers
Attention, ça spoile un peu (beaucoup) les mécaniques, ne lisez pas si vous voulez les découvrir vous-même
Cliquer pour enrouler
Les lancers ! C'est cette partie qui est encore un peu faible. Je commence par déterminer la moyenne des capacités (Vitesse, agilité, attaque + arme, défense + armure). Ensuite, on regarde la capacité à tester et on ajoute un nombre aléatoire entre 0 et la moyenne divisée par deux (arrondie au premier entier supérieur). Si ce score est supérieur à la moyenne c'est un succès, sinon un échec. La fonction renvoie le booléen, le score brut et le score pondéré (divisé par la moyenne).

Le score pondéré permet aux joueurs (ou à l'adversaire, c'est géré pareil) de prendre l'avantage, même contre des ennemis plus puissant. Je m'explique, si vous avez des capacités pas terrible et que vous vous battez contre un adversaire un peu pété. Vous réussissez votre lancer de vitesse et votre adversaire aussi, mais comme il a des stats plus élevées que les vôtres, il va toujours commencer le tour. C'est là qu'intervient le score pondéré, si le score brut de l'adversaire est plus élevé que le vôtre, mais que comparé à la moyenne de ses capacités, c'est pas terrible, vous avez une chance de commencer. L'idée c'est de dire que même si le score est très élevé, l'adversaire "peut mieux faire", donc il n'aura pas l'avantage.

Le défaut de ce genre de système est que lorsque l'on teste la capacité la plus élevée, on obtient que des succès (je pense à l'esquive avec l'agilité) c'est assez pénalisant pour le joueur d'avoir un adversaire qui esquive 100% des coups… x) Il faut donc que je trouve un moyen pour valoriser les hautes valeurs pour les capacités sans pour autant que la probabilité d'un succès soit de 1.


@RDP
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20989 Défis: 143 Message

Citer : Posté le 14/11/2021 11:59 | #


Merci pour ces détails ! Pour les lancers, si tu veux qu'on puisse prendre le dessus même quand l'ennemi a une vitesse plus élevée, pourquoi est-ce que tu ne biaises simplement pas le tirage ?

Typiquement la probabilité que tu commences ça pourrait être ta_vitesse / (ta_vitesse + vitesse_ennemi). Comme ça plus la vitesse de l'ennemi est élevée plus il commence souvent, mais tu n'est jamais condamné à passer en second.

Et du coup pour l'esquive tu peux simplement borner la stat d'esquive, eg. à 80% de probabilité d'equive.
Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 14/11/2021 12:04 | #


En fait j'ai trouvé un trick qui permet de tout fix
Le nombre ajouté à la capacité testée peut-être négatif, centré sur 0, et pour déterminer si c'est un succès, je me base sur la moyenne entre la capacité en question et la moyenne des stats, ça peut paraître tordu, mais c'est plutôt bien équilibré
Là c'est du spoil à donf, mais c'est intéressant xD

Table des pourcentages de réussite
Cliquer pour enrouler
Ci-dessous, la probabilité de réussir son lancer (la valeur de la capacité est à gauche, à droite le pourcentage, la moyenne des capacités était à 5 et les pourcentages ont été calculés sur 200 000 simulations de lancers)
0 - 0.0 %
1 - 16.784 %
2 - 16.635 %
3 - 33.4225 %
4 - 33.5345 %
5 - 49.8885 %
6 - 50.0365 %
7 - 66.571 %
8 - 66.6895 %
9 - 83.3865 %
10 - 83.25 %


Ajouté le 14/11/2021 à 13:46 :
Petite mise à jour, le système mis en place ce matin "groupait" les valeurs par deux, ce qui est dérangeant (il y avait très peu de différence entre 9 et 10, et même pire, avoir 9 était plus avantageux que d'avoir 10). J'ai un peu "linéarisé" en remplaçant le calcul par une stupide… règle de trois

Les valeurs sont réparties de manière plus homogène sur l'ensemble des capacités. Le tout étant borné par un nombre aléatoire entre 70 et 90% de réussite pour la capacité la plus haute

0 - 0.0 %
1 - 7.607 %
2 - 15.673 %
3 - 23.6985 %
4 - 31.4645 %
5 - 39.817 %
6 - 47.632 %
7 - 55.599 %
8 - 63.5165 %
9 - 71.5475 %
10 - 80.01 %


Ajouté le 21/11/2021 à 14:16 :
Bonne nouvelle : les cartes sont désormais toutes finies !
Je suis en train d'implémenter les lieux d'achat / ventes (auberge, armureries / forges, librairies). Une version de démo (sans scénario) devrait voir le jour sous peu

Pour le scénario, je commence à avoir quelques pistes… Mais pour l'instant, pas de quoi vous occuper super longtemps…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Shadow15510 Hors ligne Administrateur Points: 5011 Défis: 16 Message

Citer : Posté le 21/11/2021 16:15 | #


Version démo 1.0.0

Une première version de démonstration est disponible !

Pour l'instant rien de formidable, vous pouvez vous balader dans les neufs mondes et interagir avec certains personnages. Les achats d'armes, armures, sorts et les auberges sont toutes disponibles. Il y aura certainement plus de lieu d'achat dans la version finale (typiquement, certaines armes ne peuvent tout simplement pas être achetées.

Au niveau du scénario, il n'y a tout simplement rien, j'ai épuré la version démo des débuts de scénario que j'ai commencé à faire. Le but étant de vraiment découvrir le monde. Dans cette optique vous commencez avec un capital de 1000 pièces d'or alors que dans la partie finale, vous n'en aurez que 10.

En termes de contrôles :
  • 1, 2, 3, 5 pour se déplacer
  • 4 pour accéder aux statistiques (Vit = vitesse, Agi = agilité, Att = attaque, Def = défense)
  • 7 pour accéder aux sorts que vous connaissez
  • 6 pour accéder à votre inventaire (arme / armure)
  • 9 pour dormir
  • q pour quitter


En termes d’installation, il suffit de télécharger le dossier en pièce jointe (idk_demo.zip) et de le décompresser à la racine de la Graph 90. Le moteur est fourni avec, pas besoin de le télécharger ailleurs. L'ensemble fait environ 170 ko.

Pour jouer, il faut exécuter (je dis bien exécuter et non ouvrir) le fichier idk.py le shell va s'ouvrir automatiquement. Le chargement peut prendre quelques instants, mais une fois dans le jeu, c'est quand même relativement fluide. Une fois que vous avez récupéré la main sur le shell lancez la fonction idk() pour commencer à jouer. Lorsque vous quittez le jeu, IDK vous affiche la ligne que vous devrez entrer pour poursuivre la partie là où vous avez quitté. J'en suis désolé, la ligne est un peu longue. À noter qu'il existe deux astuces pour ne pas la recopier :
  • Vous pouvez éteindre le jeu sans le quitter (quand vous rallumer la calto, tout reprend comme si de rien n'était)
  • Vous pouvez quitter le jeu et éteindre la calculatrice sans quitter le menu Python, pour copier la ligne, il vous suffira de mettre la ligne en surbrillance et d'appuyer sur [EXE] pour la copier automatiquement.


Pour les symboles à l'écran :
  • les * sont les PnJ
  • les ? sont les points d'intérêts, ils permettent d'avoir une description écrite de l'environnement.
  • les ^ sont les portes

@RDP

Ajouté le 22/11/2021 à 15:45 :
Pour le scénario, je commence à avoir quelques idées. Je n'en dis pas plus sur le contenu pour l'instant, c'est sur la forme que je voulais communiquer.

Pour faire large, au début, le joueur se balade pas mal entre Asgard (le monde des Ases) et Vanaheim (monde des Vanes). La quête principale se suspend à plusieurs endroits. Le joueur peut alors faire une quête annexe (plus ou moins de son choix, j'essaye de faire au moins deux quêtes annexes à chaque fois). Ces quêtes correspondent à des petites actions, souvent assez courtes : rendre un service à quelqu'un, porter un message etc.

Pour la quête principale, j'envisage une scission du scénario, le joueur devra à un moment choisir son camp en quelque sorte. Les missions de la quête principale en seront évidemment affectés ainsi que les relations avec les différents PnJ. (les quêtes annexes seront les mêmes quelque soit le choix du joueur). Certaines quêtes seront en commun aux deux parties et le joueur pourra voir les deux côtés de la même histoire.

Pour les quêtes annexes, pour l'instant, elles sont indispensable, i.e. le joueur est à certains moment obligé de faire une quête annexe pour avancer. Je pense lever cette obligation sous peu, deux possibilités s'offrent à moi.

- Soit le PnJ auquel le joueur parle aura alors un dialogue qui permettra au joueur de choisir entre partir pour chercher une quête ou continuer la quête principale.
- Soit le joueur pourra à tout moment commencer une quête annexe ce qui mettra en pause la quête principale. (j'ai un faible pour cette solution, mais ça pose des problèmes d'implémentation )
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque


LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 75 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd