Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Un simulateur de vol pour la Graph 90+E !!
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Un simulateur de vol pour la Graph 90+E !!

Posté le 08/05/2019 13:46

Coucou !

Présentation

Fly Simulator (abrégé en FlySim) est un simulateur de vol pour la Graph 90+E. Le jeu se présente en 2 dimensions, vu de profil. Le but est de voler d'un aéroport à un autre, en transportant des passagers. Plus vous aurez de passagers et plus loin vous volerez, plus vous aurez d'argent pour entretenir et améliorer vos avions. Vous pourrez alors acheter de nouveaux avions et voler vers des aéroports encore plus éloignés, et ainsi avoir encore plus d'argent. Dans ce jeu l'avion reste au centre de l'écran, le paysage défile en arrière plan.

Bien entendu, pour palier à la vue en 2D peu réaliste, le jeu sera le plus poussé possible, tant au niveau de la souplesse que de l'ergonomie ou encore des mécanismes du jeu. Il est prévu d'avoir, par exemple, le choix de l'heure du vol : jour, aube, créspuscule, et nuit. Il faudra aussi gérer le moteur, les différents régimes, les manœuvres, le carburant, et la température de l'huile. En plus de devoir éviter les incendies du moteur, vous devrez répondre à la tour de contrôle !

Bref un jeu visant avant tout à vous plonger dans l'athmosphère d'un cockpit que ce soit dans les moments de calme du vol de croisière ou dans le stress d'un crash imminent avec la tour de contrôle qui vous demande des comptes.


La gestion de l'heure et du temps

L'heure sera simulée par un changement de la couleur du fond de l'écran. Pour simuler un jour, le fond est d'un bleu, l'aube est représenté par un fond mauve, le crépuscule sera symolisé par un fond de couleur orange, et la nuit par un bleu-gris très foncé.

Le temps sera moins nuancé avec la présence, ou non de nuages en haut de l'écran.

Les instruments

La jauge de carburant vous indique le carburant restant. La reserve est la zone rouge à gauche, et le voyant à la droite de la jauge, vous indique que la reserve est entamée. Il n'y pas encore de lien entre le carburant brûlé et la distances parcourue.

La température d'huile est liée au gaz. Pas de voyant, mais une partie de la jauge est colorée. Le vert correspond à une température normale. La zone orange et rouge signalent une température anormalement élevée. Si la jauge reste dans l'orange pendant 15 secondes, cela déclenche un feu moteur. Par contre, seules 10 secondes dans le rouge amènent à l'incendie. Les 3 zones correspondent à des régimes moteurs : la zone verte = 50 -> 75% des gaz, la zone orange correspond à 87,2% des gaz ou plus et la zone rouge à 100% des gaz.

L'anémomètre, vous indique votre vitesse via une aiguille. Le trait tout en haut correspond au 0. Puis chaque trait correspond à 2 pixels de déplacement horizontal à chaque *frame*. Le maximum est donc 14 pixels par *frame*. A 10fps (vitesse calculée à partir des animations des avions) le déplacement est à 140 pixels par secondes, donc un peu plus de 2,7 secondes sont nécessaire pour que l'écran soit traversé. Ce qui, à vitesse maximum, semble correct. La relation entre gaz est vitesse est : un trait = 12,5% des gaz. Les traits ont également des correspondances particulières :
- 1er trait 12,5% Comme sur certains avions le premier trait de l'anémomètre n'est pas 0. Ce premier trait ne suffit pas à faire voler l'avion même avec les deux crans de volets.
- 2nd trait 25% et 2 crans de volet
- 3ème trait 37,5% 1 cran de volet
- 4ème trait 50% vol dit *lent*
- 5ème trait 62,5% vol de croisière
- 6ème trait 78% vol de croisière rapide
- 7ème et 8ème trait 90,5% et 100% sont des régimes spéciaux réservés au décollage.

L'altimètre à lui aussi 8 trait. Celui tout en haut correspond au niveau du sol. Le sol fait 20 pixels de haut. En comptant les 30 pixels de la barre des instruments plus la hauteur de l'avion (20 pixels) le 0 de l'altimètre est de 70 pixels de haut. En comptant 20 pixels par barres de l'alti. 7x20 = 140 ; 140+70 = 210 pixels de haut. Cela laisse donc une marge de 6 pixels en haut lorsque que l'avion est à son altitude maximale.

l'horizon artificielle, vous indique l'assiette et le roulis de l'avion.

