Author Topic: Afficher environ 2500 entités  (Read 505 times)

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Afficher environ 2500 entités
« on: June 05, 2010, 08:33:07 PM »
Bonsoir à tous !

Utilisant MOH pour une simulation, j'aurai besoin de faire apparaitre près de 2500 entités. Or, arrivé à quelques 800 entités, le jeu me renvoie:

Quote
********************
ERROR: Level::AllocEdict: no free edicts

********************

Et retour sur le menu principal.
Partant de là, je lui rentre, dans la console:

Code: [Select]
maxentities "3000"
Relançant le jeu, je n'ai plus de plantage. néanmoins, seules 1022 entités sont affichés (une commande "entcount" dans la console en regardant la zone où devraient être affichées toutes les entités renvoie "Total Entcount: 1022").

Pourtant, lorsque je demande des informations sur une entité qui n'est pas affichée, ou que je lui donne de nouvelles informations, je n'ai pas d'erreur.
Autrement dit, "local.ent[local.i]" est bien définie pour local.i variant de 1 à 2500, mais seules les premières sont affichées.
Utiliser une commande "hide" sur certaines entités affichés, ce qui les cache, n'a pas fait apparaitre les autres entités.

Comment faire pour que le jeu m'affiche vraiment toutes mes entités?

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Afficher environ 2500 entités
« Reply #1 on: June 06, 2010, 10:41:48 PM »
Seconde problème, le premier étant toujours d'actualité.

J'aurai besoin de définir pas mal de Cvar pour afficher des statistiques par le biais de menus.
Le script va donc définir une liste de cvar sous la forme

Quote
$player[local.i] stufftext ("seta Variable" + local.j + " " + local.valeur[local.j])

Avec local.i parvourant l'ensemble du tableau des joueurs (de 1 à $player.size), et local.j allant de 1 à environ 200.

Le problème, c'est qu'arrivé à la 161e variable, le jeu retourne sous windows, m'affiche la console, avec l'erreur:

Quote
recursive after error: MAX_CVARS

Peut-on changer cette limite maximale de cvar pour me permettre d'en ajouter 200?
J'ai tenté d'initialiser les cvar dans le fichier "config/unnamedsoldier.cfg", mais le problème persiste. En initialisant les variables, le jeu ne plante pas au menu principal (où il référence 900 cvar quand je tape "cvarlist" dans la console), mais il crash comme précédemment lorsque je lance une carte, quelconque, solo ou multi.

Dans le cas où le nombre de cvar ne peut pas être changé, auriez-vous une idée pour "rassembler" les cvars? Cad pour en faire diminuer le nombre sans pour autant poser soucis dans les menus d'affichage des stats? J'ai des cvars qui servent à des graphiques (cvar contenant en gros des pourcentages) et d'autres qui contiennent des valeurs complètes (integers souvent).

Merci z'a vous!
(PS: le premier problème reste encore d'actualité)


[EDIT]

Trouvé! Je vais finalement employé des huddraw. Ok, c'est visible pour tout le monde, et donc cela forcera chaque joueur à avoir un pk3 différent, mais c'est le meilleur compromis que j'ai trouvé.
« Last Edit: June 08, 2010, 09:35:45 PM by snaky »

raf

  • Administrator
  • Actionnaire chez un fabricant de claviers
  • ******
  • Posts: 1891
Afficher environ 2500 entités
« Reply #2 on: June 10, 2010, 08:14:47 PM »
Concernant le premier problème...
Hypothèse 1
Est que cela pourrait être dû à un effet de clipping sur l'éloignement par rapport au joueur ?
Hypothèse 2
Lorsqu'un objet 3D est au delà d'une certaine distance, il disparait. Est ce qu'il n'y aurait pas un paramètre au niveau de l'objet ?
-= Raf =-
Fan de Lego

Citation guerrière : A vaincre sans péril, on évite des ennuis. (Astérix chez les bretons)


snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Afficher environ 2500 entités
« Reply #3 on: June 10, 2010, 08:51:02 PM »
Merci de ton soutien :)

Pour ce qui est du clipping, je ne vois pas tout à fait ce que tu entends par là... Les entités, spawnées par script, sont des script_model, avec un model 3D on ne peut plus basique (un triangle! pour les tests...). Les models sont en notsolid (local.entity notsolid après avoir définit sa position et son model).

