Jump to content

[Game] Exploration Craft


Recommended Posts

Salut,

Je me présente, je m’appelle 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

 

final.gif

1441309754-screenshot-2015-09-01-02-42-31441309790-screenshot-2015-09-01-02-42-4

1441309805-untitled.png1441309815-untitled2.png

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 critiques/retours à faire sur ce projet, je vous écoute 1.gif

Edited by Smartties
Link to comment
Share on other sites

  • 2 weeks later...
Petite Mise à jour du jeu avec au programme :

 

- Amélioration de la génération de la carte. Avant j'effectuais le calcul dans un thread qui utilisait de la mémoire qui était également modifiée dans le thread principale, donc je devais faire des lock/unlock pour éviter toutes interférences.

Le problème c'est que le thread de calcul faisait souvent patienter le thread principal, rendant alors l'utilisation du thread inutile. (Le thread fait des calcul assez lourd et dure 40ms sur un téléphone : lire_fichier->générer->créer la géométrie->création vbo et cela pour chaque chunk de 16*16*16 blocs)

Bref, c'était mal implémenté. J'ai remédié à cela en séparant la mémoire nécessaire pour le calcul de manière à n'avoir plus d’interférences et d'attente entre les deux threads. Me permettant ainsi d'avoir un jeu très fluide.

 

- Correction de bug graphique

 

- plus de matériaux disponible

 

C'est la derniere mise à jour avant le portage sur IOS

Link to comment
Share on other sites

  • 4 weeks later...
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 passage j'ai réussi à fixer ce bug grâce aux services d'amazon : https://aws.amazon.com/fr/device-farm/qui vous permet de tester votre applications à distance sur un large panel 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 !

Link to comment
Share on other sites

  • 4 weeks later...
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

 


Edited by Smartties
Link to comment
Share on other sites

  • 3 weeks later...

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

 

final.gif

Link to comment
Share on other sites

  • 3 weeks later...
  • 4 weeks later...
Mise à jour en approche :

-animaux sauvages cochon/vache/

-biomes avec des villages pré-construit et des villageois

-intégration d'un système d'achievements et d'un leaderboard mondial

-un meilleur rendu graphique :

 

Avant

 

1452169790-without-ao.png

 

Maintenant 1452169790-with-ao.png

 

 

 

Pour le rendu, j'ai implémenté l'ambient occlusion. http://0fps.net/2013/07/03/ambient-occlusion-for-minecraft-like-worlds/

Link to comment
Share on other sites

  • 1 month later...
Après une petite semaine de tests avec le mode multijoueur disponible pour les joueurs, j'ai décidé de fermer les serveurs car leurs locations est plus coûteuses que la marge ramenée par ce nouveau mode.

 

 

Voila, je pense avoir atteins tous les objectifs que je m'étais fixé au départ de ce projet, donc je vais sortir la dernière mise à jour d'ici une semaine :

 

-les derniers bugs (éclairage des torches et de certains objets)

 

-ajouter une dizaine de nouveaux blocks (redstone, intérrupteur, ...)

 

-l'eau dynamique (qui est actuellement statique)

 

Après quoi, je passerais à un nouveau projet.

A bientôt ! 

Link to comment
Share on other sites

  • 2 months later...
Salut,

 

Bien que le développement du jeu soit terminé et travaillant déjà sur un autre projet, je continue de le maintenir avec des mises à jours mineures puisque de nombreuses personnes y jouent encore.

 

Cette mise à jour contient :

 

- Ajout de nouveaux npc : mouton, vache, cochon, panda et cheval.

- Possibilité de faire spawn des npc en créatif.

- Monter à cheval.

- Un nouveau mode de caméra : permettant de faire tourner la caméra autour du personnage.

- Correction du bug des dommages infligés par la TNT.

- Gros gain de performance : refonte du code sur le système de stockage des chunks maintenant référencés sur des std::unordered_map 

 

Voila un gif pour illustrer certaines nouveautés :

WgKnQX0.gif

Link to comment
Share on other sites

  • 4 weeks later...

Nouvelle mise à jour du jeu :
-De nouveaux biomes/paysages
-ajout de coffre et système de stockage.
-Amélioration des performances : réduction du nombre de drawcall ( agrandissement de la taille des chunks )
-Possibilité de créer ses propre Skins :

AFdD1Rh.gif t50OqfP.gif gK3zvG5.gif



Du coté technique de l'éditeur de personnage, l'enjeu était de récupérer les coordonnées UV suggéré par la position du curseur. J'ai donc essayé deux méthodes :

Pour la premiere méthode j'ai créé une deuxième texture de même résolution que la texture du personnage, sur laquelle j'assigne à chaque composantes Rouge et Vert de cette texture les coordonnées U et V de la texture en faisant à chaque points une interpolation entre les trois sommets du triangle. Ensuite en faisant un simple glReadPixels(souris.x, souris.y, ...), j'obtient directement les coordonnées UV sur lequel pointe la souris.

Pour la deuxième méthode, je fais un lancé de rayon en parcourant l'ensemble des triangles à la recherche d'une éventuelle intersection. Je récupère le point d’intersection le plus proche de la caméra puis je calcule les coordonnées barycentrique de ce point d'intersection avec le triangle auquel il appartient. Et dernièrement je multiplie les coordonnées barycentrique avec les coordonnées UV des 3 sommets du triangle et j'obtient mon UV final.

Une fois les coordonnées UV obtenue, il ne me reste plus qu'à peindre la texture, la mettre à jour...

J'ai finalement choisi de garder la deuxième méthode, car elle est plus portable et plus harmonieuse à mon gout icon_smile.gif

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...