Les volets ont trois position celle actuelle est soulignée par un voyant allumé en vert clairs, les autres étant en en vert foncés. La première position celle tout en haut est le neutre. Dans le jargon on parle de volet *en lisse* car ils ne dépassent pas du profil de l'aile. La seconde position juste en dessous, au milieu, correspond au premier cran de volet, et la position tout en bas correspond au deuxième cran. Leurs utilisations sont décritent dans la partie dédiée au pilotage.

La manette des gaz et le cadrant des RpM (Rotation moteurs Par Minutes) vous indiquent ici le pourcentage de gaz, le 0 etant tout en bas du cadrant. Il y a 7 traits donc chauqe trait équivaut 14,3 % des gaz.

Les témoins du train d'aterrissage sont en rouge si le train est rentré, en vert si le train est dehors, près à l'aterrissage. Dans la vraie vie, le voyant connait une prériode transitoire en jaune/orange pour signalé que le train est en cours de sortie. Ici la sortie est tellement rapide que, par simplification, ce passage a été abandonné.

La fenêtre des fréquences vous indique quelle fréquence est actuellement utilisée lors des communications. Ce sera à vous de changer cette fréquence via les touches dédiées. Comme dans la vraie vie, on ne change pas de fréquence n'importe comment : on suit les instruction de la tour en collationnant la sortie de zone avec la nouvelle fréquence, en changeant la fréquence pour celle demandée et en s'identifiant sur la nouvelle fréquence. Les changements de fréquence en dehors de ces périodes seront prises pour des fautes de pilotages : en effet la fréquence n'est plus la bonne, donc vous ne pouvez plus communiquer avec le sol, ni le sol avec vous… Comme dans la vraie vie également, les fréquences sont hertz et celle reservées aux communicationss sont comprises dans la plage allant de 118,00 hz à 137,00 Mhz avec un pas de 0,05 Mhz. Plus récemment, le système s'est affiné aux centième de hz, mais le jeu s'arrête lui aux dixièmes.

Le radar vous indique votre position. A gauche l'aéroport de départ, à droite celui d'arrivée, vous serez représentez par une flèche pointant sur la ligne au dessus.


Le cockpit en bas de l'écran, représente les instruments de l'avion


Le Cessna 172 SP



Le Learjet 45


Le Beechcraft 1900 D


Je prévois également une gestion de plusieurs heure de la journée…

Merci d'avance de votre aide à ce projet !

Les sources de l'ancien projet sont en fichier joint et sont 100% libres de droit.
Ancien projet
Ancien projet
Concernant le code, je développerai ce jeu grâce a C.Basic du célèbre Sentaro21 !

J'ai plutôt pas mal avancé avec la gestion de l'avion qui est terminée avec les instruments, tous fonctionnels ! On peut décoller atterrir, et voler (monter, descendre et tourner) Quelques screens :






Fichier joint


Pages : Précédente1, 2, 3, 4, 5, 6, 7, 8Suivante
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 13/05/2019 14:41 | #


Okay ! It's just amazing, thank you very much !!
"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

Moral
   95%


DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 13/05/2019 18:11 | #


@Shadow15510: ben le truc ici c'est que tu as la matrice qui stocke les coordonnées de chaque objet du monde. Ces coordonnées indiquent seulement la position de l'objet. Le type d'objet, lui, est indiqué par un ID par exemple (en plus des coordonnées) et correspond à chaque fois à un model 3d spécifique (Je pense qu'un bon vieux bmp ferais l'affaire. Tu pourrais faire ne sorte que les objets aient le même aspect quelque soit l'angle de vue autour). Un pour la tour de contrôle, un autre pour la piste par exemple. Avec la formule que tu connais tu calcule ta distance à cet objet et tu l'affiche en fonction (zoom).

Perso je vois ça comme ça. Après je ne suis pas expert et il y as probablement de petits détails qui m'échappent
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
LephenixnoirEn ligneAdministrateurPoints: 15483 Défis: 136 Message

Citer : Posté le 13/05/2019 18:31 | #


Je vois qu'on ne parle pas de la même chose quand on dit « matrice 3D », pour moi ça veut dire « matrice 3×3 ».
DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 13/05/2019 18:32 | #


Oui excuse moi, je parle d'une matrice de 4*n . n étant le nombre d'objets. Contenant les coordonnées de chaque objet de la map.
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 13/05/2019 18:34 | #


Perso je ne connais pas de formule pour cela…

Bon j'ai fait les screens du nouveau cockpit :



