MV3D - 3D rendering for RMMV with Babylon.js

● ARCHIVED · READ-ONLY
Started by Cutievirus 1560 posts Page 47 of 78 View original ↗
  1. Made bad rain.
    Rain


    Code:
    mv3d.createRain = function () {
    
        var coreSphere = BABYLON.MeshBuilder.CreateSphere("coreSphere", {diameter: 0.01, segments: 1}, mv3d.scene);
        coreSphere.x = 52;
        coreSphere.y = 47;
        coreSphere.z = 20;
    
    
        var boxEmitter = new BABYLON.BoxParticleEmitter();
        boxEmitter.minEmitBox = new BABYLON.Vector3(-50, 0, -50);
        boxEmitter.maxEmitBox = new BABYLON.Vector3(50, 0, 50);
    
        var particleSystem = new BABYLON.GPUParticleSystem("Rain", 45000, mv3d.scene);
        particleSystem.particleTexture = new BABYLON.Texture("/img/MV3D/Rain.png", mv3d.scene);
        particleSystem.color1 = new BABYLON.Color4(0.7, 0.8, 1.0, 0.5);
        particleSystem.color2 = new BABYLON.Color4(0.7, 0.8, 1.0, 1.0);
        particleSystem.colorDead = new BABYLON.Color4(0.7, 0.8, 1.0, 0.1);
        particleSystem.minLifeTime = 0.5;
        particleSystem.maxLifeTime = 0.5;
        particleSystem.minSize = 0.2;
        particleSystem.maxSize = 0.8;
        particleSystem.emitter = coreSphere;
        particleSystem.particleEmitterType = boxEmitter;
        particleSystem.emitRate = 15000;
        particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_STANDARD;
        particleSystem.gravity = new BABYLON.Vector3(0, -1.81, 0);
        particleSystem.minEmitPower = -250;
        particleSystem.maxEmitPower = -500;
     
        particleSystem.start();
    
        mv3d.rain = coreSphere;
        mv3d.rainParticle = particleSystem;
    };
    I took the rain from mog weather and put it in MV3D folder named Rain. Can create it with script call mv3d.createRain();
    It has to follow player around with a parallel though as linking to map objects doesn't work right as y and z seems reversed, but the object I create and link it to that follows player works for some reason, put a wait between movement.
    Code:
    mv3d.rain.x = $gamePlayer.x;
    mv3d.rain.y = $gamePlayer.y;
    mv3d.rain.z = $gamePlayer.z + 20;
    To stop it completely do a script call of
    Code:
    mv3d.rain.dispose();
    mv3d.rainParticle.dispose();
    to stop and start temporarily do
    Code:
    mv3d.rainParticle.stop();
    mv3d.rainParticle.start();
    to edit things mid playing you can edit the properties of mv3d.rainParticle and do
    Code:
    mv3d.rainParticle.reset();
    though it doesn't really edit mid play and resets it, should probably increase speed if you want to do that stuff. The emitBox settings is the range of the rain, so -50 x, 0 z, -50 y and +50 x, 0 z, +50 y from player position, change it in file can't edit later or I didn't really care to try to edit it. Starting position of it is 20 z higher than player. No idea if there's any problems with it, it will still be there when you change maps but without parallel it will be at 0,0 corner. It also uses GPU rendering so shouldn't really lag at all?


    EDIT: Did find a problem with saving, you can use this
    Code:
    Game_System.prototype.onAfterLoad = function() {
        Graphics.frameCount = this._framesOnSave;
        AudioManager.playBgm(this._bgmOnSave);
        AudioManager.playBgs(this._bgsOnSave);
        if ($gameSwitches.value(1)) {
                mv3d.createRain();
        }
    };
    Just put switch you want to turn on while raining into it. It restarts so you could always switch to a faster particle call if you want. You do need to put the wait in the parallel to before the movement script, you don't need it low, 20 frames or even really high works, probably. Or you could add it to check every step taken instead of a parallel in Game_Player section.
  2. Hey, I don't know if this has already been answered somewhere, but is it at all possible to make cornered slope pieces? For example, if I want to have a tapered roof, or a building that has a pointed roof (like a tower), can a I make a sloped roof piece specifically for corners?
  3. Arvalis said:
    Hey, I don't know if this has already been answered somewhere, but is it at all possible to make cornered slope pieces? For example, if I want to have a tapered roof, or a building that has a pointed roof (like a tower), can a I make a sloped roof piece specifically for corners?

    You probably can using events playing with their pitch and yaw settings with triangle shaped characters, probably annoying and need a lot of events though.

    Playing around with shapes is also possible I guess.
    Cone.png
    I made that with
    Code:
    var createCone = function() {
        var cone = BABYLON.MeshBuilder.CreateCylinder("cone", {diameterTop: 0, diameterBottom: -4, tessellation: 4}, mv3d.scene);
        cone.x = 50;
        cone.y = 50;
        cone.z = 5;
            var coreMat = new BABYLON.StandardMaterial("coreMat", mv3d.scene)
        coreMat.emissiveColor = new BABYLON.Color3(0.3773, 0.0930, 0.0266);
        coreMat.emissiveTexture = new BABYLON.Texture("/img/MV3D/errorTexture.png", mv3d.scene);
        coreMat.emissiveTexture.hasAlpha = true;
        cone.material = coreMat;
        mv3d.roof = cone;
    };
    No idea how to texture it right though, alpha didn't seem to work even without the color and the texture placement used I don't know.
    Creating Set Shapes | Babylon.js Documentation
    Code:
        var faceUV = [];
        faceUV[1] =    new BABYLON.Vector4(6, 0, 0, 1);
        var cone = BABYLON.MeshBuilder.CreateCylinder("cone", {diameterTop: 0,faceUV: faceUV, diameterBottom: -4, tessellation: 4}, mv3d.scene);
    You can play with texture placement with the faceUV array.
    Cone2.png
  4. Got a lot of nice things looking through that site, mainly post processing, my random 1 attempt worked for all of them, no idea if there's any issues but you would need to call them at load time as they don't save.

    Post Processing


    Code:
    mv3d.engine.postProcesses.push(new BABYLON.HighlightsPostProcess("highlights", 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.ConvolutionPostProcess("Sepia", BABYLON.ConvolutionPostProcess.EmbossKernel, 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.BlurPostProcess("Horizontal blur", new BABYLON.Vector2(1.0, 0), 32.0, 0.25, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.BlackAndWhitePostProcess("bandw", 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.ColorCorrectionPostProcess("color_correction", "/img/MV3D/lut-inverted.png", 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.ColorCorrectionPostProcess("color_correction", "/img/MV3D/lut-highcontrast.png", 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.ColorCorrectionPostProcess("color_correction", "/img/MV3D/lut-posterized.png", 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.RefractionPostProcess("Refraction", "/img/MV3D/1339.jpg", new BABYLON.Color3(1.0, 1.0, 1.0), 0.5, 0.5, 1.0, mv3d.camera));
    mv3d.engine.postProcesses.push(new BABYLON.ColorCorrectionPostProcess("color_correction", "/img/MV3D/Rainbow.lut", 1.0, mv3d.camera));
    The color thing needs lut files in png format, refraction needs normal map stuff, I found things on google and 3 from site itself.
    How To Use Post Processes | Babylon.js Documentation .lut files don't seem to work and instead give that broken red and black effect or no image found, they also break parallaxes while on.

    Next is fxaa.
    Fxaa walk

    Fxaa stand

    Code:
    mv3d.engine.postProcesses.push(new BABYLON.FxaaPostProcess("fxaa", 1.0, mv3d.camera));
    to change to different settings just change number, I only tried up to 6, biggest difference is 1 and 2 and 0, 1 seems to be good at close but horrible far while 2 is just good at everything, even removes that weird wobble from the back NPC.

    To remove them use
    Code:
    mv3d.postPop = function() {
        this.engine.postProcesses.pop();
        this.camera._postProcesses.pop();
    };
    as a plugin and script call mv3d.postPop(); which removes last one used.

    Also got fog from https://www.babylonjs-playground.com/#BHNVUE#2
    Fog

    Forgot to turn on move with player but whatever works same as rain, oh and the fog doesn't seem to play nicely with the bush tiles, as you can clearly see.

    Code:
    mv3d.createFog = function () {
    
        var fountain = BABYLON.Mesh.CreateBox("foutain", .01, mv3d.scene);
        fountain.visibility = 0;
        fountain.x = $gamePlayer.x;
        fountain.y = $gamePlayer.y;
        fountain.z = $gamePlayer.z;
    
    
    
    
    
        particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 50000 }, mv3d.scene);
        particleSystem.manualEmitCount = particleSystem.activeParticleCount;
        particleSystem.minEmitBox = new BABYLON.Vector3(-50, 0, -50); // Starting all from
        particleSystem.maxEmitBox = new BABYLON.Vector3(50, 1, 50); // To..
     
    
        particleSystem.particleTexture = new BABYLON.Texture("/img/MV3D/Fog.png", mv3d.scene);
        particleSystem.emitter = fountain;
     
        particleSystem.color1 = new BABYLON.Color4(0.8, 0.8, 0.8, 0.1);
        particleSystem.color2 = new BABYLON.Color4(.95, .95, .95, 0.15);
        particleSystem.colorDead = new BABYLON.Color4(0.9, 0.9, 0.9, 0.1);
        particleSystem.minSize = 3.5;
        particleSystem.maxSize = 5.0;
        particleSystem.minLifeTime = Number.MAX_SAFE_INTEGER;
        particleSystem.emitRate = 50000;
        particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_STANDARD;
        particleSystem.gravity = new BABYLON.Vector3(0, 0, 0);
        particleSystem.direction1 = new BABYLON.Vector3(0, 0, 0);
        particleSystem.direction2 = new BABYLON.Vector3(0, 0, 0);
        particleSystem.minAngularSpeed = -2;
        particleSystem.maxAngularSpeed = 2;
        particleSystem.minEmitPower = .5;
        particleSystem.maxEmitPower = 1;
        particleSystem.updateSpeed = 0.005;
     
        particleSystem.start();
     
        mv3d.fog = fountain;
        mv3d.fogParticle = particleSystem;
    };

    Also made this rainbow field barrier thing from https://www.babylonjs-playground.com/#4ZN4K9#0
    I barely changed anything so it should be easy to figure out how to do it based off my previous examples.
    Barrier
  5. How to do this ?
  6. Put code above into plugin and script call mv3d.createFog();
    Need an image named Fog.png in mv3d folder https://raw.githubusercontent.com/aWeirdo/Babylon.js/master/smoke_15.png
    I used that from https://www.babylonjs-playground.com/#BHNVUE#2
    make a parallel similar to the rain example posted above, but named mv3d.fog/mv3d.fogParticles instead or just leave it a single place by editing initial placement. To edit parameters learn how they work on this page.
    Particle System Intro | Babylon.js Documentation
  7. glaphen said:
    Put code above into plugin and script call mv3d.createFog();
    Need an image named Fog.png in mv3d folder https://raw.githubusercontent.com/aWeirdo/Babylon.js/master/smoke_15.png
    I used that from https://www.babylonjs-playground.com/#BHNVUE#2
    make a parallel similar to the rain example posted above, but named mv3d.fog/mv3d.fogParticles instead or just leave it a single place by editing initial placement. To edit parameters learn how they work on this page.
    Particle System Intro | Babylon.js Documentation
    mv3d.js seems to be compressed ... I can't insert any code in it ...

    Your work looks esoteric ...

    awesome....
  8. seaotter said:
    mv3d.js seems to be compressed ... I can't insert any code in it ...

    Your work looks esoteric ...

    awesome....

    Just make a new text file, change it from .txt to .js with whatever name you want and put the code in there, enable in plugin manager.
  9. How do I get the 2D sprites such as the fences and trees to be in a 3D space?
    This is what it looks like to me right now. Also, I'm very happy and impressed so far with what I have been able to do with this so far.

    Screen 1.JPG
  10. glaphen

    Yes, it looks good, but it might be strange with the With bushes


    QKDQKJ.jpg
  11. mv3d.createFog = function () {

    var fountain = BABYLON.Mesh.CreateBox("foutain", .01, mv3d.scene);
    fountain.visibility = 0;
    fountain.x = $gamePlayer.x;
    fountain.y = $gamePlayer.y;
    fountain.z = $gamePlayer.z;





    particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 50000 }, mv3d.scene);
    particleSystem.manualEmitCount = particleSystem.activeParticleCount;
    particleSystem.minEmitBox = new BABYLON.Vector3(-50, 0, -50); // Starting all from
    particleSystem.maxEmitBox = new BABYLON.Vector3(50, 1, 50); // To..


    particleSystem.particleTexture = new BABYLON.Texture("/img/MV3D/Fog.png", mv3d.scene);
    particleSystem.emitter = fountain;

    particleSystem.color1 = new BABYLON.Color4(0.8, 0.8, 0.8, 0.1);
    particleSystem.color2 = new BABYLON.Color4(.95, .95, .95, 0.15);
    particleSystem.colorDead = new BABYLON.Color4(0.9, 0.9, 0.9, 0.1);
    particleSystem.minSize = 3.5;
    particleSystem.maxSize = 5.0;
    particleSystem.minLifeTime = Number.MAX_SAFE_INTEGER;
    particleSystem.emitRate = 50000;
    particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_STANDARD;
    particleSystem.gravity = new BABYLON.Vector3(0, 0, 0);
    particleSystem.direction1 = new BABYLON.Vector3(0, 0, 0);
    particleSystem.direction2 = new BABYLON.Vector3(0, 0, 0);
    particleSystem.minAngularSpeed = -2;
    particleSystem.maxAngularSpeed = 2;
    particleSystem.minEmitPower = .5;
    particleSystem.maxEmitPower = 1;
    particleSystem.updateSpeed = 0.005;

    particleSystem.start();

    mv3d.fog = fountain;
    mv3d.fogParticle = particleSystem;
    };
    --------------------------------------

    sitll no fog...
    nofog.png
  12. seaotter said:
    mv3d.createFog = function () {

    var fountain = BABYLON.Mesh.CreateBox("foutain", .01, mv3d.scene);
    fountain.visibility = 0;
    fountain.x = $gamePlayer.x;
    fountain.y = $gamePlayer.y;
    fountain.z = $gamePlayer.z;





    particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 50000 }, mv3d.scene);
    particleSystem.manualEmitCount = particleSystem.activeParticleCount;
    particleSystem.minEmitBox = new BABYLON.Vector3(-50, 0, -50); // Starting all from
    particleSystem.maxEmitBox = new BABYLON.Vector3(50, 1, 50); // To..


    particleSystem.particleTexture = new BABYLON.Texture("/img/MV3D/Fog.png", mv3d.scene);
    particleSystem.emitter = fountain;

    particleSystem.color1 = new BABYLON.Color4(0.8, 0.8, 0.8, 0.1);
    particleSystem.color2 = new BABYLON.Color4(.95, .95, .95, 0.15);
    particleSystem.colorDead = new BABYLON.Color4(0.9, 0.9, 0.9, 0.1);
    particleSystem.minSize = 3.5;
    particleSystem.maxSize = 5.0;
    particleSystem.minLifeTime = Number.MAX_SAFE_INTEGER;
    particleSystem.emitRate = 50000;
    particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_STANDARD;
    particleSystem.gravity = new BABYLON.Vector3(0, 0, 0);
    particleSystem.direction1 = new BABYLON.Vector3(0, 0, 0);
    particleSystem.direction2 = new BABYLON.Vector3(0, 0, 0);
    particleSystem.minAngularSpeed = -2;
    particleSystem.maxAngularSpeed = 2;
    particleSystem.minEmitPower = .5;
    particleSystem.maxEmitPower = 1;
    particleSystem.updateSpeed = 0.005;

    particleSystem.start();

    mv3d.fog = fountain;
    mv3d.fogParticle = particleSystem;
    };
    --------------------------------------

    sitll no fog...
    View attachment 137223

    You put it into a plugin file, enabled it in plugin manager then did a script call of mv3d.createFog();
    Code:
    mv3d.createFog = function () {
    
        var fountain = BABYLON.Mesh.CreateBox("foutain", .01, mv3d.scene);
        fountain.visibility = 0;
        fountain.x = $gamePlayer.x;
        fountain.y = $gamePlayer.y;
        fountain.z = $gamePlayer.z;
    
    
    
    
        if (BABYLON.GPUParticleSystem.IsSupported) {
        particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 50000 }, mv3d.scene);
         } else {
         particleSystem = new BABYLON.ParticleSystem("particles", 2500 , mv3d.scene);
         }
    
        particleSystem.manualEmitCount = particleSystem.activeParticleCount;
        particleSystem.minEmitBox = new BABYLON.Vector3(-50, 0, -50); // Starting all from
        particleSystem.maxEmitBox = new BABYLON.Vector3(50, 1, 50); // To..
    
    
        particleSystem.particleTexture = new BABYLON.Texture("/img/MV3D/Fog.png", mv3d.scene);
        particleSystem.emitter = fountain;
    
        particleSystem.color1 = new BABYLON.Color4(0.8, 0.8, 0.8, 0.1);
        particleSystem.color2 = new BABYLON.Color4(.95, .95, .95, 0.15);
        particleSystem.colorDead = new BABYLON.Color4(0.9, 0.9, 0.9, 0.1);
        particleSystem.minSize = 3.5;
        particleSystem.maxSize = 5.0;
        particleSystem.minLifeTime = Number.MAX_SAFE_INTEGER;
        particleSystem.emitRate = 50000;
        particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_STANDARD;
        particleSystem.gravity = new BABYLON.Vector3(0, 0, 0);
        particleSystem.direction1 = new BABYLON.Vector3(0, 0, 0);
        particleSystem.direction2 = new BABYLON.Vector3(0, 0, 0);
        particleSystem.minAngularSpeed = -2;
        particleSystem.maxAngularSpeed = 2;
        particleSystem.minEmitPower = .5;
        particleSystem.maxEmitPower = 1;
        particleSystem.updateSpeed = 0.005;
    
        particleSystem.start();
    
        mv3d.fog = fountain;
        mv3d.fogParticle = particleSystem;
    };
    I mean maybe you don't have good enough GPU, try this version, CPU can't handle as much and I have no idea what it does when not supported.
  13. Great ! I got it !

    great.png

    but fog too much at 30 sec after....

    toomcuh.png

    How to stop creat more fog at 30 sec ?
  14. How to Different side?
    From the example, I use this code
    B,5,25:side(B,5,25),top(B,5,24),height(2)
    but will make the sides different.
    Can this option be set?
    QZaZgS.jpg
  15. palatkorn said:
    How to Different side?
    From the example, I use this code
    B,5,25:side(B,5,25),top(B,5,24),height(2)
    but will make the sides different.
    Can this option be set?
    QZaZgS.jpg

    RIght now, you have to do sides as events, since sides from tiles config will use all 4 sides. This is the only workaround at the moment.
  16. seaotter said:
    Great ! I got it !

    View attachment 137246

    but fog too much at 30 sec after....

    View attachment 137249

    How to stop creat more fog at 30 sec ?

    Learn what you can do with the particles here.
    Particle System Intro | Babylon.js Documentation In this case you can reduce the amount by reducing the first call.
    particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 50000 }, mv3d.scene);
    capacity is 50000, lower it to the amount you want, you can also play with other settings like the size of it or the color or the radius to spread it out over greater distances. You change that in the plugin file itself.
  17. @glaphen sems like you are having fun with babylon. Good work, but took me a bit to get what the ffxa videos were trying to show
    Also oh, babylon has its own particles uh...

    @ZAKERY you need to set them to "pop" on the tileset. Fences have an already-made setting using the terrain tag 2.

    @seaotter were you able to make chrono engine work again? I made a fix for it, just make a js file and put it under allchrono engine and mv3d plugins, and in it paste
    JavaScript:
    const _mv3d_mogce_createcharacterfor = mv3d.createCharacterFor;
    mv3d.createCharacterFor = function(char,order){
        if (!char._preLoad) {
            _mv3d_mogce_createcharacterfor.apply(this,arguments);
        }
    }
  18. Waterguy said:
    @glaphen sems like you are having fun with babylon. Good work, but took me a bit to get what the ffxa videos were trying to show
    Also oh, babylon has its own particles uh...

    @ZAKERY you need to set them to "pop" on the tileset. Fences have an already-made setting using the terrain tag 2.

    @seaotter were you able to make chrono engine work again? I made a fix for it, just make a js file and put it under allchrono engine and mv3d plugins, and in it paste
    JavaScript:
    const _mv3d_mogce_createcharacterfor = mv3d.createCharacterFor;
    mv3d.createCharacterFor = function(char,order){
        if (!char._preLoad) {
            _mv3d_mogce_createcharacterfor.apply(this,arguments);
        }
    }
    Great, fix now!
  19. glaphen said:
    Learn what you can do with the particles here.
    Particle System Intro | Babylon.js Documentation In this case you can reduce the amount by reducing the first call.
    particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 50000 }, mv3d.scene);
    capacity is 50000, lower it to the amount you want, you can also play with other settings like the size of it or the color or the radius to spread it out over greater distances. You change that in the plugin file itself.
    mv3d.createFog at last version can't run

    >_<
  20. seaotter said:
    01. I got mv3d.createFog is not a function
    02.mv3d.createFog at last version can't run

    >_<

    How are you changing it, it's just changing the number in the file.
    Code:
    mv3d.createFog = function () {
    
        var fountain = BABYLON.Mesh.CreateBox("foutain", .01, mv3d.scene);
        fountain.visibility = 0;
        fountain.x = $gamePlayer.x;
        fountain.y = $gamePlayer.y;
        fountain.z = $gamePlayer.z;
    
    
    
    
        if (BABYLON.GPUParticleSystem.IsSupported) {
        particleSystem = new BABYLON.GPUParticleSystem("particles", { capacity: 25000 }, mv3d.scene);
         } else {
         particleSystem = new BABYLON.ParticleSystem("particles", 2500 , mv3d.scene);
         }
    
        particleSystem.manualEmitCount = particleSystem.activeParticleCount;
        particleSystem.minEmitBox = new BABYLON.Vector3(-50, 0, -50); // Starting all from
        particleSystem.maxEmitBox = new BABYLON.Vector3(50, 1, 50); // To..
    
    
        particleSystem.particleTexture = new BABYLON.Texture("/img/MV3D/Fog.png", mv3d.scene);
        particleSystem.emitter = fountain;
    
        particleSystem.color1 = new BABYLON.Color4(0.8, 0.8, 0.8, 0.1);
        particleSystem.color2 = new BABYLON.Color4(.95, .95, .95, 0.15);
        particleSystem.colorDead = new BABYLON.Color4(0.9, 0.9, 0.9, 0.1);
        particleSystem.minSize = 3.5;
        particleSystem.maxSize = 5.0;
        particleSystem.minLifeTime = Number.MAX_SAFE_INTEGER;
        particleSystem.emitRate = 50000;
        particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_STANDARD;
        particleSystem.gravity = new BABYLON.Vector3(0, 0, 0);
        particleSystem.direction1 = new BABYLON.Vector3(0, 0, 0);
        particleSystem.direction2 = new BABYLON.Vector3(0, 0, 0);
        particleSystem.minAngularSpeed = -2;
        particleSystem.maxAngularSpeed = 2;
        particleSystem.minEmitPower = .5;
        particleSystem.maxEmitPower = 1;
        particleSystem.updateSpeed = 0.005;
    
        particleSystem.start();
    
        mv3d.fog = fountain;
        mv3d.fogParticle = particleSystem;
    };
    2 keyboard button presses now it's 25000 instead of 50000.