[TUTO] Compil' sur plusieurs PC en même temps (LAN/INTERNET)

Ce forum regroupe tous les tutoriaux réalisés par des membres de Mapping-Area pour Half-Life 2.

Modérateurs: Co-Admin, Modérateur, Staff

[TUTO] Compil' sur plusieurs PC en même temps (LAN/INTERNET)

Messagede Sephiroth le 29 Jan 2006, 14:30

Hello, ca fait deja un bail que j'essaye de retrouver les commandes pour faire fonctionner un Serveur VVis et Vrad en reseau (et bien sur aussi pour avoir plusieurs poste clients pour se connecter et compiler)
J'ai cherché pas mal sur le net, mais a part quelques postes en anglais pas très avancé, j'ai rien trouvé de concret... Soit, j'ai donc fait appel a un pote programmeur qui m'a scanné en vitesse les executables Vis et Rad afin d'en obtenir les commandes réseaux interne que voici :

-mpi_local
-mpi_broadcast
-mpi_job_watch
-mpi_NoTimeout
-mpi_Verbose
-mpi_DisableStats
-mpi_UseUNC
-mpi_Port
-mpi_pw
-mpi_MasterName
-mpi_WorkerCount
-mpi_WaitTime
-mpi_MinWorkers
-mpi_AllowDropIn
-mpi_worker

Je ne vais pas passer mon temps a toutes les detaillées ce n'est vraiment pas mon objectif. Je préfère donc vous faire part de ce qu'on a pu trouver ensemble, afin que la technique se repende et soit utilisée un maximum :)

Pour commencer, en partant de ces commandes, il a trouvé la commande serveur que voici : (exemple prit avec VVis mais identique pour Vrad)

Code: Tout sélectionner
vvis -mpi -mpi_Verbose 2 -mpi_DisableStats -mpi_Port 25000 map.bsp


pour qu'elle fonctionne tel quel, il faut :

1- créer un fichier txt dans SourceSDK\bin dont le nom est "
dependency_info_vvis.txt"
(pareil pour vrad)

et y mettre dedans :

Code: Tout sélectionner
.
map.bsp
map.prt
map.vmf


(Notez donc qu'il y a 5 Lignes, et la 5éme est vide /!\)

2-Il faut ensuite aller chercher la map (.VMF) que l'on veut compiler, et la copier dans ce meme dossier "SourceSDK\bin"
On lance VBSP afin qu'il créé les fichiers map.BSP et map.PRT :

Code: Tout sélectionner
Vbsp map.vmf



Ces conditions étant remplies, on peut donc lancer la commande Serveur et passer à la commande client

Coté Client, c'est plus facile:

On veillera juste a copier le repertoire "SourceSDK\bin" sur la machine client que l'on veut (pas besoin des fichiers map (vmf/bsp/prt) ni des fichiers "dependency_info_v(vis & rad).txt"

Niveau commande on lance ceci :

Code: Tout sélectionner
vvis -mpi -mpi_Verbose 2 -mpi_DisableStats -mpi_worker (adresseIP du serveur ici):25000 map


On remarquera par ailleurs qu'on a pas spécialement besoin de steam sur les pc clients, cela fonctionne bien avec juste le repertoire bin :gg

Si cela a fonctionné, vous aller voir de l'activitée sur votre serveur, la compilation va avancer normalement, et on peut meme compter le nombre de client connecté sur le serveur dans le haut de la fenetre

Une fois la map compilée, vous avez votre fichier BSP fini, prenez le et copier le dans le repertoire maps de votre mod/jeu sur lequel vous bossez :)



Voila, j'espère avoir été assé clair et que ca en aidera plus d'un cad moi :P
aussi j'ai deja personnelement retravaillé un peu le principe
et j'ai créé un tool sous forme de fichier Batch pour automatiser tout le principe, et l'améliorer un minimum :D


Valve SourceEngine NetWork Compiler Beta1

Pour l'utiliser :

Il faut Placer un des Batch Server dans votre dossier mapsrc actuel
et lancer tout simplement la commande...

deux question vous seront alors posées:
-Quel est le nom de la map a compiler (.vmf)
-Quel nom voulez vous donner a votre map compilée (.bsp) (utile quand on a 50 vmf mais qu'on veut qu'un seul BSP :) )

/!\ je precise, pour les deux réponses, mettez juste le nom sans extensions donc...


Coté client/worker, vous n'avez lancer le bat Worker correspondant dans le rep "SourceSDK\bin" et une fois que le programme vous le demande, entrer l'adresse IP du serveur que vous avez lancé :gg

