10 votes

Comment puis-je accélérer le jeu ?

Je voudrais augmenter le taux de tiques de ma simulation de chatons. J'ai essayé de modifier gamePage.rate = 10 dans la console, ce qui devrait le doubler (il commence à 5) mais cela ne semble pas avoir d'effet.

Est-il possible d'augmenter le taux de tic-tac ?

9voto

bloodrizer Points 1000

Il ne faut pas trop jouer avec le tick() ou le taux. Le jeu est optimisé pour fonctionner de manière plus ou moins fluide avec un taux de 5 tics par seconde, et vous devriez avoir un impact significatif sur les performances avec un taux de 10 et plus.

Ce que vous pouvez faire, cependant, c'est obtenir quelques points de parangon (même 100 ou 200 feraient une différence notable) par le biais de la réinitialisation ou de la console. Les parangons multiplient tous vos taux de production, ce qui équivaut à un taux de mise à jour plus rapide.

3voto

corsiKa Points 2099

Je suis toujours heureux que quelqu'un d'autre puisse faire cela d'une manière plus naturelle, orientée vers le ralenti... Mais voici ma solution jusqu'à présent.

Cela implique quelques vomissements de console, avec la fonction suivante :

var skip = function(min, sec) {

  // if we click skip while paused, we want to
  // remember that and re-set it
  var wasPaused = gamePage.wasPaused;

  // unpause the game so tick() operates properly
  gamePage.isPaused = false;

  // should replace 5 with gamePage.rate but it doesn't
  // seem to change anyway, so whatevs
  var tix = (min * 60 + sec) * 5;

  // run the loop tix number of times
  while(tix --> 0) {
    // perform the tick
    gamePage.tick();

    // i kept killing my kittens, so i put this in here
    // to protect me a little bit - it's just a general safeguard
    var food = gamePage.resPool.get('catnip');
    if(food.value / food.maxValue < 0.05) {
      gamePage.isPaused = true;
      alert('warning: food low - aborting early');
      return;
    }
  }

  // assuming we didn't return early because of
  // a famine, return the game's paused state to
  // whatever it was when we started
  gamePage.isPaused = wasPaused;
}

Ouvrez votre console de développement (appuyez sur F12), collez ce code et appuyez sur Entrée. Vous devez faire cela à chaque fois que vous rechargez le jeu.

Ensuite, je crée quelques signets, comme un nommé "5 sec" avec le lien javascript:skip(0,5) et "1 min" avec le lien javascript:skip(1,0) .

Notez que si vous sautez trop souvent, vous allez manquer vos événements célestes. Mais vous pouvez l'utiliser pour "tourner au ralenti" pendant quelques minutes à la fois et c'est très, très utile pour moi !

3voto

ashkanr Points 343

Il est possible d'augmenter le taux de tic-tac. Je n'ai pas beaucoup étudié le code, et je ne propose pas de réponse impliquant de modifier le code du jeu de base pour la boucle de jeu. Cependant, je vais fournir un code qui exécute une autre boucle en parallèle. Le code peut être placé dans un bookmarklet ou un script utilisateur, et consiste à appeler la fonction gamePage.tick() (c'est-à-dire la fonction qui incrémente le jeu) rapidement.

Exécutez ce code pour régler le taux de tic-tac le plus élevé possible :

setInterval(

    function () {

        //Increment the game:
        gamePage.tick();

    },
    //Run the loop every 0 milliseconds:
    0
);

N'hésitez pas à modifier le 0 à quelque chose d'autre - il ne devrait pas s'exécute toutes les 0 millisecondes, car la plupart des navigateurs ont une période d'intervalle minimale (généralement 10 millisecondes) qu'ils appliquent par défaut si la valeur est inférieure, mais je ne peux pas le garantir.

Un simple bookmarklet qui implémente le code (il suffit de rafraîchir pour le désactiver) :

javascript:setInterval(function(){gamePage.tick()},0)

Notez que le code du bookmarklet peut aussi être simplement collé dans la barre d'URL, et s'exécutera normalement.

Si vous vraiment Je veux pouvoir désactiver le script sans rafraîchir la page, puis affecter l'intervalle à une variable, comme suit (n'hésitez pas à changer le nom de la variable, il est sans importance) :

var tickTock = setInterval(

    function () {

        gamePage.tick();

    },
    0
);

Et pour le désactiver, exécutez le code suivant :

clearInterval(tickTock);

Et enfin, les bookmarklets pour cela - d'abord le bookmarklet de création de boucle :

javascript:a=setInterval(function(){gamePage.tick()},0)

et ensuite le bookmarklet de suppression de boucle :

javascript:clearInterval(a)

1voto

Vitruvie Points 356

Les principales fonctions de jeu que vous souhaitez exécuter plus souvent sont les suivantes game.updateModel et game.calendar.tick . Exécuter game.tick mettra à jour l'interface utilisateur et aura de mauvaises performances. Voici un hack pour augmenter la vitesse du jeu, qui comprend une pratique Speed: (cliquez pour augmenter, cliquez avec le bouton droit pour diminuer)

if (!window.speed) speed = 1;
if (!game.realUpdateModel) game.realUpdateModel = game.updateModel;
game.updateModel = () => {
    for (var i = 0; i < speed; i++) { 
        if (i !== 0) {
            game.calendar.tick();
        }
        game.realUpdateModel();
    }
}
setSpeed = spd => { 
    if (spd >= 1) { 
        speed = spd; 
        updateSpeedText();
    } 
}
speedUp = () => setSpeed(speed * 2);
slowDown = () => setSpeed(speed / 2);
$("#timeSetting").remove();
$('#gamePageContainer').append($('<div id="timeSetting" style="position: absolute; top: 50px; right: 10px;" onclick="event.preventDefault(); speedUp();" oncontextmenu="event.preventDefault(); slowDown();">'));
updateSpeedText = () => $("#timeSetting").html("Speed: " + speed + "x" + (speed > 30 ? " <br />(right click<br />to lower)" : ""));
updateSpeedText();

Vous pouvez également augmenter game.rate ou game.getRateUI pour qu'ils correspondent afin que les valeurs de ressources par seconde soient correctes, mais le premier rendra vos ingénieurs plus lents (codés pour être de 10 minutes en tout cas) et le second donnera à votre calendrier une vitesse erronée lors de l'utilisation du flux temporel (en raison d'un bug).

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X