Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » un A-RPG en basic : A.R.C
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

un A-RPG en basic : A.R.C

Posté le 25/01/2018 21:25

Version CPC 24
Salut,
sur ce topic je vais parler de l'avancement de ma participation au CPC n°24 .

je vais faire un programme en Basic de type A-RPG, ce sera similaire aux premiers Zelda et le moteur de jeux sera proche de celui de Zelda PC par Remiweb
la seule différence sera l'utilisation du Super DrawStat a la place du Draw Stat et de la fonction Augment().

pour respecter le thème le jeu se déroulera dans un monde Héroic Fantasy.

Ce qu'il me reste à faire :
- Moteur d'affichage des Map + gestion des Sprites et Map. Fait
- Moteur de jeu ( déplacements, interactions). Fait
- Création de la Map.
- Création d'un TileSet.
- Écriture de l'histoire.
- Création des PNJ, coffres, ... Fait
- Faire des Boss.
- Dessiner une cinématique d'intro (cinématique de fin ?) .Fait
- Gagner le concours.
- Recevoir un label de qualité et devenir 1er du top 20.



J'ai fait le choix technique de ne pas mettre de monstre lambda dans toutes les Map mais de me contenter de boss difficille (un peu comme dans Dark Souls) + des enigmes et puzzles variées dans chaque donjon.
Qu'en pensez vous ?


Le projet reprend sous le nom de A.R.C !
Suruq Game.


Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 11/07/2018 23:27 | #


Je partage le même avis que Neotux. Les dialogues qui changent c'est sympa. Mais à condition d'avoir un apport.
Du coup pour tes combats, c'est toujours du ARPG ?
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 11/07/2018 23:47 | #


oui mais comme pour e projet d'origine les combat n'intervienderons que sur des boss avec des pathern d'attaque bien specifique, le reste du jeu consistera en un ensemble d'enigme a la zelda. j'essaye de mettre l'histoire aucoeur du jeu afin de tenir en haleine le joueur. l'objectif etant de compenser le manque de combat (quiseront neanmoins interessant) par du dialogue pas trop present mais pertinent.
There is only one thing that makes a dream impossible to achieve : the fear of failure
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 12/07/2018 17:12 | #


Il existe aussi des jeux qui n'intègrent aucun dialogue mais qui ont une histoire riche : https://store.steampowered.com/app/404680/Hob/
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 10/08/2018 20:07 | #