Vous notez que les voyants ont été mis au dessus, juste en dessous de la casquette dont j'ai revu le dessin (ancien modèle ci-dessous)



Bon je vous le met entrain de tourner au maximum :



et d'autre situations :




"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

Moral
   95%


DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 13/05/2019 18:37 | #


Mais si la formule pour calculer la distance entre deux points A et B (Ici en 2d, je regarde pour la 3d..):
sqrt((Xb-Xa)^2+(Yb-Ya)^2+(Zb-Za)^2)


Edit: formule modifiée pour la 3d
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
NinestarsHors ligneMembrePoints: 2247 Défis: 22 Message

Citer : Posté le 16/05/2019 23:06 | #


Salut Shadow, j'ai lu les 5 pages, et selon moi voici les choses qu'il faut absolument éviter :
- les matrices remplies de 0 avec des id d'objets remplissant 1% de ta matrice. Surtout vu que tu es en avion, alors tu vas en parcourir des cases.
- le lancer de rayons, c'est trop bancal.

L'approche de Disperseur me semble la bonne
DIsperseur a écrit :
ben le truc ici c'est que tu as la matrice qui stocke les coordonnées de chaque objet du monde. Ces coordonnées indiquent seulement la position de l'objet. Le type d'objet, lui, est indiqué par un ID par exemple (en plus des coordonnées) et correspond à chaque fois à un model 3d spécifique (Je pense qu'un bon vieux bmp ferais l'affaire. Tu pourrais faire ne sorte que les objets aient le même aspect quelque soit l'angle de vue autour). Un pour la tour de contrôle, un autre pour la piste par exemple. Avec la formule que tu connais tu calcule ta distance à cet objet et tu l'affiche en fonction (zoom).

Enfin on parle de matrice, mais c'est juste un moyen de stocker la positions d'objets. D'ailleurs pas besoin de 3 coordonnées, les objets seront au sol, soit sur le plan xy.

Je ne connais pas les possibilité du C.Basic, est-ce possible d'afficher un sprite zoomé ?
Si oui, ça simplifie pas mal.

Sinon, il y la possibilité d'afficher des objets 3D simplement :
- tu définies 4 points ABCD avec leur x1, y1 et z1 dans le repère monde
- transformer les coordonnées de chaque point avec la matrice d'Euler (tu peux la créer avec tes angles : roulis tangage lacet) et translater les points (soustraire la position xyz de l'avion)
tu obtiens de nouvelles coordonnées pour tes points x2, y2, z2
- tu projètes ces 4 points sur l'écran : x3 = x2 / z2 et y3 = y2 / z2 avec x3 et y3 les coordonnées de l'objet projeté à l'écran (en pixel) et z la distance à la caméra ( je suis pas clair mais c'est très pointu comme truc ça) C'est l'aspect le plus difficile surement.
En réalité ça ressemble plus à du x3 = K * x2 / z2 + C avec K et C des constantes.
K c'est grosso modo la FOV et C c'est largeur de l'écran en pixel / 2.
Même chose pour y
- traitement des données pour vérifier si l'objet est à l'écran, par exemple si x3 = 231344 aucun chance qu'il soit à l'cran qui fait 128x64
- dessine un polygone entre ces quatre points

Je te l'accorde, ça parait simple dit comme cela, il y a quand pas mal de boulot pour arriver à faire ce que je t'explique au dessus
DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 17/05/2019 07:21 | #


Ah cool j'aurais pas pensé que cette idée primerait
Le truc que tu décris je l'ai déjà fait pour mes premiers essais de 3d. En effet la fameuse technique de la division par z fonctionne pas mal. Il faut bien sûr ne pas oublier de changer les coordonnees de l'ecran pour les placer au centre (ce qui constitue le point de fuite). Vu qu'avec C.Basic on a pas forcément cette commande WiewWindow, il faut ajouter 192 à x et 96 à y (sur g90). Le truc c'est que si tu calcules ça pour tout les objets dont les coordonnées sont stockées dans la matrice tu perds énormément en vitesse d'exécution non ?

Ajouté le 19/05/2019 à 13:34 :
Alors la gestion du pseudo moteur 3d, ça avance ?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 19/05/2019 18:43 | #


Euh… non, je fais un break, le temps de rassembler ma motivation…
"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

Moral
   95%


DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 19/05/2019 18:45 | #


Perso je me suis intéressé au contrôle aérien automatique
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 19/05/2019 18:47 | #


Mon autre jeu ? Air control ? (de toute façon j'ai pas l'intention de le mettre, déjà que sans graphique, c'est pas la fluidité que j'ai en trop )
"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

