π
<-

La 3D en raycasting étendu débarque sur HP-Prime

La 3D en raycasting étendu débarque sur HP-Prime

Unread postby critor » 04 Aug 2014, 21:17

Enfin un moteur 3D en raycasting étendu sur HP-Prime ! :bj:
Finally an extended 3D raycasting engine on the HP-Prime ! :bj:


Pour la rentrée 2013, les premiers tests de performance du langage de programmation interprété de la HP-Prime furent extraordinaires. Jamais nous n'avions vu un langage interprété sur calculatrice bénéficier d'une telle puissance... Si bien que contrairement à d'autres calculatrices, l'idée de coder un moteur 'raycasting' directement dans le langage interprété originel fut rapidement évoquée ! :o
For back to school 2013, the first performance tests using HPPPL, the interpreted programming language of the HP-Prime, were extraordinary. We had never seen an interpreted language on calculator benefiting of such power... So unlike other calculators, the idea of coding a raycasting engine directly with the original interpreted language quickly existed ! :o



Mais qu'est-ce que c'est ? Le 'raycasting' ou littéralement "lancer de rayons" est un type de moteur permettant le rendu en temps réel de mondes 3D relativement simples. Il est particulièrement adapté aux jeux vidéos tournant sur des machines de faible puissance.
But what is it? Raycasting is a type of engine allowing realtime rendering of relatively simple 3D worlds. It is particularly suited to video games running on low power machines.


On peut citer à titre d'exemples Catacomb 3-D dès 1991 ou Wolfenstein 3D en 1992, tous deux du studio ID Software.
Notons pour anecdote que paradoxalement, Wolfenstein 3D a été accusé par une certaine presse d'alors de faire l'apologie du nazisme avec de nombreux affichages de croix gammées et portraits d'Hitler sur les murs, alors que le but du jeu était justement de combattre les nazis.
Can be cited as examples Catacomb 3-D in 1991 or Wolfenstein 3D in 1992, both from the ID Software studio.
Note to anecdote paradoxically, Wolfenstein 3D was accused by some press then to advocate Nazism with many displays of swastikas and Hitler portraits on the walls, while the goal of the game was precisely to fight the Nazis.


Le principe de base en est relativement simple. Le monde est codé sous la forme d'une matrice binaire, c'est-à-dire un tableau de nombres valant zéro ou un, permettant donc des murs sous forme de cubes de même côté. A partir de la position du joueur, une simple boucle lance une série de rayons dans les directions autorisées par le champ de vision. Lorsqu'un rayon frappe un mur il s'arrête et retourne des informations sur cet objet à afficher, notamment la distance parcourue c'est-à-dire son éloignement qui, après correction de la courbure de l'oeil, donnera sa taille en pixels sur l'écran.
The basic principle is relatively simple. The world is encoded as a binary matrix, that is to say, an array of numbers equal to zero or one, thereby allowing walls formed of cubes with the same side. From the player position, a single loop is launching a series of rays in directions possible according to the field of view. When a ray hits a wall it stops and returns information about the object to be displayed, including its distance which, after correction of the curvature of the eye, gives its size in pixels on the screen.

Image Image


Toutefois avec ces murs de même hauteur ne pouvant que se prolonger ou être perpendiculaires, en pratique les mondes codés prennent très souvent la forme de labyrinthes, de plus en plus énormes et monotones avec l'avancée dans les niveaux du jeu et rapidement ennuyants selon moi.
However, with walls of the same height which can only be perpendicular, in practice such worlds often take the form of mazes, more and more huge and monotonous with the advance in the game levels, which quickly becomes quite annoying according to me.



Tant qu'à avoir un tableau de nombres, un amélioration immédiate du principe est de coder dans chaque case des informations supplémentaires sur l'altitude et la hauteur de l'objet. L'on peut alors créer des mondes beaucoup plus riches qui commencent véritablement à utiliser la 3ème dimension, avec des salles, escaliers...
C'est un des principes utilisés par ID Software dans la série de jeux Doom initiée dès 1993.

