Tiled editor basically just generates a JSON file with an array like the one I described. It doesn't generate a new image file. Here's an example of a tilemap created with Tiled for my most recent game (also a real time multiplayer game, though it's not procedurally generated): https://github.com/ahung89/bomb-arena/blob/master/client/assets/levels/level_one.json Notice that each layer has a "data" array. The values in this array are just the indices of the tile. So in the example I pasted, the ground layer has tile 0 in the upper left hand corner, tile 128 next to it, etc. As for what tile 0 and tile 128 actually are, those are tiles found in the tileset image. Tile 0 would be the first tile found in the tileset, tile 128 would be the 128th, etc. Here's the tileset image that I used: https://github.com/ahung89/bomb-arena/blob/master/client/assets/tiles/tileset.png Your actual tileset is typically a single image file, so you don't have to worry about loading a ton of different image files. The JSON file contains metadata on the dimensions of each tile within the tileset so that phaser can just find the tile at the correct offset in the image, basically just like a spritesheet. If you procedurally generate the array and then put it into your own JSON object just like the ones generated by Tiled, it'll be the exact same performance-wise as if you created the tilemap in Tiled editor. If you're worried about the overall performance of tilemaps in general, then that's a different story altogether but I can tell you that there are plenty of games that use tilemaps and have no performance problems. Anyway, it seems like your game is getting along great as it is, but just wanted to elaborate on the suggestion I was making in case you decide to go down the procedural route in the future

So I haven't explored this idea enough to know how well it would work, but the simplest thing that comes to mind is just generating an array of the tiles, creating a tilemap JSON object, and passing it into the Phaser.Loader.tilemap method: http://phaser.io/docs/2.4.2/Phaser.Loader.html#tilemap You've probably noticed by this point that tilemap files are basically just JSON files where the data is an array (or a 2D array, I forget) where the array is populated by numbers that represent the tile index. From the looks of the API, it seems like you could just use your procedural level generation algorithm to create this array, generate the rest of the JSON which is basically just metadata about the tileset, and then just pass it into the tilemap method (via the "data" parameter).

I haven't worked directly with Pixi.js, so my answer is going to contain a lot of assumptions based on the fact that I know that it is a rendering engine and not a game engine. Phaser is a full-fledged game engine. As such, it handles tons of things beyond just rendering: PhysicsI/OCamera scrolling (e.g. camera following you in a sidescroller like Mario)CollisionsState managementTilemap SupportSpritesheets/Animations/TweensAudioGame Loop

Brilliant write-up. I love it. Very clever solution - I had no idea that such an effect could be achieved just by having overlapping tilesprites scrolling in opposite directions. Just to clarify... the entire map is a single giant tilesprite and the ground tiles are simply covering it up?

I'd love to hear more about the specifics of the performance issues you identified in ImpactJS and how you tracked them down/implemented the fixes (aside from the obvious boost from converting every single bit of canvas code to WebGL, which, by the way, sounds amazing and like a ridiculous amount of work). I think a lot of people here would be able to learn a lot from what you did .

I appreciate the feedback, both of you. Thanks . So there are two reasons for that: 1) Only about 8 slots could fit onto the 600 x 600 canvas, and when I created the lobby initially my goal was just to get it to a working state and then move on and finish the rest of the game. I told myself I'd come back to it and adding either scrolling, pagination, or search but by the time I finished the game I no longer saw the necessity of it. 2) I'll need to run tests to confirm this, but I would be worried about network performance with unlimited games since the whole thing is running on a single heroku dyno (which is basically a VM on a VM). Managing lag has been a constant battle throughout this whole process, and I'm not sure if the game in its current state can handle that much concurrent traffic without a spike in packet drop/delay. The game is built with WebSockets, which uses TCP, so the game is especially sensitive to these issues. To be completely honest, it's about 90% reason number 1. Thanks for the suggestion. This is something I'm definitely considering, since I think it'd be a really fun challenge for me to implement some artificial intelligence that works well in the multiplayer environment. I haven't posted my game on any indie game portals yet, but maybe when I do, there'll be some more users. As for understanding the gameplay/testing the mechanics, I did this during development by just opening up two windows and playing against myself.

Since I always loved playing bomberman as a kid, I decided to make an online multiplayer clone of the game using Phaser. I've called it "Bomb Boy Online" but it pretty much plays like the classic bomberman games. You walk around, place bombs, and try to blow up the other players. You can get various powerups that can increase the blast radius of your bombs, the number of bombs you can hold, and your speed. The game contains a lobby where you can host/join games. Up to 8 games can be in session at the same time. Here's a link to the game: https://limitless-brook-9339.herokuapp.com/ Source code: https://github.com/ahung89 Here are some screenshots of the game:

Good concept, but I agree with Rich on the difficulty. It's difficult to the point where it's more frustrating than anything else. I don't think you should have to start an entire level over after making a single mistake - maybe give a few lives or something along those lines?

I've been noticing that a lot of people have been implementing their own engines lately and I'm curious - how much time do you typically have to spend building up this architecture before actually diving into the implementation of your game? I've thought about building my next game from the ground up for fun (and as a learning exercise), but I've been leaning a bit towards continuing to use existing engines just because my primary goal is still to create and complete polished games in a reasonable amount of time. I'd love to hear about your experiences with rolling your own tech, and your thoughts on how this has affected your overall timeline/development experience.