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 » Raycaster G90+E
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Raycaster G90+E

Posté le 07/07/2023 14:27

Ceci est le topic de mon moteur de raycasting et plus, écrit en C.

Git : https://gitea.planet-casio.com/Fcalva/Raycaster_G90
Dernières démos : https://gitea.planet-casio.com/Fcalva/Raycaster_G90/releases

Une version "lite", Copy3DEngine, est utilisable dès maintenant, avec les fonctionalités suivantes :
- Rendu de murs en pseudo-3D sur un niveau
- Une carte sans limite de taille autre que la place de votre calto
- Apparition aléatoire sur la carte
Son but est d'être façilement adaptable à vos besoins et d'être simple pour créer du contenu, par opposition avec le moteur principal qui vise à proposer un outillage complet

Jeux l'utilisant :
- Maze3D (Git)
- Amogus 3D (Git) (Utilise Copy3DEngine)
Et plus a venir !

Fonctionalités actuelles:
- Rendu de murs texturés en pseudo-3D sur plusieurs niveaux
- Convertion de cartes format json

Fonctionalités à venir:
- Z-sprites/billboards
- Éditeur de cartes

Objectifs :
- Cross-platforme calto/PC
- Expérience fluide sur G90+E/FX-CG50 sans overclock (Est le cas pour l'instant)
- Prise en main relativement facile (Est l'objectif final principal, mais ne le sera pas avant un moment)

Archive pré-0.4
Pré-0.4

Enfin ! Après 2 mois de travail, pas très efficaces en toute honnêteté, j'ai enfin un résultat montrable !
Il ne reste plus qu'a trouver un nom !





Donc maintenant, il faut que je transforme ça en jeu.

Touches : Avant/Arrière : Dpad Haut/Bas
Gauche/Droite : Dpad Gauche/Droite
Quitter : F6
V 0.1.3
V 0.1.3
Pour le moment, tout est en float donc il y a de la marge pour optimiser. Attendez vous à <10 fps sans OC. La V 0.1.4 va sortir bientôt normalement, avec des améliorations sur ce point là.


V 0.1.4
V 0.1.4
Collision, meilleure map, petites améliorations, changement léger esthétique
Maintenant que je suis satisfait avec la base je vais optimiser.


V 0.2
V 0.2
Point fixe ! Avec désormais 25-27 fps, le "glissement" des valeurs corrigé, et une distance de rendu plus grande.


V 0.2.1
V 0.2.1
Optimisation de 4 à 7 % grâce a Slyvtt (encore ! =) ) qui a proposé gint_dvline();


V 0.2.2
V 0.2.2

Je me suis retrouvé lancé, et pas moyen de freiner l'élan !
Donc, pour aujord'hui j'ai rajouté la capture d'écran USB (0 + EXE) , le compteur de temps d'image est désormais activable/désactivable (F1 mais c'est capricieux pour le moment) et j'ai encore changé les couleurs.


V 0.3
V0.3
V 0.3 : Xoritude

Avec un peu d'huile de coude, vient les textures !
Malheuresement avec vient une baisse de FPS, de 26-29 à 13-15. Mais l'expérience reste fluide, bien qu'elle necessitera un overclock pour revenir au niveau précédents, où encore sur les CG10/20
Et j'ai falli oublier de mentioner que j'ai amélioré la réponse de la touche F1 et de la capture d'écran.


Donc j'ai sorti mon premier jeu avec ce moteur, Maze3D, la prochaine étape est de (enfin) faire des sprites !


Fichier joint


1, 2, 3, 4 Suivante
Fastgeek Hors ligne Membre Points: 152 Défis: 0 Message

Citer : Posté le 07/07/2023 15:00 | #


C'est drôle, moi aussi depuis récemment je vouudrais m'y mettre, mais en C.Basic
En tout cas ça a l'air cool
"Always believe in your dreams, and work hard to achieve them"
FastGeek, a very simple guy

Projet(s) en cours : Casio Rocket League II
Validuser Hors ligne Membre Points: 508 Défis: 1 Message

Citer : Posté le 07/07/2023 15:41 | #


C'est quoi la différence Raycaster et Raytracing ?

Tous que je sais c'est que Raytracing il y a des millions de calculs à faire.
Votre développeur favori
Je suis en train de travailler sur TD'PC : un Tower Defense sur G35+EII (Bien sûr que oui je travaille dessus )
Ne pas cliquer
Mtn que tu à cliqué tu est obligé de tout installer
Acrocasio Hors ligne Membre Points: 974 Défis: 0 Message

Citer : Posté le 07/07/2023 15:42 | #


Raytracing, c'est pour la gestion des lumières et reflets, en gros

Raycasting, c'est pour simuler de la 3D dans un environnement 2D. (utilisé pour le célèbre DOOM, par exemple)
Mb88 Hors ligne Labélisateur Points: 944 Défis: 3 Message
Validuser Hors ligne Membre Points: 508 Défis: 1 Message

Citer : Posté le 07/07/2023 15:49 | #


Ah, bon je vais aller regarder une vidéo Youtube sa sera plus simple.
Votre développeur favori
Je suis en train de travailler sur TD'PC : un Tower Defense sur G35+EII (Bien sûr que oui je travaille dessus )
Ne pas cliquer
Mtn que tu à cliqué tu est obligé de tout installer
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 07/07/2023 15:50 | #


Acrocasio a écrit :
Raytracing, c'est pour la gestion des lumières et reflets, en gros

Raycasting, c'est pour simuler de la 3D dans un environnement 2D. (utilisé pour le célèbre DOOM, par exemple)

Non le raycasting c'est Wolfenstein 3D / TES I : Arena
Doom c'est plus de la 3D, et c'est vachement plus avancé.
Validuser a écrit :
C'est quoi la différence Raycaster et Raytracing ?
Tous que je sais c'est que Raytracing il y a des millions de calculs à faire.

Là on parle de quelques centaines de multiplications et quelques millers d'additions par frame. Si c'est lent c'est parceque pour le moment ça utilise des flottants, quand je vais passer en entiers ça va faire BRRRRRRRRR (sans éxagération. Et c'est déja fluide avec un OC F5 de Ptune 3)
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Acrocasio Hors ligne Membre Points: 974 Défis: 0 Message

Citer : Posté le 07/07/2023 15:53 | #


Heu non, DOOM (les premiers, j'ai oublié de préciser) c'est pas plus de la 3D ou quoi, c'est juste de la 2D. Mais avec du "lancé de rayon" (raycasting en français).

Même si le moteur RayCasting de DOOM est plus évolué que celui de Wolfenstein, c'est quand même du Raycasting, point.
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 07/07/2023 15:59 | #


Acrocasio a écrit :
Heu non, DOOM (les premiers, j'ai oublié de préciser) c'est pas plus de la 3D ou quoi, c'est juste de la 2D. Mais avec du "lancé de rayon" (raycasting en français).

Même si le moteur RayCasting de DOOM est plus évolué que celui de Wolfenstein, c'est quand même du Raycasting, point.

Doom I et II sont en 3d. Les décors sont décrits en 3d (plan vertical + hauteur de la pièce). Tu peux te déplacer verticalement. Le moteur est fondamentalement 3D, même si le rendu en colonne empêche de pouvoir bouger la caméra verticalement, et pour simplifier les calculs de collisions ils sont faits en 2d.
On avait déja eu cette discussion en plus.
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 07/07/2023 17:10 | #


V 0.1.4 sortie. Pas grand chose, le gros changement sera avec la V 0.2
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Gky93 Hors ligne Membre Points: 212 Défis: 0 Message

Citer : Posté le 07/07/2023 21:18 | #


J'ai pas pu encore tester mais ça m'a l'air solide comme truc.
Sinon pour ceux qui voudrais faire ça en C Basic, je déconseille. J'ai moi même essayer et il faudrait faire tourner la calculatrice en x 3 pour avoir un rendu fluide mais tout juste lisible visuellement.
Après c'est peut être parce que j'ai pas cherché à optimiser le tout et que j'ai tenté de faire un raycaster sur une semaine.
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 08/07/2023 00:36 | #


J'ai finalisé le passage en fixe (merci Slyvtt)
Donc maintenant on tourne autour de 25-27 fps. La prochaine optimisation serait probablement de mettre en cache les lignes et dessiner d'un coup (plus on est proche d'un mur, moins ça va vite. Quand on est proche d'un mur il y a moins de raycast et plus de ligne a faire)
Je vais sortir une 0.2 demain quand j'aurais résolu le fait que les artefacts cardinaux s'agrandissent au fur et a mesure qu'on bouge.
Edit : Pour le fun j'ai essayé en OC ptune F5 et ça tourne autour de 50 fps (!) et atteint même les 55 par moments. Incroyable, ça tourne mieux que la plupart des jeux PS x)
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 08/07/2023 08:23 | #


Fcalva a écrit :

Doom I et II sont en 3d. Les décors sont décrits en 3d (plan vertical + hauteur de la pièce). Tu peux te déplacer verticalement. Le moteur est fondamentalement 3D, même si le rendu en colonne empêche de pouvoir bouger la caméra verticalement, et pour simplifier les calculs de collisions ils sont faits en 2d.
On avait déja eu cette discussion en plus.


Doom 1 et 2, basés sur l’ID Tech engine 1, est un moteur de rendu raycasting qui prend des niveaux en 2D comme entrée. C’est donc de ka pseudo 3D. Perso je dis 2,5D car les niveaux et le comportement en jeu est en 2D.

L’exemple de justificatif classique est l’impossibilité d’avoir dès salles l’une sur l’autre.

Le premier vrai jeu 3D de ID software est Quake qui lui est en vraie 3D.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 08/07/2023 11:53 | #


La V 0.2 est désormais disponible, avec maintenant 25-27 fps grâce a la lib de point fixe de Sly, le "glissement" des valeurs corrigé, et une distance de rendu plus grande.
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Acrocasio Hors ligne Membre Points: 974 Défis: 0 Message

Citer : Posté le 08/07/2023 11:58 | #


Juste, petite question : J'ai pas trouvé, y'a une touche pour afficher un compteur de fps ?

Et bravo, au fait, pour les fps gagnés ! C'est dingue ! Et avec un peu d'opti, on pourrait sûrement aller plus loin, nan ?
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 08/07/2023 12:00 | #


C'est dans la dernière version (pas avant). Ensuite il y a pas de touche et c'est un compteur de temps d'image pas de fps.
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Acrocasio Hors ligne Membre Points: 974 Défis: 0 Message

Citer : Posté le 08/07/2023 12:02 | #


Ah oui, ok. Ben pour l'instant, je peux pas l'essayer, mais je vois ça tout à l'heure !
Mb88 Hors ligne Labélisateur Points: 944 Défis: 3 Message

Citer : Posté le 09/07/2023 18:33 | #


Est ce que tu dessines directement dans la vram ? Ça pourrait rendre le raycaster bien plus rapide.
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 09/07/2023 18:35 | #


Non j'utilse dline(); par colonne suivi de dupdate(); une fois par frame. Et pour le moment je comptais pas aller écrire directement en vram mais cacher l'écriture et écrire d'un coup, et encore pas encore vu que j'ai de la marge niveau perf.
Edit : pas écrire, mais mettre dans le framebuffer
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Mb88 Hors ligne Labélisateur Points: 944 Défis: 3 Message

Citer : Posté le 09/07/2023 18:47 | #


Bah gint fait déjà du double buffering et tu peux même en faire du triple je crois, mais je ne sais pas comment.
Fcalva En ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 09/07/2023 18:50 | #


Le truc c'est qu'écrire une ligne dans le framebuffer puis faire le calcul pour la suivante puis faire cette ligne là ect.... ça doit pas être le plus rapide en accès mémoire, en plus du fait que dline() utilise un algo pour faire des lignes diagonales alors que j'ai que besoin de faire des lignes verticales. En tout cas le dessin de la ligne est la partie la plus lente de la boucle j'ai l'impression, donc si il y a de l'opti a faire c'est là.
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
1, 2, 3, 4 Suivante

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 39 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