Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

News: Résultat des Alex d'Or 2021 / Tutos: [MV/MZ] Les bases des formules / News: News d'automne / Jeux: Dagga / Jeux: Le rêve de Merm / Chat

Bienvenue
visiteur !





Désactiver
la neige


publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

101 connectés actuellement

14197144 visiteurs
depuis l'ouverture

5854 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Lumen

Eclipso

Zarok

BloGecko

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Généralités > [RESOLU] [RM2003] Création d'un simili-Mode 7

Aller à la page 1 2 3 4 5

Reprise du message précédent:

Ephy - posté le 28/11/2021 à 07:59:56 (29125 messages postés) - honor -

❤ 1

[BIG SHOT]

Citation:

- Quelqu'un qui connaît RM 2003 peut-il me confirmer que le truc rouge c'est pour choisir de modifier une variable dont l'ID est la valeur de la variable sélectionnée ?


Oui. Je confirme.


Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Suite du sujet:

Nemau - posté le 28/11/2021 à 10:54:36 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Oki, merci.


Du coup, Tassle, on est d'accord que ton code ne fonctionne (en l'état) que si mes variables A, A+1, A+2... avaient pour ID 0001, 0002, 0003... ?

Du coup, comment adapter ton code pour qu'il fonctionne avec les variables 0121, 0122, 0123... ? J'ai essayé de rajouter "machin = +120" au dessus de chaque "variable pointée par machin" mais ça ne marche pas, quand je teste mes variables A ne changent pas.

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 28/11/2021 à 12:16:46 (5018 messages postés)

❤ 1

Disciple de Pythagolf

Non on est pas d'accord ^^

Je crois qu'il y a confusion sur ce qu'est A. A est juste un nombre que tu remplaces par ce que tu veux (ici 121). De même que B (qui pour toi doit valoir 141).

Je t'ai fait les changements pour que t'y vois plus clair:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[/code][code]
i: =1
Label 1
[condition] Si i < N:
    t: = 121
    t: + i
    x: = variable pointée par t 
    t: = 141
    t: + x
    y: = variable pointée par t
    j: = i
    Label 2
    j: - 1
    [condition] Si j >= 0:
        t: = 121
        t: + j
        t: = variable pointée par t
        t: + 141
        t: = variable pointée par t
        [condition] Si t > y:
            j: + 121
            t: = j
            t: + 1
            variable pointée par t: = variable pointée par j
            j: - 121
            Saut vers label 2
        [fin condition]
    [fin condition]
    j: + 1
    j: + 121
    variable pointée par j: = x
    i: + 1
    Saut vers label 1
[fin condition] 
 



Et comme tu disais au début du jeu tu initialises la variable d'id 0121 à 0, celle d'id 0122 à 1, et ainsi de suite jusqu'à la variable d'id 140.

Et tu stockes tout le temps la distance de l'ile numero 0 dans la variable d'id 141, la distance de l'ile numero 1 dans la variable d'id 142, etc.

~~


Nemau - posté le 28/11/2021 à 17:01:27 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Citation:

A est juste un nombre que tu remplaces par ce que tu veux (ici 121). De même que B (qui pour toi doit valoir 141).


Haaan. En fait quand tu disais "A" et "B" tu voulais dire "ID de A" et de "ID de B" c'est ça ?

Bon je vais essayer, je te tiens au courant !

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 28/11/2021 à 17:14:45 (5018 messages postés)

❤ 0

Disciple de Pythagolf

Nan je voulais dire "le nombre A" et "le nombre B", dans ma tête A et B n'ont jamais été des variables de RM ^^ (la variable d'id A = la variable d'id 0121)

C'est juste que je savais pas que dans ton cas ces nombres allaient être 121 et 141, donc je les ai appelés A et B (et le nombre d'iles je l'ai appelé N). Mais je vois comment tu as pu croire que c'était des variables RM, dans la vie de tous les jours c'est pas forcément commun de donner un nom à un nombre dont tu connais pas la valeur (déformation professionnelle :p).

