Toi aussi deviens indéveloppeur [Unity/UE4 pour platformers 2D osef]
y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 28/12/2017 16h26

FIOU pepe_stress

J'ai mis du temps à comprendre ce que tu voulais faire mais je crois que j'ai compris. Pour moi je pense que ça aurait été plus simple de tout faire en JSON pour tes données (tu te fais une classe toute simple qui lit/écrit ton JSON au fur et à mesure), car les SO sont utiles justement pour se passer de structures JSON etc.

Mais bref maintenant que t'es parti là dedans ... :p

Je pense en effet que les GUID sont une solution pas connes smiley1 Un GUID (global unique identifier) c'est un numéro qui est garanti unique, tout simplement. La façon de l'utiliser est simple : tu associes un GUID (des infos ici => https://msdn.microsoft.com/fr-fr/librar … 110).aspx) à ton SO (c'est un champ string à la con).

Comme ça, t'as juste à sauvegarder le numéro GUID de l'objet côté JSON, et ensuite si la référence est missing, tu vas chercher parmi tous tes SO du type que tu veux celui qui a le GUID que tu cherches,et tu le réassignes, et voilà, le tour est joué.

Chui pas un grand master des SO (j'ai jamais trop compris pourquoi c'était la mode, même si je vois bien la praticité ici et là, je suis pas sur que ce soit vraiment "sein" d'en foutre partout) alors j'avoue que j'suis pas sur à 100% que ce que je dis c'est pas de la grosse merde, mais ça devrait marcher smiley122 Si Tim passe par là et qu'il a le temps pour tes conneries il te répondra ptet un truc plus opti.

Edit par Binouz (28/12/2017 18h19)

Lulu le rebelle
8 972 posts
depuis le 28/03/2011
Lucien Brémart

Ça doit être particulier une réunion de développeurs de JV.

Un mélange entre
tenor.gif

et

Edit par Lucien Brémart (28/12/2017 18h22)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis

Réponse au message de Binouz posté 28/12/2017 18h18

Merci, oui c'est ce que je lis un peu à droite à gauche aussi.
Quand même dingue de devoir réassigner soi-même des réferences et que ça save pas des GUID par défaut au runtime (dans l'éditeur y a une classe qui permet de le faire mais pas au runtime, surement une raison qui m'échappe).

Pour ta première remarque ce que tu proposes c'est de passer complètement à côté de l'intérêt des SO...
Les SO c'est quand même très cool dans l'éditeur (et quand tu commences à foutre des custom inspectors c'est la surpuissance) et pour gérer de la donnée de jeu (en prime t'as même quelques callback et des méthodes). Tu peux faire des changements à la volée (qui sont conservés par défaut). Tu peux même en faire des singletons sauf que là au moins tu vois tout dans l'éditeur.

Et l'autre intérêt pour moi des SO c'est justement la facilité de serialiser/déserialiser en JSON pour pouvoir bosser aussi en dehors de Unity.
Je crée une BDD en SO, je la sérialise en Json via un bouton dans l'éditeur.
Et si je suis au bureau à Paris, ou n'importe où en fait, je peux bosser sur ma base de données en éditant le json (même directement dans github si je veux) et la désérialiser dans le SO via un autre bouton dans l'éditeur une fois de retour à la maison. Super pratique si je veux faire un mass edit aussi.

Ca fait environ 2 mois que je me gave de tutos/présentation sur les SO donc je suis assez chaud dessus.

Les meilleures prés pour comprendre la puissance du truc:



Edit: Enfin jusqu'à présent j'étais bien mais là le souci que je rencontre avec mon SO qui liste des SO édités au runtime, et que je dois sérialiser est pas hyper simple.
Edit2: Je vais peut-être me simplifier la vie et stocker dans mon SO GameProgress une liste de satisfiedConditions et qui sera juste la liste des GUID de conditions satisfaites. Comme ça au Load je refous le bool à true pour toutes les conditions dont le GUID matche. Simple efficace.

Edit par hichanbis (28/12/2017 18h46)

.
6 074 posts
depuis le 30/04/2007
...

Réponse au message de hichanbis posté 28/12/2017 16h26

C'est un non-sens de serialiser un ScriptableObject en JSON, puisque justement les ScriptableObjects sont serialisés de base.
T'as juste à écrire le ScriptableObject en dur. Ou même l'avoir déjà en fichier dans ton projet, de cette façon tout ce que tu lui fais est persistant...

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 28/12/2017 18h31

Ouais je vois mais comme dit Tim pour moi c'était soit tu pars full JSON, soit full SO, mais pour moi l'intérêt premier des SO c'était de tout foutre en dur et de se passer de JSON.

Bon après que j'en ai encore jamais utilisé de façon sérieuse donc j'ai pas d'avis tranché. Après voilà, tant que tu t'en sors avec ton système c'est le principal, je reviendrai peut-être te trasher dès que j'aurai un projet avec beaucoup de data à save smiley12

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis

Réponse au message de ... posté 28/12/2017 20h38

... a écrit :

Réponse au message de hichanbis posté 28/12/2017 16h26
Ou même l'avoir déjà en fichier dans ton projet, de cette façon tout ce que tu lui fais est persistant...


Euh attends, un scriptable object c'est un asset de jeu. Il est soit en mémoire, soit dans ton dossier Assets.
Donc dans le cas où c'est un fichier asset tu peux pas le modifier de manière persistante au runtime, tout simplement parce que Unity utilise une instance de cet asset au runtime et pas l'asset lui-même.
Faut pas se laisser feinter par le mode éditeur, où Unity fait persister les changements dans l'asset quand tu sors du play mode. Une fois buildé ça se comporte pas pareil.
Tu peux faire des modifs de ton instance au runtime mais à la fin de ta session ça sera jamais persisté dans le fichier asset (ton OS le permettra pas de toute manière).

Voir: https://answers.unity.com/questions/344 … tom-a.html
ou https://forum.unity.com/threads/questio … me.477091/

Pour persister faut forcément que tu foutes ton fichier de sauvegarde dans le persistent path (eventuellement faire une copy direct du fichier SO sans passer par un json ça j'ai pas encore essayé mais je doute qu'il contienne les bonnes valeurs au runtime encore une fois...)

...ou alors y a un truc basique que j'ai pas compris

Edit par hichanbis (29/12/2017 07h24)

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 28/12/2017 23h47

Je réponds de façon short parce que je suis sur tel mais normalement de ce que j'ai compris le fichier .asset est justement fait pour être écrit sur le disque en dur smiley13 et être loadé à la volée par Unity. Ou j'ai loupé un truc ?

Edit par Binouz (29/12/2017 12h42)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis

Réponse au message de Binouz posté 29/12/2017 12h41

Je vais attendre ta réponse moins short du coup smiley76

Lulu le rebelle
8 972 posts
depuis le 28/03/2011
Lucien Brémart

Le short en hiver en plus, c'est un coup à être grippé en plus.

Inspecteur Enrico
8 421 posts
depuis le 4/06/2009
Ancien-Combattant

Lulu la marrade

Lulu le rebelle
8 972 posts
depuis le 28/03/2011
Lucien Brémart

Rendez vous sur le parking de Lidl Montesson, ce soir à 0h00. On va voir si tu fais le malin.

Inspecteur Enrico
8 421 posts
depuis le 4/06/2009
Ancien-Combattant

Réponse au message de Lucien Brémart posté 29/12/2017 14h01
On avait compris la première fois Lulu la lourdeur. Je comprends que quelques mdr soient gratifiants et te font pousser des ailes mais le comique de répétition et les blagues h24 7/7 ça finit par lasser. Forcément, tu peux pas tjrs être au top. Lâche un peu le clavier et reviens-nous avec de l'inspi. En toute amitié.

Trisomie 51
2 960 posts
depuis le 2/11/2008
VV51

smiley68

Lulu le rebelle
8 972 posts
depuis le 28/03/2011
Lucien Brémart

Pète un coup, ça ira mieux.

Inspecteur Enrico
8 421 posts
depuis le 4/06/2009
Ancien-Combattant

Réponse au message de Lucien Brémart posté 29/12/2017 14h17
Je te laisse le dernier mot et te prie de m'excuser si je t'ai blessé avec ce "Lulu la marrade" assez agressif il faut l'avouer smiley130

La parole est aux développeurs.

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 29/12/2017 12h46

Me revoilà smiley122

Mais du coup, parce que là j'suis un peu confus j'ai l'impression de m'embrouiller avec l'utilisation de base des Scriptable Object.

Au runtime :
- T'as un fichier bordel.asset dans le persistant data path
- Tu fais AssetDatabase.LoadAssetAtPath de bordel.asset
- T'as les datas
- Tu les modifies
- Tu réécris un fichier bordel.asset dans le persistant data path.

Même si c'était une instance on s'en fout non, le premier est écrasé et t'as bien ta nouvelle config en dur sur ton PC ?

Ou j'ai raté une histoire ?

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis
Binouz a écrit :

Réponse au message de hichanbis posté 29/12/2017 12h46

Me revoilà smiley122

Mais du coup, parce que là j'suis un peu confus j'ai l'impression de m'embrouiller avec l'utilisation de base des Scriptable Object.

Au runtime :
- T'as un fichier bordel.asset dans le persistant data path => Non dans le data path (en gros dans Assets/ ). Dans le persistent data path t'as un json/xml/binaire logiquement (sauf si je me prends la tête à serialiser pour rien mais j'ai trouvé aucune info sur comment loader un SO au runtime... A priori soit il est dans Assets/ et tu peux le réferencer dans un monobehaviour via l'éditeur Unity, soit il est dans Assets/Resources et tu peux faire un Resources.Load())
- Tu fais AssetDatabase.LoadAssetAtPath de bordel.asset => Non ça c'est une classe du namespace UnityEditor donc pas au runtime
- T'as les datas => Oui
- Tu les modifies => Oui sauf que ça modifie pas le fichier asset mais une instance de ton SO en mémoire
- Tu réécris un fichier bordel.asset dans le persistant data path. => Voir premier point.

Même si c'était une instance on s'en fout non, le premier est écrasé et t'as bien ta nouvelle config en dur sur ton PC ? => Nope. Si c'est un asset ben t'écrases pas des assets de jeu au runtime. Si c'est un fichier que tu loades du persistent data path, ben c'est pas un SO mais un fichier plat (xml, json, binaire) que tu désérialises en une instance. Voir mes liens précedents.

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 2/01/2018 15h19

pepe_stress WOW.

J'suis un peu choqué et déçu, du coup c'est quoi l'intérêt par rapport à un prefab avec un script dessus ? Je pensais que moi l'interêt des datas en .asset c'est que tu pouvais le tej ou tu voulais dans ton PC et le loader quand tu veux à la volée hors unity ?

Enfin à moins que je fais encore fausse route mais si tu écris directement le scriptable object en binaire, et que tu le récup en binaire en disant que c'est un type "MonScriptableObject", c'est bon non ? C'est de la serialisation de base.
J'ai du mal à croire qu'ils aient conçu tout un système pratique pour stocker des datas mais avec l'impossibilité qu'ils soient persistant sur le disque smiley20 En plus de pas donner une API haut niveau pour faire cette petite sauvegarde.

Tim, tu utilises des scriptable object dans ton projet toi ? Si oui, t'as un exemple d'utilisation qui change la vie ?

Edit par Binouz (2/01/2018 15h26)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis
Binouz a écrit :

Réponse au message de hichanbis posté 2/01/2018 15h19

Enfin à moins que je fais encore fausse route mais si tu écris directement le scriptable object en binaire, et que tu le récup en binaire en disant que c'est un type "MonScriptableObject", c'est bon non ? C'est de la serialisation de base.

Voilà mais du coup je préfère le json parce que c'est éditable plus facilement.

Binouz a écrit :

Réponse au message de hichanbis posté 2/01/2018 15h19
J'suis un peu choqué et déçu, du coup c'est quoi l'intérêt par rapport à un prefab avec un script dessus ? Je pensais que moi l'interêt des datas en .asset c'est que tu pouvais le tej ou tu voulais dans ton PC et le loader quand tu veux à la volée hors unity ?

De la donnée ou du comportement (tu peux faire des objets delegates) que tu attaches pas à un objet en scène.
Genre pour un RPG stocker des abilities ou des stats d'ennemis. Si je fais une modif je casse pas tout j'ai un seul point de maintenance.
Et dans l'éditeur tu peux foutre des custom editors sympas.
J'ai vu un exemple d'un system de game event et listeners avec des SO. Tu mets un bouton "Raise Event" dans ton custom editor et tu peux raise des events quand tu veux en play mode pour tester ton comportement. C'est quand même bien pratique.

Edit par hichanbis (2/01/2018 15h37)

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 2/01/2018 15h33

Ah oui je vois pour l'utilisation, ça permet de centraliser les valeurs du game design. Je fonctionnais pas mal avec un plugin qui téléchargeait des données depuis Google Sheets moi (ça permettait au GD d'être "collaboratif") mais j'avoue que les Scriptable Object ça me tente de me lancer dedans depuis un pti moment, j'suis toujours en mode vieux con avec mon gsheet.

Du coup faut vraiment séparer data du game design (SO) et data à sauvergarder.

Edit par Binouz (2/01/2018 15h43)

Fiché S
Oops,I did it again!
6 154 posts
depuis le 12/03/2007
Britney

Bon et sinon,c est en quelle année qu on verra Hichanbis à l'E3 afficher un tatouage Xbox sur son biceps?

Edit par Britney (2/01/2018 15h53)

social jojostice
11 797 posts
depuis le 13/07/2006
Jojo

La nouvelle sensation des projets indépendants, le "Braid" de hichanis.

"Bread". smiley18

y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Putain je suis ptet grave à la bourre et vu que j'ai majoritairement dev en VR ces derniers temps j'ai pas trop regardé les dernières tech de mise en scène, mais je viens de découvrir la Timeline et Cinemachine dans 2017, cette tuerie smiley115

Tellement ez de faire des caméras fixes et des transitions de plans comme dans MGS ou RE maintenant, ou même suivre son perso sans que ce soit la grosse cahute.

Vivement le Package Manager dans 2018, ils viennent d'intégrer ProBuilder aussi smiley45 J'l'ai utilisé sur mon premier projet, ça sert bien pour prototyper voir dépanner quelques formes simples

Edit par Binouz (21/02/2018 17h13)

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis
y a-t-il qqun pour rebrancher le cerveau de binouz
4 509 posts
depuis le 17/06/2010
Binouz

Réponse au message de hichanbis posté 22/02/2018 10h32

Bien vu smiley12 je suis donc bien à la grosse bourre feelsbad

Je travaille chez l'Euromaster du JV
1 165 posts
depuis le 26/03/2007
nanarcorp

Je ne savais pas trop où poster ça, le topic le plus approprié me semblait être celui-ci. Je me suis dis pourquoi pas partager quelques travaux que j'ai enfin le droit de diffuser sur THE CREW 2 :
https://www.artstation.com/artwork/BZy36
https://www.artstation.com/artwork/VeGPN
https://www.artstation.com/artwork/mV5Od

Ceiling Clott is watching you masturbate
6 771 posts
depuis le 10/06/2010
clott

Réponse au message de nanarcorp posté 1/07/2018 20h18

En moyenne combien de temps de boulot pour une roue ?
C'était assez libre au niveau du design des jantes ou il fallait le plus possible se rapprochait de modèles existants ?

j'ai pris cher man !
6 927 posts
depuis le 18/02/2008
sherman

Réponse au message de nanarcorp posté 1/07/2018 20h18

smiley114
Je sais pas si le jeu est bon mais c'est sur qu'il a une sacrée gueule

Membre
Pile tu gagnes, face je perds
846 posts
depuis le 13/06/2017
Supadust
Je travaille chez l'Euromaster du JV
1 165 posts
depuis le 26/03/2007
nanarcorp

Thanks !
Clott: en moyenne 1 semaine on va dire. J'avais une liberté totale pour le design mais il fallait malgré tout que ça rappel ce qui se fait dans la réalité

Edit par nanarcorp (2/07/2018 07h57)

Trisomie 51
2 960 posts
depuis le 2/11/2008
VV51

Réponse au message de nanarcorp posté 1/07/2018 20h18

Pas mal, t'es issu de quel formation ? Mon pote commence a faire de la 3d en deuxième année a new edge mais vla le prix de l'école smiley71 cependant les profs/matières sont ouf askip

condamné à vivre avec le pire matos sur terre
miiverse
12 222 posts
depuis le 26/10/2009
Peach

à une epoque je me moquais de ceux qui voulaient bosser dans le jv en disant « tout ça pour modeliser des chaises pour le prochain assassin »

bon, là c est des roues pour the croute

ma question est donc la suivante, qd on fait ce metier c est quoi la suite ? passer des roues à la carrosserie est une promotion ?
on change d employeur pour voir autre chose ? (c est une question serieuse)

Edit par Peach (2/07/2018 09h31)

La Triforce de la 屎
Lieu
4 559 posts
depuis le 28/08/2007
Cheftrottoir
Peach a écrit :

(c est une question serieuse)

C'est encore plus grave qu'on le pensait. pepe_stress

L'homme sait faire du pain grâce à Dieu
Au pays des merguez
11 451 posts
depuis le 15/07/2008
hichanbis

Réponse au message de Cheftrottoir posté 2/07/2018 09h43

Pourquoi? C'est un peu sec dans le ton (c'est peach) mais fondamentalement c'est pas inintéressant comme question.

La Triforce de la 屎
Lieu
4 559 posts
depuis le 28/08/2007
Cheftrottoir

Réponse au message de hichanbis posté 2/07/2018 09h56

C'est debile. Ca s'applique a tout les metiers, a toutes les activites du monde.

qd on fait ce metier c est quoi la suite ? passer des steack à l'entrecote est une promotion ?
on change de restaurant pour voir autre chose ? (c est une question serieuse)

qd on fait ce metier c est quoi la suite ? passer des bilan au compte de resultat est une promotion ?
on change de cabinet pour voir autre chose ? (c est une question serieuse)

qd on fait ce metier c est quoi la suite ? passer des dp au gang bang est une promotion ?
on change de compagnie pour voir autre chose ? (c est une question serieuse)

qd on fait ce metier c est quoi la suite ? passer des caries à l'arrachage de dent est une promotion ?
on change de cabinet dentaire pour voir autre chose ? (c est une question serieuse)

Mon père est un pigeon
1 820 posts
depuis le 29/11/2010
DarkAnother

Réponse au message de Cheftrottoir posté 2/07/2018 10h03

Ce post est certifié blanc-bleu-rage.

condamné à vivre avec le pire matos sur terre
miiverse
12 222 posts
depuis le 26/10/2009
Peach

fais gaffe t as un sushi coincé dans l anus