La complexité de l'algorithme est toutefois bien plus élevée car, les objets 3D pouvant avoir des altitudes et hauteur différentes, les rayons lancés ne s'arrêtent plus au premier objet rencontré. En effet, il peut y avoir d'autres objets qui dépassent derrière et seront donc partiellement visibles...

L'autre ajout essentiel qui ne sera pas explicité ici, est que l'objet 3D élémentaire n'est plus un prisme droit à base carrée mais un prisme droit à base triangulaire, triangle possiblement quelconque. C'est-à-dire que l'on peut reconstituer par assemblage n'importe quel type de polygone permettant ainsi des intersections libérées des contraintes initiales de perpendicularité.

Toutefois, les différents niveaux restent selon moi très en intérieur et encore dans le style de labyrinthes. Le studio Raven software a selon moi bien mieux exploité les possibilités du moteur 3D de Doom, en sortant dans le cadre d'un contrat avec ID Software les jeux Heretic et Hexen qui sont d'ailleurs illustrés ci-dessus.
As long as you have an array of numbers, an immediate improvement of the principle is coding in each cell additional information like the altitude and the height of the object. One can then create much richer worlds truly begining to use the third dimension, with halls, stairs...
This is one of the principles used by ID Software games in the Doom series initiated in 1993.

However, the complexity of the algorithm is much higher because 3D objects may have different heights and altitudes, the cast rays do not stop on the first object encountered. Indeed, there may be bigger objects behind which will be partially visible ...

The other essential addition that will not explained here is that the basic 3D object is no longer a square base right prism, but one with a triangular base That is to say that bases can be merged into any type of polygon allowing intersections released from the initial perpendicularity.

However, the Doom levels remain mainly indoors and still take the forms of labyrinths. According to me, the Raven Software studio has much better used the possibilities of the new Doom 3D engine of Doom through a contract with ID Software in its Heretic and Hexen games.




Personne d'autre ne semblant s'en être occupé entre temps, j'ai donc le plaisir de vous sortir ce soir le tout premier moteur 3D raycasting pour HP-Prime, PrimeCaster 3D.

Le moteur met d'emblée la barre très haut en implémentant non pas le raycasting basique, mais le raycasting étendu avec une matrice de hauteurs et altitudes. Les objets 3D élémentaires sont ainsi des prismes droits de même base carrée.

Les mondes 3D gérés sont donc intermédiaires entre Wolfenstein 3D et Doom. Ils sont en conséquence bien mieux que ceux du raycasting basique, avec la possibilité d'avoir des étages, escaliers, tunnels...

Le moteur a la particularité d'être à qualité variable et d'adapter automatiquement la précision des rayons 3D lancés pour cibler le FPS (Frames Per Second - soit images par seconde) que vous réglez avec les touches 'plus' et 'moins'.
Pour cela il mesure tout simplement le temps de rendu d'une frame en millisecondes (instruction 'Ticks') et vérifie que cela ne soit pas trop éloigné du temps correspondant à votre FPS. Vous aurez donc le confort de jouer avec un FPS relativement constant ! :bj:
J'estime pour ma part qu'un jeu commence à être 'jouable' à partir de 2 FPS.

Le logiciel HP-Prime étant plus rapide que la calculatrice, pour un même FPS et un même environnement 3D, nous aurons une meilleure qualité sur ordinateur que sur calculatrice.
As apparently nobody else took care of it, I am pleased to release you tonight the first 3D raycasting engine for the HP-Prime, PrimeCaster 3D.

The engine does not implement the basic raycasting, but some extended raycasting with an array of heights and altitudes. Basic 3D objects are right prisms with the same square base.

Possible 3D worlds are between Wolfenstein 3D and Doom. But they are still much better than the 3D worlds of the basic raycasting, with the possibility of having the floors, stairs, tunnels...

This particular engine has a variable quality and automatically adjusts the precision of the cast 3D rays to target the FPS (Frames Per Second) that you set with the 'plus' and 'minus' keys.
To do this, it simply checks the rendering time of the last frame in milliseconds (instruction 'Ticks') and verifies that it is not too far from the time corresponding to the FPS you've specified. You will have the comfort of playing with a relatively constant FPS ! :bj:
According to me, a game starts to be 'playable' with 2 FPS.