~~


Nemau - posté le 28/11/2021 à 17:22:18 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

ÇA MAAARCHE !! Ça marche sa mère !! *bisou virtuel à Tassle*

Edit : je ne suis pas sûr de comprendre : tu dis que 121 n'est pas une ID mais un nombre, mais j'ai demandé à Johnny, et Johnny a l'ID. Non plus sérieusement : en fait, notre malentendu ne vient-il pas simplement du fait que ce que j'appelle ID tu l'appeles numéro/nombre ?

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 28/11/2021 à 17:53:32 (5018 messages postés)

❤ 0

Disciple de Pythagolf

Yay \o/

Peut-être oui, j'ai pensé ça aussi:

Moi a dit:

Ah je t'ai peut-être confus en parlant de numéro de variable plutôt que d'id, déso.



Mais tant mieux si maintenant tout marche bien :)

~~


Nemau - posté le 28/11/2021 à 21:59:56 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Bon, maintenant il faut que j'attribue à chaque île sa place dans le classement. En gros, là j'ai les variables dans le bon ordre, moi je veux l'inverse : les variables dans l'ordre des îles (ordre arbitraire) et la place dans le classement (en fonction de la distance) dans chaque variable.

J'ai une idée pour obtenir ça, je vais voir...

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Nemau - posté le 29/11/2021 à 00:26:17 (47484 messages postés) - admin -

❤ 2

The inconstant gardener

Olalaz, j'ai réussi à créer ça (voir le post ci-dessus) en quelques lignes via un commun event et un pointage de variable etoo ! Et sans l'aide de Tassle ! Je sui tro for ! :D

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Zam - posté le 29/11/2021 à 01:23:04 (5084 messages postés) - staff -

❤ 0

J'ai des flashback de Polaris 03, et je m'énerve de nouveau.


Nemau - posté le 29/11/2021 à 05:50:01 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Roh.

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 29/11/2021 à 18:19:17 (5018 messages postés)

❤ 1

Disciple de Pythagolf

Du coup je me suis chauffé pour coder des algos de tri plus rapides :F
J'ai toujours pas RM (et pas moyen de l'installer simplement sur Mac) donc j'ai toujours rien testé.

Quicksort:

Spoiler (cliquez pour afficher)



Un hybride Quicksort/Insertion Sort (normalement encore plus rapide, voir commentaire plus bas):

Spoiler (cliquez pour afficher)


Dans ce code hybride je fait à un moment "first: + 9" puis plus loin "first: - 9". Ce nombre 9 peut influencer la vitesse du tri, mais la bonne valeur ne peut pas vraiment être déterminé théoriquement, faut des tests empiriques. Si vous implémentez ce code vous pouvez tester avec différentes valeurs (disons entre 5 et 20) pour voir ce qui est le plus rapide sur RM.

J'ai fait en sorte que ces tris soient également stables (l'ordre relatifs d'objets de même valeur n'est pas modifié).

Pour ton cas Nemau le code que tu as devrait être plus rapide que ces variantes plus compliquées (surtout si l'ordre n'est pas constamment chamboulé). Ces codes deviennent plus efficaces pour des grands nombres d'objets à trier. Je dirais qu'on peut envisager de changer d'algo autour d'une quarantaine/cinquantaine d'objets à trier (un peu au pif). Si on a plusieurs centaines de trucs à trier là c'est sûr que ça vaut le coup (sauf si les objets sont déjà presque triés, là il n'y aura pas beaucoup de diff).

~~


Nemau - posté le 29/11/2021 à 23:06:23 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Citation:

Pour ton cas Nemau le code que tu as devrait être plus rapide


Ouf, parce que je te t'avoue que je n'avais pas trop le courage de me replonger dans cette partie. x) Et que ça m'aurait frustré de savoir qu'une meilleure solution existe et qu'elle est à portée de main. ^^

GG en tout cas. Et encore merci.


