Suche senden
Hochladen
Rapport de Soutenance 1
âą
1 gefÀllt mir
âą
651 views
B
BartOunay
Folgen
Melden
Teilen
Melden
Teilen
1 von 19
Empfohlen
Failure of nokia
Failure of nokia
Krishnasamy Poosari
Â
Impact of Globalization on Samsung Electronics.
Impact of Globalization on Samsung Electronics.
Subham Dwivedi
Â
Case Study on Nokia
Case Study on Nokia
Apoorva Yadav
Â
Nokia vs. Apple - the ongoing war in the mobile industry
Nokia vs. Apple - the ongoing war in the mobile industry
Mika Marjalaakso
Â
NOKIA PRESENTATION
NOKIA PRESENTATION
Surjeet Singh
Â
Sign
Sign
Scott Hill
Â
Brainum Flyer Order 2 Cash
Brainum Flyer Order 2 Cash
martinkeulemans
Â
Mayıs 2016 sosyal medya trendleri
Mayıs 2016 sosyal medya trendleri
Altavia Dekatlon
Â
Empfohlen
Failure of nokia
Failure of nokia
Krishnasamy Poosari
Â
Impact of Globalization on Samsung Electronics.
Impact of Globalization on Samsung Electronics.
Subham Dwivedi
Â
Case Study on Nokia
Case Study on Nokia
Apoorva Yadav
Â
Nokia vs. Apple - the ongoing war in the mobile industry
Nokia vs. Apple - the ongoing war in the mobile industry
Mika Marjalaakso
Â
NOKIA PRESENTATION
NOKIA PRESENTATION
Surjeet Singh
Â
Sign
Sign
Scott Hill
Â
Brainum Flyer Order 2 Cash
Brainum Flyer Order 2 Cash
martinkeulemans
Â
Mayıs 2016 sosyal medya trendleri
Mayıs 2016 sosyal medya trendleri
Altavia Dekatlon
Â
Shop cctv camera in dallas
Shop cctv camera in dallas
Dynapost
Â
Résumé maths
Résumé maths
Chennoufi Med
Â
Question 3- The Magazine Advert
Question 3- The Magazine Advert
emmasnow14
Â
SENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINAL
Emilee Smith
Â
IOM and CILT Merger
IOM and CILT Merger
Peter Karran
Â
Assignments at Fujitsu
Assignments at Fujitsu
Peter Karran
Â
April 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meeting
Geneva2020
Â
Intermediate public transport (ipt)
Intermediate public transport (ipt)
abdul fattah barakzai
Â
El valor de la unidad
El valor de la unidad
Jose Vicente Perez
Â
01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?
Aditya Sasongko
Â
Question 2 Media Evaluation
Question 2 Media Evaluation
Hollie15
Â
Rapport de Soutenance 3
Rapport de Soutenance 3
BartOunay
Â
Sout3
Sout3
3on
Â
Chip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finale
Chady Dimachkie
Â
Memoire_final
Memoire_final
Thanh Vu Le
Â
Poly
Poly
ali choukri
Â
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
louise645546
Â
Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715
Esserentais
Â
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
safwenbenfredj
Â
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
Yosra ADDALI
Â
Rapport-ilovepdf-compressed
Rapport-ilovepdf-compressed
Arthur Cousseau
Â
Rapport Sdec Pi64
Rapport Sdec Pi64
guestf223f9
Â
Weitere Àhnliche Inhalte
Andere mochten auch
Shop cctv camera in dallas
Shop cctv camera in dallas
Dynapost
Â
Résumé maths
Résumé maths
Chennoufi Med
Â
Question 3- The Magazine Advert
Question 3- The Magazine Advert
emmasnow14
Â
SENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINAL
Emilee Smith
Â
IOM and CILT Merger
IOM and CILT Merger
Peter Karran
Â
Assignments at Fujitsu
Assignments at Fujitsu
Peter Karran
Â
April 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meeting
Geneva2020
Â
Intermediate public transport (ipt)
Intermediate public transport (ipt)
abdul fattah barakzai
Â
El valor de la unidad
El valor de la unidad
Jose Vicente Perez
Â
01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?
Aditya Sasongko
Â
Question 2 Media Evaluation
Question 2 Media Evaluation
Hollie15
Â
Andere mochten auch
(11)
Shop cctv camera in dallas
Shop cctv camera in dallas
Â
Résumé maths
Résumé maths
Â
Question 3- The Magazine Advert
Question 3- The Magazine Advert
Â
SENIOR SERIES FLYER ABSOLUTE FINAL
SENIOR SERIES FLYER ABSOLUTE FINAL
Â
IOM and CILT Merger
IOM and CILT Merger
Â
Assignments at Fujitsu
Assignments at Fujitsu
Â
April 26 2016 geneva 2020 steering committee meeting
April 26 2016 geneva 2020 steering committee meeting
Â
Intermediate public transport (ipt)
Intermediate public transport (ipt)
Â
El valor de la unidad
El valor de la unidad
Â
01. Pengantar Metodologi Desain - What is Design?
01. Pengantar Metodologi Desain - What is Design?
Â
Question 2 Media Evaluation
Question 2 Media Evaluation
Â
Ăhnlich wie Rapport de Soutenance 1
Rapport de Soutenance 3
Rapport de Soutenance 3
BartOunay
Â
Sout3
Sout3
3on
Â
Chip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finale
Chady Dimachkie
Â
Memoire_final
Memoire_final
Thanh Vu Le
Â
Poly
Poly
ali choukri
Â
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
louise645546
Â
Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715
Esserentais
Â
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
safwenbenfredj
Â
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
Yosra ADDALI
Â
Rapport-ilovepdf-compressed
Rapport-ilovepdf-compressed
Arthur Cousseau
Â
Rapport Sdec Pi64
Rapport Sdec Pi64
guestf223f9
Â
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmation
Aymen Bouein
Â
Object detection and recognition in digital images
Object detection and recognition in digital images
Sakher BELOUADAH
Â
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Sofien Benrhouma
Â
Tutorial GGPlot2
Tutorial GGPlot2
đĄ Vincent Isoz
Â
Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2
Daname KOLANI
Â
Rapport Sdec Pi64
Rapport Sdec Pi64
guestf223f9
Â
Gestion des actifs applicatifs
Gestion des actifs applicatifs
SafaAballagh
Â
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdf
nesrine haloui
Â
Lavorare con java 6
Lavorare con java 6
Pi Libri
Â
Ăhnlich wie Rapport de Soutenance 1
(20)
Rapport de Soutenance 3
Rapport de Soutenance 3
Â
Sout3
Sout3
Â
Chip_Ninja____Rapport_soutenance_finale
Chip_Ninja____Rapport_soutenance_finale
Â
Memoire_final
Memoire_final
Â
Poly
Poly
Â
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
S2_Projet_-_Groupe_18_-_Cahier_des_charges.pdf
Â
Guide utilisateur IPAQ 3715
Guide utilisateur IPAQ 3715
Â
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Â
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
Â
Rapport-ilovepdf-compressed
Rapport-ilovepdf-compressed
Â
Rapport Sdec Pi64
Rapport Sdec Pi64
Â
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmation
Â
Object detection and recognition in digital images
Object detection and recognition in digital images
Â
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Rapport Projet De Fin D'Ă©tude DĂ©veloppent d'une application web avec Symfony2
Â
Tutorial GGPlot2
Tutorial GGPlot2
Â
Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2
Â
Rapport Sdec Pi64
Rapport Sdec Pi64
Â
Gestion des actifs applicatifs
Gestion des actifs applicatifs
Â
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdf
Â
Lavorare con java 6
Lavorare con java 6
Â
Rapport de Soutenance 1
1.
Rapport de soutenance
Cross Divinity 04/01/2012 lefebv_k dossan_j do_o benoth_c
2.
Table des matiĂšres 1
PrĂ©sentation du jeu 3 2 Moral du groupe 3 2.1 Le menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Les cartes et les tuiles . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Le site internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3 Moteur graphique, la cartographie par tuiles 6 3.1 CrĂ©ation de la classe Sprite . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1.1 DĂ©termination de la position dessinĂ©e . . . . . . . . . . . . . . 7 3.1.2 La mĂ©thode Dessiner . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.3 La mĂ©thode Actualiser . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Conversion dâun ïŹchier texte en une matrice de sprite. . . . . . . . . 10 3.2.1 La fonction statique Associer . . . . . . . . . . . . . . . . . . 10 3.2.2 La fonction RemplirMatrice . . . . . . . . . . . . . . . . . . . 10 3.3 Utilisation de la matrice dans la Carte . . . . . . . . . . . . . . . . . 11 3.3.1 Charger les contenus . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.2 Dessiner la carte . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.3 Actualiser la carte . . . . . . . . . . . . . . . . . . . . . . . . 12 4 Moteur son 12 5 Les logiciels que nous avons utilisĂ©s 13 5.1 Visual Studio et XNA . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.1 SVN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.2 Gimp et Paint . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6 Conclusions 14 6.0.3 Chemsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.0.4 Olivier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.0.5 StĂ©phane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.0.6 Johan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.0.7 Conclusion gĂ©nĂ©rale . . . . . . . . . . . . . . . . . . . . . . . 15
3.
Le projet Sup
du groupe Jamps de la promotion 2016 de lâEpita est lancĂ©. Notre crĂ©ation avance avec enthousiasme et nous allons prĂ©senter lâĂ©tat dâavancement de notre travail. Ce compte-rendu dĂ©taillera ce qui Ă©tait prĂ©vu dans le cahier des charges : Le RPG « Cross Divinity », qui correspondra aux critĂšres que nous avions Ă©noncĂ©s ainsi que quelques "bonus". commencerons par une prĂ©sentation du jeu, puis nous montrerons les rouages internes. Et enïŹn nous dĂ©voilerons ce que nous avons utilisĂ© comme outils pour arriver Ă ce rĂ©sultat.
4.
EPITA 2016
2 MORAL DU GROUPE 1 PrĂ©sentation du jeu Pour ce projet nous avons dĂ©cidĂ© de rĂ©aliser un RPG au tour par tour sâinspirant essentiellement des RPG japonais comme Final Fantasy, Persona, Valkyrie ProïŹle, et autres « japonaiseries » mais aussi de jeux occidentaux comme Fallout et Morro- wind. Le systĂšme de combat sera semblable aux premiers Final Fantasy, câest-Ă -dire un systĂšme de combat au tour par tour oĂč lâon contrĂŽle quatre personnages que lâon fait agir les uns aprĂšs les autres avant (ou aprĂšs) nos opposants. Ce systĂšme implique que les combats et les phases dâexploration soient des phases distinctes pendant le jeu. Les phases dâexplorations seront faites en 2D isomĂ©triques (Fallout 2, Age of Em- pire I , II). Durant ces phases, des Ă©nigmes seront proposĂ©es au joueur. La rĂ©solution de ces Ă©nigmes sera nĂ©cessaire aïŹn de pouvoir continuer la progression dans le jeu. Les monstres ou autres ennemis seront visibles Ă lâĂ©cran et un contact avec ceux- ci entrainera le lancement du combat. Ce systĂšme permettra au joueur de pouvoir choisir ou non de lancer un combat. Et lâhistoire ? Pour le moment aucun scĂ©nario prĂ©cis nâa Ă©tĂ© dĂ©cidĂ© par le groupe. Beaucoup dâidĂ©es ont Ă©tĂ© proposĂ©es par tous les membres du groupe mais aucune ne nous satisfait tous. Seul le monde dans lequel lâhistoire se dĂ©roulera a Ă©tĂ© dĂ©cidĂ©. Lâhistoire se passera donc sur une Ăźle. 2 Moral du groupe Avant lâentrĂ©e dans lâEpita, seuls deux des membres du groupe se connaissaient, le groupe sâest principalement formĂ© en prĂ©-rentrĂ©e de mathĂ©matiques. Mais ce nâest que lorsque la crĂ©ation de groupe devenait nĂ©cessaire que le groupe a commencĂ© Ă fonctionner rĂ©ellement. Ce projet nous a donc permis de faire de nouvelles connais- sances. Le courant entre nous passe plutĂŽt bien, mĂȘme trĂšs bien. Tous les membres sont trĂšs motivĂ©s pour coder le jeu : De longues journĂ©es (pendant les vacances) de codage intensif se sont dĂ©roulĂ©es dans la joie et la bonne humeur. AïŹn de renforcer nos liens et permettre une meilleure cohĂ©sion au sein du groupe, il fut dĂ©cidĂ© de faire une activitĂ© extrascolaire, car nous ne nous connaissions que dans lâEpita et nos rap- ports nâĂ©taient que sur le plan du travail. Une sortie dans un bar ou se dĂ©roulait un concert fut organisĂ©e, les membres ont donc assistĂ© Ă un concert de rock, une biĂšre Ă la main. Cependant la communication interne au groupe a nĂ©cessitĂ© quelques amĂ©- nagements. En eïŹet lâun des membres nâayant pas de tĂ©lĂ©phone portable en dĂ©but dâannĂ©e, il fut conclu un rendez-vous bihebdomadaire aïŹn que tout le groupe soit mis au courant des derniĂšres avancĂ©es. 3 Jamps
5.
EPITA 2016
2 MORAL DU GROUPE 2.1 Le menu Lâinterface globale est un Ă©lĂ©ment indispensable au bon fonctionnement du logi- ciel. Elle permettra en eïŹet Ă lâutilisateur de manipuler plus facilement et rapidement celui-ci. Il faut donc quâelle soit complĂšte mais Ă©galement simple dâaccĂšs. Elle sâor- ganise autour du concept de lâĂ©cran : chaque partie du logiciel (comme le menu principal, le menu des options, le jeu lui-mĂȘme) est gĂ©rĂ©e de maniĂšre graphique par un Ă©cran, une surface qui prend toute la fenĂȘtre et qui capte toutes les interactions de lâutilisateur. Le fonctionnement des successions de ces Ă©crans est alors facilitĂ© par lâutilisation dâune pile. En eïŹet, considĂ©rons une pile dâĂ©crans dans laquelle seul lâĂ©cran au som- met est aïŹchĂ© ; Ă lâinstant oĂč nous lançons le programme, cette pile est vide. Nous empilons alors le menu principal qui donne ensuite lâordre, selon le choix de lâutili- sateur, dâempiler un autre Ă©cran (celui de jeu ou des options), ou de dĂ©piler, ce qui terminerait alors lâexĂ©cution. La conception du menu fut relativement simple Ă imaginer mais sa rĂ©alisation sâavĂ©ra complexe. En eïŹet, nous avons commencĂ© par penser Ă toutes les classes dâune ma- chine Ă Ă©tat. Une machine Ă Ă©tats est un modĂšle de comportement composĂ© dâun nombre ïŹni dâĂ©tats, de transitions entre ces Ă©tats, et dâactions : nous quittons un Ă©tat particulier en eïŹectuant une action qui va valider une transition. Par la suite, nous avons couplĂ© ces diïŹĂ©rents Ă©tats Ă lâadoption du langage C. Cela Ă©tait parfait pour le menu, qui avait besoin de simplicitĂ©, et de rapiditĂ© et cela rejoignait donc lâidĂ©e que nous nous Ă©tions faits sur lâinterface globale. Il est simple Ă utiliser pour lâutilisateur, permet une utilisation intuitive et agrĂ©able mĂȘme sâil reste pas mal de choses Ă amĂ©liorer car pour le moment il est loin dâĂȘtre totalement fonctionnel. Pour ce qui est du menu Ă proprement parler, nous avons dĂ©cidĂ© de placer en fond une image que nous avons rĂ©alisĂ©e par nos soins pour le rendre plus original et pour ĂȘtre en cohĂ©rence avec lâunivers qui rĂ©side dans notre jeu. Les bases du jeu sont posĂ©es, il faut maintenant les consolider. Au sein de la partie interface, pas mal de choses restent Ă ajouter. Nous nous sommes juste occupĂ©s du menu pour le moment, lâinterface utilisateur en jeu est en cours de construction et le menu lui-mĂȘme est en phase dâamĂ©lioration. Nous rajouterons de nouvelles fonc- tionnalitĂ©s au menu, notamment dans la partie Options et Jouer de celui-ci. Dans la partie « Options », des outils permettant de rĂ©gler le volume correctement et de modiïŹer la taille de lâĂ©cran seront ajoutĂ©s ; dans la partie « Jouer », un sous menu avec de nouveaux icĂŽnes seraient envisageables pour permettre Ă lâutilisateur de crĂ©er une nouvelle partie ou alors dâen charger une dĂ©jĂ commencĂ©e. Pour ce qui est de lâinterface utilisateur, nous devrons rĂ©aliser un inventaire, et dâautres outils facilitant la manipulation de notre jeu. 4 Jamps
6.
EPITA 2016
2 MORAL DU GROUPE 2.2 Les cartes et les tuiles Le jeu se dĂ©roulera sur plusieurs emplacements, qui peuvent ĂȘtre structurĂ©s en trois ensembles distincts : -La carte intĂ©grant la ville et les donjons, qui sera en 2D isomĂ©trique, et composĂ©e de tuiles assemblĂ©es les unes aux autres, dans laquelle lâĂ©quipe du hĂ©ros, reprĂ©sentĂ© par le personnage principal, se dĂ©place et rencontre des personnages non joueurs. -"La carte de combat", qui sera en 2D vue de cĂŽtĂ©, oĂč le joueur combat les diïŹĂ©rents monstres quâil rencontre. On y voit reprĂ©sentĂ©e lâĂ©quipe du joueur, les uns Ă cĂŽtĂ© des autres, face aux monstres. Dans cet emplacement le jeu se dĂ©roule au tour par tour. -"La carte du monde", qui sera un simple dessin sur lequel les villes, les donjons et les lieux visitables de lâile seront placĂ©s et oĂč le joueur sera reprĂ©sentĂ© par un point qui se dĂ©place entre les lieux. Lors de la phase de visite de la ville ou de donjons, la carte est gĂ©nĂ©rĂ©e Ă partir dâun ïŹchier texte et de tuiles. Les tuiles sont crĂ©Ă©es avec gimp et paint. Leur taille Ă©tant choisie arbitrairement, nous avons dâabord optĂ© pour une puissance de 2, la 128x64, Ă©tant plus facilement calculable par la carte graphique. Malheureusement cette façon de procĂ©der donnait des tuiles trop grandes ce qui nous mena Ă crĂ©er des tuiles en 52x28. 2.3 Le site internet Les changement successifs de dessins ralentirent la crĂ©ation de la base de gra- phismes. Les hĂ©ros Ă©tant crĂ©Ă©s en pixel art, le changement tardif de norme de base a remis Ă zĂ©ro les sprites des hĂ©ros prĂ©existants et la façon de les crĂ©er a Ă©tĂ© changĂ©e : Les hĂ©ros sont maintenant dessinĂ©s Ă la main sur papier, puis scannĂ©s et pixĂ©lisĂ©s Ă la bonne taille. Une contrepartie inattendue sâen est dĂ©gagĂ©e, dessins sont en eïŹet aussi utilisĂ©s pour maintenir le site web actif, en fournissant des artworks rĂ©guliĂšrement a la communautĂ© potentielle.// Le site web, qui est notre vitrine Ă travers le monde, a Ă©tĂ© conçu mais nâest pas encore disponible sur le web. Il est codĂ© en XHtml et en CSS, le but Ă©tant Ă terme dây ajouter une base SQL et le rendre plus interactif Ă lâaide du PHP. Nous avons rencontrĂ© des problĂšmes dans la conception du site et notamment dans la tentative dâinstaurer une police personnalisĂ©e.// 5 Jamps
7.
EPITA 2016 3
MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3 Moteur graphique, la cartographie par tuiles Pourquoi avoir choisi cette mĂ©thode ? Parce quâelle permet, une fois que lâalgo- rithme est conçu, de crĂ©er rapidement et simplement des cartes. Ainsi Ă partir dâun ou plusieurs ïŹchiers textes (selon le nombre de couches) composĂ©s dâune suite de lettres, nous obtenons une matrice de sprite disposant pour chacun dâentre eux de toutes les informations nĂ©cessaires pour crĂ©er un environnement cohĂ©rent. EnïŹn les mĂ©thodes pour dessiner et actualiser les attributs des tuiles seront faciles Ă rĂ©aliser depuis la matrice. DĂ©composons ce procĂ©dĂ© en grandes Ă©tapes : 1. CrĂ©ation de la classe sprite. 2. Conversion dâun ïŹchier texte en une matrice de sprite. 3. Utilisation de cette matrice crĂ©er une carte. 3.1 CrĂ©ation de la classe Sprite Un sprite Ă©tant tout ce que lâon va dessiner Ă lâĂ©cran, câest donc ce qui servira de base Ă tous les Ă©lĂ©ments graphiques, dâune part les tuiles, et dâautre part les dĂ©cors et les personnages. Il devra disposer dâun certain nombre dâattributs dont ceux pour dĂ©terminer la position oĂč elle sera dessinĂ©e et de mĂ©thodes telles que celles permet- tant de le dessiner Ă lâĂ©cran Ă la position enregistrĂ©e. 6 Jamps
8.
EPITA 2016 3
MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.1.1 DĂ©termination de la position dessinĂ©e Pour dĂ©terminer la position oĂč le sprite sera dessinĂ©, nous avons besoin dâun certain nombre dâattributs intermĂ©diaires. En eïŹet nous ne disposons, au dĂ©but, que dâun seul paramĂštre : la position matricielle qui demandera pour commencer dâĂȘtre convertie en position isomĂ©trique, ou position rĂ©elle. PositionIsometrique : DĂ©pend uniquement des dimensions par dĂ©faut des tuiles et de la position matricielle, l Ă©tant la ligne et c la colonne. Soit H, la hauteur par dĂ©faut dâune tuile et L la largeur par dĂ©faut dâune tuile. BaseRectangle : Nous aurons nĂ©cessairement besoin de dessiner des sprites plus larges et/ou plus profonds quâune case, tels quâune maison. Nous devons donc calculer Ă partir de la position isomĂ©trique, la position de la base, ainsi que ses di- mensions. Soit h, la hauteur en nombre de cases et l la largeur en nombre de cases. 7 Jamps
9.
EPITA 2016 3
MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES Position de dessin : EnïŹn, intĂ©ressons nous aux objets de dĂ©cors ou mĂȘme des personnages qui dĂ©passeraient en hauteur et/ou en largeur. Par exemple un arbre en position (1,1) dans la matrice, doit Ă©videment avoir sa base confondue Ă la tuile en position (1,1). Or, si nous dessinons la texture Ă la position de la base, nous observerons un dĂ©calage. Ainsi nous devons calculer la position D, en fonction du dĂ©calage en hauteur (decH) et en largeur (decL). baseX â decH D(B, decH, decL) = baseY â decL Variations en fonction de la camĂ©ra : La camĂ©ra dispose principalement dâune position en X ainsi que dâune position en Y. La camĂ©ra a deux modes de dĂ©placement : le dĂ©placement libre avec les ïŹĂšches directionnelles, et un deuxiĂšme qui permet de verrouiller la camĂ©ra sur le personnage principal. On peut passer dâun mode Ă lâautre grĂące Ă la touche « L ». Le premier modiïŹe simplement la position de la camĂ©ra en fonction de la touche pressĂ©e. Le deuxiĂšme fait varier la position en fonction de la position de la cible, sa hauteur et la taille de lâĂ©cran (nĂ©cessaire pour centrer correctement). Quelque soit la mĂ©thode choisie, la position de dessin de chaque sprite est actualisĂ©e en fonction de la position de la camĂ©ra. 8 Jamps
10.
EPITA 2016 3
MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.1.2 La mĂ©thode Dessiner Nous pouvons dessiner Ă lâĂ©cran Ă lâaide de SpriteBatch, la texture (si non nulle) Ă la position de dessin enregistrĂ©e. 3.1.3 La mĂ©thode Actualiser Si le sprite nâest pas en mouvement, nous nâaurons quâĂ actualiser la position dessinĂ©e en fonction de la camĂ©ra. Autrement, sâil est le personnage principal, mais ne bouge pas, il faudra vĂ©riïŹer les entrĂ©es du clavier. EnïŹn sâil est en mouvement, nous actualiserons son mouvement de translation. VĂ©riïŹcation des entrĂ©es :En fonction de lâune des 8 directions entrĂ©e par le joueur, le vecteur vitesse changera de valeur selon le sens de la translation qui pourra ĂȘtre eïŹectuĂ©. Nous vĂ©riïŹons ensuite si le mouvement dans ce sens est rĂ©alisable Ă partir de la position du personnage dans la matrice, et dâune matrice de boolĂ©en (plus de dĂ©tail dans la partie CrĂ©ation de la Carte). Sâil nây a pas dâobstacle, nous calculons sa destination. Calcul de la destination :En fonction de la direction, nous trouvons la destination matricielle que nous pouvons convertir en destination isomĂ©trique. Mouvement du personnage :Tant que la position est diïŹĂ©rente de la destination, la vitesse sâajoute Ă la position. Une fois que la translation est rĂ©alisĂ©e, la position matricielle prend la valeur de la destination matricielle. 9 Jamps
11.
EPITA 2016 3
MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.2 Conversion dâun ïŹchier texte en une matrice de sprite. GrĂące Ă XNA, nous avons pu nous servir de Stream Reader qui permet de lire un ïŹchier texte externe. 3.2.1 La fonction statique Associer Cette fonction crĂ©e une nouvelle instance dâun sprite en fonction du caractĂšre fourni en paramĂštre. Par exemple la lettre W crĂ©era un sprite de type Eau. 3.2.2 La fonction RemplirMatrice Lâalgorithme marche ainsi : 1. Il crĂ©e une matrice de taille (le nombre de lignes, le nombre de caractĂšres par ligne). 2. Ajoute Ă la mĂȘme position dans la matrice le type de sprite associĂ© Ă la lettre. 10 Jamps
12.
EPITA 2016 3
MOTEUR GRAPHIQUE, LA CARTOGRAPHIE PAR TUILES 3.3 Utilisation de la matrice dans la Carte Nous disposons dĂ©sormais de toutes les mĂ©thodes nĂ©cessaires pour crĂ©er des ma- trices de sprite. Nous pouvons donc nous en servir pour crĂ©er une carte disposant de trois matrices, une pour les tuiles une autre pour la seconde couche (DĂ©cors et personnages), la troisiĂšme est une simple matrice de boolĂ©en que lâon nommera Obs- tacles. 3.3.1 Charger les contenus Pour chacune des matrices de sprite, nous commençons par charger les textures adaptĂ©es en fonction du type de sprite rencontrĂ© dans la matrice. Ainsi, si le sprite est de type , la texture de ce sprite chargera lâimage de la tuile Eau. Nous chargeons dans le mĂȘme temps certains attributs tels que le boolĂ©en estPassable qui indique si lâon peut traverser ou non cet Ă©lĂ©ment, ou encore ceux dĂ©jĂ expliquĂ©s prĂ©cĂ©dem- ment : la longueur (l) et la profondeur (h) du sprite, et les dĂ©calages en hauteur et en largeur. Nous utilisons ensuite la fonction ChargerPositions, qui Ă partir de la position ma- tricielle et des calculs prĂ©cĂ©dents, permet de dĂ©terminer la position dessinĂ©e. EnïŹn nous remplissons Obstacles en fonction de la valeur dâEstPassable des sprites de chacune des matrices. Si la position est franchissable, alors vrai sinon faux. 3.3.2 Dessiner la carte Dessiner la carte revient Ă appeler la fonction Dessiner pour chacun des sprites des deux matrices. Cependant lâordre du parcours est important. En eïŹet câest ce qui dĂ©terminera si les objets sont aïŹchĂ©s devant ou derriĂšre les autres. De cette maniĂšre, les objets se superposeront de maniĂšre cohĂ©rente, y compris lors des dĂ©placements. 11 Jamps
13.
EPITA 2016
4 MOTEUR SON 3.3.3 Actualiser la carte Nous distinguons deux cas pour actualiser un Ă©lĂ©ment dâune matrice de sprite : Sâil est en mouvement ou non. Sâil ne bouge pas, nous appellerons la mĂ©thode dâac- tualisation en fonction de la camĂ©ra. Ce sera le cas pour toutes les tuiles, mais pas pour la seconde couche contenant Ă©galement les personnages. Sâil bouge, nous modiïŹons sa position dans la matrice puis nous actualisons sa translation. 4 Moteur son Le son est une des caractĂ©ristiques primordiales dans un RPG. Il permet de crĂ©er une ambiance en fonction de la situation et une meilleure immersion du joueur dans le jeu. Le moteur son a donc Ă©tĂ© commencĂ© pour la premiĂšre soutenance. Pour lâinstant ce moteur gĂšre uniquement des musiques, qui seront jouĂ©es pendant la phase de jeu. Deux musiques sont disponibles dans le jeu. Il est possible de changer de musique directement pendant le jeu en appuyant sur les touches "P" ou "M". Il est aussi possible dâaugmenter le son grĂące Ă la touche "Numa 1" ou de le baisser grĂące Ă la touche "Numa 2". On peut aussi couper le son grĂące Ă la touche "O". Ces modiïŹcations sonores ne sont pas pour lâinstant possibles dans le menu. Il faudra dĂ©sormais implĂ©menter plusieurs musiques qui se lanceront automatique- ment en fonction de la situation et du lieu oĂč le joueur se trouvera. Il faudra que lâon puisse modiïŹer le volume sonore directement dans le menu. Des sons complĂ©men- taires seront aussi implĂ©mentĂ©s aïŹn de rendre le jeu plus rĂ©aliste (bruits de coups lors des combats, son dâambiance etc..) 12 Jamps
14.
EPITA 2016
5 LES LOGICIELS QUE NOUS AVONS UTILISĂS 5 Les logiciels que nous avons utilisĂ©s 5.1 Visual Studio et XNA Microsoft Visual Studio est une suite de logiciels de dĂ©veloppement pour Win- dows conçue par Microsoft. La derniĂšre version en date sâappelle Visual Studio 2010, celle que nous utilisons pour la rĂ©alisation du projet. Visual Studio est un ensemble complet dâoutils de dĂ©veloppement permettant de gĂ©- nĂ©rer de nombreuses fonctionnalitĂ©s notamment des applications Web, des Services Web XML et des applications mobiles. Visual C, lâoutil de programmation que nous avons pu dĂ©couvrir grĂące Ă notre projet, utilise le mĂȘme environnement de dĂ©velop- pement intĂ©grĂ© (IDE, Integrated Development Environment) que les autres langages fonctionnant sous Visual Studio. Cela leur permet de partager des outils et facilite la crĂ©ation de solutions faisant appel Ă plusieurs langages. XNA dĂ©signe une sĂ©rie dâoutils fournis gratuitement par Microsoft qui facilite les dĂ©- veloppements de jeux pour les plates-formes Windows, Windows Phone 7, et Xbox 360 en rĂ©unissant un maximum dâoutils en provenance de Microsoft et de ses parte- naires (DirectX, Visual Studio). Par consĂ©quent, le logiciel Microsoft XNA nous a principalement permis de reprĂ©- senter notre jeu vidĂ©o sous Windows. GrĂące Ă ce dernier, nous pouvons aïŹcher tout le contenu de nos travaux rĂ©alisĂ©s en C Ă lâĂ©cran. Lâenvironnement de dĂ©veloppement intĂ©grĂ© utilisĂ© est Visual Studio, un programme que nous allons dĂ©ïŹnir ci-dessous. 5.1.1 SVN Suite aux diïŹĂ©rentes confĂ©rences faites par les promotions prĂ©cĂ©dentes, nous avons dĂ©cidĂ© de choisir SVN comme logiciel de gestion de versions. Jusque lĂ , aucun de nous nâavait entendu parler de ce type de logiciel, nous Ă©tions encore Ă lâĂ©poque des clĂ©s de stockage. Il nous a pas mal facilitĂ© la vie, nous nâavons plus Ă nous soucier des problĂšmes de pertes des clĂ©s. En plus de cela, SVN nous permet de travailler Ă plusieurs simultanĂ©ment sur le mĂȘme projet sans quâil nây ait aucun conïŹit entre les uns et les autres. Suite Ă cet avantage lĂ , nous avons pu consacrer le temps gagnĂ© Ă approfondir dâautres tĂąches du projet qui nous paraissaient plus complexes. 5.1.2 Gimp et Paint Bien que photoshop est Ă la disposition des Ă©lĂšves, le groupe utilise le logiciel Gimp pour crĂ©er lâunivers graphique, et paint vient faciliter la dĂ©marche de crĂ©a- tion, le but Ă©tant de se crĂ©er un style graphique diïŹĂ©rentiable des autres jeux et de controler parfaitement ce qui est aïŹchĂ© a lâĂ©cran 13 Jamps
15.
EPITA 2016
6 CONCLUSIONS 6 Conclusions 6.0.3 Chemsi Avant de commencer Ă coder notre projet, jâapprĂ©hendais un peu cette Ă©tape. En eïŹet câĂ©tait la premiĂšre fois de ma vie que jâallais coder un projet concret et je nây connaissais rien du tout je ne connaissais rien au C et Ă XNA. Jâai donc commencĂ© par apprendre tout seul les bases du C grĂące a Ă des tutoriels sur internet. Cette Ă©tape nâĂ©tait vraiment pas motivante. Mais le fait de coder en mĂȘme temps que les autres membres du groupe et de voir que ce que jâavais appris se concrĂ©tisait mâa grandement motivĂ©. Ce nâest que le dĂ©but du projet mais je pense que celui- ci va beaucoup mâapporter au niveau intellectuel et aussi me donner une vĂ©ritable expĂ©rience dans la programmation. 6.0.4 Olivier Depuis la rĂ©daction du cahier des charges, nous nous sommes rĂ©parti les diïŹĂ©- rentes tĂąches pour le projet. Personnellement je me suis chargĂ© de la partie « Menu » de notre jeu. Dans cette partie lĂ , le dĂ©but Ă©tait fort diïŹcile dâautant plus que je ne comprenais pas grand-chose au C et en plus de cela il fallait apprendre les bases dâXNA. Savoir par quoi et oĂč commencer le codage du menu nâa pas Ă©tĂ© simple pour ma part. Jâai parcouru pas mal de chemin avant de trouver un assez bon tutoriel qui mâaura pas mal aidĂ©. A lâaide de ce dernier, jâai pu rĂ©aliser des choses que je ne concevais mĂȘme pas de faire avant un certain temps. Le fait dâavoir enïŹn rĂ©ussi Ă apporter quelque chose de concret au groupe et au projet mâa complĂštement boostĂ©. Cela me rĂ©jouissait Ă lâidĂ©e de devoir continuer sur cette voie lĂ et faire progresser le projet jusquâĂ son terme ïŹnal. 6.0.5 StĂ©phane Ce projet est pour moi lâoccasion dâune double expĂ©rience : la crĂ©ation dâun jeu et la gestion dâun groupe pour le mener vers la rĂ©ussite. Lâensemble nâest pas une chose facile, car ce sont deux domaines dans lesquels je nâai pas ou peu dâexpĂ©rience : Je nâai en eïŹet jamais participĂ© Ă la crĂ©ation dâun jeu en groupe et bien quâayant dĂ©jĂ acquis quelques compĂ©tences en code au collĂšge et au lycĂ©e, la programmation orientĂ©e objet ainsi que la maitrise C ne mâĂ©taient pas connues. Je me suis chargĂ© de la partie du graphisme du jeu, car jâaime Ă©galement dessiner, et du site web. Câest Ă©galement la premiĂšre fois que je dois gĂ©rer lâorganisation du travail dâun groupe, et câest peut-ĂȘtre la partie qui me paraĂźt la plus compliquĂ©e. Mes camarades sont trĂšs motivĂ©s, mais il sâagit dâessayer de structurer lâensemble, aïŹn de prĂ©senter un travail cohĂ©rent. Ceci est une partie diïŹcile, qui ne mâest pas familiĂšre. 14 Jamps
16.
EPITA 2016
6 CONCLUSIONS 6.0.6 Johan La premiĂšre partie de ce projet a Ă©tĂ© trĂšs plaisant pour moi. Ayant dĂ©jĂ un peu dâexpĂ©rience en algorithmique, je nâai pas eu peur de me jeter Ă lâeau le premier. Ainsi, jâai appris les bases du C directement sur le terrain, puisque jâai commencĂ© par notre moteur jeu (que nous commencerons Ă exploiter quâĂ partir de la 2Ăšme soutenance). Cela mâa permis dâapprendre beaucoup sur la programmation orien- tĂ©e objet. Mais ceci mâa Ă©galement fait prendre de lâavance sur le reste du groupe, qui nâavançait pas au mĂȘme rythme que moi. Pour que ces acquis nous soient fa- vorables Ă tous, nous avons dĂ©cidĂ© de nous rĂ©unir pour coder ensemble, ce qui ne fĂ»t pas chose aisĂ©e Ă cause de nos horaires de cours diïŹĂ©rents (nous sommes de 3 classes diïŹĂ©rentes). Nous avons alors pu partager nos connaissances et ainsi rĂ©ajuster les inĂ©galitĂ©s. A partir de ce moment, jâai senti un intĂ©rĂȘt croissant chez les autres membres du groupe. Câest ce qui me rend conïŹant pour le reste de lâaventure. 6.0.7 Conclusion gĂ©nĂ©rale Pour cette premiĂšre soutenance nous sommes parvenus Ă accomplir tous les ob- jectifs que nous nous Ă©tions ïŹxĂ©s dans le cahier des charges. Nous sommes capables dâaïŹcher diïŹĂ©rents types de "texture au sol" (eau, sable, herbe) et des dĂ©cors comme des arbres. Notre moteur physique gĂšre les collisions avec les Ă©lĂ©ments du dĂ©cor (arbres pour lâinstant), et il est impossible pour le personnage de passer sur des tex- tures qui sont inaccessibles, comme lâeau. De plus, Ă©tant en 2D isomĂ©triques, notre personnage est positionnĂ© derriĂšre le dĂ©cor quand il doit lâĂȘtre (si le personnage passe derriĂšre un arbre il nâest plus visible). Nous disposons aussi dâun scrolling qui permet Ă la camĂ©ra de suivre notre personnage au fur et Ă mesure quâil se dĂ©place sur la carte. Nous sommes donc conïŹants quant Ă lâavenir de notre projet et la motivation grandit dâautant que ce dernier progresse. 15 Jamps
17.
EPITA 2016
6 CONCLUSIONS Lâimage dâintroduction et de menu, fait sous Gimp Une image de notre jeu 16 Jamps
18.
EPITA 2016
6 CONCLUSIONS Des fois les choses ne se passent pas aussi simplement que voulu Une image de lâĂ©bauche du site 17 Jamps
19.
EPITA 2016
6 CONCLUSIONS Toute lâĂ©quipe espĂšre que cette prĂ©sentation vous aura plu 18 Jamps