[1.7] Formules
3 participants
Orbyt :: Game Design
Page 1 sur 2
Page 1 sur 2 • 1, 2
[1.7] Formules
Parce qu'elles se relient entre elles à travers les différends éléments du jeu, on va faire un topic regroupant l'ensemble des formules (et les stats attenantes)
Matdark- Messages : 172
Date d'inscription : 16/01/2010
Re: [1.7] Formules
bon, on dirait que c'est ici que je dois poster, la premiere que j'ai faite (non testee hein, matdark a pas voulu tester), c'est a priori le calcul de l'angle de derive par rapport a differentes variables, comme la vitesse du vent, vitesse du bateau etc etc
angle de derive = 1/m1 [(v1 X (cos Beta)^2 /(8X L1 ^2)) - 0.6464 X alpha
X v2 X L2 ^2]
m1 = masse du bateau = poids/g(9.81)
v1=
vitesse du bateau en m/s
beta= orientation de la voile par rapport au bateau
L1= longueur
bateau
alpha= angle du cent
v2= vitesse du vent en m/s
L2=
longueur de la voile
X= c'est 'fois'
J'ai les calculs en format .pdf si quelqu'un est interesse...matdark les a aussi.
angle de derive = 1/m1 [(v1 X (cos Beta)^2 /(8X L1 ^2)) - 0.6464 X alpha
X v2 X L2 ^2]
m1 = masse du bateau = poids/g(9.81)
v1=
vitesse du bateau en m/s
beta= orientation de la voile par rapport au bateau
L1= longueur
bateau
alpha= angle du cent
v2= vitesse du vent en m/s
L2=
longueur de la voile
X= c'est 'fois'
J'ai les calculs en format .pdf si quelqu'un est interesse...matdark les a aussi.
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Bon, Matdark m'a demande comment calculer l'ELO...
On met a jour le classement selon la formule (apres chaque combat):
DE= K X (S- 1/[10^((-D/F)+1)])
Avec, pour chaque joueur :
</li>
On met a jour le classement selon la formule (apres chaque combat):
DE= K X (S- 1/[10^((-D/F)+1)])
Avec, pour chaque joueur :
- dE : nombre de points Elo en jeu
- S : Score (1 = gagné, 0
= perdu, 0.5 = match nul) - F : Facteur F (volatilité du classement) =
400 : constance definissant la facilite du jeu - D : Différence de points Elo : Elo du joueur -
Elo de son adversaire
K : Facteur K (Importance de la partie):- Score d'un des joueurs < 2100, K vaudra 32
- Score d'un des joueurs < 2401, K vaudra 24
- Score des joueur > 2400, K vaudra 16
</li>
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Petite question à Mot (et les autres codeurs...)
Vous pouvez vous en servir de ça?
Je veux dire, les transposer tel quel, ou les comprendre pour les inclure dans le jeu. Ou c'est du charabia inutilisable?
Vous pouvez vous en servir de ça?
Je veux dire, les transposer tel quel, ou les comprendre pour les inclure dans le jeu. Ou c'est du charabia inutilisable?
Matdark- Messages : 172
Date d'inscription : 16/01/2010
Re: [1.7] Formules
bon, formule d'eperonage, c'est en gros un pass/fail, c'est a dire que si la valeur est superieur a 16 (nombre choisi aleatoirement), le bateau coule, sinon il n'a rien...
La formule a appliquer est:
% X 1/(2X PVcoque) X (m1 +m2) x (v2)^2
Avec m1 etant la masse du defenseur
m2, masse attaquant
V2, vitesse attaquant
et % un jet de de de 100 = (1+ jet/100)
La formule a appliquer est:
% X 1/(2X PVcoque) X (m1 +m2) x (v2)^2
Avec m1 etant la masse du defenseur
m2, masse attaquant
V2, vitesse attaquant
et % un jet de de de 100 = (1+ jet/100)
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Matdark, pour te répondre, on peut effectivement se servir de formules écrites comme ça, sachant que PHP inclut pas mal de fonctions maths, du style cos et compagnie.
Sinon, pour optimiser un peu, faudrait prendre des valeurs plus rondes, parce que PHP pêche sur les décimales. Du style g=10N.kg-1 au lieu de 9.81N.kg-1.
Bye
Sinon, pour optimiser un peu, faudrait prendre des valeurs plus rondes, parce que PHP pêche sur les décimales. Du style g=10N.kg-1 au lieu de 9.81N.kg-1.
Bye
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
Bah a priori, si c'est homogene c'est a dire si on utilise que des 'poids' a la place des 'masses' partout, on peut carrement zapper la valeur de la constante de Newton ou autre (g).
Ca simplifierait le code et vu que de meme, les vitesses seront en 'carre/tour' et pas en 'm/s' comme ca devrait l'etre, on aura un semblant de coherence/realisme tout en gardant quelque chose 'utilisable'...a moins que ca ne derange pas les codeurs de faire ca avec les 'vraies formules' c'est a dire avec les conversions vers les 'vraies unites'^^
Ca simplifierait le code et vu que de meme, les vitesses seront en 'carre/tour' et pas en 'm/s' comme ca devrait l'etre, on aura un semblant de coherence/realisme tout en gardant quelque chose 'utilisable'...a moins que ca ne derange pas les codeurs de faire ca avec les 'vraies formules' c'est a dire avec les conversions vers les 'vraies unites'^^
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
bon, formule de desenchouage
c'est a dire le bateau qui arrive a se sortir du sable apres s'y etre echoue.
desenchouage = 0.4 X(3Pveq + PVcoque/2)/ masse bateau
avec Pveq le nombre de PV equipage actuel (pas max)
Et Pv coque le nombre de PV coque actuel (pas max).
En gros, ca fait du 12% de chances de sortir pour un bateau 'standard'
c'est a dire le bateau qui arrive a se sortir du sable apres s'y etre echoue.
desenchouage = 0.4 X(3Pveq + PVcoque/2)/ masse bateau
avec Pveq le nombre de PV equipage actuel (pas max)
Et Pv coque le nombre de PV coque actuel (pas max).
En gros, ca fait du 12% de chances de sortir pour un bateau 'standard'
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
ok, formule suivante, qu'on a mega simplifie avec mat (au depart, il voulait 12 variables...)
Vitesse bateau voile = vitesse vent X ([angle voile par rapport a bateau module 90]/90)%
Alors le 'modulo' ca veut simplement dire que lorsque l'angle atteint 90, la valeur de cet angle redescent a 0...car on est dans un cercle on ne veut pas avoir des valeurs de 110% par exemple.
La vitesse reelle du bateau etant donc:
Vr = [plus grand de (vitesse bateau voile; vitesse bateau rames)]
Avec le vitesse bateau rames une variable connue (definie).
Maintenant, nouvelle vitesse, prenant en compte le courant, comme le veut mat:
vitesse finale bateau = (Pvcoque actuelle/Pvcoque max) X (Vr + Vc[1-teta/90])
Avec vr la vitesse reelle ci dessus
teta l'angle de courant...modulo 180 cette fois.
Vc la vitesse ru courant
Vitesse bateau voile = vitesse vent X ([angle voile par rapport a bateau module 90]/90)%
Alors le 'modulo' ca veut simplement dire que lorsque l'angle atteint 90, la valeur de cet angle redescent a 0...car on est dans un cercle on ne veut pas avoir des valeurs de 110% par exemple.
La vitesse reelle du bateau etant donc:
Vr = [plus grand de (vitesse bateau voile; vitesse bateau rames)]
Avec le vitesse bateau rames une variable connue (definie).
Maintenant, nouvelle vitesse, prenant en compte le courant, comme le veut mat:
vitesse finale bateau = (Pvcoque actuelle/Pvcoque max) X (Vr + Vc[1-teta/90])
Avec vr la vitesse reelle ci dessus
teta l'angle de courant...modulo 180 cette fois.
Vc la vitesse ru courant
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
formule suivant, sur l'evolution du vent..
On va nommer Y la variable des 8 directions.
Pour Y: Nord +1 = Nord-ouest
Nord-ouest +1 = Ouest..
...etc...
Est+1= Nord est
Nord est+1 = N
Donc un module 8 en fait.
N->NO->O->SO->S->SE->E->NE ...etc
La formule d'evolution de direction du vent Y est:
Y(t+1) = Y(t)X [ 8X (random %)/100 +1]
Ca nous donne une variation de directions pas trop abrupte.
Il faudra evidemment arrondir a l'entier le plus proche, c'est a dire si Y(t) = O et qu'avec le random, on a Y (t+1) = 6 Y(t) alors, Y(t+1) = N.
Maintenant, meme principe pour l'evolution de la puissance du vent.
Soit V vent la vitesse du vent.
V (t+1) = V(t) X [ (1+ 2X( random %)/100]
On va nommer Y la variable des 8 directions.
Pour Y: Nord +1 = Nord-ouest
Nord-ouest +1 = Ouest..
...etc...
Est+1= Nord est
Nord est+1 = N
Donc un module 8 en fait.
N->NO->O->SO->S->SE->E->NE ...etc
La formule d'evolution de direction du vent Y est:
Y(t+1) = Y(t)X [ 8X (random %)/100 +1]
Ca nous donne une variation de directions pas trop abrupte.
Il faudra evidemment arrondir a l'entier le plus proche, c'est a dire si Y(t) = O et qu'avec le random, on a Y (t+1) = 6 Y(t) alors, Y(t+1) = N.
Maintenant, meme principe pour l'evolution de la puissance du vent.
Soit V vent la vitesse du vent.
V (t+1) = V(t) X [ (1+ 2X( random %)/100]
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Les quelques trucs qui ne sont pas des formules en soit, mais que bon, quand même.
Les dégats flèches/Cac sont un random entre les deux chiffres indiqués sur la stat du bateau (genre 15-20, ça donne des dégats de 15-16-17-18-19-20).
Si y a moyen d'avoir des dégats catapultes de type 0+random, (genre 15-20 = 0-15-16-17-18-19-20...), les dégats peuvent varier légèrement aussi, mais surtout le tir peut etre foiré.
Sinon je crois qu'on a plus ou moins tout en "véritable" formule la. Le reste va être simple normalement.
La Ct ci dessous est la capacité à virer (stat bateau).
Les dégats flèches/Cac sont un random entre les deux chiffres indiqués sur la stat du bateau (genre 15-20, ça donne des dégats de 15-16-17-18-19-20).
Si y a moyen d'avoir des dégats catapultes de type 0+random, (genre 15-20 = 0-15-16-17-18-19-20...), les dégats peuvent varier légèrement aussi, mais surtout le tir peut etre foiré.
Sinon je crois qu'on a plus ou moins tout en "véritable" formule la. Le reste va être simple normalement.
La Ct ci dessous est la capacité à virer (stat bateau).
Dernière édition par Matdark le Ven 26 Mar - 3:48, édité 2 fois
Matdark- Messages : 172
Date d'inscription : 16/01/2010
Re: [1.7] Formules
bon autre formule 'requested'
C'est la formule pour tourner le bateau.
les valeurs intervenant sont:
- la capacite a tourner du bateau, constante selon le bateau = Ct
- l'angle de derive calcule precedemment
- l'angle 'voulu' qui est l'angle que l'on veut tournmer.
Angle dont le bateau tourne = -angle de derive + (Ct/100) X angle voulu.
C'est la formule pour tourner le bateau.
les valeurs intervenant sont:
- la capacite a tourner du bateau, constante selon le bateau = Ct
- l'angle de derive calcule precedemment
- l'angle 'voulu' qui est l'angle que l'on veut tournmer.
Angle dont le bateau tourne = -angle de derive + (Ct/100) X angle voulu.
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Dans les formules de vent, random % = nombre au hasard entre 1 et 100?
EDIT : si random % veut bien dire ça, alors tes formules ont un souci, puisque la force/direction augmentent en permanence. Or, il me faut des nombres toujours inférieurs à 255 pour stocker en BDD.
Bye
EDIT : si random % veut bien dire ça, alors tes formules ont un souci, puisque la force/direction augmentent en permanence. Or, il me faut des nombres toujours inférieurs à 255 pour stocker en BDD.
Bye
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
En fait, pour que ca marche, en effet, faudrait que random % soit un entier entre -100 et + 100.
Niveau BDD, pour le 255 c'est possible de faire pour que quand ca atteint une certaine valeur, on retombe a 0 automatiquement?
Une espece de 'modulo 255' en fait.
Niveau BDD, pour le 255 c'est possible de faire pour que quand ca atteint une certaine valeur, on retombe a 0 automatiquement?
Une espece de 'modulo 255' en fait.
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
OK pour le random.
Sinon, vu que les directions 1 et 9 sont identiques on peut pas faire une espèce de modulo 8?
Bref, faut trouver un moyen mathématique que ça dépasse pas 255, et si possible que ça reste de 1 à 8, pour optimiser un peu.
Bye
Sinon, vu que les directions 1 et 9 sont identiques on peut pas faire une espèce de modulo 8?
Bref, faut trouver un moyen mathématique que ça dépasse pas 255, et si possible que ça reste de 1 à 8, pour optimiser un peu.
Bye
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
Si carrement, si c'est plus facile de faire un modulo 8, c'est perfect.
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
OK, ben modulo 8 sur la formule alors...
Mais 8mod8 = 0... Donc je dois sauter une étape.
Mais 8mod8 = 0... Donc je dois sauter une étape.
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
pas forcement, si le resultat de 'variation' est 0, alors le vent ou la direction ne change pas...ca arrive probablement.
Comme on ne divise pas par ce modulo, ca devrait pas causer de soucis.
Comme on ne divise pas par ce modulo, ca devrait pas causer de soucis.
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
OK, je vois... Bon, je vais implémenter ça dans le moteur de jeu.
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
Je comprends pas... La suite des valeurs pour la direction ou la force du vent tend vers 0, et l'atteint en quelques tours.
Ma formule :
Ma formule :
- Code:
$wind_direction = ($this->informations['wind_direction'] * (8 * rand(-100, 100)/100 1))%8;
$wind_power = $this->informations['wind_power'] * (2 * rand(-100, 100)/100 1);
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
Hmmm
Dans la formule de code, je pige pas ca:
(8 * rand(-100, 100)/100 1))%8;
Le '1' separe comme ca, ca veut dire quoi?
La formule de depart etant
V (t+1) = V(t) X [ (1+ 8X( random %)/100]
Le '1' devrait etre quelque part dans une addition, sans le +1, en effet, on aurait un truc qui tend vers 0...
Dans la formule de code, je pige pas ca:
(8 * rand(-100, 100)/100 1))%8;
Le '1' separe comme ca, ca veut dire quoi?
La formule de depart etant
V (t+1) = V(t) X [ (1+ 8X( random %)/100]
Le '1' devrait etre quelque part dans une addition, sans le +1, en effet, on aurait un truc qui tend vers 0...
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Oui, effectivement, erreur de copier-coller : la formule est :
Mais les valeurs tendent toujours vers 0.
- Code:
$wind_direction = ($this->informations['wind_direction'] * ((8 * rand(-100, 100)/100) + 1))%8;
Mais les valeurs tendent toujours vers 0.
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
hmm la c'est pas normal... pcq un truc de la forme V(t+1) = ( 1+ V(t) ) devrait tendre vers une grosse valeur...pas 0...
Le %8 a la fin ca fait quoi exactement? c'est le modulo 8?
En fait, je viens de penser a un truc con, c'est quelle valeur pour V(0) qui est la vitesse initiale? Si c'est '0' c'est normal que ca tende vers 0 car a chaque etape, il va multiplier par 0.
En fait, faudrait peut etre donner un v(0) non nul en hypothese avant non?
Le %8 a la fin ca fait quoi exactement? c'est le modulo 8?
En fait, je viens de penser a un truc con, c'est quelle valeur pour V(0) qui est la vitesse initiale? Si c'est '0' c'est normal que ca tende vers 0 car a chaque etape, il va multiplier par 0.
En fait, faudrait peut etre donner un v(0) non nul en hypothese avant non?
byleth- Messages : 27
Date d'inscription : 24/03/2010
Re: [1.7] Formules
Le %8 à la fin signifie qu'on passe toute la formule au modulo 8.
J'avais pensé à ne pas donner 0 en hypothèse, mais alors le souci c'est que la formule peut renvoyer 0 parfois (voir messages précédents) à cause du module (8%8=0).
Donc je pense que le problème vient de là, c'est à dire que quand la formule renvoie 8, 8%8=0, et après on reste à 0.
Je vais faire des tests pour voir si le bug vient d'ailleurs... Mais en tout cas, ça reste un problème
Bye
EDIT : oui donc on a des séries plus ou moins longues, mais on tombe parfois sur 0, et là c'est le drame!
J'avais pensé à ne pas donner 0 en hypothèse, mais alors le souci c'est que la formule peut renvoyer 0 parfois (voir messages précédents) à cause du module (8%8=0).
Donc je pense que le problème vient de là, c'est à dire que quand la formule renvoie 8, 8%8=0, et après on reste à 0.
Je vais faire des tests pour voir si le bug vient d'ailleurs... Mais en tout cas, ça reste un problème
Bye
EDIT : oui donc on a des séries plus ou moins longues, mais on tombe parfois sur 0, et là c'est le drame!
my hotel- Messages : 291
Date d'inscription : 16/01/2010
Re: [1.7] Formules
ok, je vois...en effet ca vient de la...si on atteint 0, la t+1 sera toujours 0, j'avais pas pense a ca^^ En fait ya une chance sur 200 pour que ca arrive mais ca arrive quand meme...
Ca arrive quand V(t) X (1+ 8X( random %)/100) = 8
C'est a dire random = [(8-V(t)) X 100) /(8 V(t)]
C'est un cauchemar pour determiner les valeurs de random a eviter^^
Ya pas moyen de poser en contrainte que random 'evite' les valeurs [(8-V(t)) X 100) /(8 V(t)] ?
Ou alors je change la formule par un moyen quelconque quand j'ai 5mn
Ca arrive quand V(t) X (1+ 8X( random %)/100) = 8
C'est a dire random = [(8-V(t)) X 100) /(8 V(t)]
C'est un cauchemar pour determiner les valeurs de random a eviter^^
Ya pas moyen de poser en contrainte que random 'evite' les valeurs [(8-V(t)) X 100) /(8 V(t)] ?
Ou alors je change la formule par un moyen quelconque quand j'ai 5mn
byleth- Messages : 27
Date d'inscription : 24/03/2010
Page 1 sur 2 • 1, 2
Orbyt :: Game Design
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|