smartties

Membre
  • Content count

    119
  • Joined

  • Last visited

About smartties

  • Rank
    Membre régulier
  • Birthday 10/04/1994

Profile Information

  • Lieu
    Orsay
  • Activités
    Etudiant, Skate, Cine, Dev
  • Marque
    Google
  • Modèle
    Nexus 5X
  1. Présentation : Boat craft, est un jeu multijoueur en vue de dessus sur Mobile, qui s'inspire de la vague des jeux .io.Vous prenez le contrôle d'un bateau armé d'un canon que vous pourrez faire évoluer au long de la partie. Objectif / Motivation : Faire un jeu massivement multijoueur était une idée qui me tenais à cœurs depuis longtemps.C'est donc un projet prototype pour approfondir mes compétences dans ce domaine et c'est également l'occasion de découvrir de nouvelles librairies/technos.Mon objectif premier était de réaliser un jeu multijoueur stable, apprendre les concepts de la prédiction, réconciliation, load balancing. Mais également faire face au problème de lag, throttle, packet drop élevé...Et ensuite, éventuellement essayer de faire quelque chose de sympa à jouer Mais je dois avouer que cette partie (améliorer le Gameplay) est assez compliquée et demandera de nombreuses itérations avant d'avoir d'obtenir un jeu marrant et équilibré ! C'est un projet que j’estimais faire en 2 semaines, et au final j'en ai consacré plus du double pour en arriver à cette premiere version de production.Aspect technique : J'utilise la librairie bas niveau Enet, dont l'un des points majeurs est de pouvoir bénéficier des avantages du protocole udp (rapidité), tout en garantissant la reception des donnés(reliability), en respectant l'ordre d'envoie/reception, le séquencement/rassemblement des packets, et ainsi que de nombreux autres avantages...Je compresse/décompresse les packets avec Zlib (ce qui me donne ~30% de réduction de bande passantes).Le client mobile iOS/Android utilise C++/Opengl ES 2.0 ainsi Firebase pour le coté analytique (mesurer l'acquisition, les cohortes démographiques, le temps d'utilisation du jeu, les crashs...).Et pour ce qui est du back end, j'ai un masterServer et N gameServer, développés en C++ avec Enet et Sqlite3 (pour stocker les données persistantes comme les scores, noms...).Pour la GUI j'utilise une "immediate mode gui" : Nuklear (dans le même genre que Imgui ).L' "immediate mode gui" donne l'avantage de pouvoir réaliser des interfaces graphiques très rapidement, au coup de performances en comparaisons des "Retained mode"Pour ce qui est de la location ma configuration est la suivante :-Le masterServer : 1 Vps chez OVH-Les gameServers : 2 serveurs dédiés chez Kimsufi localisés 1 en Canada et l'autre en France. Et 1 instance chez Amazon EC2Le gameServer n'est pas coûteux en performances (en partie car il est actuellement configuré à 10 tick, soit 10 rafraîchissement par seconde, ce qui semble être suffisant pour un jeu mobile)Je peux aisément héberger 10 gameServers (de 50 place chacun) par serveur dédié. Disponibilité : Prochaine mise à jour : -Ajouter un tchat-Régler un problème d'interpolation coté client (jitter)-Ajouter plus de Canons/skins-Équilibrer les armes et autres stats-Prendre en compte le ping de l'utilisateur pour le Load balancing (Actuellement 2 serveurs, un au Canada et un France)Tous retours/questions/avis sur le jeu sont les bienvenus !
  2. L'Android SDK permet de faire les 2 fonctionnalités citées ( lien 1, lien 2 ). Pour faire des choses plus avancées, il faut se tourner vers du bas niveaux OpenSL ES, voir Fmod qui est pour moi le meilleur (bien qu'étant orienté jeu video): Simple d'utilisation, très performant (librairie native C++), cross plateforme (PC, iOS, Android...) mais license payante si le projet est commercial.
  3. Salut, Si c'est possible. Il n'y a pas de bonne ou mauvaise démarche. Malheureusement, je n'ai pas ma boule de cristal pour deviner le code source de ton application :( , Comment t'y prends tu actuellement ? Quel composant utilise tu pour afficher ton image, une ImageView, un Button, une View custom ? Quelles sont les paramètres que tu envoie à ton composant pour définir ses dimensions : android:layout_width="match_parent" ? android:layout_height="wrap_content" ? android:layout_weight="3" ? android:layout_width="20dp" ? android:weightSum="5" ? Pourrais t'on voir le code du layout dans lequel tu importe ton image ? (fichier .xml) Mais d’après tes questions, j'ai peur que tu n'es pas compris le fonctionnement du système de positionnement/mise à l'échelle de l'UI android. Si tu es la recherche d'un endroit où apprendre tout ça, je te conseillerais de regarder la documentation officiele d'Android ou tout récemment des cours sur udacity Bonne continuation.
  4. 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 : 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
  5. 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 :
  6. Quel serait votre budget pour une telle application, et avez vous un cahier des charges ?
  7. 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 !
  8. Oui tout dépend du cahier des charges, des téchnos utilisées et de la durée du développement. La levée de fonds par kickstarter est envisageable lorsque tu es connue, ou lorsque ton jeu est en fin de développement. Malheureusement, personne n'investie dans des idées ou des concepts. Envoie moi ton cahier des charges aussi ;)
  9. 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 Maintenant Pour le rendu, j'ai implémenté l'ambient occlusion. http://0fps.net/2013/07/03/ambient-occlusion-for-minecraft-like-worlds/
  10. Une version spéciale noël est disponible Des nouvelles textures plus de blocks, crafts et skin de la neige ! correction d'un bug avec l'AI des monstres https://play.google.com/store/apps/details?id=com.mine.snowcraft
  11. 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...
  12. 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
  13. Bonjour, Je me présente, je m’appel Martin j'ai 20 ans et je suis étudiant à l'université. Je vous présente mon application Pixel Camera. Cette application sert à convertir des Images ou des Gif en Lego En Savoir plus sur le projet Genèse La semaine dernière je suis tombé sur ce post http://imgur.com/gallery/cWvfdw0 , malheureusement je n'ai pas trouvé d'application permettant de reproduire ce genre d'effet. J'ai donc décidé de créer ma propre application. J'ai commencé le développement lundi dernier, et j'ai terminé hier. Résultat Généralités et avancement J'ai atteins tous les objectifs que je m'étais fixé. En revanche, L'application contient une fonction caché, qui permet de convertir des vidéos. Malheureusement cette fonction prends beaucoup de temps. J'ai donc préféré la désactiver, en attendant de réécrire la partie conversion en C++ (Ou peut être utiliser Opencv) pour de meilleurs performances. Les technologies utilisées Pixel Camera est développée en Java et utilise OpenGL, pour appliquer un shader sur la camera. L'application étant assez petite (~8000 ligne de codes), j'ai seulement utilisé notepad++ et Ant pour compiler. Bien que d'habitude j'utilise Eclipse pour du Java. Je ne tire aucun bénéfice de cette application (financièrement). Elle est entièrement gratuite et ne contient pas de publicité. Pixel Camera est disponible ici : https://play.google.com/store/apps/details?id=com.pixel.camera Si vous avez des critiques/retours à faire sur ce projet, je vous écoute
  14. 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 !
  15. 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