De mon côté, j'ai a priori enfin terminé l'étape 2 (afficher correctement les îles en fonction de la position et de l'orientation du bateau). J'ai fait un dernier micro changement, pour que les îles soient toujours au centre de l'écran (= orientation du bateau) si on est pile dessus, jusque-là elle était toujours affichée au nord (= angle 0).

Donc :

1. Placer un bateau dans une map virtuelle, le faire tourner sur 360° et enregistrer l'angle dans une variable
2. Afficher correctement les îles en fonction de la position et de l'orientation du bateau

3. Permettre au bateau de se déplacer

*cris* *pleurs*

Non en vrai pour le moment je ne suis pas bloqué, je vois à peu près comment je dois procéder. Bon par contre ça sera du déplacement en 8 directions au pire, 16 directions au mieux. Vu que je me déplace sur une grille virtuelle en 240*240. Sauf si Tassle (:sifflote xD) quelqu'un a une idée formidable pour concilier déplacement à orientation libre et grille virtuelle sur laquelle sont posés le bateau et les îles. En fait je pense que c'est faisable, mais ce serait très très complexe, et franchement si j'arrive à faire un déplacement sur 16 directions (nord, nord-nord-ouest, nord-ouest etc.) ça rendra déjà très bien. ^^

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 30/11/2021 à 08:46:55 (5018 messages postés)

❤ 1

Disciple de Pythagolf

Citation:

Tassle (:sifflote xD)


Au rapport :F

Je pense pas que ça soit compliqué de faire un déplacement à 360 degrés. L'idée c'est de faire se déplacer le bateau sur une grille virtuelle plus fine (comme dans Super Mario Bros où les coordonnées sont stockées à une échelle plus petite que le pixel).

En gros, supposons qu'on travaille sur une grille virtuelle de 240 000 * 240 000 et une grille "réelle" de 240*240.
Notons t l'angle en degrés que la direction du bateau fait depuis l'axe qui pointe vers l'est, dans le sens inverse des aiguilles d'une montre. Notons x_v et y_v les coordonnées du bateau sur la grille virtuelle et x, y les coordonnées réelles. Notons D la distance que tu veux que le bateau parcours sur la grille virtuelle en un "pas".

Quand tu veux faire un pas en avant, tu commences par utiliser le tuto d'Anton pour calculer les valeurs c = 1000*cos(t) et s = 1000*sin(t). Puis tu mets à jour les coordonnées virtuelles en faisant:
x_v = x_v + (D*c/1000)
y_v = y_v + (D*s/1000)

Puis tu mets à jour les coordonnées réelles en faisant:
x = x_v / 1000
y = y_v / 1000

(là j'ai supposé que l'axe des x pointe vers la droite et l'axe des y vers le haut, faudra changer quelques signes si c'est pas le cas chez toi)

Un autre truc:

Citation:

À noter que mon code est blindé de commentaires et que mon projet sera librement copiable et modifiable par qui veut, donc ceux qui veulent pousser le truc plus loin pourront le faire. :3


Apparemment l’interpréteur des events RM est un peu con et il lit tous les commentaires. Ça veut dire que chaque commentaire coute à peu près autant en temps qu'une vraie commande. Donc si ça ram, supprimer tous les commentaires peut être une solution.

~~


Nemau - posté le 30/11/2021 à 09:40:32 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Alors. Tout d'abord, merci. ^^ Le tuto d'Anton a l'air très bien fait, mais il est un peu compliqué pour moi (par exemple on m'avait expliqué ce que signifie le symbole ^ mais j'ai déjà oublié). Mais dans le dernier commentaire il donne le code exact à recopier dans RM, alors je vais peut-être tenter le coup.

Citation:

Notons t l'angle en degrés que la direction du bateau fait depuis l'axe qui pointe vers l'est, dans le sens inverse des aiguilles d'une montre.

Chez moi la direction du bateau est noté à partir du nord (angle 0) puis dans le sens des aiguilles d'une montre jusqu'à l'angle 358 (les angles impairs n'existent pas, le bateau pivote de 2 en 2 sinon il tournait trop lentement). Est-ce que ça a des répercussions par rapport au code d'Anton et/ou au tien ?