Voila c'est à peu pret tout, n'hesiter pas a me laisser vos commentaire et a me faire part d'eventuelles erreurs :lu

edit: je viens de voir que le link était éronné (manquait encore une majuscule...), j'ai corrigé, et c'est ok maintenant
Aussi cela semble fonctionner aussi par internet, quelqu'un peut-il essayer ? ma connection est pas top du tout et quand j'essaye je me prend des timeout :pfff
Dernière édition par Sephiroth le 06 Aoû 2007, 16:41, édité 4 fois.
Sephiroth
Hamerien
 
Messages: 56
Inscription: 18 Fév 2005, 04:56

Messagede Sephiroth le 31 Jan 2006, 14:55

pas d'interessés ?
45 vues et personnes qui répond :^^
Sephiroth
Hamerien
 
Messages: 56
Inscription: 18 Fév 2005, 04:56

Messagede Pok@P le 31 Jan 2006, 21:12

Mais c'est un tuto. très interressants mais j'ai qu'un ordi. chez moi pour mapper donc ...

Afin quand j'en aurai un autre je ne me gênerai pas à utiliser ton tuto.
Encore bravo. :)
Les personnes qui ont firefox et ont du mal en français : Dictionnaires.
Les personnes qui n'ont pas firefox : FireFox et revenir juste à la phrase au-dessus.
Avatar de l’utilisateur
Pok@P
Modérateur
Modérateur
 
Messages: 937
Inscription: 29 Déc 2005, 00:08
Localisation: Sur ce forum =^.^=

Messagede NykO18 le 01 Fév 2006, 00:55

Bah.. mes maps mettent rarement plus d'une heure à compiler..
A savoir si ca vaut le coup de faire une compilation distribuée.. j'en doute.
Néanmoins, bravo pour avoir trouvé tout ca
Avatar de l’utilisateur
NykO18
VIP
VIP
 
Messages: 8253
Inscription: 19 Jan 2005, 22:16
Localisation: Cergy, France

Messagede Ph3nyx le 01 Fév 2006, 01:05

une idée des gains réels obtenus ?
Image
Image
Serveur brakass CS Source : 213.251.148.155:27035
Avatar de l’utilisateur
Ph3nyx
VIP
VIP
 
Messages: 1488
Inscription: 04 Avr 2005, 19:18
Localisation: Nantes

Messagede NykO18 le 01 Fév 2006, 01:18

Bah j'ose supposer qu'on peut PLUS OU MOINS diviser le temps de compilation par le nombre de machines.. (plus ou moins)
Avatar de l’utilisateur
NykO18
VIP
VIP
 
Messages: 8253
Inscription: 19 Jan 2005, 22:16
Localisation: Cergy, France

Messagede Sephiroth le 01 Fév 2006, 03:24

NykO18 a écrit:Bah j'ose supposer qu'on peut PLUS OU MOINS diviser le temps de compilation par le nombre de machines.. (plus ou moins)


yep, merci d'avoir déplacé le tuto :)
Ca à +- l'air, dépendant quand meme néanmoins de la puissance de calcul de chaques machines...
Par contre, je me demande si un dual core par exemple ne serait pas bénéfique (et si c'est le cas, dans quelle proportions). Y a l'air d'avoir la possibilité de régler les compilateurs pour utiliser plusieurs threads, mais j'ai pas le matos pour essayer. Enfin déjà la c'est bien marrant, d'autant plus comme je l'ai dis, ca doit fonctionner par internet avec une bonne connection (que je n'ai pas non plus..:^^), et bref, suffit de se trouver quelques potes "cobaye", leur filler le rep "sourcesdk\bin" et le tour est joué ...
On pourrait presque imaginer un programme un peu du genre SETI, mais qui ici ne servirait pas a la recherche scientifique mais plutot a la compil de map :@] :D
Sephiroth
Hamerien
 
Messages: 56
Inscription: 18 Fév 2005, 04:56

Messagede Neernitt le 02 Fév 2006, 14:34

J'ai un petit probléme avec ton truc, je lance la compile serveur, la compile ddu vis débute, je lance la compile client et le serveur me dit :
MulticastThread: WSASendTo with 1108 bytes sent 12 bytes.
Le fichier spécifié est introuvable.
MulticastThread: WSASendTo with 1108 bytes sent 12 bytes.
Le fichier spécifié est introuvable.
MulticastThread: WSASendTo with 1108 bytes sent 12 bytes.
Le fichier spécifié est introuvable.

This machine's ability to multicast may be broken. Please reboot and try again.


Comment résoudre cette erreure ?
Merci.
Narf !
Avatar de l’utilisateur
Neernitt
Half-Mapsteur
 
