Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » L'Odyssée Projet de jeu casio
Math680Hors ligneMembrePoints: 367 Défis: 0 Message

L'Odyssée Projet de jeu casio

Posté le 03/07/2018 21:19

Nous cherchons des personnes pour la création d’un RPG se nommant
L'Odyssée

Mettre un « je participe » dans les commentaires


Eléments pratiques :
L'adresse du GitLab : GitLab
le scénario : ici et ainsi que sur le Git
Mécanique de base et combats
Fuite et sorts
Les niveaux ils vont jusqu'ici
Les objets

Connaissances
Le système de matrice pour les maps
Le GitLab
Le GitLab
Pour git, c'est pas sorcier :
1) faut installer git (la complexité varie en fonction de votre OS)
2) une fois installé, on lance la console, on se rend dans le fichier où l'on veut bosser à coup de cd sous linux et mac et de mv sous windows
3) git clone https://git.planet-casio.com/Shadow15510/odyssee

Vous avez cloné le dépôt git, vous pouvez bosser dessus.

Pour mettre à jour votre dépôt : git fetch
Pour sauvegarder chez vous les changements que vous avez fait : git commit
Pour envoyer vos modif sur le dépôt central :git push


Avancement du projet
Avancement global du projet
   14%

Détails de l'avancement du projet
Détails de l'avancement du projet

Cahier des charges
   25%

Cahier des tâches
   5%

Sprites
   20%

Moteur graphique
   1%

Moteur physique
   1%

Moteur de combat
   45%

Moteur du jeu
   1%





Pages : Précédente1 ... , 15, 16, 17, 18, 19, 20, 21Suivante
LephenixnoirHors ligneAdministrateurPoints: 13774 Défis: 136 Message

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

En C, les graphismes, (sprites, tiles,...) sont convertis du *.png initial à des *.txt contenant les code hexadécimal de l'image monochrome... Tu me suis ? Ces codes hexadécimaux sont présenté sous forme d'un tableau.
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.

Ces tableaux ont un petit nom (c'est le petit plus du C) et si on met ces petits noms dans un autre tableau, on va obtenir un gros tableau qui va contenir tous les autres tableaux qui contiennent les codes hexa des images...

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 :

Si le tile est un arbre
  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 :

Pour afficher le tile i, eh bien...
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 ? ».

On sait que les sprites font (c'est un exemple) 8*8 pixel, ça fait un écran qui est composé de 12 cases par 8
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 !).

Maintenant passons au moteur physique (la base)
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 :
If (Map [x] [y] !=-1)

Ahrem
if(Map[x][y] > 0)

Rise.
KikoodxHors ligneMembrePoints: 900 Défis: 7 Message

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 ?)
Lbl 1
Goto 1


Une boucle optimisée
LephenixnoirHors ligneAdministrateurPoints: 13774 Défis: 136 Message

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 )
Rise.
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

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
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
HackcellHors ligneMembrePoints: 940 Défis: 6 Message

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 !
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

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%,...)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
HackcellHors ligneMembrePoints: 940 Défis: 6 Message

Citer : Posté le 14/11/2018 12:45 | #


Un peu comme ça ??
Cahier des charges
   1%


I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

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 !

Infos supplémentaires sur les sprites
Infos supplémentaires sur les sprites
Taille : 16*16 ? (+ mini-map)
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 !





"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
KikoodxHors ligneMembrePoints: 900 Défis: 7 Message

Citer : Posté le 19/11/2018 18:07 | #


Et pour la création de maps ?
Ça se fera comment ?

Lbl 1
Goto 1


Une boucle optimisée
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

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)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
KikoodxHors ligneMembrePoints: 900 Défis: 7 Message

Citer : Posté le 03/12/2018 10:29 | #


Du coup vous ne voudriez pas partir directement sur un add-in pour 90+E ?
Lbl 1
Goto 1


Une boucle optimisée
HackcellHors ligneMembrePoints: 940 Défis: 6 Message

Citer : Posté le 03/12/2018 11:39 | #


Non, ce serait élitiste...
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

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é)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
DisperseurHors ligneMembrePoints: 1024 Défis: 0 Message

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
Fonctions 3D
Meilleurs programmes
Cliquer pour enrouler
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

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
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
RedeyesHors ligneMembrePoints: 250 Défis: 1 Message

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
Be perseverant in all that you undertake, and get stronger everytime... Shining hope
HackcellHors ligneMembrePoints: 940 Défis: 6 Message

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
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
ItytHors ligneMembrePoints: 200 Défis: 0 Message

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
salut je m'appelle sacha et je viens du bourg-palette et voici mon meilleur ami pikachu
LightmareHors ligneMembre de CreativeCalcPoints: 368 Défis: 0 Message

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...
While 1
WhileEnd

une boucle encore plus optimisée que celle de Kikoodx
Shadow15510Hors ligneAdministrateurPoints: 2561 Défis: 15 Message

Citer : Posté le 03/02/2019 09:05 | #


Pour dessiner les spirites vous pouvez commencer par jeter un oeil au git
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   100%
ItytHors ligneMembrePoints: 200 Défis: 0 Message

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
salut je m'appelle sacha et je viens du bourg-palette et voici mon meilleur ami pikachu
Pages : Précédente1 ... , 15, 16, 17, 18, 19, 20, 21Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 28 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