Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [mini-projet] azuray -- un raycaster avec Azur
Lephenixnoir En ligne Administrateur Points: 24641 Défis: 170 Message

[mini-projet] azuray -- un raycaster avec Azur

Posté le 17/03/2024 23:23

C'est la saison des raycasters en ce moment, et je me suis fait tenter une fois de trop donc j'ai fini par essayer d'en coder un. Le rendu graphique c'est plus drôle que debugger MicroPython (désolé mais facts quoi). Ça a bien tourné et le résultat est raisonnablement utilisable je pense, donc je partage.

Télécharger une démo .g3a
Dépôt Git Lephenixnoir/azuray


Le "mini-projet" dans le titre est pour clarifier que c'est un projet que j'ai commencé sur coup de tête et je n'ai pas l'intention de le pousser plus loin. Je suis toujours là pour debugger ou tirer sur des petites fonctionnalités si des gens s'en servent, mais sinon ça ne bougera plus.

Contrôles pour la démo :
  • Flèches pour se déplacer, F1/F2 pour strife
  • VARS pour afficher le HUD et les compteurs de performance
  • F4, F5, F6 pour se téléporter à quelques endroits prédéterminés

C'est mon délire habituel : prendre un truc raisonnable (un raycaster), le passer sous Azur, et ensuite commit après commit de grattage de cycles jusqu'à ce que ce tout le code qui manipule le moindre pixel soit au milieu d'un gros paquet d'assembleur illisible. Mais d'un autre côté, ça va vite !

Le raycaster est documenté dans azuray.h et le moteur est séparé de l'exemple, ce qui devrait le rendre vaguement réutilisable si jamais il y a des gens qui voudraient essayer de jouer avec. Notez que je ne l'ai testé que sur cet exemple par contre, donc je garantis pas que vous arriviez forcément à faire ce que vous voulez avec.

Voilà voilààà, retour à PythonExtra maintenant.

Fichier joint


Potter360 Hors ligne Rédacteur Points: 1255 Défis: 2 Message

Citer : Posté le 17/03/2024 23:31 | #


Wow, j'aimerais pouvoir avoir ce genre de distractions ahah.
Bravo, c'est super propre
Globalement, coder. Mal, mais coder.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 18/03/2024 10:22 | #


Tu poste pas 6 ou 7 jeux qui utilisent le même exemple mais juste en changeant les textures ? Y'a pourtant un créneau en ce moment

Blague à part, c’est propre ! Par rapport à un raycaster qui tourne pas sous Azur, tu gagnes quoi en perfs à la louche ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24641 Défis: 170 Message

Citer : Posté le 18/03/2024 10:24 | #


J'ai pas tout testé sur le rendu VRAM parce que j'ai transitionné avant d'ajouter les textures transparentes, mais à ce stade j'avais un pire cas d'environ 40 ms par frame (si tu te colles le nez sur un mur) et là avec Azur on descend à ~28 ms pour ce même frame. C'est pas que proportionnel parce que y'a des gains fixes (azrp_update() de base prend 3.5 ms de moins que dupdate() par exemple) mais ça te donne une idée.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir En ligne Administrateur Points: 24641 Défis: 170 Message

Citer : Posté le 18/03/2024 15:01 | #


Modifié le topic parce que manifestement mon moi de 23h30 est dans un monde à part
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dj_omnimaga Hors ligne Membre Points: 175 Défis: 0 Message

Citer : Posté le 22/03/2024 15:28 | #


Excellent travail! J'aimerais bien voir ce projet utilisé dans un jeu. Sur ma fx-CG10 j'ai entre 19 et 24 FPS la plupart du temps sans overclock.
Lephenixnoir En ligne Administrateur Points: 24641 Défis: 170 Message

Citer : Posté le 09/04/2024 14:44 | #


Note que ça serait un bon interlude dans une @RDP.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 77 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