Messages: 2141
Inscription: 05 Jan 2005, 18:17
Localisation: o=[=====-

Messagede L.inconnu le 09 Avr 2006, 15:35

Salut, moi j'aimerais savoir si quelqu'un a réelement essayé car même si les commandes marchent très bien, le gain de temps est nul chez moi.

J'ai essayé avec 2 pc (de config equivalente):
-Le serveur ne fait (apparement) que distribuer les calculs à faire. Ce qui fait que si on veux que le serveur calcul aussi il faut lancer la commande client sur le serveur ( :><: ).

Mais même en fesant cela et en ayant donc 2 clients connectés le gain de temps est nul et le temps de compil est le même que si 1 pc compilait tout seul.

Alors si quelqu'un avait fait des tests concluants...
Avatar de l’utilisateur
L.inconnu
Hamerien
 
Messages: 54
Inscription: 06 Sep 2005, 16:26

Messagede Sephiroth le 13 Avr 2006, 21:35

Salut, pour ce que j'en ai pu essayer, je peux dire que chez moi, c'est le même problème avec 2 machines ...
Au fait si vous avez regardé, j'ai mis 2 type de Serveur..
- Un serveur Simple (distributeur de calcul)
- Un advanced Server (Distributeur de calcul, et worker en meme temps)

Dans le cas d'une compilation sur 2 machines uniquement, on a tout interet a utiliser un Advanced Server mais le problème est que chez moi la commande ne fonctionne pas / plus :D
Comme j'ai dis au debut, j'avais deja testé bien avant, un peu apres la sortie d'HL2, et la avec ces memes commandes tout fonctionnait bien dans les 2 sens :)
Cela fonctionnait meme par internet ..

Dans le cas d'une compilation sur 3 machines, la pas de problème, on lance un serveur simple et deux worker

Neermit, j'ai jamais eu ce problème je ne sais pas dire grand chose :/

edit: cette technique est pour moi plutot interessante, mais est a ameliorer, car même avec une map immense, si l'optimisation de la map est bonne cela ne sert pas a grand chose niveau Vis ..
Niveau rad par contre c'est autre chose, c'est clair qu'on a, a y gagner, par contre, il faudrait vraiment programmer un soft qui automatise un peu mieux le tout, parcque c'est pas très marrant a chaques compile d'aller lancer 1 batch sur 10 machines :^^
(on gagne en temps de compile, mais on augmente les prises de tete.. )
Sephiroth
Hamerien
 
Messages: 56
Inscription: 18 Fév 2005, 04:56

Messagede L.inconnu le 14 Avr 2006, 21:57

Donc si j'ai bien compris tu pense qu'un serveur+2 workers est plus efficace que 1server/worker + 1 worker. J'esserais ça.

Par contre pour la compil par Internet il n'y a pas une grande quantité de donnée à downloader par les clients pour avoir les infos à calculer?
Et est ce que tu sais si le server sait gerer une perte d'un client et redistribuer le travail vers les autres workers? Car lors de mes essais j'ai l'impression que cela fait planter toute la compil.

Merci pour ton tuto car ça pas dû etre facile de trouver tout ça.
Avatar de l’utilisateur
L.inconnu
Hamerien
 
Messages: 54
Inscription: 06 Sep 2005, 16:26

Messagede Sephiroth le 06 Aoû 2007, 16:37

je détère ce sujet pour dire que je viens de maj le lien du compilo qui était mort
ca serait d'ailleurs sympatique que vous hebergier vous même aussi sur mapping-area le pack car déja la encore un peu c'était perdu a jamais (JC_omega me l'a demandé par mail et je l'ai retrouvé vraiment par chance)
ca serait bien d'avoir plusieurs miror histoire que ca n'arrive plus (ces infos sont pas facile a trouver sur le net donc voila :lu )

Valve SourceEngine NetworkCompiler_Beta1
Sephiroth
Hamerien
 
Messages: 56
Inscription: 18 Fév 2005, 04:56

Messagede jC_Omega le 11 Aoû 2007, 00:10

un mirror :

http://tuto.getalife-mod.com/HL2-Networ ... _Beta1.rar

je ferais des test ce weekend.

moi ce qui m'intéresse c'est lancer des compils a distance sans toucher au 2eme pc et récupérer sur mon pc le bsp
Mon projet perso ces 3 dernières années + mon blog:
Image
Image
Avatar de l’utilisateur
jC_Omega
Créateur
 
Messages: 766
Inscription: 31 Mai 2005, 23:51


Retourner vers Cours & astuces

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités