SPORE-LIKE DEMO

Utilisateur anonyme - 14 févr. 2009 à 16:59
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009 - 18 févr. 2009 à 01:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49259-spore-like-demo

stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
18 févr. 2009 à 01:25
La source citée plus haut n'est pas vraiment un véritable algo de cinematique inverse mais une simplification, cependant elle suffit pour ici, je supose.
Cette page explique très bien le concept de l'IK:
http://freespace.virgin.net/hugo.elias/models/m_ik.htm

Stef.
Utilisateur anonyme
17 févr. 2009 à 20:26
Thx :)
Le jeu a été renommé en "Darwin" il y a qques jours, et il ne sera plus open-source... Mais il sera multi-joueur.
On commence avec une creature basique, on joue sur plusieurs niveaux, avec des difficultées qui augmentent (les IA de plus en plus intelligente, des enemies de plus en plus rapide et puissant, ...)
Lorsqu'on passe un niveau, on obtient un nombre de points qui sont stockés.
On peut utiliser ces points quand on le souhaite pour les echanger contre des mutations, dont le prix varie. Les mutations aident à survivre (meilleurs vision, vitesse, force, ou simplement design et apparrence).
Pour la creature elle meme et ses propriété, il y a une 15aine de variables.
Pour les couleurs, il ya pres de 20 variables, pour pouvoir creer des couleurs et des effets uniques.

Le tout dans un editeur assez simple mais puissant.

J'en suis à 70% du dev...

On pourra jouer dans les niveau pour faire evoluer sa creature, puis combattre les creature des autres dans des arenes, et faire de la reproduction: On choisi deux créatures, et on en obtient un hybride.
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
17 févr. 2009 à 20:05
http://www.flashkod.com/codes/COMPOSANT-JOYPAD-FLASHCS3_47002.aspx
Ca pour résoudre ton problème de "clavier"

http://www.flashkod.com/codes/CINEMATIQUE-INVERSE-DEPLACEMENT-DYNAMIQUE-BOUCLE-FOR-LINESTYLE_46756.aspx
Pour t'aider dans le concept de tes "vertebres"...

Autre conseil appel ton jeu "Life" ou "DNA" mais prend pas le nom d'un jeu existant... Imagine toi que ton "openSource" ai du succés, tu devras payer !

Et c'est bien dommage que quelqu'un comme toi ne soit pas à l'AS3. C'est vraiment pas dur, par contre plus stricte. Te connaissant (un tout petit peu si si) tu devrais pouvoir adapter tres tres rapidemement.

Puisque tu dis que ton jeu sera openSource je vais t'aider un peu de ma "vision" des choses pour te simplifier l'evolution de ton jeu.

Le plus petite animal de tous pourrait être une "cellule":
Cellule.vie ( de 0 à 1, 0:mort, 1:au max de sa forme)
Cellule.age ( de 0 à 1, 0:nouveau né 1:mort )
Cellule.benefice(une propriété gagnée/augmentée par ingestion de la cellule)
Cellule.deficite(une propriété altérée/perdue par ingestion de la cellule)
Cellule.gain (la quantité de la qualité affectée)
Cellule.perte (la quantité du default affecté)

