IncroyablePix

Pribloum de construction NPC

4 messages dans ce sujet

Bonzoir collègues,

 

Certains ici me connaissent, et se souviennent plus probabli-bla-bli-blu-bloblement d'un serveur que je leur ai présentés: Survive-All

Blablabla, le nom du serveur en donne assez, zombies, bug :

 

Donc, au départ, j'ai pu utiliser PathFinder, mais pour plusieurs raisons, le mauvais ratio efficacité/consommation principalement, ainsi que le désir de m'affranchir de MapAndreas que je trouve obsolète, également le fait que j'aie décidé de m'en calicer d'un grand réalisme intelligent pour pouvoir en contrepartie afficher plus de zombies, j'ai abandonné PathFinder, au final !

 

Évidemment, pour ceux qui l'auront deviné, j'ai décidé d'uniformiser mon gamemode sous les traits clairs et précis de ColAndreas !

J'ai voulu faire un système "d'attaque en ligne droite" : les zombies en attaque prendraient un camino rectiligne simple entre leurs positions et leur cible, tout en respectant "la position du sol", enfin, resteraient les pieds sur terre :)

Il y aurait également le mode "vagabondage", les zombies sans cible aux alentours erreraient librement en fonction des murs ou des obstacles, avec un chemin relativement cohérent

 

Le problème, c'est que le mode "vagabondage", eh bien il fait crash le serveur !

 

J'ai relativement réussi à comprendre comment cela crash:

 

 

 


[10:45:38] Zombie 0 -  0
[10:45:38] Zombie 0 -  1
[10:45:38] Zombie 0 -  2
[10:45:38] Zombie 0 -  3
[10:45:38] Zombie 0 -  4
[10:45:38] Zombie 0 FinishBuild
[10:45:38] Zombie 0 StartBuildPlayback
[10:45:38] Zombie 1 -  0
[10:45:38] Zombie 1 -  1
[10:45:38] Zombie 1 -  2
[10:45:39] Zombie 1 -  3
[10:45:39] Zombie 1 -  4
[10:45:43] Zombie 1 FinishBuild
[10:45:43] Zombie 1 StartBuildPlayback
[10:45:43] Zombie 2 -  0
[10:45:43] Zombie 2 -  1
[10:45:43] Zombie 2 -  2
[10:45:43] Zombie 2 -  3
[10:45:43] Zombie 2 -  4
[10:45:43] Zombie 2 FinishBuild
[10:45:43] Zombie 2 StartBuildPlayback
[10:45:43] Zombie 3 -  0
[10:45:43] Zombie 3 -  1
[10:45:43] Zombie 3 -  2
[10:45:43] Zombie 3 -  3
[10:45:43] Zombie 3 -  4
[10:45:43] Zombie 3 FinishBuild
[10:45:43] Zombie 3 StartBuildPlayback
[10:45:43] Zombie 4 -  0
[10:45:43] Zombie 4 -  1
[10:45:43] Zombie 4 -  2
[10:45:43] Zombie 4 -  3
[10:45:43] Zombie 4 -  4
[10:45:43] Zombie 4 FinishBuild
[10:45:43] Zombie 4 StartBuildPlayback
[10:45:43] Zombie 5 -  0
[10:45:43] Zombie 5 -  1
[10:45:43] Zombie 5 -  2
[10:45:43] Zombie 5 -  3
[10:45:43] Zombie 5 -  4
[10:45:43] Zombie 5 FinishBuild
[10:45:43] Zombie 5 StartBuildPlayback
[10:45:43] Zombie 6 -  0
[10:45:43] Zombie 6 -  1
[10:45:43] Zombie 6 -  2
[10:45:43] Zombie 6 -  3
[10:45:43] Zombie 6 -  4
[10:45:43] Zombie 6 FinishBuild
[10:45:43] Zombie 6 StartBuildPlayback
[10:45:43] Zombie 7 -  0
[10:45:43] Zombie 7 -  1
[10:45:43] Zombie 7 -  2
[10:45:43] Zombie 7 -  3
[10:45:43] Zombie 7 -  4
[10:45:43] Zombie 7 FinishBuild
[10:45:43] Zombie 7 StartBuildPlayback
[10:45:43] Zombie 8 -  0
[10:45:43] Zombie 8 -  1
[10:45:43] Zombie 8 -  2
[10:45:43] Zombie 8 -  3
[10:45:43] Zombie 8 -  4
[10:45:43] Zombie 8 FinishBuild
[10:45:43] Zombie 8 StartBuildPlayback
[10:45:43] Zombie 9 -  0
[10:45:43] Zombie 9 -  1
[10:45:43] Zombie 9 -  2
[10:45:43] Zombie 9 -  3
[10:45:43] Zombie 9 -  4
[10:45:43] Zombie 9 FinishBuild
[10:45:43] Zombie 9 StartBuildPlayback
[10:45:45] Zombie 10 -  0
[10:45:45] Zombie 10 -  1
[10:45:45] Zombie 10 -  2
[10:45:45] Zombie 10 -  3
 

 

 

