
OmniGen
Eliminate server slowdowns thanks to OmniGen's optimized generation and its multiple features.
Список изменений
OmniGen 0.3.37.18-BETA
🗺️ Nouveauté : la minimap
Une carte du terrain en haut à droite de l'écran, alimentée par les données que le mod possède déjà. Un pixel = un chunk, nord en haut, avec un ombrage du relief pour qu'on reconnaisse un paysage plutôt qu'une nappe de couleur. Elle utilise exactement les mêmes couleurs que l'horizon lointain : ce que vous voyez sur la carte est ce que vous verrez en tournant la tête.
Activée par défaut, et désactivable dans les options d'OmniGen (à côté du compteur de FPS). Le choix est mémorisé : si vous préférez une autre minimap, coupez-la une fois et elle ne reviendra pas.
⚡ Performances : le défaut qui coûtait le plus cher
Un profilage a montré que 16,7 % du temps de rendu partait dans des recherches de table de hachage. La cause tenait en une ligne : la manière de calculer la clé d'un chunk faisait atterrir tous les chunks d'une même diagonale au même endroit de la table. Sur une carte d'un million et demi de chunks, cela revenait à ranger 1,5 million d'entrées dans 2 048 cases — chaque consultation devait alors parcourir un arbre de plusieurs centaines d'éléments, seize fois par image.
Après correction, ce coût tombe à 2,3 %. Un profil de contrôle le confirme : la fonction la plus lourde a purement disparu du classement.
Effet le plus net : le jeu ne se dégrade plus au fil de la session. L'ancien coût grandissait avec le nombre de chunks en mémoire — plus vous jouiez longtemps, plus chaque recherche devenait lente. Ce n'était donc pas la distance d'affichage qui pesait, c'était la durée de jeu.
🔁 Correction : le terrain qui disparaissait et réapparaissait
Certains joueurs voyaient une zone lointaine s'effacer puis revenir, environ toutes les trente secondes.
La cause : le régulateur de distance automatique oscillait. Il réduisait la distance de 15 %, la remontait de 10 %, et recommençait toutes les trois secondes — un aller-retour complet prenant vingt à quarante secondes. À chaque réduction, l'anneau extérieur sortait du rayon d'affichage ; à chaque remontée, il revenait.
Pire : le rayon de libération de mémoire suivait cette valeur mouvante. Une baisse d'images passagère ne masquait donc pas le terrain lointain, elle le supprimait — et la remontée retrouvait un vide qu'elle avait elle-même créé, ce qui déclenchait une nouvelle réduction. La boucle s'alimentait toute seule.
Quatre verrous ont été posés, réunis sous l'option Distance stable (activée) :
- une marge de tolérance à l'affichage : le rayon décide de ce qu'on fabrique, plus de ce qu'on efface
- la libération de mémoire suit désormais votre réglage, pas la valeur du moment
- après chaque augmentation, un délai laisse le terrain neuf arriver avant tout nouveau jugement
- le plancher du régulateur ne peut plus dépasser votre propre réglage (une distance basse était ignorée)
Le régulateur écrit maintenant chacune de ses décisions dans le journal.
🧠 Serveur : mémoire
⚠️ Cette version ne garantit pas la disparition des problèmes de mémoire signalés. Elle supprime un gaspillage réel et mesuré, mais l'ampleur du gain dépend beaucoup de la façon dont votre serveur est utilisé. Les mesures ci-dessous viennent d'un serveur de test, pas du vôtre.
Ce qui a changé :
- un cache serveur conservait 800 octets par chunk, indéfiniment, pour répondre à une simple question par oui ou non. Ces données étaient envoyées aux clients puis plus jamais relues. Le cache est devenu une simple liste de repères : seize fois plus léger, comportement identique.
- le même défaut de hachage que côté client s'appliquait au serveur. Il ne coûtait pas que du temps : les tables dégénérées y consomment aussi davantage de mémoire.
- une structure interne ajoutée récemment grandissait sans limite avec la durée de jeu. Elle est maintenant bornée et nettoyée périodiquement.
Nouveau : le serveur rend compte de lui-même. Toutes les cinq minutes, une ligne indique la mémoire utilisée et le nombre d'éléments suivis par OmniGen, avec une alerte au-delà de 85 % du tas. Si vous rencontrez une saturation, votre journal contiendra désormais les chiffres nécessaires — sans avoir à refaire l'incident.
🐌 Nouvelle option : reconstruction paresseuse (désactivée par défaut)
Le terrain très lointain se reconstruisait aussi souvent que celui sous vos pieds, pour des changements invisibles à cette distance. Cette option étire ce délai avec l'éloignement — le proche reste réactif, le lointain se regroupe. Sur les mesures de test, cela divise le nombre d'envois vers la carte graphique par 2 à 4 selon la distance d'affichage.
Elle vise les à-coups, pas la moyenne d'images par seconde. À essayer si votre jeu est globalement fluide mais entrecoupé de saccades.
Un compteur d'envois est écrit dans le journal toutes les trente secondes, option activée ou non, pour que vous puissiez comparer vous-même.
🎨 Correctifs divers
- L'eau s'affichait en gris sur la minimap. La texture d'eau de Minecraft est en niveaux de gris — tout son bleu vient d'une teinte appliquée au rendu, qu'un fluide ne permettait pas de retrouver.
- Le brouillard du terrain lointain ne revenait pas correctement à son état normal lorsque deux couches de rendu se superposaient, ce qui pouvait assombrir excessivement la scène de nuit.
- Le serveur ne redemande plus indéfiniment un chunk que le client vient d'écarter.
- L'écran des options avancées se dispose désormais selon la taille de votre interface. Avec vingt et une bascules, la grille figée à deux colonnes pouvait faire sortir la première rangée hors de l'écran aux grandes échelles d'affichage — des réglages étaient présents mais invisibles.
🐛 Signaler un problème
Le formulaire de retour a été enrichi : il collecte désormais votre configuration automatiquement et pose les questions qui font vraiment gagner du temps — notamment avez-vous testé avec OmniGen seul ?, qui permet à elle seule de distinguer un défaut du mod d'un conflit entre mods.
Tout y est facultatif, mais chaque champ rempli peut représenter des jours de recherche en moins.
Merci à KorinMC pour le premier signalement extérieur du projet. Il a mis au jour un problème qu'un serveur de développement, redémarré sans cesse et généreusement doté en mémoire, ne pouvait structurellement pas révéler.
