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 » Minecraft sur Graph 90+e
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Minecraft sur Graph 90+e

Posté le 06/12/2020 19:58

Bonjour
Je suis débutant en programmation C et j'aimerais créer un clone de Minecraft en couleur pour la Graph 90+e. J'ai commencé à travailler avec le PrismSDK pour découvrir.
J'ai migré vers gint et j'ai créé un dépôt pour le code source : Dépôt Gitlab - CasioCraft

fichier addin fonctionnel dans le dépot

Avancement :
- menu principal terminé


1, 2 Suivante
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/12/2020 20:32 | #


Salut, alors évidemment je suis biaisé quand je réponds (je suis l'auteur de gint), mais dans l'ensemble il n'y pas d'inconvénient fatal à utiliser l'un ou l'autre. Le PrizmSDK a certaines fonctionnalités que gint n'a pas encore (communication série/USB, le projecteur pour enregistrer du gameplay), et l'inverse aussi (des drivers propres pour le DMA, le SPU, et la configuration automatique du DSP), mais un jeu moyen peut être écrit avec les deux sans problème.

Maintenant si gint a un avantage quelque part je pense que c'est qu'il tente de présenter toutes les options pour la haute performance (... sauf l'overclock qui n'est pas encore implémenté, ironiquement). C'est là j'ai mis l'accent récemment en tous cas. Dans le cas d'un projet ambitieux avec des grosses contraintes de performance, ça pourrait être utile.

Après, il faut garder plusieurs choses en tête :

• D'abord, selon tes objectifs, ce projet peut être extrêmement difficile à optimiser. Si tu veux avoir un Minecraft en plein écran, à par exemple 5-10 FPS, tu devras tirer sur à peu près toutes les cordes disponibles : overclock, RAMs rapides, envois à l'écran, calcul en point fixe, etc.
• Et puis les fonctionnalités que gint t'offre sont assez techniques à utiliser, si tu débutes c'est sans doute pas par là qu'il faudrait que tu attaques ton projet.

Mon conseil, si je peux en formuler un, serait de commencer à jouer avec ce qui est simple à installer pour toi (ie le PrizmSDK), et de foncer pour l'instant pour afficher des choses à l'écran et juste t'amuser avec le projet. Avec le temps, tu rencontreras sans doute plein de problèmes de perfs, et si tu as la patience de t'y attaquer cette communauté pourra aider (tu pourras notamment voir les notes de Ninestars sur son moteur 3D Windmill, ou ce que gint peut t'aider à faire pour accélérer le code). Porter ton projet du PrizmSDK à gint serait sans doute plus facile qu'amener ton moteur à des performances élevées, donc tu pourras te poser la question plus tard.

Bon courage en tous cas, je serais vraiment hypé devoir ce projet se réaliser ! o/
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 06/12/2020 20:39 | #


Merci pour la réponse.
Je voulais faire le jeu en 2D (d'ailleurs j'ai vu que un clone de Minecraft en 2D a déjà été fait pour une TI mais je n'ai pas trouvé le code source). J'ai réussi à afficher des blocs sous forme de carrés colorés de pixels même si j'ai un étrange décalage de pixel à la moitié verticale de l'écran.
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/12/2020 20:44 | #


Ooooh... c'est beaucoup plus simple alors. En 2D les problèmes de performance ne sont pas du tout du même niveau, ça ira tout seul (... ou presque).

Vas-y avec les outils de ton choix, PrizmSDK ou gint n'importeront pas ici et ce serait malhonnête de prétendre le contraire. La voie est totalement libre !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 06/12/2020 21:55 | #


J'aimerais bien pouvoir tester gint mais je n'arrive pas à le compiler sous windows et ubuntu via le WSL (j'ai essayé de me faire une VM d'ArchLinux pour le paquet déjà compilé mais l'installation de l'OS plante)
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/12/2020 21:57 | #


N'hésite pas à raconter ce que tu obtiens sur le topic de gint pour voir si on a une solution ou au moins un bon indice.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 06/02/2021 16:41 | #


J'ai réussi à implémenter le menu principal mais je ne sais pas comment générer la map. J'aimerais créer une fonction qui renvoie une chaîne de caractères contenant les blocs sous forme de chiffre comme le jeu AST3_C mais je ne sais pas comment faire. L'algorithme de génération importe peu, la question repose surtout sur le type de variable à utiliser et son exploitation.
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Tituya Hors ligne Administrateur Points: 2156 Défis: 26 Message

Citer : Posté le 06/02/2021 16:54 | #


Je connais un administrateur qui ne va pas aimer ce que tu souhaites faire
Plus sérieusement, lephe n'aime pas trop cette technique d'hardcodage du niveau en mémoire, je ne sais pas vraiment comment tu peux le remplacer.
En plus, refaire un minecraft signifie avoir un niveau qui n'est pas statique. Le garder en mémoire comme je le fait dans AST3_C, permet d'afficher toujours le même niveau. Avec ton minecraft je ne pense pas que ce soit la meilleure des solutions...

Sinon le fonctionnement des niveaux est assez simple. Il s'agit simplement d'une liste contenant un nombre déterminé de caractère. Chaque caractère correspond à un identifiant de bloc, et en fonction de ça, j'applique certaines règles (comme la collision par exemple). Je peux déterminer facilement la position du joueur sur cette carte grâce au nombre de bloc en x et en y.

Je pense pas que ce soit une bonne solution pour toi là. Attends lephe
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 06/02/2021 17:46 | #


Pour reformuler la question, tu as besoin de structures de données pour représenter et stocker ton monde.

Une chaîne de caractères est une mauvaise idée pour plusieurs raisons. D'une part ce n'est pas un format très pratique : les caractères ne sont pas vraiment la même chose que les blocs du monde. Ensuite c'est un format utilisé souvent pour écrire à la main des maps fixes, et qui est relativement pratique pour ça (comme Tituya l'a dit je trouve ça barbare), mais n'apporte aucun avantage à un algorithme de génération procédurale.

Je te conseille plutôt de t'inspirer du code de Terrario (de KBD2) qui fait ça très bien. La map est un énorme tableau de blocs en 2 dimensions. Chaque bloc est représenté par son objet Tile (de 1 octet) qui contient un id menant à une définition de bloc (de type TileData). Le TileData donne tous les détails sur le bloc, ses propriétés, ses collisions, son nom, etc.

L'idée c'est ça : un tableau à deux dimensions (ou une dimension traitée comme deux, la méthode habituelle), les éléments sont des références à des définitions de blocs. Dans ton cas tu voudras peut-être éviter d'avoir un tableau pour le monde entier et à la place avoir un tableau par chunk.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/02/2021 10:59 | #


c'est possible du faire un minecraft en 3d (mais limité)!

il suffit de réduire la définition

il suffit de dessiner dans un petit rectangle qui fais la quart de l’écran et de le convertir ensuite

ça fait plus de FPS
pensés suicidaires
   90%
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 07/02/2021 16:02 | #


Oui, mais c'est pas ca la question.
Globalement, coder. Mal, mais coder.
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 07/02/2021 18:56 | #


Pour compiler Terrario, le 'math.h' on le trouve où ? Il n'est pas dans le code source.

Ajouté le 07/02/2021 à 18:57 :
Je ne veux pas l'utiliser à la place c'est juste pour voir ce que ça donne.
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 07/02/2021 20:38 | #


C'est un peu compliqué, KBD2 a une installation de newlib qu'il faut coupler au compilateur. C'est beaucoup de travail à obtenir. Si tu veux juste un binaire, prends-en un dans le topic de Terrario.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 07/02/2021 20:58 | #


C'est que je voulais l'essayer en changeant les textures.

Ajouté le 07/02/2021 à 21:02 :
et il faut changer le code pour la 90+e puisque la taille de l'écran change
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Kbd2 Hors ligne Membre Points: 269 Défis: 0 Message

Citer : Posté le 07/02/2021 23:24 | #


I'm in the process of switching to Lephenixnoir's fork of OpenLibm, which will be much easier to install.

However, I think you'll have to change a fair bit to get this to run on a Graph 90+E, as it currently only knows how to deal with monochrome models' hardware when setting up the game on launch.
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 08/02/2021 12:49 | #


Vous conseillez un tableau à une dimension (comme Terrario où on calcule avec les x et y la position dans le tableau) ou à deux dimensions ?
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 08/02/2021 13:23 | #


À une dimension, c'est plus flexible. En mémoire ce sera exactement pareil (le programme fera les mêmes calculs et les mêmes accès), mais les tableaux à deux dimensions sont aussi plus compliqués à allouer dynamiquement.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


intermario Invité

Citer : Posté le 09/01/2022 12:38 | #


Callou15, pourrais tu stp faire in tuto pour faire marcher le jeu minecraft en 2D sur youtube. Tu pourras mettre un lien yt stp
g pas reussi avec les fichier que tu as mit sur github
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 10/01/2022 00:13 | #


Intermario a écrit :
Callou15, pourrais tu stp faire in tuto pour faire marcher le jeu minecraft en 2D sur youtube. Tu pourras mettre un lien yt stp
g pas reussi avec les fichier que tu as mit sur github


Alors ... Bon. Pour tout dire, ça fait un moment que je me suis éloigné de cette communauté et ce projet est relativement tombé à l'eau, compte tenu de mon incompétence en C (je ne le métrise pas), je ne savait pas comment organiser les algorithmes, et je n'ai jamais réussi à faire fonctionner gint (j'avais commencé quelque chose avec le PrismSDK mais je l'ai perdu avec une panne ).
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
Lephenixnoir En ligne Administrateur Points: 24575 Défis: 170 Message

Citer : Posté le 10/01/2022 10:14 | #


Dommage ! Il y a du potentiel dans l'idée. Est-ce qu'il te reste des sources du projet original que tu pourrais lier pour que les futurs amateurs de Minecraft qui veulent tenter l'idée puissent s'inspirer ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Caillou15 Hors ligne Membre Points: 67 Défis: 0 Message

Citer : Posté le 10/01/2022 18:56 | #


Je peut essayer de m'y remettre.
Je suis étudiant en 1ère année de Licence d'informatique donc il faudra peut-être attendre avant d'avoir une réponse de ma part à cause du travail. Et je n'y connais rien à Linux, j'utilise Windows (avec WSL si besoin)
1, 2 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 170 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