La deuxième hypothèse, bien qu'intéressante car je m'orienterai par là si je suis forcé de rester à moins de 900 entités, n'est pas valide. En effet, j'ai beau me déplacer dans la carte (un cube creux, c'est une carte de test), les seuls models 3D affichés restent les 1000 premiers. Même en m'éloignant des premiers modèles pour aller vers les derniers, ceux-ci ne réapparaissent pas.

De plus, lorsque je supprime une des entités affichées (via remove ou delete), aucune autre ne réapparait. D'apres la commande "entcount" de la console, j'ai bien diminué le nombre d'entités (de 1022 à 900 par exemple), mais les autres entités qui n'étaient précédemment pas affichées n'apparaissent pas pour autant.

Mais si je supprime des entités affichées, et que j'en fais ensuite apparaitre d'autres, ces dernières sont correctement rendues et se trouvent bien sur la carte.

Un message d'avertissement boucle néanmoins sur la console au-delà de 800 entités:

Quote
Delta resquest from out of date entities

Jusqu'ici, en définissant une variable dans la console, je faisais sauter (disparaitre si vous préférez) ce message. Mais peut-être qu'il pourrait donner une piste de sortie à mon soucis.
Pour information, retirer ce message d'erreur se fait en indiquant:

Code: [Select]
cl_nodelta 1
Dans la console. Aucune idée de ce que désignent vraiment les "delta resquests"

raf

  • Administrator
  • Actionnaire chez un fabricant de claviers
  • ******
  • Posts: 1891
Afficher environ 2500 entités
« Reply #4 on: June 11, 2010, 07:12:26 PM »
Quote
Pour ce qui est du clipping, je ne vois pas tout à fait ce que tu entends par là... Les entités, spawnées par script, sont des script_model, avec un model 3D on ne peut plus basique (un triangle! pour les tests...). Les models sont en notsolid (local.entity notsolid après avoir définit sa position et son model).
Je sais que c'est sensé concerner les brushs mais il fallait en parler pour fermer définitivement cette piste.
Quote
La deuxième hypothèse, bien qu'intéressante car je m'orienterai par là si je suis forcé de rester à moins de 900 entités, n'est pas valide. En effet, j'ai beau me déplacer dans la carte (un cube creux, c'est une carte de test), les seuls models 3D affichés restent les 1000 premiers. Même en m'éloignant des premiers modèles pour aller vers les derniers, ceux-ci ne réapparaissent pas.

De plus, lorsque je supprime une des entités affichées (via remove ou delete), aucune autre ne réapparait. D'apres la commande "entcount" de la console, j'ai bien diminué le nombre d'entités (de 1022 à 900 par exemple), mais les autres entités qui n'étaient précédemment pas affichées n'apparaissent pas pour autant.

Mais si je supprime des entités affichées, et que j'en fais ensuite apparaitre d'autres, ces dernières sont correctement rendues et se trouvent bien sur la carte.

Un message d'avertissement boucle néanmoins sur la console au-delà de 800 entités:

Jusqu'ici, en définissant une variable dans la console, je faisais sauter (disparaitre si vous préférez) ce message. Mais peut-être qu'il pourrait donner une piste de sortie à mon soucis.
Pour information, retirer ce message d'erreur se fait en indiquant:

Code: [Select]
cl_nodelta 1
Dans la console. Aucune idée de ce que désignent vraiment les "delta resquests"

Trouvé sur un site Quake
Code: [Select]
cl_nodelta "0"
0 : active la "delta compression".
1 : supprime la "delta compression".
La delta compression est la compression des données échangées entre le client et le serveur. La supprimer augmente donc le trafic. Pour des besoins de tests et débuggage uniquement.
Cependant, je me pose des questions sur la pertinence de ce paramètre quand tout se passe sur la même machine.
« Last Edit: June 11, 2010, 07:13:04 PM by raf »
-= Raf =-
Fan de Lego

Citation guerrière : A vaincre sans péril, on évite des ennuis. (Astérix chez les bretons)


snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Afficher environ 2500 entités
« Reply #5 on: June 11, 2010, 07:44:06 PM »
Meme en solo, medal considère que la relation client-serveur reste, et le serveur est aussi le client... Lourd à gérer pour la machine, plus facile à coder!

Ok, j'veux bien essayer sans "cl_nodelta 1"...
Mais si c'est un soucis de traffic, existe-t-il une commande pour augmenter le traffic?

raf

  • Administrator
  • Actionnaire chez un fabricant de claviers
  • ******
  • Posts: 1891
Afficher environ 2500 entités
« Reply #6 on: June 11, 2010, 08:25:20 PM »
Ce que je comprend en regardant le code qui génère l'erreur, c'est que le delta update échangé entre client et serveur contient les changements. Est ce qu'il y aurait trop de modifications d'entités pour pouvoir tenir dans un seul échange ? Faudrait il étager l'apparition des entités dans le temps pour contourner le problème ?
-= Raf =-
Fan de Lego

Citation guerrière : A vaincre sans péril, on évite des ennuis. (Astérix chez les bretons)


snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Afficher environ 2500 entités
« Reply #7 on: June 12, 2010, 01:22:42 PM »
J'ai tenté également, mais pas de changement... waitframe, wait 1 ou rien, le problème persiste...