Salut,
Je me présente, je m’appel Martin j'ai 20 ans et je suis étudiant à l'université. Je viens vous présenter un des projets sur lequel je travaille en ce moment : Exploration Craft
En savoir plus sur le projet
Genèse
L'origine du projet, est un projet scolaire portant sur la création et la manipulation de fonction pseudo-aléatoire ( bruit de perlin...). A partir de cette base, je pouvais générer des paysages "aléatoire" en 3D, et c'est à partir de ce moment que j'ai décidé d'en faire un jeu sur mobiles.
Généralités et avancement
Exploration Craft est un clone de Minecraft. C'est un jeu sandbox en 3D qui prend place dans un environnement cubique. Le jeu est actuellement jouable uniquement en mode "survival", bien que la partie multijoueur fonctionne, mais requièrent de nombreuses optimisations avant d'être disponible.
Objectifs
Dans un premier temps je souhaiterais améliorer les performances et la consommation de la mémoire.
Puis gérer la création de Biomes, améliorer le multijoueur ( n'est pas accessible pour tout le monde actuellement )
Et enfin je compte également porter le jeu sur IOS durant le mois de septembre si j'ai le temps.
Le projet et son originalité
Le projet n'a rien d’original. Le but du projet n'étant pas d’innové mais d'apprendre et acquérir de l’expérience en faisant un projet qui m’intéresse.
Les technologies utilisées
Le jeu est codé en C++ et j'utilise l'API graphique OpenGL sur windows et OpenGL ES 2.0 sur mobile et Fmod pour le Son. Bien qu'une version windows est disponible, je ne la distribue pas puisqu'elle n'est adaptée à la plateforme.
Téléchargement :
https://play.google.com/store/apps/details?id=com.mine.explorationcraft
Voila, si vous avez des questions./critiques/retours à faire sur ce projet, je vous écoute
Hum utiliser les textures de minecraft c'est pas trés "réglo".
Sinon que fait tu avec ton bruit de perlin, un bete diamond square pour le terrain? a tu prévus des couches de biomes pour le "réalisme"?
Personnellement j'utilise le perlin dans un cube pour avoir une "vrai" génération 3D et non sur une grille comme 90% des projets de terrain en perlin et toi?
Pour mon VDD :
Sinon que fait tu avec ton bruit de perlin, un bete diamond square pour le terrain?
Bruit de Perlin et Diamond Square pour moi ce n'est pas du tout équivalent.
Dans les deux cas tu utilises un générateur pseudo aleatoire, mais les points communs s'arretent là ... ou bien j'ai loupé qq chose.
Personnellement j'utilise le perlin dans un cube pour avoir une "vrai" génération 3D et non sur une grille comme 90% des projets de terrain en perlin et toi?
Je n'ai pas bien compris de quoi tu parles : mon interpretation de ta phrase c'est que utilises un bruit coherent 3D au lieu d'un bruit 2D : est-ce correct ?
--------------------------------
Pour l'auteur :
Pour creer les biomes, j'utilise une maniere simplifiée : je prend deux parametres qui sont temperature et humidité. L'humidité est un bruit coherent 2D avec une période plus grande que celle du terrain. La temperature, est juste une valeur dependante à la fois de la hauteur et de la latitude (la distance par rapport au milieu de la carte quoi) et avec ces deux parametres j'ai un tableau de biome comme un peu sur cette page :
[https://fr.wikipedia.org/wiki/Biome#/media/File:Holdridge_FR.png]
ou bien sur le diagramme de Whittaker
[http://www.marietta.edu/~du/~biol/biomes/whittaker.jpg]
Si vous avez d'autres idées sur le sujet cela m'interesse.
Salut papy386 et Romuald_78,
Merci d'avoir pris le temps de répondre.
j'en profite pour faire une petite mise à jour (disponible dans l’après midi).
C'est la dernière avant le portage sur IOS.
Aucune texture provient du jeu minecraft ou autre jeu. Le jeu n'enfreint aucun droit. Si c'était le cas, le jeu aurait déja été banni avec plus de 2 millions de téléchargements...
Personnellement j'utilise le perlin dans un cube pour avoir une "vrai" génération 3D et non sur une grille comme 90% des projets de terrain en perlin et toi?
Tu veux dire que tu n'utilise pas un système de heightmap du genre " z > perlin(x, y) ? AIR : TERRE" ?
En développant sur mobile, je dois prendre en compte un grand nombre d'utilisateurs qui possèdent des téléphones pas très puissant ( processeur avec fréquence < 1Ghz ) et avec des capacités graphiques limitées. Pour ce genre de téléphone je génère les cartes avec un simple bruit 2D, et je désactive les lumières et d'autres choses.
Pour les autre téléphones, je reprends le même système, en y ajoutant la génération de grotte/d’île en utilisant un bruit avec 3 paramètres (x,y,z).
Mais jusqu'à maintenant j'utilisais cette technique car ma génération des chunks étaient très mal optimisée. Et surtout, les threads dans lesquels je lançais les calculs, bloquaient mon thread principale. Bref ça revenait quasiment au même que de faire les calculs dans le thread principale... Mais j'ai récemment réglé ce problème ce qui va me permettre de générer des paysages plus détaillés et diversifiés, sans faire chuter le framerate.
Merci pour ton explication et les liens Romuald, je pensais justement implémenter les biomes dans le jeu.
Je pense que ça va m'être m'être utile. Malheureusement je n'ai pas grand choses à partager, mon jeu est assez basique.
Salut,
Ce que tu as fait m'impresionner, ça a l'air solide et sérieux, bravo pour le travail.
Ma question est d'ordre philosophique : POURQUOI imiter Minecraft, même ne serais-ce que sur la forme ? Avoir un ordi et savoir programmer, c'est être un petit dieu, c'est avoir les pleins pouvoir pour créer un monde. Alors pourquoi imiter ce qui existe déjà ? (bien sûr il est difficile de se démarquer, mais je parle d'essayer tout du moins).
Salut Triple14,
Je ne vois pas ce projet comme la création d'un jeu original, mais bien comme un clone/une alternative aux jeux Minecraft PE. Pour voir si je suis capable de produire une alternative à la version Minecraft PE (qui au passage est un monstre d'optimisation comparé à mon jeux).
Voila, mon but n'est pas de créer un jeu, mais juste de m'améliorer sur des projets sympa.
Apres le développement du jeu n'est pas terminé. Il se peut que plus tard j'essaie de me démarquer.
Personnellement, un univers de type voxel, généré de manière procédurale te fait aborder des thèmes techniques très poussés.
Premièrement la generation du monde :
- générateur pseudo aléatoire
- bruit cohérent (2D ou 3D ici dans le jeu)
- génération du relief + grotte
- gestion des fluides (rivieres, cascades)
- les biomes
- la végétation (comment faire des vegetaux qui ressemblent à qq chose en voxels)
Deuxièmement la creation du mesh 3D
- ajout suppression des cubes dans le mesh
- acces GPU si dispo
- algo de niveau de détail qui diminue avec la distance
- file system pour generer les chunks modifiés (si modifié, on le charge depuis le disque, sinon on genere depuis le modele)
Troisièmement :l'optimisation des ressources
- utilisation des différents proc (architecture avec thread)
- utilisation de threads GPU (comme avec OpenCL) si dispo
- algo qui va optimiser le parcours des chunk generes (octree-like) pour permettre un affichage des chunk de "surface" en premier (sinon ton algo va surement afficher des chunk situes sous la surface avant d'autres)
- autres optimisations dans le modele comme un cache de certaines données pour accélérer la generation.
Quand tu vois des jeux comme minecraft ou lego worlds le seul truc qui peche si on peut dire : c'est la distance de vision. En fait tous ces jeux ont les meme problématiques qui sont de vraies sources de travail.
Pour resumer ma pensee : je dirai que copier un jeu comme minecraft c'est un exercice très difficile mais extremement formateur.
Le 16 septembre 2015 à 07:51:11 bluepoint_ a écrit :
Hé c'est drolement intéressant votre sujet là, c'est vrai que je me suis souvent demandé collent le terrain était formé dans Minecraft sans jamais aller me renseigner.Si quelqu'un a des liens vers des papiers sur le sujet ou des mots-clefs à chercher chuis preneur (là je regarde bruit de Perlin sur Wiki mais j'vois pas encore bien comment ça s'applique au sujet)
Tu as juste à décompiler Minecraft et regarder le code source (en Java) pour apprendre
Pour les biomes, la page wikipedia est pas mal pour expliquer les paramètres qui le définissent:
[https://fr.wikipedia.org/wiki/Biome]
Pour les bruits cohérents je trouve ce tutoriel très bien fait :
[https://openclassrooms.com/courses/bruits-et-nombres-aleatoires-coherents]
Plop,
J'ai reçu mon iphone 5C la semaine dernière afin de porter mes jeux sur la plateforme d'apple. Vendredi j'ai commencé le portage et bonne nouvelle j'ai fini le portage dimanche !
Si le portage à été aussi rapide, c'est grâce au peu de dépendances du projet : Opengl, pthread, fmod(pour le sond). Il ne me restait plus qu'à réaliser les wrappers en obj-c++, optimiser les shaders, revoir la gestion de l'importation/écritures des fichiers/assets et enfin adapter les events multitouch.
Je pense ajouter encore un peu de contenu avant de soumettre l'application sur l'appStore (le week-end prochain).
Plop, le jeu bénéficie d'une nouvelle mise à jour :
-Mode créatif et survival disponible
-Le joueur peut maintenant choisir parmi 6 personnages
-Refonte de l'interface graphique de l'inventaire et du menu des crafts
-taille du jeu réduit, pour un total de 4.2 mo
-Possibilité de voler en créatif
-Optimisation de l'affichage (avec un gain de 10% ) et de la génération des chunks
-Explosion des blocks de TNT (j'ai préféré le retirer du jeu pour l'instant, car ce n'est pas encore très bien optimisé).
-Ajout d'option pour modifier : la distance d'affichage, activer lumières/brouillard/ombres, ajuster la sensibilité de la camera
-Résolution d'un problème de shader sur certains téléphone, causant des chutes de fps considérable.
La cause était l'appel de la fonction smoothstep qui n'était pas implémentée sur certains GPU (mali-400, adreno 420...)
Au pasage j'ai réussi à fixer ce bug grace aux services d'amazon : https://aws.amazon.com/fr/device-farm/ qui vous permet de tester votre applications à distance sur un large pannel de téléphones.
-Le portage sur IOS est enfin terminé et va être soumis sur l'appstore demain.
Dites moi ce que vous en pensez !
Alors.. comment tu codes en C++ sur Android ? Cela m'intéresse énormément ! J'aimerais faire des app android mais Java C++
Tu utilises quel éditeur, tu as commencé ou?
pierre135b : une petite réponse : via JNI. Android Studio commence à intégrer le support C++ et JNI d'ailleurs.
Salut, En effet c'est grâce aux Jni/ndk. J'ai commencé à développer sur mobiles en C++/java il y a 3 ans maintenant. A l'époque il n'y avais pas trop de tuto pour le ndk. Donc j'ai appris avec la documentation et le code sources des exemples. Aujourd'hui, j'utilise Notepad/Codeblock pour les applications native(c++), vu qu'elles sont également compatible Win/linux. Et eclipse pour les apps purement en java.
Intéressant bon travail
J'aurai une petite question, ça t'es revenu à combien de budget pour développer un tel jeu (tout compris) ?
Salut Damoy, Merci pour le retour.
Les graphismes de ce jeu m'ont coûtés 200. Pour le marketing, je n'ai rien dépensé. J'ai utilisé la base d'utilisateurs que j'ai acquis avec mes autres applications afin de faire de la cross-promotion. Et pour le dév j'utilise mon propre moteur.
Donc en tout ce jeu m'a coûté 200euros
Le 13 octobre 2015 à 18:18:09 smartties a écrit :
Salut Damoy, Merci pour le retour.Les graphismes de ce jeu m'ont coûtés 200. Pour le marketing, je n'ai rien dépensé. J'ai utilisé la base d'utilisateurs que j'ai acquis avec mes autres applications afin de faire de la cross-promotion. Et pour le dév j'utilise mon propre moteur.
Donc en tout ce jeu m'a coûté 200euros
Okok merci de l'info'
Le 12 octobre 2015 à 22:57:52 Bunyan a écrit :
pierre135b : une petite réponse : via JNI. Android Studio commence à intégrer le support C++ et JNI d'ailleurs.
Tu sais ou je pourrais commencer ? J'aimerais effectivement faire quelques petits jeux sous Android ^^ ou des Apps
Après une petite pause d'un mois dû à un autre projet Pixel Camera, et aux révisions, je reprends le développement du jeu.
Une rapide mise à jour au passage :
-possibilité de retirer les pubs
-Disponible sur iphone : https://itunes.apple.com/us/app/exploration-craft/id1041796232
Le dév du mode multijoueur avance, j'ai encore pas mal de travail à faire, mais j'ai un prototype fonctionnel qui supporte 100 personnes de manière fluide dans les conditions les plus gourmandes pour le serveur.
En attendant que ce mode soit disponible, je publie une mise à jour avec du nouveau contenu, comme de la TNT, porte, escalier, lit, échelle...
http://www.martinjules.com/wordpress/wp-content/uploads/2015/11/final.gif