Propriétés/defaut des animaux:
- Perception (visuelle, radar, olfative)
- Croissance (bloc pour un serpent, dent pour un carnivore, etc...)
- Deplacement (Vitesse, forme, environnment)
- Couleur (Un animal jaune dans une eau bleue se verra plus qu'un autre bleu)

Certains animaux pouvant être l'évolution d'une cellule, d'autre pouvant être composé d'un ensemble de cellules...

Tes animaux devant aussi être capable de réagir aux sentiments les plus basiques:
- Plaisir (manger telle nourriture)
Le plaisir, par exemple, pourrait "freiner" le vieillissement de ton animal.
- Peur (Environnment sans nouriture, être mangé)
La peur pouvant entrainer prématurément la mort si trop longtemps...
- Sans effet (Glander dans l'eau)

Ils doivent avoir une "mémoire" pouvant être associé à la quantité de cellules les composants.
La mémoire stockant les situations rencontrées:
- Acteur/Environnment/Date= Sentiment
Quand un animal rencontre une situation, il memorise si le peut**:
- le ou les acteurs
- le lieux
- la date,
- etc..
et surtout le resultat :Peur/Plaisir
(La perte d'un deficite pouvant ainsi être considéré comme bénéfice)

Quand ton animal rencontre une nouvelle situation (affectation des sentiment), ton animal pourra réagir (ou non) selon l'analyse de sa memoire.
Predateur dans champ de vision= PEUR
Peur= augmentation de le rapidité de déplacement
AugmentationRapidité= digestion plus rapide...

La mémoire de certain pouvant être des piles ou des queue, ou une election de la suppression si saturation...

Bref avant de t'attaquer au "graphisme" du devrait plancher tres tres FORT sur un aspect "code" super évolutif et surtout quasi commun à tout animal...

A plus et bon courage....
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
16 févr. 2009 à 09:01
Ce serait justement l'occasion de passer à l'AS3 .. l'AS2 ça n'évoluera plus et tu ne poura pas bénéficier des ajouts des dernières versions (en gros, rester sur flash 8)

Peg' ;)
Le plus dur c'est le passage, après c'est que du bonheur !
Utilisateur anonyme
15 févr. 2009 à 09:20
Hello
merci pour cette solution.
Par contre, le code proposé en illustration est en AS3, qui je ne connais pas du tout...
Mais j'ai compris le principe. Je vais essayer d'adapter... ça demande un re-écriture assez large du code de la class spore.as
Je vais voir ça...
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
15 févr. 2009 à 00:58
Pour la tête j'aurais une idée. Représente chaque morceau par une class.
Chaque morceau de la chenille (object) doit avoir 3 propriétées : speed (object {x:y}), position (object {x:y}) et child (objet morceau de chenille).
A chaque rafraichissement de ton ecran, chaque fois que tu a calculer des nouvelles positions, tu modifi seulement la vitesse et l'angle du premier morceau de la chenille. Celui ci va, si il à un enfant (child) modifier au prochain update la vitesse & angle de son enfant en lui attribuant les valeur que l'on lui donne en ce moment même.

Un petit exemple (pas testé, juste pour le concept)
Désolé si je fait des erreurs de syntaxe ça fait quelques mois que je suis plongé profondement dans le C++ pour un gros projet...

package {
class Chenille {

private var child:MorceauChenille;
private var speed:int, angle:int;

public function Chenille (x:int=0, y:int=0, angle:int=0, speed:int=0) {
child=new MorceauChenille(x,y,angle,speed);
}

public function update(newSpeed:int, newAngle:int) {
child.update(newSpeed, newAngle);
}
public function addBlock() {
child.addBlock();
}
}//fin class
}//fin package

package {
class MorceauChenille {

private var speed:int, x:int, y:int, angle:int, speed:int;
private var lastSpeed:int, lastAngle:int;
private var firstMove:bool;
private var child:MorceauChenille;

public function MorceauChenille($x:int,$y:int,$angle:int,$speed:int) {
x=$x;
y=$y;
angle=$angle;
speed=$speed;
firstMove=true;
}

public function update(newSpeed:int, newAngle:int):void {
angle=newAngle;
speed=newSpeed;
//après on calcul la nouvelle position en fonction rayon cercle angle & vitesse
//pour le concept on dira que le rayon est de 20...
x+=Math.cos(angle)*speed;
y+=Math.sin(angle)*speed;
if(firstMove) {
firstMove=false;
}
else {
if(child) {
child.update(lastSpeed, lastAngle);
}
}
lastSpeed=speed;
lastAngle=angle;
}

public function setChild(newChild:MorceauChenille):void {
child=newChild;
}

public function getPosition():Object {
return({X:x,Y:y});
}

public function addBlock():void {
if(!child) {
child=new MorceauChenille(x,y,angle,0);
}
else {
child.addBlock();
}
}

}//fin class
}//fin package

Voila, mais j'ai du faire pas mal d'erreur.
Et puis j'avais vu qu'avec CS4 on pouvais utiliser des vector... mais j'ai pas vraiment regardé encore toutes les nouveautés Fl pour le moment.

Stef



public
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
14 févr. 2009 à 20:20
Pour ce qui est de la tête, je te conseille de ne pas modifier le clip, mais la première phase de la tête qui donnera ses instructions au reste du corps (stockés dans un tableau).
Par contre, il va falloir réduire les rotations à certains angles pour éviter de voir la tête rentrer dans le corps.

Pour ce qui est des boutons, il y a une méthode simple :
- Déterminer quelle touche est appuyée
- stocker la variable à "1"
- lors du relâchement, la mettre à 0
- faire tourner un script qui modifie le déplacement en fonction des "1/0" déterminés.

Plus de soucis de répétitions à la con.

Peg'
Utilisateur anonyme
14 févr. 2009 à 20:07
hello,
Je suis tout à fait d'accord avec tes remarques, et je cherche des solutions pour corriger.
Pour la queue qui fait des derapages, c'est parsque chaque creature est encapsulée dans un movieclip, et les coordonnées (0;0) correspondent à la tete. Donc, quand on tourne (_rotation), c'est la tete qui fait tourner le tout.
Je vais corriger ça en modifiant le principe de rotation, pour que le reste du corps puisse suivre de façon realiste.
Pour les touches de direction, je ne me souvient pas d'une autre solution que mettre un addListener sur un object. Du coup, c'est pas super fluide...

PS: Demo des dernieres version: http://www.blackwizzard.com/spore/spore.html

Je vais uploader une nouvelle version d'ici qques minutes, le temps de tester (creatures dans un fichier xml externe et IA bien plus rapide).

Pour jouer, il suffit de manger les petites creatures en evitant de se faire manger.
Il faut remplir la barre rouge (chaque creature mangée remplis un peut plus la barre)
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
14 févr. 2009 à 19:17
je vais peut-être jouer les chiants, mais il y a 2 choses qui me chagrinent dans l'ergonomie de ton jeu :
- pourquoi la bestiole de base à la queue qui fait des dérapages ?
- Pourquoi ne gères-tu pas l'appuie/relâchement des touches de direction pour la faire tourner de façon fluide ?

Sinon c'est graphiquement beau mais j'ai toujours pas compris comment jouer ..

Peg'
Utilisateur anonyme
14 févr. 2009 à 16:59
Un site dedié au jeu est en cours de création; Creation d'une cellule, au fur et à mesure des niveaux, on gagne un nombre de mutation, à utiliser comme on souhaite dans l'éditeur pour faire evoluer sa creature.
Il y a pres d'une 50aine de variables differentes pouvant être modifiées, pour creer des combinaisons uniques de formes, de couleurs, de propriétés.
Stockages des créatures en DB.
Mode arene pour faire combattre sa créature contre les créatures des autres (dans ce cas, l'IA prend la main sur l'utilisateur).
Identification via facebook Connect.
Bientot en ligne :)
Le code sera open-source.

Laissez des commentaires sur la source et le code :)
Rejoignez-nous