je reprend un peu le projet sous une autre forme et je me demandais si il est plus rapide d’afficher des tile 1 par 1 ou d’utiliser augment( puis tout dessiner d’un coup ?
dans le cas present je peut mettre une barre de chargement sans que cela gène.

There is only one thing that makes a dream impossible to achieve : the fear of failure
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 10/08/2018 21:44 | #


J'aurais tendance à dire plus rapide de tout dessiner d'un seul coup.
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 10/08/2018 21:53 | #


L'avantage d'Augment, c'est que tu peux faire tous tes calculs en affichant une barre de chargement, puis afficher la map rapidement. Après y'a des gens qui préfèreront pas de barre et la map qui s'affiche doucement, mais c'est une question de goût
Perso je préfère la première solution
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 11/08/2018 11:27 | #


L'inconvénient d'Augment() c'est que ça consomme beaucoup de mémoire pendant très peu de temps.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 11/08/2018 11:52 | #


c’est pas forcement un problème mais si a terme je suis trop juste je passerais sur la methode sans augment
There is only one thing that makes a dream impossible to achieve : the fear of failure
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 11/08/2018 15:19 | #


Bon, je mets ici ce que j'ai dit sur la shout à propos d'une IA pour un T-RPG.

Tout d'abord, je vois pas trop le genre de jeu, mais si Dofus et Leekwars en font partie, alors ce qui suit s'applique aussi.

TL;DR : y'a pas de miracles, c'est long et compliqué à optimiser

Les T-RPG peuvent être considérés comme des univers ouverts : non seulement les déplacements sont pris en compte, mais on a des actions qui influent d'autres actions. Par exemple, un sort va augmenter temporairement la puissance et réduire la résistance, je peux infliger des dégâts de zone, certaines armes ne fonctionnent que sous des conditions particulières, et à ça on ajoute souvent un limiteur, comme des points de tour ou une barre de mana. Et en plus, chaque jeu a ses propres mécanismes. C'est donc beaucoup plus compliqué à gérer qu'un jeu de plateau classique, comme les dames ou les échecs, ou pour le coup le graphe des possibilités est certes complexe, mais facile à parcourir.

On doit donc passer par une IA qui :
– analyse la situation ;
– regarde ce qui est possible et ne l'est pas, classe ces actions ;
– choisi une action parmi celles précédemment étudiées.

La suite, c'est quelques trucs que j'ai utilisé pour mes IA sur Leekwars


1. Analyser la situation

Il faut avoir en tête : la position des joueurs, leurs capacités, ce qu'ils peuvent faire au tour d'après.
Donc lister les PV, MP, armes, sorts, bref, tout ce qui peut être utilisé ou non. Ou faire des fonctions pour le savoir facilement, genre canEnemyUseWeaponFromCellOnCell(enemy, weapon, cell1, cell2), hasEnemyEnoughMpToMoveThere(enemy, cell). Ne jugez pas ces noms de fonction, c'est l'idée qui compte.
On ne peut pas tout stocker, faudra recalculer à un moment certains trucs pour vérifier si une action est utile ou non.


2. Explorer le champ des possibles

Si l'étape 1 est faite correctement, celle-ci est assez évidente. Pour chaque action que vous pouvez faire, donnez-lui un (ou plusieurs) scores. Soyez malins pour ne pas traiter les cas évidemment cons. Genre tirer dans le vide.
On ajustera le (ou les) scores suivant :
– la réalisabilité de l'attaque (si je peux pas me déplacer ou n'ai pas assez de mana pour l'attaque, pas besoin de calculer le reste)
– le coût de l'attaque (préférer des attaques peu couteuses)
– l'efficacité min/moy/max de l'attaque (si je peux one-shot, c'est sûrement rentable, si safékdale® on peut trouver autre chose)
– la riposte potentielle de l'ennemi (pas envie de me faire one-shot si je reste exposé)
– les actions des autres membres de l'équipe (attention, la cohésion ajoute une bonne dose de difficulté à la création de l'IA)
– les powerups que je peux faire (enchainer un boost puis une attaque spéciale, c'est mieux que l'inverse)
– les heals éventuels (ça sert à rien de se soigner si on a 90% de PV, et inversement)
– les autres paramètres qui peuvent intervenir.

Je fais exprès de parler de plusieurs scores, parce qu'il est possible de faire un score « offensif », un « défensif », etc.
Aussi, bien penser à prendre en compte le déplacement potentiel dans l'action. C'est plus simple que de réfléchir au déplacement puis à l'action en tant que tel.


3. Choisir une action à réaliser

Parmi ces actions précédemment classées, choisissez en une qui vous parait la plus optimale. Si il n'y a qu'une liste, choisissez celle qui a le plus de points.
Si il y en a plusieurs, choisissez celle qui a le plus de points, et qui correspond à la stratégie que vous souhaitez appliquer.



J'arrive à la fin des explications, c'est assez sommaire mais déjà c'est un bon début. N'essayez pas au début de faire de la vision à plusieurs tours, c'est beaucoup trop compliqué et n'apportera pas grand chose si vos coefficients de score sont bien gérés.

À l'occas', peut-être que j'approfondirais le sujet dans un topic dédié, mais d'ici là, y'a aussi quelques trucs sur le topic de Leekwars.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 11/08/2018 16:40 | #


Au pire, ça te prend 5 000 octets d'un coup, que tu effaces à coup de ClrList juste après.
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 11/08/2018 17:08 | #


Et encore, t'es large. Je pense qu'on peut s'en tirer, pour un truc correct, autour des 750~1000 octets de données temporaires.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 11/08/2018 17:43 | #


24 octets par points (deux coordonnées). Pour 8 points par tile et disons, 10×5 tiles ça fait 10000 octets. Et encore, comme vous pouvez le voir, j'ai fait light.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 11/08/2018 17:53 | #


Nan mais comme je le disais, tu peux pas tout évaluer, encore moins chaque position sur le plateau.

Si t'as 5 attaques possibles, t'évalues que les 5 attaques. Ensuite tu fais un déplacement permettant de réaliser l'attaque, puis tu appelle une fonction qui va optimiser les PM pour aller se planquer. Si on considère un ID d'attaque, une coordonnée de meilleur endroit pour tirer, et un score, ça fait 12×4=48 par évaluation. Avec ça on peut monter à une vingtaine de coups tout en restant en dessous des 1000 octets. Souvent ça suffit largement.

Et puis sinon tu ne gardes que le meilleur coup à jouer. Nan franchement si tu te démerdes bien, c'est pas si gourmand que ça.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 11/08/2018 18:00 | #


il y a quiproquo
lephe et drak parlent de la fonction augment(

et il y a seulement 12 octet par point
There is only one thing that makes a dream impossible to achieve : the fear of failure
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 11/08/2018 18:06 | #


12 octets par valeur entière, ça fait 24 octets par point, sauf si tu utilises un système de compression comme Drak (les complexes ne comptent pas).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 11/08/2018 18:49 | #


je met ordonne sur la valeur entiere et l’abcisse sur la partie fractionnaire dinc c’est 12octet par valeur
There is only one thing that makes a dream impossible to achieve : the fear of failure
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 11/08/2018 21:00 | #


Concernant l'IA, voici comment fonctionne celle de Fight 6 (un pokemon-like):

Cliquez sur ce lien

De ce que j'ai compris, le genre de ton projet est différent, mais ça peut de donner une idée pour représenter ta future IA.

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 120 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