Citation:

(là j'ai supposé que l'axe des x pointe vers la droite et l'axe des y vers le haut, faudra changer quelques signes si c'est pas le cas chez toi)

L'axe des y pointe vers le bas, ça change quoi du coup ?

Citation:

Apparemment l’interpréteur des events RM est un peu con et il lit tous les commentaires. Ça veut dire que chaque commentaire coute à peu près autant en temps qu'une vraie commande. Donc si ça ram, supprimer tous les commentaires peut être une solution.

Oki, c'est bon à savoir. Du coup à la fin je proposerai aux joueurs une version sans les commentaires et aux éventuels curieux une version avec commentaires.


Edit : est-ce que le système que tu me proposes compense le fait que plus le bateau se déplace en "diagonale" (sur la map virtuelle) plus sa vitesse de déplacement (d'un point à un autre) se rapproche de 1,414 fois celle obtenue lors d'un déplacement sur l'axe Nord-Sud ou Ouest-Est ?

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 30/11/2021 à 10:19:56 (5018 messages postés)

❤ 1

Disciple de Pythagolf

Citation:

Chez moi la direction du bateau est noté à partir du nord (angle 0) puis dans le sens des aiguilles d'une montre jusqu'à l'angle 358 (les angles impairs n'existent pas, le bateau pivote de 2 en 2 sinon il tournait trop lentement). Est-ce que ça a des répercussions par rapport au code d'Anton et/ou au tien ?


Il suffit d'ajuster dans ce cas. Si ton angle est A, mon angle c'est t = 90-A (pas de souci ci c'est négatif, le code d'Anton fonctionnera tout bien comme il faut si tu remplaces la variable qu'il appelle "Angle" par t).

Citation:

L'axe des y pointe vers le bas, ça change quoi du coup ?



Remplace y_v = y_v + (D*s/1000) par y_v = y_v - (D*s/1000).

Citation:

est-ce que le système que tu me proposes compense le fait que plus le bateau se déplace en "diagonale" (sur la map virtuelle) plus sa vitesse de déplacement (d'un point à un autre) se rapproche de 1,414 fois celle obtenue lors d'un déplacement sur l'axe Nord-Sud ou Ouest-Est ?


Yep, à erreur d'arrondie près (c'est pour ça qu'on travaille sur une grosse grille virtuelle, pour que les erreurs d'arrondie se voient pas).
En gros imaginons que 1 pas vers l'est correspond à augmenter la coordonnée x réelle de 2 (donc +2000 pour la coordonnée virtuelle). Alors si tu te déplaces en diagonale, le bateau va de temps en temps avancer de 2 en diagonale et de temps en temps de 1, pour compenser le fait que la distance en diagonale est plus grande (si tu te déplaces de 1 en diagonale tu parcours une distance de 1.4142, si t'avances de 2 tu parcours une distance de 2.8284, donc si tu fais de temps en temps l'un et de temps en temps l'autre tu peux te débrouiller pour en moyenne avancer d'une distance d'environ 2, et c'est ce que cette méthode fera).

Exemple: Si tu commences à (0,0) et que tu fais 10 pas vers le sud-est à une vitesse de 2 carreaux par pas, les coordonnées successives avec cette méthode seront:
(0, 0)
(1, 1)
(2, 2)
(4, 4)
(5, 5)
(7, 7)
(8, 8)
(9, 9)
(11, 11)
(12, 12)
(14, 14)

Au final on a parcouru une distance totale de racine(14*14 + 14*14) = 19.8 (comparé à une distance de 20 si on avait avancé droit vers le sud). Parfois la distance totale sera un peu au dessus, parfois un peu en dessous, mais globalement de manière négligeable.

Edit:
À noter que ce qu'Anton appelle outputCos et outputSin c'est déjà ce que j'appelle c et s (c'est à dire cos(t)*1000 et sin(t)*1000), pas besoin de multiplier par 1000.

~~


Nemau - posté le 30/11/2021 à 22:33:51 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Merci beaucoup.

