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
Citer : Posté le 11/05/2019 20:23 | #
Oui creuse de ce côté là je pense que c'est prometteur. C-basic offre vraiment de super fonctions
-Planétarium 2
Citer : Posté le 12/05/2019 08:08 | #
Mais en plus, les collisions on s’en fiche mêmes les simulateurs sérieux (XPlane, Flight simulator) ne les gères pas !
Citer : Posté le 12/05/2019 09:30 | # | Fichier joint
Mais à l'occasion regarde si tu ne peux pas ajouter la barre centrale et l'arceau de la verrière sur ton image
Comme ceci:
-Planétarium 2
Citer : Posté le 12/05/2019 09:45 | #
Disperseur à l'instant j'ai cru que c'était une screenshot du jeu de Shadow !
Dijkstra - The Witcher
Citer : Posté le 12/05/2019 09:56 | #
Mais c'est un screen de mon jeu !
Non, plus sérieusement, la poignée de la verrière est invisible lorsque l'on pilote le léger retour sur le tableau de bord (la « casquette » est déjà dessinée, c'est le rectangle plus foncé en haut, je peux le travailler un peu plus )
Je n'ai pas tout compris sur le topic de C.BASIC, je ne travaille qu'avec ML et j'aimerai enregistrer une partie de l'image via ReadGraph( mais cela ne marche pas… Merci d'avance !
Citer : Posté le 12/05/2019 10:02 | #
@Shadow: Je parle de la barre qui coupe la verrière en deux au milieu. Ça donnerai un meilleur aspect
-Planétarium 2
Citer : Posté le 12/05/2019 10:04 | #
Je suis pas fan de l'idée d'avoir l'armature visible à l'écran, ça casse la vue en 3D !
Citer : Posté le 12/05/2019 10:05 | #
Moi aussi, mais cette partie de l'armature n'est pas visible lorsque l'on pilote. et pis faudrait faire un arc de cercle bizarre pour rendre compte de la 3D…
Et pis la photo là c'est un Dauphin Robin soit un avion à hélice. Mon avion peut parfaitement être d'un autre modèle, sans cette barre.
Citer : Posté le 12/05/2019 10:51 | #
@Shadow : C'est quelle partie de l'image que tu veux enregistrer ?
Sinon pour revenir sur la technique, je pense que le mieux pour avoir un environnement réaliste avec des obstacles peu importe l'altitude ( et pour pouvoir les éviter en passant par dessus ou par dessous ), une seule matrice ne sera peut être pas suffisante et il faudra recourir à une matrice en 3d
Dijkstra - The Witcher
Citer : Posté le 12/05/2019 10:57 | #
Pour la partie de l'image, c'est le cockpit sans les aiguilles : cette partie est fixe et ne change jamais, mais je dois la redessiner à chaque fois, si j'arrive à l'enregistrer une fois puis à l'afficher sans la re-dessiner en entier
Pour la 3D, je veux bien des précisions : je n'ai aucune notions…
Citer : Posté le 12/05/2019 11:42 | #
Ben la à ta place je regarderais du côté du Raycasting. Jette un oeil sur ce topic (les liens de l'entête). Le truc ici serait de lancer des rayons de gauche à droite et de haut en bas pour voir si il y as un obstacle devant toi (en dessous ou au dessus). Comme ça tu as en plus la distance à l'obstacle grâce au rayon et tu peux l'afficher proportionnellement à sa distance dans la matrice.. en gros c'est l'idée
Le truc ici c'est qu'il te faut une matrice en 3d pour localiser les obstacles dans ton monde. L'autre technique serait de stocker les coordonnées de tes obstacles dans une matrice et a chaque fois que tu te déplace tu lis cette matrice et tu regarde quel obstacle peut être affiché. Ici des coordonnés en 3d.
-Planétarium 2
Citer : Posté le 12/05/2019 11:46 | #
Je pense que le mieux est de mettre le cockpit dans une image bitmap et de l'afficher avec un "masque" , mais je ne connais pas bien la technique...
pour la matrice en 3D, c'est très simple : tu initialise par exemple 10 matrices de 10*10 cases chacune. Chaque matrice étant une "couche" d'une grande matrice en 3D de 10*10*10 cases ( comme un cube découpé en plein de cubes plus petits ). Par contre, avec cette technique, le lancer de rayon devra être fait pour chaque case qui serait dans le cône de champ de vision ( dont le sommet est la position du joueur )
Dijkstra - The Witcher
Citer : Posté le 12/05/2019 11:53 | #
Oui c'est pas simple comme technique. C'est pour ça que vu qu'un simulateur de ce type ne demande pas autant d'objets qu'un labirythe, il peut se restreindre à stocker les coordonnées de chaque objet
-Planétarium 2
Citer : Posté le 12/05/2019 11:58 | #
par contre je ne vois absolument pas comment savoir si un objet est dans le champ de vision avec cette technique...
Avec le lancer de rayons, on est aussi libre de faire une distance de rendu et donc de restreindre grandement le nombre de calculs pour chaque frame.
Dijkstra - The Witcher
Citer : Posté le 12/05/2019 11:59 | #
Okay… Euh… bon… ça vous fait rien, si je met d'objet ?
Nan mais je vais essayer, alors juste, vous entendez quoi par « lancer de rayons » parce que là j'ai une image de Luc Skywalker avec un pistolet laser Sinon, les collision j'oublie pour l'instant. Le raycasting, j'y ai déjà pensé mais c'est trop lent. Le coup d'avoir une matrice en 3D j'y avais pensé, c'est pas con mais comment on fait pour les gérer ?
Je pensais changer la contenu de la matrice en fonction de l'orientation, donc le joueur voit toute la matrice et en affichant tout. A la limite générer aléatoirement une map est peut-être plus économe en terme de puissance… ?
Citer : Posté le 12/05/2019 12:05 | #
Pour gérer la matrice en 3D, il faut simplement avoir à l'esprit que chaque case aura 3 coordonnées ( merci captain obvious ) :
- sa coordonnée x
- sa coordonnée y
- le numéro de la matrice dans laquelle elle se trouve
Le lancer de rayon est une technique utilisée dans les moteurs 3D par raycasting ou par raytracing. je te laisse regarder les liens du topic de "question sur le raycasting" pour comprendre
Dijkstra - The Witcher
Citer : Posté le 12/05/2019 12:07 | #
Perso pour ton simulateur je préconise l'utilisation d'une matrice dans laquelle tu stocke les coordonnées de chaque objet (arbre tour de contrôle piste...) en 3d. En effet si tu utilise une matrice en 3d vu que dans un simulateur d'avion on parcours généralement de grandes distances il y aura beaucoup d'espace vide dans ta matrice..
Le truc du coup c'est d'avoir tout le temps le même fond composé des deux rectangles (ciel et terre) qui bougent en fonction de ton orientation (vois pour gérer le looping ) par dessus quoi tu ajoute les différents objets, en fonction de ta position renseignée par trois variables x, y et z plus des variables d'angles: roulis, lacet et tangage . En gros tu te déplace totalement virtuellement. Le programme regarde juste de quel objet(s) tu est le plus proche pour afficher
Avec ça je pense que tu gagne en vitesse d'exécution
-Planétarium 2
Citer : Posté le 12/05/2019 12:50 | #
Here is a sample program that make the bitmap transparent on the background image.
https://www.planet-casio.com/Fr/forums/topic14738-6-c-basic-projets.html#162484
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Citer : Posté le 12/05/2019 13:08 | #
Attends . .
Si c'est C.Basic ça marche pour Graph 35+ e également , non ? ( juste enlever les couleurs ) ?
Passé ici il y a peu. ಥ‿ಥ
Jouez à Mario sans arrêt sur votre Casio !
City Heroes
Piano Casio
Micro GIMP
Citer : Posté le 12/05/2019 13:09 | #
Sentaro : Thanks !
(Oui alors le looping et les tonneaux c'est pas encore possible hein ! )
Le lacet c'est pareil, je ne le gère pas pour plusieurs raisons : La plus simple c'est que le pad avec les flèches n'as pas de 3ème axe ce qui implique d'avoir des boutons en plus (pas dramatique mais ça entame l'ergonomie ). Ensuite, le lacet est une gouverne qui a des effets secondaires importants que je ne peux pas négliger : le roulis induit, en gros si tu met du pied à droite l'avion va tourner horizontalement vers la droite, donc l'aile gauche va plus vite que l'aile droite, or la portance est fonction de la vitesse (entre autre) ce qui implique une dissymétrie de vol avec un roulis vers la droite, donc c'est chiant à gérer !
Tu me diras : c'est pas la seule commande a avoir des effets secondaires, c'est vrai, le roulis a son lacet induit, mais l'effet est moins impressionnant, et pis les simulateurs de vol où le lacet est automatique c'est courant (au moins en option avec un toggle) On aura qu'a dire : c'est automatique !!
Lightmare : Je jette un œil dès que possible
CaptainLuigi : Alors, oui, c'est compatible, mais l'écran est très petit et les instruments sont illisibles. Il y a peu ou pas de places pour les décors annexe. Pas de jeu de couleurs possible, d'où une mauvaise compréhension et séparation entre ciel, terre et cockpit…
Donc en fait c'est moche et pas jouable désolé…
Citer : Posté le 12/05/2019 13:33 | #
Du coup tu reste sur la matrice 3d ?
-Planétarium 2