La Triforce de la 屎
Lieu
4 559 posts
depuis le 28/08/2007
Cheftrottoir
Peach a écrit :

fais gaffe t as un sushi coincé dans l anus

smiley116

j'ai pris cher man !
6 927 posts
depuis le 18/02/2008
sherman

La question est interessante quand meme
Je comprends que pour le studio il y a gain de temps et surement une meilleur cohérence en donnant à un mec de faire des roues, un autre les phares, un autre la carrosserie et un dernier de tout assembler

Mais en effet comment t'évolue dans ce système, tu te retrouve à coordoner ?
Et surtout est-ce que c'est interessant de bosser en quelque sorte à la chaine ? A moins qu'à coté t'aie aussi fait des immeubles, morceaux de carte, etc. Mais si t'as vraiment passé un an à faire des roues ça ressemble à l'usine quoi...

et le sushi dans l'anus m'a fait sourire smiley76

Singe Gobelin
3 842 posts
depuis le 7/09/2008
Sage-Goblin

Si je regarde le dernier, Nanar n'a pas l'air de faire que des roues, y a un décors, ou c'est pas lui, et c'est juste histoire de montrer les roues, et dans ce cas la, c'est un peu triste.
Après en bossant chez Ubi, je m'attends quand même a un certain boulot a la chaine, on va dire, avec des trucs pas super intéressants pour le grand public, mais qui font bien dans le portfolio.