Malheureusement, et pour plusieurs raisons (notamment un niveau de nooberie élevé de ma part) je vais opter pour un système de déplacement en 8 directions. :doute5 (oui, ce ne sera même pas 16 finalement)

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 01/12/2021 à 18:33:21 (5018 messages postés)

❤ 0

Disciple de Pythagolf

Ma déception est immense :( (nan tkt, tu fais ce que tu veux)

Mais du coup je suis curieux, t'utilises quelle formule pour savoir où placer une ile sur l'écran sans calculer de sinus ?

~~


Nemau - posté le 01/12/2021 à 20:23:05 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Bin la tienne, cf. les premières pages de ce topic. ^^ Tu te souviens, quand je t'ai demandé comment calculer un angle à partir de coordonnées ?

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 02/12/2021 à 08:23:07 (5018 messages postés)

❤ 0

Disciple de Pythagolf

Oui oui ça je me souviens :) Mais après tu fais quoi avec cet angle ?
Parce que normalement la position de l'île sur l'écran (par rapport au centre) est proportionnelle au sinus de l'angle que t'as calculé.

~~


Sylvanor - posté le 02/12/2021 à 13:03:33 (23120 messages postés) - webmaster -

❤ 0

Le gars chiant qui rigole jamais (il paraît)

On veut des screens! On veut des gifs!

Les croissants croâssent en croix, s'ancrent ou à cent croîssent sans crocs à sang. Crois! Sens! ౡ


Nemau - posté le 02/12/2021 à 16:18:50 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Là c'est en mini-pause, mais promis dès que j'ai du neuf je vous montre !

Tassle : je t'explique ça ce soir ou demain (suis pas chez moi et j'ai pas trop le temps tout de suite ^^). Mais y a rien de très compliqué. C'est juste que le rendu que j'obtiens n'est pas très réaliste.

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 03/12/2021 à 15:47:51 (5018 messages postés)

❤ 0

Disciple de Pythagolf

J'ai encore amélioré la formule pour trouver l'angle (ton problème original) :F

La nouvelle formule est:
(x*(45*y+31*(y-x)/2)+y*y/2)/(y*y)

Ça donne une garantie d'erreur de 0.749 pour pour des valeurs 0 <= x <= y <= 939 (et y différent de 0).

De manière plus générale, pour ceux qui veulent calculer atan2(y,x) (en degrés) pour des valeurs de y et x allant de -9 999 999 à 9 999 999 vous pouvez utiliser une des deux méthodes suivantes:

Méthode 1:

Spoiler (cliquez pour afficher)



Méthode 2:

Spoiler (cliquez pour afficher)



~~


Nemau - posté le 04/12/2021 à 12:42:13 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Je pense que je vais garder la formule que j'ai actuellement, car il faut que j'avance, mais je suis impressionné par ton sens de la perfection. ^^


Pour répondre à ta question sur comment j'affiche les îles :

Le joueur voit 320 pixels de large. La vision humaine horizontale est d'environ 120°, donc si 120° = 320 pixels, 360° = 960 pixels. J'affiche donc mes îles sur une ligne horizontale allant de -480 à 480, en fonction de leur angle (allant de -180 à +180).

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!


Tassle - posté le 04/12/2021 à 18:43:52 (5018 messages postés)

❤ 0

Disciple de Pythagolf

Oki je vois merci :)
(t'as une erreur max d'eviron 34 pixels par rapport à quelque chose de plus réaliste)

~~


Nemau - posté le 04/12/2021 à 19:52:25 (47484 messages postés) - admin -

❤ 0

The inconstant gardener

Oui j'ai choisi la (relative) simplicité au détriment d'un meilleur réalisme. ^^

Proposez vos news !TrombinoscopePolaris 03Planète Glutko • Doom Doom Doom Doom! I want you in my tomb!

Aller à la page 1 2 3 4 5

Index du forum > Généralités > [RESOLU] [RM2003] Création d'un simili-Mode 7


repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers