Chat:Fr/2021-04-15
philRG: bigfootledur je t'ai vu sur le CoC hier, et ouais pas concentré sur ce CoC notamment le $ devant "Hello world" au jeu de test 2 lol
philRG: du coup j'ai fini dernier lol
philRG: tu te souviens des tests suivants >= 3 ?
philRG: voilà mon code utilisant les fonctions encode et decode des jeux unicode en python:
philRG: http://chat.codingame.com/pastebin/252a5063-a292-43c7-a431-7ca2ab2b97a1
philRG: c'est de l'UnicodeShock matinal :-D
philRG: ou du CoCShock
philRG: je pense que quand tu bosses sur des logiciels exportés au Japon, tu dois te former à l'Unicode par exemple
dbdr: ne pas utiliser l'unicode aujourd'hui, c'est une faute professionelle, indépendamment du marché
jfaixo: Et en Rust, les String sont en UTF-8 ! Vive Rust !
Thyl: qui est chaud pour un clash de chat ???
dbdr: :snowflake:
philRG: :joy:
philRG: dbdr on utilise quoi en fait je suis dépassé lol
philRG: jfaixo tu as un tutoriel sympa pour se former à Rust en 5'?
philRG: bon je retourne sur mon min-max à 3 joueurs sur tron j'ai fait mon graphe, mais faire un min-max dessus
philRG: comment
Thyl: max ntree
Thyl: c'est hard
leojean890: tu fais un paranoid : tu simules tous les ennemis et considères qu'ils cherchent tous à baisser ton eval ;) (min pour tous et max pour toi)
Thyl: j'ai essayé ça à pas trop marché
Thyl: environ ~400 en silver
Tiouz: Bon, hier soir je suis passé en gold sur UTTT avec un code qui pouvait segfault...
jfaixo: philRG c'est bien le souci (et la beauté) de Rust, ca s'apprend pas en 5'.. J'ai voulu rentrer dans ce langage comme dans tous les autres (ie sans lire trop la documentation, après tout je connais un certain nombre de langages), ben ca remet à sa place et apprend l'humilité ;) Le mieux c'est de lire le Rust book, en commençant par le début, et sans sauter de chapitres xD
leojean890: Thyl je crois que Blaise a un paranoid et ça marche bien pour lui^^ t'as p'tet un bug sur ton voronoi ?
leojean890: Tiouz si tes timeouts sont rares ça t'empêche pas de passer hehe
Tiouz: J'ai encore des petits bugs, pour l'instant je me fais rouler dessus par le boss gold, je l'envoie sur des positions qu'il gagne
Tiouz: Mais oui, il n'arrivait pas souvent en silver
leojean890: t'as un mctts ?
Tiouz: oui
leojean890: mcts
leojean890: la méta quoi (enfin qq personnes réussissent bien en minmax)
leojean890: Neumann et dbdr sont bien classés en légende avec minmax je crois
Tiouz: Sur le premier play je fais 6k itérations. J'ai essayé de l'améliorer avec UCT mais ça marche moins bien étrangement
leojean890: t'as p'tet un bug dans ton UCT
leojean890: le boss gold a probablement bcp de rollouts aussi
Tiouz: Enfin, c'est juste UCB sur la liste des moves, pas un vrai UCT
Tiouz: À la fin, je suis en négatif sur tous mes plays (avec UCB), donc il se rend bien compte qu'il y a un souci, mais trop tard
Tiouz: Je pense qu'il faut augmenter le nombre de rollouts, mais je ne vois pas comment
darkhorse64: 6k, c'est avec quel langage ?
leojean890: optimiser le code ^^ https://www.codingame.com/playgrounds/38626/optimizing-breadth-first-search
Tiouz: c++
dbdr: ah bah voila, avec un langage lent aussi... /s
Tiouz: :rage:
darkhorse64: Ton implémentation a des gros problèmes. On peut faire 100k rollouts au second tour
Tiouz: What ?
darkhorse64: le boss gold est réputé pour en faire 25k
Alshock: Faut quand même être bon pour ça
Alshock: le boss est pas limité à un demi-tour ?
darkhorse64: Pas que je sache
dbdr: ben il fait peut-etre 25k en un demitour
Alshock: quand tu dis 100k rollouts au second tour c'est vraiment au second tour ou en comptant les retombées du premier ?
darkhorse64: sans reuse
Alshock: vous êtes sacrément déter quand même
Alshock: c'est encore du C++ ou de l'ASM à ce niveau ?
darkhorse64: C++
Alshock: hmmm ça me laisse songeur
Tiouz: Pourtant je précalcule toutes pas mal d'infos sur les grilles 3*3
Bon[]Crayon: Bonjour tout le monde.
Bon[]Crayon: AutomatonNN yo
Bon[]Crayon: Automaton2000 yo
Tiouz: C'est un bon problème pour m'apprendre à vraiment optimiser mon code
Automaton2000: vais pas tarder non plus
Alshock: Bonjour Bon[]Crayon, parle pas à Automaton2000
Automaton2000: par contre, je ne peux même pas dire que c'est le premier truc qui me fait un peu magique, quoi, ...
Alshock: Automaton2000 a vu une licorne !
Automaton2000: j'ai essayé de faire un truc comme ça :
Bon[]Crayon: Il y a un problème ?
Alshock: il est méchant
darkhorse64: pragma, pool de nodes, fonctions optimisées pour l'UCT qui prend tout de même pas mal de temps, pas d'allocation
Bon[]Crayon: ok
Tiouz: pas d'allocation ?
Alshock: ah oui UCT je sais pas ce que ça veut dire
Tiouz: pragma je pense que c'est bon
Alshock: Pas d'allocation, c'est lent l'alloc
darkhorse64: tout préallouer au démarrage
Tiouz: En gros je n'ai pas le droit de créer des objets ?
darkhorse64: oui
Alshock: exactement, tu crées tout au début et après tu gère ta propre pile
darkhorse64: ^
Tiouz: Donc je me crée un tableau que je vais réutiliser à chaque tour pour mettre mes positions. OK
Alshock: Ne demande pas de la mémoire, deviens la mémoire
Tiouz: (enfin, je parle des moves)
Tiouz: J'imagine que les vectors c'est la mort
Alshock: les vectors allouent à la volée ouais
Tiouz: Ne me criez pas dessus, mais il se pourrait qu'à chaque tour (de chaque rollout) je stocke mes coups possibles dans des vectors
darkhorse64: un vector, c'est très bien si tu l'as dimensionné correctement au départ
Alshock: Tiouz personne te criera dessus
Tiouz: En gros c'est mieux de faire un array<move_t,81>, et je renvoie un entier qui dit combien de moves j'ai, plutôt qu'un vector ?
Alshock: Le mieux que je puisse te conseiller c'est de faire un gprof en local, tu verras bien ce qui prend du temps
darkhorse64: On a fait toutes les bêtises avant toi, c'est pour ça qu'on les connaît
Alshock: Je crois que si tu fais un vector et vector.reserve(81) c'est à peu près pareil
Alshock: Par contre il faut pas que tu crées les moves à la volée
Tiouz: À un moment je suis bien obligé de créer les moves en fonction de mon état, je ne peux pas tout précalculer
Alshock: donc genre array<Move, BCP_BCP> pool; et après une fonction qui va chercher un move pas utilisé de la pool
Alshock: Tu vas pas les générer tu vas les récupérer, et les initialiser
Tiouz: Ah, tu veux dire que je les crée au début, et que je ne fais qu'appeler
Tiouz: ok, intelligent
Tiouz: Un truc qui me ralenti aussi c'est que je ne sais pas exactement quand C++ fait des copies. J'ai l'impression qu'à des endroits je suis obligé de faire des copies
darkhorse64: C'est pas un move, c'est un node de ton MCTS qui représente unétat du jeu (move, wins, visits, etc ..)
Alshock: c'est vrai, j'ai considéré que tu appelais move un node, mais c'est un peu plus que ça
Tiouz: Ah non, moi un move, c'est une coordonnée de jeu
darkhorse64: Les copies, c'est pas forcément limitant. Quand je fais un playout, je le fais sur un copie du GameState
Tiouz: Je fais ça aussi
Alshock: C'est inévitable ça non ?
Alshock: à moins d'avoir une fonction de rollback mais je vois pas comment ça serait rentable
dbdr: suffit d'utiliser un ordinateur quantique ;)
dbdr: tu codes tous les etats en superposition
darkhorse64: c'est ça ou undo mais comme le gamestate est petit
Alshock: Tiouz tu as besoin de nodes dans ton MCTS, et chaque node a besoin d'un move
Alshock: du coup tu peux fusionner les deux entités
Tiouz: node = état (la grille); move = coup à jouer ?
Alshock: node = état de l'arbre du MCTS, elle a un parent, des enfants, un move qui lui correspond, un nombre de playouts, et un nombre de wins
Alshock: noeud de l'arbre pardon
darkhorse64: il ne faut pas stocker l'état dans le node, sauf s'il est tout petit
Alshock: Ah oui tiens c'est une manière d'éviter d'avoir à copier l'état ça, en créer des MILLIARDS
darkhorse64: quand on explore l'arbre on applique les coups sur le gamestate
Tiouz: Pour l'instant je n'ai même pas d'arbre. J'ai juste une fonction qui joue aléatoirement jusqu'à la fin
Alshock: J'imagine qu'à aware c'est possible de garder l'état dans la node ?
Tiouz: L'arbre c'est une optimisation que je me réserve pour plus tard
Alshock: Ah c'est un MC pas TS
Tiouz: ah oui
Tiouz: Le TS il viendra plus tard. Si j'ai pas 10k rollout sur MC j'aurrai pas sur MCTS
Alshock: Certes, mais y a pas que les nombres qui comptent
Alshock: Cela dit c'est vrai qu'avec <10k le MCTS est pas sûr de lui avec une grosse profondeur
Alshock: Si je peux me permettre de me répéter le meilleur moyen de déterminer qu'est-ce qui coûte vraiment le plus à optimiser tout de suite c'est un coup de profiler
darkhorse64: ^
Tiouz: gprof j'avais vraiment pas compris l'output. C'est ultra obscur...
Tiouz: (testé sur un autre code)
dbdr: TS c'est pas juste une optimisation
dbdr: ça biaise la recherche, donc ça te donne des résultats meilleurs qu'un MC, pour le meme nombre de rollouts
Tiouz: Oui, il faut vraiment que je l'implémente
Tiouz: Je repousse le truc car je ne vois pas du tout comment avoir une implem qui ne va pas faire 1000 copies
Tiouz: En plus, je ne suis pas encore confiant sur les références en c++, donc ça va être chaud
Alshock: bah comme on dit, au lieu de faire des copies tu fais des nodes, et avant de passer à la simu tu te balades dans tes nodes et tu joues leur move comme si c'était un move généré au hasard
Tiouz: Oui, mais c'est exactement le "se balader dans les nodes" où je ne vois pas comment faire dans copier
Alshock: faut que j'arrête de mettre des "bah" au début de mes réponses quand je sais pas bien comment dire un truc
Tiouz: Et je ne vois pas non plus comment tu peux créer tes nodes au début (comme tu as dit, pour ne pas faire d'allocation mid-code)
Alshock: t'es à une node X, tu choisis l'enfant à explorer (paramètre d'exploration toussa toussa), tu passes à l'enfant et tu joues son move
Alshock: si l'enfant c'est un nullptr, tu passes à la simu
Tiouz: Ah mais alors je fais tout avec des pointeurs...
Alshock: là je parle d'implémentation y a sûrement mieux pour gérer la parenté que ce que je vfais
Alshock: faut juste que tu saches qui sont les enfants d'une node
Alshock: et lesquels sont déjà créés ou non
Tiouz: Ce qui me saoule c'est que je saurai exactement comment faire en python, mais en c++ j'ai tellement plus de mal
Alshock: L'important c'est : tu veux pas faire d'alloc, donc tu fais une "fausse alloc" genre alloc(void) { return &NODE_POOL[POOL_INDEX++];}
Tiouz: Mon problème c'est pas le pseudo-code, mais c'est l'implem
Tiouz: oh wow
Alshock: et tu reinit POOL_INDEX à chaque tour, bien sûr c'est un exemple mais t'as l'idée
Alshock: Tu saurais comment faire pour éviter de l'allocation mémoire en Python ? J'en serais tellement incapable
Tiouz: Pas pour l'allocation, mais pour la gestion des pointeurs
Alshock: enfin remarque je mens, c'est le même délire
Tiouz: Par exemple, je ne comprends même pas ta syntaxe "return &[...]"
Alshock: Si t'es pas à l'aise avec les pointeurs je peux pas te donne rde meilleur conseil que de t'y frotter. C'est juste une variable qui retient où se trouve une autre variable. En soi rien de bien sorcier, et tu peux les éviter au maximum avec les références
Alshock: & c'est pour retourner l'adresse de la variable, donc un pointeur vers la POOL_INDEXième case de NODE_POOL
Alshock: alors j'admets un truc, C++ est pas très finaud pour les opérateurs
Tiouz: Ah, et avec la gestion comme ça de la mémoire, il n'y a même pas besion de free, car on va réutiliser
Alshock: int &my_ref c'est une référence int *my_ptr c'est un pointeur auto tmp = &my_int c'est un pointeur vers my_int auto tmp = *my_ptr c'est ce vers quoi moint my_ptr
Tiouz: Parce que j'ai appris que pointeur = alloc = il faut free à un moment
darkhorse64: Si tu reset POOL_INDEX, à chaque tour, tu réutilises, si tu ne le fais pas, tu conserves ton arbre
Alshock: Pour info on a droit à tellement de mémoire que c'est sport de réussir à vider la POOL, même en ne faisant aucun reset de toute la game
Alshock: sed s/moint/pointe/
darkhorse64: Il n'y a qu'un multi où j'ai eu ce genre de souci, c'est Bandas
Tiouz: int t = 10; int k = &t; k = 2*k+9;
Tiouz: Là j'utilise les références, donc aucune copie, juste de la réutilisation ?
darkhorse64: oui
philRG: leojean890 oui j'ai modifié mon algorithme min-max hier soir comme tu me le dis en fait, mais par contre, comment minimiser sur 2 niveaux d'ennemis
Tiouz: Ok, merci à tous pour les conseils. Ce week end je serai legend sur UTTT
leojean890: max (p1) appelle min (p2) qui appelle min (p3) qui appelle max (p1)
Alshock: attends, non Tiouz
Alshock: int &k = t;
Alshock: sinon tu stockes l'adresses de t dans k et ça devient n'importe quoi
Tiouz: ok
darkhorse64: oops, lu trop vite, désolé
Alshock: après je suis pas sûr de comprendre ce que tu veux faire avec la deuxième ligne
Alshock: dernière*
Tiouz: c'est juste pour faire une opération sur k qui va modifier t
Tiouz: pour dire qu'on peut utiliser k comme un entier normal, et ça va modifier t
Tiouz: (mais ce serait plus utile avec des arrays ou autre structure)
philRG: leojean890 euh c'est ce que j'ai du fait, mais j'étais pas sûr que ça minimize le meilleur chemin faudra que je me fasse un dessin :-)
Alshock: euh ouais normalemetn c'est bon alors
philRG: faire
Tiouz: go :hamburger:, bonne journée
leojean890: philRG ouais c'est logique tu simules les joueurs à tour de rôle (vraie simu du jeu quoi)
leojean890: juste tu supposes qu'ils vont essayer de minimiser ton eval
leojean890: alors qu'ils vont essayer de maximiser la leur
philRG: oui j'ai fait ça hier vers 1h du matin lol et pas retouché depuis
leojean890: mais bon c'est corrélé
leojean890: tu supposes qu'ils sont tous contre toi (padanoid)
leojean890: paranoid
leojean890: alors qu'en vrai ils ont genre des evals similaires à la tienne où ils sont également en 1 contre tous
philRG: j'ai l'algo de wikipedia en fait jamais trop approfondi, mais je devrais car j'avais un truc zarbi dessus
leojean890: (ou option de jouer contre le plus proche adv only par ex)
leojean890: mais bon paranoid c bien car tu anticipes le pire des cas
philRG: ah non zarbi j'avais 2 fois un false dans mon obapa
leojean890: oware ?
leojean890: ah non c'est abapa
philRG: sur wikipedia c'est False et True pour maximizePlayer
philRG: https://fr.wikipedia.org/wiki/Algorithme_minimax
philRG: oware oui
leojean890: t'es pas obligé de coder les algos strictement comme ils sont décrits sur WP tu peux faire des variantes en fct du problème
leojean890: WP c'est théorique only
leojean890: dans la pratique vaut mieux adapter
leojean890: oware c'est cool pour minmax
leojean890: simple à simuler
philRG: ca carrément zarbi mon truc sur oware il fait que du Max
Alshock: C'est un negamax non ?
leojean890: euh bah si ça fait que du max t'as un bug lol
leojean890: si tu voulais faire minmax
dbdr: maximax
philRG: ah mais le gros bug sur mon oware
philRG: pour ça que je passais pas le bot de wood2
philRG: et que j'ai vu passer dwarfie en trombe à un moment
leojean890: bah cette fois tu vas passer s'il n'y en a pas d'autres hehe
philRG: à mon avis y en a d'autres mais je suis déjà en wood 1
philRG: en fait j'ai les 2 un alpha-v
philRG: beta et min-max mais mon min-max était moisi
philRG: le min-max passe mieux que l'alpha-beta en tout cas
philRG: ah et je prends pas en compte l'ordre de jeu du player aussi
philRG: c'est comme l'inversion des x et y sur la grille de jeu cg j'arrive pas à m'y faire
philRG: ah si: Les 6 premières valeurs correspondent à vos maisons.
philRG: donc c'est bon ça
dbdr: philRG si mnimax marche mieux que alpha-beta, c'est que tu as un bug
SaveurDAutomne: vous faites quoi ?
philRG: dbdr peut-être
philRG: def alphabeta(node, i): http://chat.codingame.com/pastebin/bbf609aa-8d6a-4753-ad05-0c68b3491bb4
philRG: j'ai peur qu'il soit un peu sommaire comme code
philRG: quand je serai grand, je ferai du C++ et de l'optim :-)
philRG: bon petit depth 2 en min-max 3 player et fonction d'eval voronoi python
philRG: ça m'étonnerait que ça monte gold ça
philRG: bah en plus il doit être buggé
leojean890: ah oui un minmax ne peut absolument pas marcher mieux qu'un alpha beta :P sauf si t'as une eval qui marche mieux à depth faible et que ton alpha beta te fait aller plus loin
leojean890: y'a pas d'inversion x,y en informatique c'est tjr (0,0) en haut à gauche pas que sur CG (exemple, la sdl ou autres libs) ^^ en maths c'est en bas à gauche oui..
Bon[]Crayon: Automaton2000 Tortue qui s'en dédit.
Automaton2000: je ne me suis pas fait pour ca
Bon[]Crayon: Automaton2000 Tu t'es auto fait. Mais quel génie ce bot.
Automaton2000: ce moment où tu te rends compte que je me disais que c'était un jeu de plateau
philRG: ben les fonctions trigonométries utilisent (0,0) en bas à gauche non?
philRG: en angleterre le volant est à droite ok
philRG: je suis perdu là
philRG: bon définitivement le python comme technologie commune dans une équipe de dev faut oublier
philRG: mieux vaut pas partager son code
leojean890: ça dépend comment tu les codes, changement de repère, etc^^
leojean890: python ça va en code partagé si tu types tes variables (>=3.6)
philRG: euh comment ça?
leojean890: tu forces les types, ça permet aux gens de savoir de quoi il s'agit
kayou: je ne suis pas sur que ca regle le probleme de l'inversion de l'axe y dans les 2 cas le type de y reste le même
philRG: ah ben moi, j'écris souvent le nom de la classe mais c'est pour activer l'auto-completion
kayou: bon le coup du y vers le bas doit bien avoir une raison, mais c'est con d'avoir choisit cette convention quand tout le monde utilise l'autre ... (math, physique, dessin indus)
philRG: ben pour les calculs des angles c'et l'enfer
kayou: ha oui tu te retrouves avec une inversion du sinus et pas du cosinus
philRG: c'est le sens d'affichage des lignes du tube cathodique de haut en bas au niveau historique
philRG: la référence...
philRG: pourquoi pas le sens du vent pendant qu'on y est
kayou: comme dis leojean890 tu peux passer par un changment de repere pour retrouver tes petits
kayou: apres ca pose le probleme de la conversion vers les int des pixels, est'ce qu'il y un 1 en plus ou en moins ...
philRG: ouais c gonflant mais oui c ce que je fais
philRG: une chatte ne retrouverait pas ses petits, comme dirait Bob
kayou: et encore tu es en 2D, en 3d tu as des cas ou tu te retrouve avec un repere indirect, je ne sais plsu ou j'avsi eu ca mais ca m'avis bine emmerdé avant que je m'en rende compte
Alshock: je connais pas de moteur physique 3D qui ait un axe y vers le bas
kayou: c'etait pas un moteur, mais un logiciel le plan horizontal avait x,y et z vers le haut et x et y etaient inversés , donc le repère pouvait ce lire (y,x,z) et quand on reflechit avec les reperes habituel on a (x,y,z) ben les truc sur l'axe z ne tournait plus dans le bon sens (le produit
kayou: vectoriel merdait
BlaiseEbuth: Yo tout l'monde ! Automaton2000, AutomatonNN ?
Automaton2000: j'ai toujours un peu de respect
Alshock: ça se voit pas bcp Automaton2000
Automaton2000: le probleme c'est que je sais c'est que je viens de tomber sur un bug de merde
Alshock: t'as toujours un peu de respect et tu m'appelles "un bug de merde" Automaton2000 ?
Automaton2000: bah si j'ai bien compris
Alshock: (╯°□°)╯︵ ┻━┻
BlaiseEbuth: :grin:
leojean890: kayou ouais il faut appliquer les formules trigo dans le repère qui nous arrange
leojean890: kayou changement de repère en 3D.. est-ce que t'as fait le concours russianaicup ? ils ont des jeux en 3D parfois genre un pseudo rocket-league. ça doit être long et fastidieux, très complexe à faire ^^
Alshock: Merde, la RAIC a un rocket league ?
Alshock: Fait chier je vais être obligé de regarder si c'est le cas, j'ai spam ce jeu si fort que j'entends des vroumvroum la nuit
leojean890: ouais je ne sais plus c'était le challenge de quelle année.. ça devait être chaud. Pour le moment leurs challenges ne sont pas dispo en multis mais d'après amurushkin ça sera le cas bientôt si tu veux t'essayer sur ce jeu^^
BlaiseEbuth: Il est déjà nul au vrai jeu, ça risque d'être beau...
leojean890: je ne suis pas sûr que j'essaierai de faire un truc sur ce jeu.. trop hard :P
leojean890: faut avoir bcp de temps devant soi
Alshock: BlaiseEbuth c'est justement ma chance, vu ma nullité peut-être que mon IA va enfin pouvoir m'impressionner à moindre frais ! :D
BlaiseEbuth: :thinking:
Zorg1: kayou : par exemple Povray et pas mal de raytracer on un repère à main gauche
Zorg1: pour avoir x vers la droite, y vers le haut et z qui s'éloigne
kayou: c'est peut la que j'avais vu ca, j'avis cherché pas mal de facons de faire de la jolie 3D, pendant un moment
kayou: j'avais bine aimé povray parceq u'il faisait des vraies spheres et pas des boules à facettes ...
leojean890: j'ai fait un peu d'opengl en école mais ça date hehe
leojean890: je devrais m'y remettre someday
kayou: par contre le chois des matieres et textures ca n'a jmais été mon fort : https://imgur.com/a/U0kLDSn
Alshock: C'est du dali ?
leojean890: chacun son métier hehe
kayou: le fichier pov fait 70Ko
leojean890: dev != designer ;)
Zorg1: c'est trop mignon la chaîne chromée
kayou: je ne suis pas dev, je suis dessineux meca
Zorg1: j'ai jamais réussi à faire des trucs comme ça sur povray
leojean890: ah ok mais pas spécialiste des textures etc
leojean890: I see^^
kayou: j'ai plus l'ahbitude d'utiliser du Solidworks
kayou: masi c'est nettement moins marrant
Alshock: En vrai le mec qui pédale là dessus son dos fait 5 fois la taille de ses jambes on est d'accord ?
Alshock: et ses bras 10 fois s'il tient le volant depuis le fond du siège
kayou: en fait le gars qui pedale, c'etait un pinguoin mecanique, que j'ai jamais finis
BlaiseEbuth: make sense
Alshock: :penguin: :clog:
Alshock: putain le :penguin: existe pas il est pas dans la liste
Alshock: c'est quoi ces emotes cachées ?
Alshock: Ah, en fait la recherche se fait pas sur toutes les emotes mais sur la catégorie sélectionnée seulement...
Zorg1: j'avais fait ce truc il y a dix ans (que j'avais adapté pour ici) : https://imgur.com/a/PnoMXFU
BlaiseEbuth: :o
BlaiseEbuth: La MK Tower
Zorg1: (à la base un essai pour reprendre la tour EDF de la Défense)
Alshock: on la reconnait
Alshock: c'est déjà pas mal
kayou: le debut du pigouin :https://imgur.com/a/U0kLDSn
kayou: ce qu'il ya de bine avec pov c'est de pouvoir scripter le truc et faire de l'animation
Zorg1: :heart_eyes: anim et cycle de marche ^^
leojean890: ah ouais ça ressemble hehe
leojean890: et pas mal le bolide
pardouin: moi aussi je fais de la 3D en ce moment pour rigoler, mais beaucoup plus simpliste
pardouin: là j'ai fait un générateur aléatoire d'archipel :
pardouin: https://i.imgur.com/PDO0k8c.png
leojean890: ah j'avais codé un générateur d'univers virtuels 3D à la minecraft moi une fois :P mais c'est à poursuivre c'est large moins bien que minecraft :P
FlaggadaJones: Et ça fait Zumba cafeww
RomainBat: tu vas te faire ban bro
Zorg1: gné ?