En gras, j'ai mis en exergue le tempus. Comme vous pouvez le mirirer, il y a d'énormes laps de temps entre certains mouvements de zombies !

Finalement, j'ai, par hasard, été mirirer le dossier \npcmodes\recordings dans lequel j'ai pu voir des bizarreries de la sorte: 

 

Recordings.JPG.eb81712b91fa007dea151376252c2bb8.JPG

 

PAF, un fichier de presque 300 mb, ce qui explique l'énorme tempus s'étant écoulé entre les deux premiers, quand à "zombie 10", son fichier n'existe même pas, et justement, les logs s'arrêtaient avant d'avoir pu le créer, ce qui laisse à présager un fichier encore plus obèse !

 

 

------------------

 

 

Évidemment, voici les morceaux de script:

 

https://pastebin.com/QLrAs8Wg

MoveZombies : Fonction appelée toutes les secondes ; elle appelle à son tour ZombieAttack, individuellement pour chaque zombie, mais toutes les secondes, elle provoque le mouvement d'un cinquième des zombies.

 

https://pastebin.com/gZXQvgxq

MovieZombie : Fonction individuelle à chaque zombie: Elle détermine une direction parmi les 8 points cardinaux et détermine ensuite 5 positions par lesquelles le zombie passera, en crée un .rec et le lit. C'est le mode "vagabondage".

 

https://pastebin.com/QHT26MqK

ZombieAttack : Fonction qui permet au zombie d'attaquer ; Si la cible est assez proche, le zombie frappe, sinon, il se dirige vers lui (Je sais que je fais ça au "mètre par mètre", mais c'est surtout un test)

 

Le problème, c'est qu'en dépit de la différence de fonctionnement entre MoveZombie et ZombieAttack, aucun des deux ne fonctionne correctement. MoveZombie fait, comme je l'ai précédemment sniffé, crash le serveur, ZombieAttack, lui, fait "disparaitre le zombie" - Il ne respawn pas, il ne meurt pas, il ne crash pas : il disparait ! :(

 

 

Enfin voilà le pribloum, ça fait longue-tempus que je suis bloqué dessus, c'est même ça qui a un peu stoppé le développement, alors ce serait kharacho si quelqu'un pouvait le débloquer à ma place (vive l'assistanat). Je suis persuadé que la solution est extrêmement stupide, mais comme j'ai passé trop de tempus dessus, ça devient compliqué de le voir :x

 

 

Modifié par IncroyablePix

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai jamais utilisé cette fonction (record...) mais pourquoi tu dois l'utiliser ?

Pourquoi pas créer l'IA avec ton propre code sans passer par le rec ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour plusieurs raisons à vrai dire:

 

Déjà, avoir un mouvement un peu fluide, ne pas voir des zombies s'arrêter tout le tempus entre deux positions :|

Aussi, je fais cela dans la mesure où, ainsi, je ne dois pas faire bouger tous les zombies chaque seconde, ni de les voir tous avec un mouvement "mécanique", tous commençant à bouger au même instant par exemple

 

Après, c'est vrai que je ne "dois" pas l'utiliser, mais d'un autre côté, même le ZombieAttack n'a pas l'air de fonctionner, sans qu'il n'y ait de de recording; alors que d'après mes logs, les positions résultant de la fonction sont correctes

Partager ce message


Lien à poster
Partager sur d’autres sites

Sujet lock et déplacé.

Partager ce message


Lien à poster
Partager sur d’autres sites
Guest
Ce sujet ne peut plus recevoir de nouvelles réponses.