2 juin 2023
La présente page donne des précisions par rapport au micro-projet JIN4 qui, cette année 2022-2023, pourra être réalisé en monôme (imposé) ou en binôme.
Votre application doit être développée avec SFML, Thor, Qt ou bien Unreal Engine (en codant en C++, pas de Blueprint).
Par ailleurs, votre application doit intégrer au moins deux autres bibliothèques externes (que vous pouvez prendre ou non dans la liste ci-dessous). Elles vous permettront d’aller encore plus loin dans la réalisation de votre jeu :
cmake
.cmake
. Il utilise le binding avec SFML.cmake
.cmake
.cmake
.cmake
; attention : cet exemple ne compile actuellement que sous Windows.Si vous trouvez une autre bibliothèque externe intéressante, SVP, postez ses références sur le Discord JIN4 pour la partager avec vos collègues et pour que nous complétions la présente liste.
.\CMakeLists.txt
.\mainLauncher
.\resources
.\src
.\unitTests
mainLauncher\CMakeLists.txt
contient les lignes (ancienne version de TP) :add_custom_target(copy-resources ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/visage.xml)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/visage.xml
DEPENDS ${CMAKE_SOURCE_DIR}/resources/visage.xml
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/resources/visage.xml
${CMAKE_CURRENT_BINARY_DIR})
add_custom_target(copy-resources ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources)
file(GLOB RESOURCES CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/resources/*.*)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources
DEPENDS ${CMAKE_SOURCE_DIR}/resources
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/resources
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${RESOURCES}
${CMAKE_CURRENT_BINARY_DIR}/resources)
add_dependencies(mainLauncher copy-resources)
resources
sera stocké dans un dossier resources
accessible par votre exécutable. Donc, pour accéder à un fichier ressource, dans votre code C++, pensez à préfixer le nom de votre fichier ressource par resources/
(avec un seul “s”).cmake
de ce document..\unitTests\CMakeLists.txt
:add_custom_target(copy-resources-unitTests ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources)
file(GLOB RESOURCES CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/resources/*.*)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources
DEPENDS ${CMAKE_SOURCE_DIR}/resources
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/resources
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${RESOURCES}
${CMAKE_CURRENT_BINARY_DIR}/resources)
add_dependencies(unitTests copy-resources-unitTests)
.gitignore
Le fichier .gitignore
est un fichier texte qui doit être placé à la racine de votre projet. Il permet de spécifier les noms des répertoires et les fichiers qui doivent être ignorées par GIT (il n’y aura donc pas de suivi de version pour eux). Cf. cette documentation pour plus d’informations.
Dans le cas de votre micro-projet, nous vous recommandons de créer un tel fichier (avec un éditeur de texte) pour qu’il contienne au minimum les lignes :
# Ignore directory used by Visual Studio for project generation
.vs
build
out
# Ignore directories used by CLion for project generation
.idea
cmake-build-debug
Vous éviterez ainsi de stocker inutilement dans votre dépôt GIT des informations liées à la construction de votre exécutable.
Jusquà présent, vous n’avez eu besoin que de la bibliothèque graphique de SFML. Pour votre jeu, il est probable que vous utiliserez également ses fonctions sons, réseau ou autre. Vous aurez alors des erreurs à l’édition de liens, car il vous manquera des définitions de fonctions SFML. Faites alors les opérations suivantes :
mainLauncher\CMakeLists.txt
, pour spécifier que votre exécutable mainLauncher
utilise toutes les bibliothèques SFML, ajoutez-les à la ligne target_link_libraries()
(NB : nous recommandons de ne mettre que les bibliothèques SFML dont vous avez besoin : ainsi, vous limitez la durée de l’édition de liens et la taille de votre exécutable) :target_link_libraries(mainLauncher PUBLIC src pugixml sfml-system sfml-window sfml-graphics sfml-audio sfml-network)
src\CMakeLists.txt
, pour spécifier que vos fichiers sources dans src
peuvent référencer les fichiers d’include de SFML, ajoutez sfml-graphics
à la ligne target_link_libraries()
(a priori, il n’y a pas d’autres bibliothèques à mentionner) :target_link_libraries(src PUBLIC pugixml sfml-graphics)
unitTests\CMakeLists.txt
, pour spécifier que votre exécutable unitTests
utilise toutes les bibliothèques SFML, ajoutez-les à la ligne target_link_libraries(unitTests...)
(NB : nous recommandons de ne mettre que les bibliothèques SFML dont vous avez besoin : ainsi, vous limitez la durée de l’édition de liens et la taille de votre exécutable):target_link_libraries(unitTests src pugixml sfml-system sfml-window sfml-graphics sfml-audio sfml-network)
cmake
dans votre répertoire build
openal32.dll
est requis)En appliquant la section précédente, il se peut que vous ajoutiez la bibliothèque audio SFML qui requiert la DLL openal32.dll
sous Windows. Vous pouvez vous contenter d’installer cette bibliothèque à partir de l’installateur situé en https://www.openal.org/downloads . Mais toutes les personnes qui cloneront votre projet devront aussi faire cette installation !
Aussi, nous vous proposons la méthode suivante :
lib_openal32
qui est au même niveau que votre fichier CMakeLists.txt
principal.mainLauncher/CMakeLists.txt
les lignes :if(WIN32)
file(GLOB_RECURSE DYNAMIC_LIBS CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/lib_openal32/${ARCH}/*.dll)
file(COPY ${DYNAMIC_LIBS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif()
Avec cette méthode, plus besoin d’installer la bibliothèque openal32.dll
.
Par ordre décroissant d’importance :
Avant de vous dévoiler le sujet, tenez compte de cette remarque préliminaire : une fois que vous aurez le sujet, vous allez avoir des idées de réponse. Hé bien, faites une “purge”, c’est-à-dire éliminez les 5 premières idées qui vous viennent. En effet, ce sont les idées les plus évidentes, donc les idées les plus susceptibles d’avoir été trouvées par d’autres collègues, ce qui serait dommage.
Et le sujet de cette année est :
Pour celles·ceux qui veulent développer une application interactive qui n’est pas un jeu vidéo, pas de contrainte particulière (hormis le fait que l’application permet de vérifier votre maîtrise des Acquits d’Apprentissage Visés, cf. grille d’évaluation).
Pour celles·ceux qui veulent développer un jeu vidéo, ce jeu doit s’inspirer de 2 des 3 Monsieur Madame qui ont été tirés au hasard pour votre binôme/monôme (cf. liste ci-dessous). Cette inspiration doit au moins prendre en compte les noms des deux Monsieur Madame. Dit autrement, cette inspiration peut aussi s’inspirer de l’ensemble du titre des ouvrages (sans toutefois omettre les noms des Monsieur Madame concerné·e·s). Noter que, pour des problèmes de droit, le jeu réalisé ne peut pas contenir les graphismes des différents Monsieur Madame.
Liste des Monsieur Madame pour chaque binôme/monôme :