Search the Community

Showing results for tags 'phaser'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • HTML5 Game Coding
    • News
    • Game Showcase
    • Coding and Game Design
  • Frameworks
    • Phaser
    • Pixi.js
    • Babylon.js
    • Panda.js
    • melonJS
    • Haxe JS
    • Kiwi.js
  • General
    • General Talk
  • Business
    • Collaborations (un-paid)
    • Jobs (Hiring and Freelance)
    • Services Offered

Found 2,517 results

  1. Hi, I have tilest 16x16. It is exported to json format. I used Tiled app. It works fine until using scaling function. After that colission is not working. Here's my code: create: function() { ='tiled');'tiled', 'tiles'); this.layer ='background'); this.layer.scale.setTo(3, 3); //It disables collissions this.layer.resizeWorld(); this.walls ='walls'); this.walls.scale.setTo(3, 3); //It disables collissions this.layer.resizeWorld(); ...., 2000, true, 'walls'); this.sprite =, 70, 'soldier'); this.sprite.anchor.setTo(0.5, 0.5);; this.sprite.body.setSize(8, 8, 4, 4); this.sprite.scale.setTo(3, 3); } update: function() {, this.walls); ... }
  2. How can I create start menu in Phaser? I found nothing on that.
  3. Hello, I am pretty new to Phaser and also to JavaScript and while coding a game I keep on getting this error " TypeError: Argument 1 of CanvasRenderingContext2D.drawImage could not be converted to any of: HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap." I have been stuck on it for a day or so and I would like to see if someone could help me find where the problem is. I have been following a few tutorials i find on the web on how to work with Phaser and js here is a pastebin of the code.
  4. Hi I have an issue in my game.js these are snippets from the entire code where bullets and enemies overlap, but when they overlap the game crashes?: create : function(){ this.enemies =; this.enemies.enableBody = true; for (var i = 0; i < 1; i++) { var s = this.enemies.create(,, 'enemy1'); = 'enemy1' + s; s.body.collideWorldBounds = true; s.body.bounce.setTo(0.1, 0.1); s.animations.add('walk', [0, 1,]);'walk', 6, true); s.body.velocity.setTo(5 + Math.random() * 40, 5 + Math.random() * 40); } { var f = this.enemies.create(,, 'enemy2'); 'enemy2' + f; f.body.collideWorldBounds = true; f.body.bounce.setTo(0.1, 0.1); f.animations.add('walk', [0, 1,]);'walk', 6, true); f.body.velocity.setTo(5 + Math.random() * 40, 5 + Math.random() * 40); } } update: function() { game.physics.arcade.overlap(this.bullet, this.enemies, this.enemyKill, null, this); enemyKill: function(){ this.enemies.kill(); this.score += 10; this.scoreText.text = 'score: ' + score; }, Thanks
  5. Hi All i was wondering if someone could help me with a phaser state query. I have been learning phaser from and its all for a html index file however the code seems to be different then to what i need if i was to build a game with states. For example i have a player walking animation but converting it for js states seems to be very difficult, i cannot find a tutorial anywhere. Any chance someone could point me in the right direction? happy to share the code Thanks
  6. Can someone tell me, please, why collision does not take place during animation? Here is a game :
  7. How can I change background of the game in Phaser? I am using tileSprite for the bacground and when I destroy current sprite and add new the new one goes at the top of all my game.
  8. Hi, I'm working on my first game using Phaser. Super Endless Kingdom is a top-down arcade shooter/rpg with resource/city management elements. I still consider it to be in beta although it is fully playable and released on Kongregate here: I'd really appreciate any comments, feedback or suggestions anyone has. Also if you can take the time to give the game a rating that would really help (I think part of the reason for the low rating so far is that Kongregate weights a games score down if a game doesn't receive enough real ratings, anyone with more experience could perhaps shed some light on this).
  9. I wrote: background =, 0,,, 'back'); How can I change the spritesheet shown at the back? I already have "back2" preloaded.
  10. Let us suppose I added tileSprite to the window like this : background =, 0,,, 'back'); After that I added a lot of different things above the tileSprite. And now I want to change background without showing it over everything else. How can I do that?
  11. So I'm interested in creating a 2D game (currently partially implemented in Phaser-CE) in JS using dynamic lighting. I want directional lights to cast shadows behind P2 sprites, be customizable by blur, dropoff, intensity, and interact with 2D normal maps (created with Sprite Illuminator), and maybe more (that I don't know yet). After doing some research, I've found a variety of tutorials for implementing point lighting in JS - Game Mechanic Explorer, Red Blob Games, 3D by Mozilla, and Byron Knoll. Phaser-CE has a Filter class for accessing GPU accelerated shaders, but its seems difficult to interface between game sprites and shaders, and there seems to be no ready-made lighting solution. Phaser3 seems to be planning some sort of lighting support, but release is far away. So I don't really want to use these options as they seem fragile or overly difficult. Illuminated seems to be the most popular 2D lighting library, though I remember reading somewhere it has some perf issues (doesn't use WebGL or something, not sure). I also came across this LightingEngine project, which while small/unknown has some really cool demos and really great documentation. Neither of these appear to have SpriteIlluminator integration though. All in all, I'm new to this and want to find the easiest way to get dynamic lighting started in a Phaser-CE game. Before I go down the rabbit hole of a specific library/start re-implementing things, I was wondering if anybody has done something similar and has some guidance. Thanks!
  12. Here is my code: var Main = function(game){ }; var velocityOfTileMoving = 10, speedOfTileGenerating = 15000, speedOfPlayerMovingRightLeft = 150, facing = 'left', sizeOfPlayer = 0.5, me, spaceBar, jumpTimer = 0; Main.prototype = { create: function() { me = this; spaceBar =; //The spacing for the initial platforms me.spacing = 200; //Set the initial score me.score = 0; //Get the dimensions of the tile we are using me.tileWidth ='tile').width; me.tileHeight ='tile').height; //Set the background colour to blue = '479cde';, 0,,, 'back'); //Enable the Arcade physics system; //Add a platforms group to hold all of our tiles, and create a bunch of them me.platforms =; me.platforms.enableBody = true; me.platforms.createMultiple(100, 'tile'); //Create the inital on screen platforms me.initPlatforms(); //Add the player to the screen me.createPlayer(); //Create the score label me.createScore(); //Add a platform every speedOfTileGenerating seconds me.timer =, me.addPlatform, me); //Enable cursor keys so we can create some controls me.cursors =; }, update: function() { //Make the sprite collide with the ground layer, me.platforms); //region delteMaybe //Make the sprite jump when the up key is pushed // if(me.cursors.up.isDown && me.player.body.wasTouching.down) { // me.player.body.velocity.y = -1400; // } // //Make the player go left // if(me.cursors.left.isDown){ // me.player.body.velocity.x = -150; // } // //Make the player go right // if(me.cursors.right.isDown){ // me.player.body.velocity.x = 150; // } //endregion //Check if the player is touching the bottom if(me.player.body.position.y >= - me.player.body.height){ me.gameOver(); } = somethingWasPressed; me.player.body.velocity.x = 0; if(me.cursors.left.isDown) { animateRunLeft(); } else if(me.cursors.right.isDown) { animateRunRight(); } else { if(facing != 'idle') {'idle'); if(facing == 'left') { me.player.frame = 5; } else { me.player.frame = 5; } facing = 'idle'; } } if(jumpHasToOccur()) { me.player.body.velocity.y = -250;'jump'); * 1.450, function(){'idle');}, this); jumpTimer = + 750; } }, gameOver: function(){'Main'); }, addTile: function(x, y) { //Get a tile that is not currently on screen var tile = me.platforms.getFirstDead(); //Reset it to the specified coordinates tile.reset(x, y); tile.body.velocity.y = velocityOfTileMoving; tile.body.immovable = true; //When the tile leaves the screen, kill it tile.checkWorldBounds = true; tile.outOfBoundsKill = true; }, addPlatform: function(y) { //If no y position is supplied, render it just outside of the screen if(typeof(y) == "undefined"){ y = -me.tileHeight; //Increase the players score me.incrementScore(); } //Work out how many tiles we need to fit across the whole screen var tilesNeeded = Math.ceil( / me.tileWidth); //Add a hole randomly somewhere var hole = Math.floor(Math.random() * (tilesNeeded - 3)) + 1; //Keep creating tiles next to each other until we have an entire row //Don't add tiles where the random hole is for (var i = 0; i < tilesNeeded; i++){ if (i != hole && i != hole + 1){ this.addTile(i * me.tileWidth, y); } } }, initPlatforms: function() { var bottom = - me.tileHeight, top = me.tileHeight; //Keep creating platforms until they reach (near) the top of the screen for(var y = bottom; y > top - me.tileHeight; y = y - me.spacing){ me.addPlatform(y); } }, createPlayer: function() { //Add the player to the game by creating a new sprite me.player =, - (me.spacing * 2 + (3 * me.tileHeight)), 'kisameSprite', 'stance/0.png'); me.player.scale.setTo(sizeOfPlayer); //Set the players anchor point to be in the middle horizontally me.player.anchor.setTo(0.5, 1.0); //Enable physics on the player; //Make the player fall by applying gravity me.player.body.gravity.y = 2000; //Make the player collide with the game boundaries me.player.body.collideWorldBounds = true; //Make the player bounce a little me.player.body.bounce.y = 0.1; me.player.animations.add('attackMagic', Phaser.Animation.generateFrameNames('attackMagic/', 0, 24, '.png', 1), 7, false, true); me.player.animations.add('attack', Phaser.Animation.generateFrameNames('attack/', 0, 5, '.png', 1), 10, false, true); me.player.animations.add('left', Phaser.Animation.generateFrameNames('run/', 0, 4, '.png', 1), 10, true, true); me.player.animations.add('idle', Phaser.Animation.generateFrameNames('stance/', 0, 3, '.png', 1), 10, true, true); me.player.animations.add('right', Phaser.Animation.generateFrameNames('run/', 0, 4, '.png', 1), 10, true, true); me.player.animations.add('jump', Phaser.Animation.generateFrameNames('jump/', 0, 3, '.png', 1), 10, false, true); }, createScore: function(){ var scoreFont = "100px Arial"; me.scoreLabel =, 100, "0", {font: scoreFont, fill: "#fff"}); me.scoreLabel.anchor.setTo(0.5, 0.5); me.scoreLabel.align = 'center'; }, incrementScore: function(){ me.score += 1; me.scoreLabel.text = me.score; }, }; function animateRunRight() { me.player.body.velocity.x = speedOfPlayerMovingRightLeft; if(facing != 'right') { me.player.scale.setTo(sizeOfPlayer, sizeOfPlayer);'right'); facing = 'right'; } } function animateRunLeft() { me.player.body.velocity.x = -speedOfPlayerMovingRightLeft; if(facing != 'left') { me.player.scale.setTo(-sizeOfPlayer, sizeOfPlayer);'left'); facing = 'left'; } } function jumpHasToOccur() { var jumButtonClicked = me.cursors.up.isDown || spaceBar.isDown; console.log("jumpButtonClicked == " + jumButtonClicked ); var alreadyOnFloor = me.player.body.onFloor() && > jumpTimer; console.log("alreadyOnFloor == " + alreadyOnFloor); return jumButtonClicked && alreadyOnFloor; } function somethingWasPressed(keyCode) { if(keyEqualTo(keyCode, "a")) {animateAttack();} if(keyEqualTo(keyCode, "m")) {animateAttackMagic();} } function keyEqualTo(keyCode, key) { var equalKey = (keyCode.key == key); return equalKey; } function beIdle() {'idle'); if(facing == 'left') { me.player.frame = 5; } else { me.player.frame = 5; } facing = 'idle'; } function animateAttack() {'attack', 10, false, false); me.player.animations.currentAnim.onComplete.add(beIdle,this); } function animateAttackMagic() {'attackMagic', 3, false, false); me.player.animations.currentAnim.onComplete.add(beIdle,this); } I want player to collide with dynamically generated tiles, but it does not happen. The player just falls down after any animation. For example, is I run left or right the player runs, but falls down simultaneously. To make player and tiles collide I use that in update() function:, me.platforms); So, help me, please to figure out what am I doing wrong, why collision between player and tiles does not occur when animation takes plays?
  13. Hello, I have a situation where i have different sprites ont the game, with the same frame rate. Actually they are all moving synchronously (see actual.png). What I want is to randomly shift the animation, to have a more natural feeling (see wanted.png). i tried to launch the play method in a randomly timeout, but it seems that there is unique timeline for every sprite. any clues ?
  14. I keep getting this Error: 'Phaser was used before it was defined' from running this Code: Please see attached all code and errors
  15. Can you suggest any 2D physics body editor so I can use it in Phaser game? It must be free to use.
  16. Hi guys, I load about 10mb of data for my game. But each time I refresh the page, everything has to be re-downloaded. It's like phaser can't save anything in the browser cache? Is there any way to fix this? Thanks, pyre
  17. First of all, sorry for my english Hello! I'm trying to make a Arkanoid game on android Phaser. When the ball hits a brick, the brick disappears and the ball bounces well. Now I have two types of bricks, a normal brick, brick and TNT brick. I've implemented that when the ball touches a TNT brick, kill adjacent bricks too, but when one of those adjacent bricks is a TNT brick, it must call the same function recursively, but something does not work ... any idea? here is my function:
  18. Our game is a runner, which has portals that sends you to a different time period and place when you run into them. I've made it so when you get in a portal, the code goes from one state to the other and create the world over again with different textures. But I have this issue that the player gets super speed after the portal. Like, I can run 10000px in the matter of 2 seconds speed. I have not been able to find out why so far, but with a couple of console logs I've notice both the old state and then new state updates are both running. So thought removing the run function in the new world state would work, but didn't make a difference This is the PlayState that the game starts in after you click play. var cursors; var playState = { create: function() { console.log("Play kjørte"); var mapLen = 10000; // Velg lengden av banen (i pixler) var posX = 0; // Make game here game.physics.startSystem(Phaser.Physics.ARCADE);, 0, mapLen, 600); bg = game.add.sprite(mapLen/2, 300, "sky"); bg.scale.setTo(1,1); bg.anchor.setTo(0.5,0.5); platforms =; platforms.enableBody = true; while (true) { var ground = platforms.create(posX, 535,"ground"); ground.scale.setTo(1,1); ground.anchor.setTo(0,0) ground.body.immovable = true; posX += 150; if (posX > mapLen) { console.log("posX mer enn mapLen, avbryt laging av ground"); break; } } player = game.add.sprite(100, 500, "character"); player.anchor.setTo(0.5, 0.5); player.scale.setTo(1,1);; game.physics.arcade.enable(player); player.body.gravity.y = 800; player.body.collideWorldBounds = true; player.animations.add("right",[0,1,2,3,4,5], 16, true); player.animations.add("jumpRight",[2], 1, true); player.animations.add("jumpLeft",[0], 1, true); player.animations.add("left",[0], 20, true); enemies =; enemy = game.add.sprite(8000, 505, "umbrellaGirl"); enemy.anchor.setTo(0.5, 0.5); game.physics.arcade.enable(enemy); portal = game.add.sprite(600, 500, "portal"); portal.anchor.setTo(0.5,0.5); portal.scale.setTo(0.8,0.8); game.physics.arcade.enable(portal); tBuilding = game.add.sprite(9700, 535, "targetBuilding"); tBuilding.anchor.setTo(0, 1); tBuilding.scale.setTo(0.8,0.8); game.physics.arcade.enable(tBuilding); var timer; timer = setInterval(, 10); cursors = game.input.keyboard.createCursorKeys(); }, run: function() { //console.log("run kjørte"); player.body.velocity.x = 520; }, //Function to make camera follow character lockonFollow: function() {, Phaser.Camera.FOLLOW_LOCKON); style = 'STYLE_LOCKON'; }, update: function() { // code to for example, kill, move player and jump game.physics.arcade.collide(player,platforms); game.physics.arcade.overlap(tBuilding, player,, null); player.body.velocity.x = 0; if (game.physics.arcade.collide(enemy, player)) { player.kill(); game.state.start("lose"); } if (game.physics.arcade.collide(portal, player)) { = null; this.state.start("ancientGreece",true, false); } //if (cursors.right.isDown) { if (player.body.touching.down){"right"); } //} else if (cursors.left.isDown) { player.body.velocity.x = -400; if (player.body.touching.down){"left"); } } else { player.animations.stop(); player.frame = 12; } // Jump if (cursors.up.isDown && player.body.touching.down) { player.body.velocity.y = -400;"jumpRight"); if (cursors.up.isDown && cursors.left.isDown) {"jumpLeft"); } } }, win: function() { game.state.start("win"); //"win" was an invisible sprite the player collided with to trigger the jump to win.js }, } And this is the state where the world textures become Ancient Greece textures (after you hit the portal). var cursors; var greeceState = { create: function() { console.log("Greece kjørte"); var mapLen = 10000; // Velg lengden av banen (i pixler) var posX = 0; var timer; //game.physics.startSystem(Phaser.Physics.ARCADE); //, 0, mapLen, 600); bg = game.add.sprite(mapLen/2, 300, "sky"); bg.scale.setTo(1,1); bg.anchor.setTo(0.5,0.5); platforms =; platforms.enableBody = true; while (true) { var ground = platforms.create(posX, 535,"groundSand"); ground.scale.setTo(1,1); ground.anchor.setTo(0,0) ground.body.immovable = true; posX += 150; if (posX > mapLen) { console.log("posX mer enn mapLen, avbryt laging av ground"); break; } } player = game.add.sprite(100, 500, "character"); player.anchor.setTo(0.5, 0.5); player.scale.setTo(1,1);; game.physics.arcade.enable(player); player.body.gravity.y = 800; player.body.collideWorldBounds = true; player.animations.add("right",[0,1,2,3,4,5], 16, true); //timer = setInterval(, 0.10); cursors = game.input.keyboard.createCursorKeys(); }, /* run: function() { console.log("run kjørte"); //player.body.velocity.x = 520; },*/ update: function() { //console.log("update Greece"); // code to for example, kill, move player and jump game.physics.arcade.collide(player,platforms); game.physics.arcade.overlap(tBuilding, player,, null); //player.body.velocity.x = 0; if (player.body.touching.down){"right"); } /* if (player.body.position.x > 9000) { game.state.start("play"); }*/ } } My apologies if I could snip the code down a little, I wasn't sure what would be relevant to show or not with the issue I have. The game looks like this before and after portal: DemolitionDavid.rar
  19. I want to create rpg game like 'diablo' in web first I create barbarian sprite, and load function preload(){ //Player(Bavarian) //---------------------------------------------------------------------------------------------------------- Lucifer_Game.load.spritesheet('PY_Bavarian_Stand', '../../static/images/game/Player/Bavarian/stand/Stand.png', 200, 200); Lucifer_Game.load.spritesheet('PY_Bavarian_Walk', '../../static/images/game/Player/Bavarian/walk/Walk.png', 200, 200); //---------------------------------------------------------------------------------------------------------- } function create(){ //Physics Lucifer_Game.physics.startSystem(Phaser.Physics.ARCADE); //Player //--------------------------------------------------------------------------------------- Player = Lucifer_Game.add.sprite(,, 'PY_Bavarian_Stand'); //Player =; Lucifer_Game.physics.enable(Player, Phaser.Physics.ARCADE); //Player Stand Animation //var PY_Bavarian_StandFrame_Array = new Array(8); var j = 0; for(var i = 0; i < 8; ++i) { Player.animations.add('PY_Bavarian_Stand_' + i, [j, j + 1, j + 2, j + 3, j + 4, j + 5, j + 6], 60, true); j += 8; } } first screenshot is when I load character only and I create tilemap using tiled (orthogonal, json) and insert code function preload(){ //Map //---------------------------------------------------------------------------------------------------------- Lucifer_Game.load.tilemap('MAP_Stage1', '../../static/images/game/Map/Stage1/Stage1.json', null, Phaser.Tilemap.TILED_JSON); Lucifer_Game.load.image('Stage1_TileSet', '../../static/images/game/Map/Stage1/Stage1_TileSet.png'); //---------------------------------------------------------------------------------------------------------- //Player(Bavarian) //---------------------------------------------------------------------------------------------------------- Lucifer_Game.load.spritesheet('PY_Bavarian_Stand', '../../static/images/game/Player/Bavarian/stand/Stand.png', 200, 200); Lucifer_Game.load.spritesheet('PY_Bavarian_Walk', '../../static/images/game/Player/Bavarian/walk/Walk.png', 200, 200); //---------------------------------------------------------------------------------------------------------- } function create(){ //Group //--------------------------------------------------------------------------------------- mapLayerGroup =; mapLayerGroup.z = 0; showLayerGroup =; showLayerGroup.z = 200; //--------------------------------------------------------------------------------------- //Physics Lucifer_Game.physics.startSystem(Phaser.Physics.ARCADE); //Map / Scroll //--------------------------------------------------------------------------------------- Background_map = Lucifer_Game.add.tilemap('MAP_Stage1'); Background_map.addTilesetImage('Stage1_TileSet', 'Stage1_TileSet'); Stage1 = Background_map.createLayer('Tile Layer 1'); Stage1.resizeWorld(); mapLayerGroup.add(Stage1); //--------------------------------------------------------------------------------------- //Player //--------------------------------------------------------------------------------------- Player = Lucifer_Game.add.sprite(,, 'PY_Bavarian_Stand'); showLayerGroup.add(Player); Lucifer_Game.Group.sort(); Lucifer_Game.Group.sort('z', ) Lucifer_Game.physics.enable(Player, Phaser.Physics.ARCADE); when I run in localhost, loaded map cover my character second screenshot is loadedmap image, and my character is under the map image... I want change location charcter's z-index(?) please somebody help me
  20. I get a syntax error Uncaught SyntaxError: Unexpected token : in the console when I load my tiled json maps. Everything runs fine, my maps are loaded correctly, but why does it give this error? json looks like: { "height":32, "layers":[ { "data":"AAAAAAAAAA" etc. I understand that there's no var declared at the beginning of the object, but it's saved as a json file and loaded as a json file. Why give this error? Just wondering. Thanks,
  21. Hi all, So I'm doing a 2D shooter and at the moment I have it so a bullet is fired from my gun. However, I want a much better system for this where I can fully define a weapon and its parameters. Eg: Beretta = { firerate: 1 clipsize: 9 clips: 3 velocity: 200 vertical_angle_variance: 2 bulletDamage: 10 } How would I achieve this in Phaser?
  22. Hello there, the last couple of days I was playing around with Phaser a lot, and I quite like it so far! My current project is supposed to be a kind of side-scrolling Beat'EmUp where the movement and action is turn-based and takes place on a pre-defined grid of rows and columns. Now, the idea was that it has a pseudo-3d look, and thus needs some kind of perspective projection. I've messed around with the Isometric-Plugin for Phaser, but the isometric perspective is not what I'm looking for. The camera would be static (the person is moving from left to right and the tiles on the ground keep scrolling in), so my guess is that it should somehow be possible in Phaser to mimic this effect by matrix manipulation of the coordinates or such. It's been a while I've been doing this, but I'd be willing to look up some maths again for this. I did a Tetris 3D game 2 years ago with Three.js, so I know that this setup is basic in true 3D environments, but for now, I'd like to know if anyone of you guys maybe has experience with things like this in Phaser, because I'd really like to stick with this framework. But if it should be too complicated to implement I'd also maybe have a look at Babylon.js or Three.js once more. As far as I know, those two lack those neat game-mechanics-implementations that Phaser offers...anyway, thanks for reading and taking your time, maybe one of you has an idea!
  23. Hi, I am new to Phaser and trying to develop a game that includes some light weighted animations so that the game always covers the whole screen available. To achieve this I am using a background image larger then the canvas size and scaling down the game components to fit into the screen, Initially i included some text inside these game components which was getting pixelated when scaling down the component by 50%, so I have decided to keep text elements out of the components and replacing them by lowering the font size. The issue seems resolved but when the game goes fullscreen and restored back to default size the text again is getting blurred. Anybody ever encountered any such issue? What could be the possible reason for this behavior. I am attaching the screenshot of the text in both the situation. Whenever the screen is resized, I destroy the current text element and redraw it using the new font-size. After restoring screen from fullscreen mode. Default screen on initial load.
  24. Hi, I have a full-screen mode in my game and it works fine before Chrome update. This code still works fine on Firefox on the same device. I found also that is not working in Chrome v56 too. Have you met this issue and how you fix it? I also will be glad if Rich give some answer/comments about this issue. If it will help you, I also found, that fullscreen works JUST if you click a border between the game and background (not the game and not a background, just a place where they connects together). Best wishes, NellyKey
  25. Hi guys, We developed a game last year with phaser 2.3.0 and webgl, it worked fine on computer browsers and mobile devices. But since the last update of chrome for android (v53.0.2785.97), the screen is flickering until it becomes totally black, without any error or warning. The issue is present on mobile only, it worked on chrome for android v52, but not v53. We tried to upgrade to phaser 2.6.2, same issue on chrome for android v53. If we use Phaser.CANVAS instead of webgl, it works fine, but we prefer using webgl for performances. Does anyone encounter the same problem? Thanks for your help. Joe K.