13 Février 2023

Nous nous sommes réunis ce Lundi 13 Février pour une première entre-vue et pour discuter de notre vision vis à vis du projet.

Nous avons pu discuter de plusieurs choses, notament:

  • Methode pour travailler en équipe
  • Structure du projet
  • Petite explication du fonctionnement de git
  • Brainstorming des idées du jeu

Projet d'équipe

Pour travailler en équipe nous allons utiliser gitea (équivalent à github) hosté par Anthony. (juste parce qu'il n'aime pas Microsoft) Le projet est donc hosté à cette addresse. Il est dans un premier temps privé car d'autre membres de l'école sont sur cette instance de gitea et ca serait dommage de leurs donner toutes nos idées!

L'avantage de gitea est que nous pouvons utiliser une vue kanban des issues, ce qui nous permetterais de nous organiser plus facilement et de voir l'avancement du projet!

Nous avons également accés à ce Journal de bord à l'addresse (school.debucquoy.me)[http://school.debucquoy.me] sur un nom de domaine appartenant déjà à anthony qui nous évide de payer un nouveau nom de domaine dans un premier temps

Ce journal de bord devrais contenir tout les points important du dévelopement du projet ainsi que les rapports des différentes réunions. Il nous sera autant utile pour améliorer notre structure et ne pas oublier des points précédament dit que pour les correcteurs voulants "aprécier" notre méthode de travaille

Idées

Les premières idées du jeu ont pu être trouvée mais ne sont absolument pas fixe et pourrons donc être modifié à volonté lors du dévelopement.

Le but serait de rendre le jeu plus intéréssant en y implémentant une histoire un peut intéréssante. (comme un visual novel) L'histoire serait qu'un étudiant sur le point d'emménager dans un nouvel appartement doit donc ranger ses affaire dans un premier temps

Nous aurions donc:

  1. Level 1-10: Rangement des affaires dans des cartons
  2. Level 11-20: Rangement des cartons dans un camion
  3. Level 21-30: Rangement des nouvelles affaires dans un camion

La représenations des pièces se ferait à l'aide d'éléments dans des matrices. Nous devons donc trouver un moyen de sauvegarder les différent niveau.

Easter Egg

Attention ne pas lire ce qui suit et passer directement au prochain chapitre pour ne pas être spoiler de ce potentiel easter-egg

Une idée d'easter-egg que nous pourrions implémenter dans le jeu si nous avons le temps serait de transformer le jeu en Tetris (car les pièces sont trés resemblantes) et pour activer cet easter-egg, il faudrait lors des derniers niveau utiliser le bureau à placer d'une certaine manière pas encore définie. comme si nous jouions sur le pc du bureau

Objectif pour la prochaine entre-vue / réunion

Etant donnée que le java n'est pas encore un acquis pour tous, nous allons commencer par des prototypes en python. Ces prototypes n'ont pas besoin d'être trés complexe puisque le but est de représenter une seule fonctionnalitée du jeu et de le faire bien. ainsi lors du dévelopement on pourrait traduire nos code de python à java en ayant déjà une vision plus aboutie du dévelopement

Dans un premier temps donc, nous allons faire des prototypes de parties du jeu chaquns pour soi puis les mettre dans le dossier prototype du repo. Vu que chaques modifications de la master branche du repo doivent être aprouvée par les 3 membres, celà va permettre à chaquns d'entre nous de donner un avis constructifs sur les prototypes fait ce qui peut nous permettre de nous améliorer

20 fevrier 2023

En date Lundi 20 Février à eu lieu notre deuxième meeting.

En occasion de cette deuxième rencontre nous avons continué à proposer des idées pour renforcer les bases de ce projet.

Prototypes

Nous avons commencé par une exposition et analyse des prototypes qui avaient été créé jusqu’à ce jour.

Prototype Anthony

Anthony se pose le challenge de réussir à résumer toute les informations du projet et du développement du jeu en très peu d’espace sans perdre des datas .

Le résultat de son travail est un fichier répartie en en tête (SMS) et pied de page (SME) entre ces deux il y stocké les infos suivantes: map size , map data , nombre de pieces , (piece size and data) ; chaque info est un octet .

prototype Mat

Mat concentre sont travail sur la création d’un code qui puisse servir de fondements pour notre moteur de jeux .

On y trouve un algorithme pour le choix du niveau et le pick des pieces et une fonction pour tourner les pièce à l’aide du module rotate_matrix , tout ça à l’intérieur d’une boucle while qui permet de run le jeu temps que la condition est respectée.

Brainstorming

En un deuxième moment on est passé à un brainstorming pour trouver des nouvelles idées concernat le moteur de jeu:

  • piece ~> objects avec des attributes communs

  • attributes

    • tourner
    • lock
    • léger
    • lourd (les objects lourd écrasent les légères)
  • selection objects

    • vibrations objects
  • chois du teme (histoire)

    • étudiant qui déménage
  • objects en general

    • game logic ~>
      • menu
      • jeux > map(shape) > pieces(formes et propriétés)

En dernier on à apportè des modifications sur notre serveur git pour améliorer l’organisation du travail :

  • cration du gradle

  • creation d’un 'ideas' (à faire après les to do)

Directives pour le prochain meeting

Pour le prochain meeting on créera des nouveaux prototypes et on pensera à des manières pour accéder aux images et au sons , multimédias du jeu.

23 mars 2023

Nous nous sommes rassemblés ce jeudi afin de parler de plusieurs sujets tel que :

  1. L'avancement du travail d'Eddy.
  2. Clarifiction sur les tâches.
  3. Rassembler notre travail.

L'avancement du travail d'Eddy