HP-Prime software being faster than the calculator, for the same FPS and the same 3D environment we will have a better quality on the computer than on the calculator.


3755
Comme vous le voyez, dans le cas d'un champ de vision globalement obstrué, la qualité bien qu'inférieure à celle du logiciel reste très honorable et jouable sur calculatrice. En effet les rayons lancés sont stoppés et ne continuent pas jusqu'au bord de la matrice puisque rien ne peut être visible derrière de tels objets.
As you can see, in the case of a mostly obstructed field of view, the quality on the calculator remains decent and yields a playable game, even if the quality is lower on the calculator. The cast rays are stopped, and do not extend as far as the matrix's edge, because nothing is visible behind such objects.


3756Par contre, dans le contexte d'un champ de vision libre en extérieur, c'est bien moins le cas.

Dans le contexte de l'algorithme actuel que j'ai quand même pas mal optimisé, faire un jeu jouable sur calculatrice dans une qualité acceptable nécessiterait de privilégier les scènes en intérieur, ou de prendre bien soin pour les scènes en extérieur d'obstruer rapidement le champ par de grands murs.
Une autre possibilité serait de revenir à l'algorithme basique du raycasting à la Wolfenstein 3D qui sera sûrement fluide au vu de ces performances, mais je trouve que ce serait bien dommage de se limiter à cela sur l'extraordinaire machine qu'est la HP-Prime.
In the context of the current algorithm which is already optimized, making a game playable on the calculator in an acceptable quality would need to build a 3D world with mainly interior scenes, or to take care of quickly obstructing the field of view with large walls for outdoor scenes.
Another possibility would be to return to the basic raycasting algorithm from Wolfenstein 3D which will surely run smoothly according to the above performances, but I think it would be a shame to limit us to such 3D worlds on the HP Prime.


Enfin, trois situations sont de plus gérés et interchangées via la touche 'espace':
  • de nuit, muni d'une torche
  • de jour, rayons solaires inclinés (matin ou après-midi)
  • dans le brouillard
Finally, three contexts are managed and interchanged via the 'space' button :
  • by night with a torch
  • by day, sunlight slanted (morning or afternoon)
  • in the fog




Pénètre dès maintenant mon château fort pour tenter d'atteindre le sommet du donjon si tu en es capable, et pourquoi pas après de créer ton propre monde 3D en modifiant la matrice ! ;)
Now enter my castle and try to reach the top of the dungeon if you can, and why not after this create your own 3D world by modifying the matrix! ;)



Téléchargement :
Download :
PrimeCaster 3D 1.0

Source images explicatives raycasting basique : Tutoriel raycasting basique (en français)
Source for images explaining the basic raycasting : Basic raycasting tutorial (in french)


Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41980
Images: 15737
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby Adriweb » 04 Aug 2014, 22:46

Remarquable boulot :)

En espérant que ceux qui programment en HPPL puissent t'aider à rendre le moteur encore mieux / plus rapide :D

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby Loulou 54 » 04 Aug 2014, 23:36

Sympa ! Bravo pour ce travail ! :)
Avec nDoom, tu as dû acquérir de l'expérience dans ce domaine ^^
Mes programmes => ici !
User avatar
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 1.6%
 
Posts: 1985
Images: 8
Joined: 02 Aug 2009, 00:00
Location: 54, près de Metz
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingé Logiciel chez Amazon

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby critor » 04 Aug 2014, 23:58

Merci à vous deux. :)

Loulou 54 wrote:Avec nDoom, tu as dû acquérir de l'expérience dans ce domaine ^^


Non, pas vraiment. Je connaissais déjà la technique et l'avais déjà programmée avant nDoom.

J'ai fait beaucoup de choses pour nDoom, mais c'était un portage et je n'ai absolument pas eu besoin de descendre dans le code de raycasting.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41980
Images: 15737
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby Lionel Debroux » 05 Aug 2014, 07:01