Moral
   95%


DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 19/05/2019 18:51 | #


Non je parle d'un système qui pourrait te permettre de simuler le contrôleur aérien dans ton simulateur
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 20/05/2019 09:35 | #


Je viens de te dire que non ça bouffe trop de puissance.
"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

Moral
   95%


Maxipoint14Hors ligneMembrePoints: 225 Défis: 0 Message

Citer : Posté le 20/05/2019 10:56 | #


Wow ce projet est super dommage je sais pas faire de moteur 3D j'aurais pu faire soit fortnite soit autre chose

Mon moral de programmation:
   80%

avancée de la maj 1.14 de mon nouveau fortcalc
   0%
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 20/05/2019 11:53 | #


Mais je le ferais le moteur 3D quand j'aurai l'envie C'est le dialogue avec la tour que je ne ferais pas, en plus j'ai déjà fait un jeu à ce sujet.
"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

Moral
   95%


DisperseurHors ligneMembrePoints: 1485 Défis: 0 Message

Citer : Posté le 20/05/2019 18:13 | #


Ok c compris
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 14/07/2019 19:49 | # | Fichier joint


Bon, j'ai abandonné le projet… Je ne le ferai pas en 3D, ni en C-Basic, mais en C et en 2D.

Le jeu gagnera ainsi en rapidité, je prévois d'intégrer un contrôle aérien, différents avions vu de profil, plusieurs aéroport chacun unique proposant des difficultés nouvelles. Le simulateur sera le plus souple possible avec une gestion maximisé de l'avion : essences, température d'huile, vitesse, altitude, volets, manœuvres, maintenances, améliorations, passagers,… jusqu'aux extincteurs ! Plusieurs améliorations seront possible pour chaque avions, et plusieurs avions ! Au début 1 seul avion : à vous d'acheter les autres… Gagnez de l'argent en transportant des passagers entres deux aéroports et améliorez vos avions pour couvrir des distances encore plus grandes… Tous les détails très prochainement !

J'ai commencé quelques dessins pour voir, j'arrive à ça, tous les instruments ont leurs légende, l'écran à droite est un radar, un curseur symbolisera à terme l'avion permettant ainsi d'avoir une idée de la distances restante :


"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

Moral
   95%


LephenixnoirEn ligneAdministrateurPoints: 15483 Défis: 136 Message

Citer : Posté le 14/07/2019 20:06 | #


Hey, c'est joli ! As-tu essayé d'ajouter les couleurs de l'original à ce nouveau tableau de bord ?
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 15/07/2019 18:05 | # | Fichier joint


Ah ouais, c'est pas bête , j'arrive à ce résultat pour le cockpit :


"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

Moral
   95%


Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 15/07/2019 18:12 | # | Fichier joint


J'ai terminé le premier avion : le Cessna 172 SP ! Petit avion 4 places sortit des usines américaines Cessna, confortable.

Le modèle est ancien mais bénéficie de régulières mise à jour du constructeur. Il devient de plus en plus un vrai avion privé bon marché. . Mais reste également présent dans les aéroclubs américains et anglais. Il n'a pas encore conquis la France et même si certains privés en possèdent, les aéroclubs restent en général sur des avions plus simple à piloter comme le DR 400 des usines Robin Dauphin (pour l'histoire Robin est aussi une entreprise Américaine et est très tournée vers les hélicos).

On peut noter que le Cessna 172 possède une aile haute (au dessus du cockpit) ce que lui confère le double avantage d'être stable en vol et de donner une bonne visibitlié du sol par de larges vitres au niveau des portes. Il est également plus confortable au niveaux des portes qui donnent une entrée simple par rapport à l'entrée par la verrière du DR 400. Suffit les infos, voici le gif animé avec l'hélices et les virages !


"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

Moral
   95%


Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 15/07/2019 19:28 | # | Fichier joint


J'ai également terminé le Leajet 45, second avion de ce jeu ! Le Learjet est un jet privé. selon les configurations, on peut compter 8 personnes à bord plus deux membres d'équipages, soit une dizaine de personnes à chaque vols. Mais certains aménagement intérieur (façon salon) offre moins de place. Voici le gif animé de la bête. Comme c'est un avion à réacteurs, pas d'hélice, mais pas simplicité pas de réacteurs non plus. Finalement ça choque pas trop…



"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

Moral
   95%


Pages : Précédente1, 2, 3, 4, 5, 6, 7, 8Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 49 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