Eddy a commencé à travailler avec javaFX afin de modéliser les premiers mouvements/ déplacement sur les pièces dont nous aurons besoins pour la suite du projet. Il va rajouter son travail sur notre git.

Clarifiction sur les tâches du projet

En ceux qui concerne Eddy va continuer de : - Travailler sur les mouvements des pièces - Faire l'interface graphique pour le jeu.

Anthony va : - Continuer à travailler sur Map - Travailler sur son Parser

Pour finir Matteo va : - S'occuper de faire le menu du jeu - Faire la musique du jeu

Rassembler notre travail

Après la mise en commun du travaille d'Eddy avec celle d'Anthony deux points important ont été souligné.

En effet désormais Anthony se consacre sur toutes les propriétés des pièces à l'intérieur du plateau de jeu, tandis que Eddy lui fait en sorte de lier son travail pour les mouvements en dehors du plateau c'est-à-dire la sélection des pièces, la sélections de la texture en bref l'interface graphique. De plus concernant la position des pièces il a été décidé de se référer au coin en haut à gauche de la matrice une méthode qui pourra nous aider est la méthode Vec2 qui Anthony a rajouté

En ce qui concerne la création du menu pour Matteo, il faudrait créer une classe select level pour que chaque level contiennent : le parser qui est relié à Shape et à Pièce mais aussi à l'interface graphique.

File Parser Specification

For the Project, I wanted to challenge myself, I decided to do my own file parser with my own specification that would have the special objective of being really small.

The File format

The file would use the .level file extension.

The file can contain anything, the used data is enclosed between a header and a footer. This could be used to add: musics, images and other stuff in the level file itself

Only one Header and One Footer should be present in the file. The parser will only read the first one it finds so to avoid problem, it is best practise to put the level data at the top of the file.

  • The HEADER will be defined by the succesion of the characters 'S', 'M' then 'S'
  • The FOOTER will be defined by the succesion of the characters 'S', 'M', then 'E'
  • The bytes in between are the level data
    • byte 1: Width of the map
    • byte 2: Height of the map
    • bytes 3 -> Width * Height (+1 if Width * Height % 8 is not 0)
    • byte after Map Data: Pieces amount
    • for each pieces
      • 1 byte: size of the piece
        • 4 first bits : width
        • 4 last bits: height
      • next bytes -> Width * Height (+1 if Width * Height % 8 is not 0)

Saved file

For saved file, the extension will be .slevel The only difference is that at the end of the map data (after the pieces and before the Footer. there will be the position of each pieces from their top-left corner in the map. following this pattern for each pieces

  • 'F' and 'L' on 2 bytes for floating positions when the piece is not placed
  • x and y on 2 bytes for position if the piece is placed

Known Limitation

  1. by putting the piece size on one byte. We limit the maximum piece size to 15 x 15 (1111 | 1111) I don't think we will ever need a piece larger than 5x5 so this is clearly a feature, not a bug! :-) We might use the same methods for the pieces positions but there could be a posibility to have larger map if I use 2 bytes for the positions.

Intro histoire

Après notre premier quadri à l unif assez compliqué entre calculus, inégalités et physique et la perte de temps dans les transports en commun. Je décide de enfin me prendre un kot à Mons pour réussir ce quadri en beauté

Day 1

intro à jouer

Faire les cartons de différentes cours Calculus --> big carton( encombrant pas possible de tourner) Algo 1 --> pc portable (fragile) Math elem carton avec une inégalité dessus qui change dès qu on tourne la pièce) Objet perso à chacun

  1. Mat --> poids de sport
  2. Eddy --> balle de basket,...
  3. Anthony --> tenue de scout

Déménagement histoire :

Arrivé à l appartement : La pièce est assez petite mais avec assez d'imagination je serai tout mettre (j'aurais aimé déjà être en master pour faire une AI qui me aiderai à ranger tous ça peut-etre que chatgpt pourrait m aider..)

Déménagement à jouer :

Galère à tout rangé --> (interaction avec le jouer) --> en repensant c est peut-être pour ça que l ancien propriétaire et partie et que le prix était de si bas Notion de jour donc cours unifs -> pas le temps de ranger dans le WK on doit terminer en semaine

Day 2

continuité histoire

Après un long mardi terminer par le cours d algo 2 il est tant de ranger le dernier carton dans la buanderie après une 10 minute de marche j arrive à mon kot mais qlq chose à changer, la couleur de la porte n est plus la même. De plus il faut tirer et plus poussé pour l ouvrir. Après être rentré tous les cartons sont refait et l ordre des pièces à changer

à jouer

----> refaire des niveaux différents pour ranger les cartons

(intercation pendant le jeu) --> Hormis la fatigue qui me gagne et se sentiment étrange par rapport à ce kot je defais encore une fois tous mes cartons (je ne sais pas comment mais tout mes exo en calculus ont été corrigées les cartons sont tous remplie de rouge) Après avoir défait le dernier carton dans le bureau je remarque une Trap mystérieuse mais il est déjà 23h et demain j'ai une longue journée qui m'attend (8-10 et 15h45-17h45)

Day 3 histoire

La nuit passe --> rien ne bouge (Level bonus) (choix entre faire le petit dej ou allez directement en cours)

Si choix petit dej

Après un bon petit déj --> puzzle cassé les oeuf au bonne endroit dans la poêle mettre le bacon au bonne endroit

si choix rien déjeuner

rien ne se passer (peut avoir de l'importance pour la suite ex : fin pendant la journée donc allez faire des courses idée de niveau de remplir le caddie)

La journée se termine je croise les doigts pour que tout reste comme avant Puis on ouvre la Trap est... space cat avec qlq level ou reveil devant l examen de calculus