Je travaille chez l'Euromaster du JV
1 165 posts
depuis le 26/03/2007
nanarcorp

Oula beaucoup de réaction, mais la question est loin d'être inintéressante.
Alors pour commencer :

Peach > Non il n'y a pas de "pneu artiste" ou de "chaise artiste", du moins pas à Ubisoft. j'ai eu l'occasion de bosser sur The Crew 2 et...c'est un jeu de caisse quoi ! Par exemple là je bosse en ce moment sur The Division 2 et je fais des trucs totalement différent. En fait ça me paraît évident, un projet = une thématique. Bah jeu de bagnole c'est inévitablement des voitures, des pneus, des stands à merguez, etc.

Pour répondre à la question de "l'évolution" professionnelle, ça dépend de ton post quoi. Mais en gros tu évolues en confirmé, senior et/ou lead. C'est un peu le chemin classique du bordel. Maintenant "des pneus à la carrosserie", ça ne marche pas comme ça. Déjà car l'un n'est pas plus important que l'autre et que la "promotion" ne juge pas à l'importance de l'objet que tu vas avoir à réaliser. On te donne pas un susucre car tu as bien travaillé (des fois si, mais bon, c'est pas la norme quoi). Tu évolues en changeant de boîte et en montrant que tu as bien bossé sur tes précédents projets (à travers ton portfolio et des recommandations). Du coup une sorte de "confiance" s'instaure et tu peux négocier une meilleure position/salaire.

Maintenant "faire des pneus" et des "chaises" c'est super caricatural, car déjà il n'y a pas que ça. Mais surtout si tu aimes ton job, à savoir la conception d'environnement et de props, bah je ne vois pas où est le problème à passer son temps à faire ça à vrai dire. Réaliser des décors et des objets c'est quelque chose de génial. Passer du temps à concevoir et donner de la vie à l'objet et le voir tourner dans un jeu c'est super gratifiant. 

Sage-Goblin : ça ne veut rien dire "travail à la chaîne" dans le cas du JV. En tout cas pour un artiste, dans la mesure où chaque projet est différent et que les codes le sont aussi. Alors oui il y a un pipeline software qui va forcement être identique, mais tu penses pas pareil et tu ne fais pas la même chose quand tu passe d'un jeu comme Asura's Wrath à un Deus Ex.

condamné à vivre avec le pire matos sur terre
miiverse
12 222 posts
depuis le 26/10/2009
Peach

Réponse au message de nanarcorp posté 2/07/2018 14h06

ok merci

c est juste que

1/ j ai l impression que vous etes vraiment beaucoup de « petites mains » sur la modelisation d assets
faut dire que maintenant tout le monde veut faire ca

2 / en france tout le monde bosse pour ubisoft, directement ou indirectement, du coup ba j ai du mal à voir comment on peut facilement evoluer vu qu il n y a pas foule de boites pour bcp de main d oeuvre

apres si tu fais autre chose que des petites crottes 3d tant mieux

Membre
23 posts
depuis le 3/10/2017
mpprrrrfffffchier

Bah c'est comme partout, au fur et à mesure que tu évolues, tu obtiens de plus en plus de responsabilités. Un artiste peut par exemple devenir lead et encadrer d'autres artistes, ou alors directeur artistique, ou encore directeur technique (ie. celui qui va mettre en place le pipeline utilisé par les artistes pour concrétiser la DA).

Après dans une grande prod comme celle des jeux ubi, il peut effectivement y avoir un côté travail à la chaîne vu qu'un projet peut représenter une centaine d'artistes chacun chargé d'un "bout" du jeu, mais là encore, ça n'a rien d'une fatalité, un artiste peut très bien aller changer d'air sur un projet plus modeste (rien qu'en France, ce n'est pas ce qui manque), où il aura mécaniquement plus de choses à faire vu que les artistes y seront moins nombreux.

Ceiling Clott is watching you masturbate
6 771 posts
depuis le 10/06/2010
clott

De plus, à corriger si je m'égare, une grosse boite comme Ubisoft permet de se former entre deux projets justement grâce à l'importante main d'œuvre.

brise-chat
4 182 posts
depuis le 3/07/2008
Grey-Che

Réponse au message de nanarcorp posté 1/07/2018 20h18

Faudrait expliquer aux collègues que sur une moto le guidon tourne dans la direction opposée du virage (contebraquage).

Les sensations ont l'air bonnes sinon.

Edit par Grey-Che (5/07/2018 20h33)

Membre
63 posts
depuis le 13/06/2017
JeVoisRienSinon

Y a des gens qui maitrisent DirectX 11 ici ? J'aurai quelques questions parce que j'avoue que j'ai du mal. feelsbad
- Faut il balancer toutes les vertices dans un seul buffer ? Peut-on définir le VertexBuffer morceau par morceau (j'ai 150 millions de vertices, donc de facto ça tourne pas sur 32 bits mais même avoir un tableau aussi grand c'est pas ouf).
- Dois-je utiliser plusieurs VertexBuffer chacun dans un slot ? (limité à 32 slots avec DirectX 11 c'est ça ?) mais du coup c'est la même fonction de Draw qu'il faut appeler ? Comment le context sait qu'il doit dessiner les 10 M de vertices qui sont dans le slot 0 et pas le slot 1 ?

J'essaie de faire un viewer 3D pour commencer.

Singe Gobelin
3 842 posts
depuis le 7/09/2008
Sage-Goblin

Réponse au message de JeVoisRienSinon posté 25/07/2018 14h40

Bon je connais pas DirectX 11, mais je travail avec OpenGL depuis de nombreuses années, et la philosophie des 2 API est la même, donc je peux te répondre.

Quand tu utilises une API bas niveau comme DX ou GL, généralement il faut réduire au maximum tes draw call, car c'est une fonction qui coûte cher, donc la meilleur idée est d'utiliser un VBO, mais ça c'est le cas idéal, la réalité impose que tu travailles généralement avec plusieurs VBO, l'idée est d'arranger tes vertex pour réduire au minimum tes VBO. Pour ça t'as plusieurs façon de faire, soit tu arranges tes vertex de manière "interleaved", c'est-a-dire chaque case mémoire représente un vertex offseter par ses attributs (généralement coordonnes | normal | textures, ainsi de suite).
Tu as la version "packed" (Toutes les coordonnes, suivis de toutes les normals, suivies de toutes les coordonnées textures, tout ceci dans un seul vbo).
Ou bien tu as un vbo par attribut, i.e un vbo pour les coordonnes, un vbo pour les normales, un vbo pour les textures, etc.

Dans l'ordre du meilleur au moins bon : interleaved -> packed -> vbo par attributs.

Décris un peu la topologie de ton ensemble afin d'en savoir un peu plus.

La 150 millions de vertex ça me semble un peu gros, mais j'ai déjà vu ça sur de très très gros assemblages avec beaucoup de part, dans un logiciel de CAO.

Est-ce un seul et unique mesh, ou bien, plusieurs sous-mesh ?

Membre
63 posts
depuis le 13/06/2017
JeVoisRienSinon

Réponse au message de Sage-Goblin posté 25/07/2018 22h15

C'est bien pour du CAO que je teste tout ça. Et j'ai plusieurs géométries (des milliers) mais elles sont statiques.
Donc je fais du interleaved du coup (position -> couleur) auxquelles je compte ajouter des normales pour la lumière, une matrix pour la transformation si je veux dynamiser l'ensemble un peu (des méthodes pour éclater le modèle) puis les coordonnées des textures un jour peut être.
J'arrive à tout faire tenir en un seul buffer (je dessine tous les opaques puis je désactive l'écriture dans le depth buffer et je dessine les vertex ayant de la transparence), ça tourne à 60 fps (pour l'instant, ou 10 fps sur la CG intégrée) et le plus long dans ce que j'ai chronométré c'est la création des buffers (mais je le fais qu'une fois au chargement du fichier, et j'ai pas mal d'idées pour optimiser la création de celui-ci) et la fonction de swap à la toute fin de la méthode de rendu.

Après justement en WebGL (la même chose qu'en OpenGL du coup ? mais c'est là où j'avais fait mes premiers tests) y a pas cette histoire de slots dans l'input assembler et du coup c'était plus simple à gérer et c'est ce qui me prend la tête avec DirectX (et tous les examples du monde font avec un seul slot feelsbad).

Singe Gobelin
3 842 posts
depuis le 7/09/2008
Sage-Goblin

Réponse au message de JeVoisRienSinon posté 25/07/2018 23h46

Bon j'ai compris cette histoire d'Input Slot, il y a peu près la même chose en GL 4.3
Input Slot et OpenGL

Pour en revenir a ton problème, faire tout tenir dans un seul VBO c'est bien mais ça impose que tu connaisses ta géométrie des le départ, et qu'elle ne bougera jamais (c'est-a-dire que l'utilisateur ne rajoutera pas d'objet sur son modèle, ce qui est peu probable).
Si c'est juste un viewer qui affiche l'objet sans modification, la je dirais oui alors c'est faisable (et c'est ce que tu fais donc c'est bien).

Concernant tes attributs, généralement un modèle a toujours au minimum des postions et des normales, le reste des attributs sont facultatifs. Voila les avantages et inconvénients son exhaustif, si tu veux faire plusieurs modes de rendu.
Si tu veux afficher ton modèle non texturé, et un affichage texturé, stocker les coordonnes de textures dans le même buffer que les autres, implique que tu doives recréer un nouveau vbo avec toute la topo incluant les coordonnes de textures, et comme tu l'as vue, créer un VBO n'est pas une opération gratuite, c'est pour ça qu'elle est généralement faite au début et après on ne s'en occupe plus (sauf dans certains cas, comme de la cinématique par exemple).

Donc dans un cas comme ça, il est préférable de faire un vbo supplémentaire qui ne contiendra que tes coordonnées de textures, c'est beaucoup moins lourd a gérer.

Concernant tes matrices, ce ne sont pas des attributs de vertex, mais plutôt des uniform. Dans la notion d'éclaté, on éclate des pièces, pas les vertex, si tu mets tes matrices en tant qu'attribut je te garantis que tu vas saturer ta mémoire.

Après pour le rendu tu as des techniques d'optimisations, par exemple dans ton fichier, regarde si tu as des instances d'une même pièce, dans ce cas il est préférable de faire un draw instancié plutôt que de tout redessiner.

Membre
63 posts
depuis le 13/06/2017
JeVoisRienSinon

Réponse au message de Sage-Goblin posté 26/07/2018 08h37

Ha merci. J'ai (enfin) compris cette histoire de slots. Je pensais en fait qu'on pouvait mettre un vertex buffer dans le premier slot et un autre dans le deuxième slot et ensuite faire un Draw call sur le premier puis sur le second. Mais c'est crétin en fait puisque les slots sont utilisés tous ensemble.

Pour ce qui est des instances ouais j'ai vu, mais vu que je dois faire des ray cast sur ma scène j'ai besoin de conserver tous ses triangles sur la RAM, après peut être qu'il y a quand même un gain à faire un Draw propre à ces instances. Et le Draw ne vaudra donc que pour une seule pièce ? J'imagine que je ne peux pas mettre plusieurs pièces dans un buffer et faire des instances distinctes ?

Pour le fun j'ai commencé à regarder comment mettre en place du SSAO
pepe_stress

Edit par JeVoisRienSinon (26/07/2018 18h25)

Toi aussi deviens indéveloppeur [Unity/UE4 pour platformers 2D osef]
Remonter

Pied de page des forums

ContactMentions légales