Posté le 03/07/2018 21:19
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 146 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
Citer : Posté le 05/11/2018 21:51 | #
Heureusement mon navigateur est plus fort que ça. Je vous ai peut-être sous-estimé dans cette explication, désolé si c'est le cas.
Je me permets de faire une version légèrement revisitée de tout ça, d'abord pour contribuer à expliquer, et aussi parce que gint vous simplifie la vie sur ce point...
C'est pratique : tu oublies aucun code hexa...
En fait, peu importe le langage dans lequel tu travailles, ce qui importe c'est que tu aies les données de l'image. C'est-à-dire, des informations te permettant de savoir, d'une façon ou d'une autres, quels pixels sont blancs et lesquels sont noirs.
Comme en C, on peut faire à peu près tout ce qu'on veut (et même plus), on décide d'utiliser un bit de mémoire pour chaque pixel : 0 pour blanc et 1 pour noir. Ça nous prend autant de bits qu'il y a de pixels dans l'image, disons N.
Du coup il nous reste à trouver un moyen de mettre ces N bits dans le programme. La méthode classique consiste à créer un tableau de char avec des données en hexa, mais c'est pas obligé. gint fait ça bien plus joliment par exemple.
Ensuite, pour les afficher, eh bien on appelle une fonction de MonochromeLib, par exemple ML_bmp_or_cl() en lui disant où les bits de ton image où été mis, et elle se débrouille pour afficher.
Dans un programme C, toutes les données ont un nom, ça fait partie du jeu. Donc en fait ce qu'on a une variable qui représente les données de l'image. Par exemple logo_du_jeu.
Donc ça c'est bien pour afficher une seule image. Attention à ne pas confondre avec ce qui suit.
Quand tu vas afficher ta map, tu auras tes tiles, et si tu y vas naïvement, une image par tile. Donc tile_arbre, tile_maison_1, tile_maison_2, tile_puits... bref, tout un paquet. C'est pas terrible, tu vois venir le désastre au momen d'afficher un tile :
ML_bmp_or_cl(tile_arbre ...)
Sinon, si le tile est la partie gauche d'une maison
ML_bmp_or_cl(tile_maison_1 ...)
Sinon, si le tile est la partie droite d'une maison
ML_bmp_or_cl(tile_maison_2 ...)
Sinon, si le tile est un puits
ML_bmp_or_cl(tile_puits ...)
C'est la galère complète ! Chaque fois que tu veux ajouter un tile, tu es obligé de modifier le code. Hors de question de faire ça.
En fait tu n'as pas vraiment envie d'avoir un nom pour chaque tile. Tu as plutôt envie d'avoir un nombre pour chaque tile, c'est-à-dire de mettre tes tiles dans un tableau. Comme je suis flemmard, je l'appelle tiles[] (les crochets c'est juste pour rappeler que c'est un tableau). Bien sûr, on va vouloir écrire des trucs comme tiles[i] avec i une valeur entière bien choisie. Ce qui donne :
ML_bmp_or_cl(tiles[i] ...)
Hop, plus besoin de travailler. Il te suffit de regarder le numéro du tile que tu veux afficher (ça, c'est marqué quelque part dans la map) et tu affiches. Plus besoin de te poser de questions inutiles comme « est-ce un arbre ? » ou bien « est-ce que j'ai pensé à ajouter mon tile fleur au code ? ».
Maintenant on créer une matrice de 12*8 qui contient "l'intérieur" de la case, ça va ? Donc on va avoir un "1" pour un bout de mur, un "2" pour une fenêtre, un "3" pour une porte,... etc
Ici, il s'agit simplement de décider d'un numéro pour chaque tile. Il faut que ça corresponde à l'ordre des tiles dans le tableau, donc ne le change pas trop souvent. Ajouter des nouveaux numéros est safe, renuméroter ce qui existe veut dire que tu dois modifier toutes tes maps (et ça t'as pas envie !).
On va construire deux boucles For qui vont balayer la matrice et à chaque tour de boucle on regarde le chiffre stocké dans la matrice. On regarde aussi le numéro de la grosse liste qui correspond à numéro stocké dans la matrice...
Ça c'est bien clair, tu lis les données dans la matrice, tu vas chercher les sprites, tu dessines. Pouf.
Btw Shadow, le moteur d'affichage... c'est le graphique. Le moteur physique, c'est les collisions, les mouvements des personnages, tout ça tout ça.
Ajouté le 05/11/2018 à 21:52 :
Ahrem
Citer : Posté le 05/11/2018 22:01 | #
Ah oui c'est complet
J'avais comprit la majorité, mais ce sera sûrement utile à quelqu'un d'autre
Merci LePhénixNoir ! (niveau capitalisation, tu veux ça ou Lephénixnoir ?)
Citer : Posté le 05/11/2018 22:22 | #
Ça m'est égal, tu peux même enlever l'accent, mettre en minuscules, écrire juste "LePhe" avec ou sans apostrophe... (tant que t'enlèves pas le "h", ce qui me rapplerait Intelligide )
Citer : Posté le 06/11/2018 08:11 | #
C'était l'idée que je voulais faire passer, mais Lephe' s'y connait mieux que moi on devrait actualisé le post principal avec un spoiler géant : connaissances voire faire des mini-tuto pour démarrer le C sur de bonnes bases
Citer : Posté le 13/11/2018 12:56 | #
À présent que le triconcours est passé, que les résultats sont tombés, je pense qu'il est l'heure de réveiller le projet
Ainsi, je vous invite à clamer avec vigueur votre volonté à poursuivre le projet, afin de montrer aux autres membres que vous êtes là, armés et près pour cette longue et ardue bataille qui nous attend. Certains tomberont, d'autres nous rejoindrons, mais de part notre sang et notre sueur, nous triompherons, et le récit de nos exploits seront transmis à nos descendants génération après génération si bien que dans 1000 ans, l'on continuera de conter notre épopée.
Je ne vous le demanderais donc qu'une fois.... Casionautes, est-ce que vous êtes prêts ? Prêts à affronter les foudres des dieux, les mers déchaînées, et les flammes des enfers ? Alors manifestez-vous,criez, criez à en faire trembler le sol, déchirer les cieux, et faire résonner la planète Casio toute entière !
Citer : Posté le 13/11/2018 13:15 | #
"Nous partîmes cinq cents et nous nous vîmes trois mille en arrivant au port" Espérons que cela sera le bon port...
Il est temps en effet
Je pensais peut-être changer la parenté du topic avec l'accord de maht680 avec un membre étant plus présent pour optimiser les mises à jour du post principal...
On pourrait par exemple peut être avoir plusieurs personnes parentes ? De mainière à mettre à jour chacun notre jauge du truc que l'on fait (par exemple : moteur graphique⇒Hackcell : 50%, moteur physique⇒Shadow15510 : 10%,...)
Citer : Posté le 14/11/2018 12:45 | #
Un peu comme ça ??
Citer : Posté le 14/11/2018 18:37 | #
Oui ça ressemble à ça
Edit : Post principal mis à jour
Ajouté le 17/11/2018 à 12:41 :
Je viens de vous ajouter au Git Je savais pas comment faire mais c'est ok
Ajouté le 19/11/2018 à 14:47 :
Alors c'est partit !!
Cahier des charges :
Présentation du projet
Nom : Odyssée
Langage : C (reprise du projet BASIC)
Modèles de calculatrice visées : Graph 35++/75/85/95 (SD) (+CG90+ ?)
Technologie utilisée : Non définie (à choisir entre Gint, le Fx-SDK, et le Prizm SDK)
Taille : Non définie (mais sans doute vers les 150-200 Ko max)
Les tâches
Les Sprites : Se mettre d'accord pour la taille, les faire, ainsi que les fichiers Sprites.c et le header correspondant
Le moteur Graphique : Gestion et création du design des maps et agencement des éléments dans la carte via la matrice (inclura sans doute la gestion de la mini-map)
Le moteur Physique : va gérer le moteur Graphique avec les collisions. Inclut les lieux d'interactions et l'affichage
Le moteur de Combat : Gestion du temps réel dans les combats avec les attaques via le pavé numérique, la partie théorique des combats est ok
Le moteur de Jeu est le plus important : il regroupe les mécanismes indispensables au jeu, à savoir, la partie scénario, les interactions, la gestion du clavier, la gestion du temps fictif du jeu, les systèmes de niveau du jeu et l'intégration du narrateur
Gestion IA et PnJ : dialogues mouvements, action, et interactions avec le joueur
Le moteur des Dialogues rejoint les intaractions et les PnJ, comprend la partie vente de jeu : objets, armes,...
Gestion des sauvegardes : les variables indispensable à l'avancée du jeu
Bon... Je pense avoir balayer les différents aspect du projets... On le modifiera au besoin. On peut commencer à travailler !
Couleurs : ? (sans doute monochrome au début)
Dessins déjà fait (monochromes) :
Personnages
Arbres (x2)
Buissons
Design extérieur (mur, portes, fenêtres)
Design toits (x2)
Interrupteur (On/Off) + Levier (3 postions : Gauche, milieu, droite)
petit caillou
Interface joueur "in game" (texte, clafs, vies, rubis, gemmes)
Petit objets divers : rubis, gemmes, vies (coeur), drapeau, fanion, fioles (vide, 1/2, pleine)
Dessins à faire :
Design éléments interne : porte, fenêtre
Design pièce
Meubles : lit, armoire, coffre, bar, chaise, table
design herbe
J'ai réfléchis au système de monnaie, plutôt que d'avoir quatre types de Drachmes, j'ai pensé qu'il serait préférable d'avoir que deux "échelles", en remplaçant les Drachmes par des Rubis et des Gemmes ont résout quelques problèmes... On peut dire 1 Rubis = 10 Gemmes ou l'inverse... et cela simplifie grandement toutes les transactions !
Citer : Posté le 19/11/2018 18:07 | #
Et pour la création de maps ?
Ça se fera comment ?
Citer : Posté le 19/11/2018 18:08 | #
En gros le moteur Graphique entre la map dans la matrice et le moteur Physique affiche la matrice à l'écran en gérant les déplacements du joueurs, les collisions, les lieux où l'on peut interagir,... etc
Ajouté le 23/11/2018 à 08:40 :
Les Sprites sont sur le Git Il y a les :
Artefacts : cœur, diamant, rubis, gemmes, drapeau, jambon,...
Les éléments des mains : design toit, mur, porte et fenêtre, il n'y a que l'extérieur
Les éléments des maps et décors : Arbre, buissons, boutons, levier
Les personnages : le joueur (animé) mais aussi cinq autres sprites, non-animés, et d'autres non-isolés (ces derniers appartiennent à une série que Drak a présentée ici )
Et c'est tout pour l'instant, je ne pense pas que les sprites soient la priorité mais ceux-là étaient fait depuis longtemps donc je les met et on avancera sans doute dessus un peu plus tard dans le projet...
Ajouté le 03/12/2018 à 10:11 :
Suite au Triconcours il s'avère qu'Hackcell et moi-même avons pris une Graph 90+E donc il sera plus simple de faire le portage pour ce modèle vu que nous sommes trois au minimum à en avoir une (avec math680)
Citer : Posté le 03/12/2018 10:29 | #
Du coup vous ne voudriez pas partir directement sur un add-in pour 90+E ?
Citer : Posté le 03/12/2018 11:39 | #
Non, ce serait élitiste...
Citer : Posté le 03/12/2018 11:59 | #
Nous ferons les deux, en partant de l'add-in monochrome puis en le portant avec couleurs et en réajustant les tailles des sprites
Ajouté le 17/12/2018 à 12:26 :
Je sais que le projet traîne en longueur et ce par ma faute aussi
Je vous enverrais le script de la première partie dès que possible..., le cahier des charges n'attend que d'être amélioré et vous n'avez pas besoin de moi la-dessus Vous pouvez commencez les brouillon sur les différentes parties du jeu, donner des conseils, des astuces : "moi je ferais un truc comme ça...", ou "Non ton code est pas très propre : regarde là on peut encore optimiser", ... etc si vous pouviez mettre vos brouillons en PJ-image ce serait cool... Bref, en attendant le script vous avez les carte sur le Git des infos,... etc donc n'attendez pas que je soit dispo et tout à vous pour commencer
Ajouté le 18/12/2018 à 08:17 :
La première partie du jeu est dans un *.zip sur le git
le signe « (-?-) » signifie que l'on attend une réaction de la part du joueur et « lancer H » signifie que le joueur doit lancer un dé (ici d'Habilité)
Citer : Posté le 18/12/2018 13:12 | #
Perso j'ai eu la graph 90 a mon anniv et je suis un peu plus que debutant en C.. je vais essayer de passer mon sdk pour la graph 90 avec les tutos presents sur le site.. mais je garantis rien
-Planétarium 2
Citer : Posté le 18/12/2018 13:16 | #
J'aurais la Graph 90+E pour les vacances (elle est sensée arriver demain) Pour la SDK je crois que c'est un ensemble d'outils éparpillés (Linker, compileur, éditeur,...) donc bon courage
Ajouté le 24/01/2019 à 15:18 :
Bon... ben voila, ça fait 7 mois que le projet est officiellement lancé, 7 mois qu'on a pas vu un bout de code... Donc je ne sais pas ce que vous en pensez mais là c'est plus du stand by, c'est carrément du abort... Donc je ne sais pas si ça vaut le coup de poursuivre... Ou alors on re-constitue une équipe et on bosse ?
Si quelqu'un est motivé, toute la doc est en ligne, soit sur le site soit sur le git pour la version démo
Citer : Posté le 24/01/2019 21:54 | #
@Shadow: non ne dis pas ça. Souviens toi que le projet a été lancé au moment où tout le monde était en mesure d'apporter son aide à l'édifice. S'il n'aboutit pas tout de suite, il aboutira plus tard. Ce n'est qu'une question de temps, mais ça serait dommage de voir 20 pages pour un projet abandonné... Il suffit juste d'avancer un maximum plus ou moins une fois par an je pense
Citer : Posté le 31/01/2019 12:51 | #
Et d'un côté, heureusement qu'il n'y a pas encore de code, on a pas encore décidé de ce que l'on va utiliser
Citer : Posté le 03/02/2019 00:11 | #
Salut
Si vous êtes motivés pour commencer à coder je pourrais (peut-être) servir de main-d'œuvre
J'sais pas si vous aviez vu mais je trainais beaucoup sur les topics de C (fxlib, gint)
J'ai fait beaucoup de prototypages mais mon problème c'est le game design j'ai le syndrome de la page blanche et j'ai jamais codé en équipe donc voilà j'sais pas je ferai attention si il y a du nouveau merci
Citer : Posté le 03/02/2019 07:30 | #
Salut ! ton message ressemble à un sapin de noël !
Je suis prêt à m'occuper de la partie game design, car pour le code je suis un peu pris par mon pokémon...
Dijkstra - The Witcher
Citer : Posté le 03/02/2019 09:05 | #
Pour dessiner les spirites vous pouvez commencer par jeter un oeil au git
Citer : Posté le 03/02/2019 11:52 | #
Ah ok je vois Je verrai après le goûter
EDIT: Je viens de voir que vous mettez les sprites sous forme de tableau, du coup juste pour savoir, pour un 16x16 cela donne un tableau de longueur 256 c'est bien ça ? J'ai vu dans l'exemple que ça utilisait des nombres hex donc pour le noir c'est 0 et pour le blanc c'est 0xFF ? Il y a déjà des ".txt" de prêts ou pas ? Je prends mes marques Ou alors pour l'instant on s'en fout de la partie codage
Ajouté le 03/02/2019 à 19:30 :
Comme utiliser "Modifier" ne notifie pas la shoutbox, je me permets de faire ça