C'est très bien :)
Ce n'est pas le BASIC de la Nspire qui pourrait faire ça, ni même d'ailleurs le Lua qui n'est pas censé avoir de mode full screen...

Mais par ailleurs, c'est triste que les habitués de la communauté HP n'utilisent pas plus que ça les possibilités de la puissante Prime. Ce sont des habitués des autres communautés qui font le boulot. Un an après la sortie de la Prime, même de futurs nouveaux firmwares aux capacités plus étendues et comportant moins de bugs ne me paraissent pas de nature à rendre la Prime vraiment populaire...
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby Neo » 05 Aug 2014, 07:48

Oui certes, mais c'est compréhensible: les petits francais n'aiment pas qu'on bouleverse leurs petites habitudes..... Ils sont habitués à avoir du matériel devenu obsolète, rempli de bug, ou qui ne permet même pas de faire un minimum de programmation sur leurs modèles (je ne vise personne..)
Image
Auteur du Guide de rentrée 2013 TI-Planet.org
Je ne réponds pas aux demandes d'aide par MP
Ecrivant sur des ordinateurs britanniques, aucun accent ne sera visible dans mes messages. Sorry for the inconvenience!
Mes calculatrices TI: TI-Nspire CX, TI-Nspire CAS+, TI-89, TI-83+.fr, TI-66, TI-59, TI-57 II, TI-30XB MultiView, TI-30Xa, TI-30 Eco RS, TI-Primaire Plus, TI-15 Explorer
Mes calculatrices Casio: Graph 35+ SH4 (trafiquée), Graph FX-8000G, Graph FX-7000G, FX-82MS
User avatar
Neo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.4%
 
Posts: 1058
Images: 311
Joined: 19 Dec 2010, 00:00
Location: London, United Kingdom
Gender: Male
Calculator(s):
MyCalcs profile
Class: --

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby Adriweb » 05 Aug 2014, 08:24

Peut-être, mais le comportement noté par Lionel ne se limite pas du tout (au contraire :P) à la France !

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby critor » 05 Aug 2014, 09:52

Merci Lionel.

Neo wrote:Oui certes, mais c'est compréhensible: les petits francais n'aiment pas qu'on bouleverse leurs petites habitudes..... Ils sont habitués à avoir du matériel devenu obsolète, rempli de bug, ou qui ne permet même pas de faire un minimum de programmation sur leurs modèles (je ne vise personne..)


La HP-Prime est une machine remplie de bugs tu sais...

La mienne en tous cas plante systématiquement avec ce moteur - soit avant de le lancer, soit après.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41980
Images: 15737
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby totoyo » 05 Aug 2014, 19:09

Neo wrote:Oui certes, mais c'est compréhensible: les petits francais n'aiment pas qu'on bouleverse leurs petites habitudes..... Ils sont habitués à avoir du matériel devenu obsolète, rempli de bug, ou qui ne permet même pas de faire un minimum de programmation sur leurs modèles (je ne vise personne..)

En même temps, mettre 150€ pour une calculatrice qui bug, je préfère encore mon Prizm malgré son Basic un peu trop lent ^^

Si les bugs handicapants sont corrigés, je me laisserai sans doute tenté par la HP-Prime.
User avatar
totoyoPartenaire
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 2.7%
 
Posts: 84
Joined: 26 Apr 2012, 18:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: La 3D en raycasting étendu débarque sur HP-Prime

Unread postby critor » 05 Aug 2014, 19:18

Tu as bien raison Totoyo - il y a sans doute bien d'autres raisons au manque de succès des calculatrices HP que la simple "inertie des enseignants" ou des français.

Mais après, je n'empêche pas HP de préférer continuer à croire cela, plutôt que de s'attaquer aux vraies raisons...
http://www.challenges.fr/high-tech/2012 ... leges.html
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41980
Images: 15737
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Next

Return to News HP

Who is online

Users browsing this forum: ClaudeBot [spider] and 1 guest

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
820 utilisateurs:
>774 invités
>37 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)