Phaser Quest

Phaser Quest is a reproduction of Mozilla’s multiplayer online game Browserquest. Explore the world, find better equipment, fight monsters and defeat the final boss, alone or with friends! It was made with Phaser, Node.js and Socket.io.

Click here to play the game!

This game is open source under the MIT license. The code is accessible on the Github repository.

Phaser Quest needs music! If you make music and would like to see it featured in the game, contact me.

The name comes from the fact that this is essentially Browserquest made with Phaser, hence Phaser quest.
Disclaimer: This is an independent project, not an official project from the Phaser development team. Rich kindly agreed to let me use the name ‘Phaser’ for the game.

The purpose of this game was for me to gain first-hand experience with the creation of a real-time multiplayer online game and all the challenges such an endeavor involves. Attempting to reproduce Browserquest had two advantages in this respect:
– A reasonable scope: Browserquest is a full-fledged and entertaining game, but with a small amount of features. It’s big enough to be considered a serious project, but small enough to fit as a didactic one.
– A fixed set of features: reproducing every feature was not always fun, but it forced me to solve problems that I might have, consciously or not, tried to avoid when designing my own original project. A good example is the user interface. I was at first reluctant to work on it, as it didn’t seem as interesting as the core game features. It turned out to be more interesting than I thought, and made me learn a few useful Phaser tricks.

The code is publicly available. I will write a few articles about the development of this game in the coming weeks. Hopefully, this project will be valuable learning experience for others as well!

Related articles

The following articles have been written on development aspects of Phaser Quest:
Clients synchronization in Phaser Quest
Latency estimation in Phaser Quest
– And a more general one on interest management in multiplayer online games, with a section about Phaser Quest

Credits

The Phaser Input plugin was used for the in-game input boxes (player name and chat).

Easystar.js was used for the client-side pathfinding.

The following node packages were used:
clone to clone update objects
express to serve the files
– The official MongoDB driver for Node.js
optimist to handle command-line arguments
– The comprehensive pathfinding module for, well, pathfinding
quickselect to compute median latency using the Floyd-Rivest algorithm
random-weighted-choice to perform weighted random selection of what loot the monsters should drop
– The socket.io module for the clients-server communication

All assets are the initial Browserquest assets. The initial Tiled map was re-used, although re-processed quite a bit to improve performance.

Screenshots

Thanks to Richard Davey for the nice screenshots (better than the ones I took..!).

Jerome Renaux

I'm an independent game developer, working mainly on browser-based multiplayer online game (HTML5 & Javascript). I love to discuss about all aspects of game development so don't hesitate to get in touch!

More Posts

Follow Me:
Twitter

Jerome Renaux

I'm an independent game developer, working mainly on browser-based multiplayer online game (HTML5 & Javascript). I love to discuss about all aspects of game development so don't hesitate to get in touch!

  • StopFail

    http://skrinshoter.ru/s/170417/kVBTuQZs.png

    Found a mistake, in general the rat went to me, and I went upstairs and we got stuck in each other and there’s nothing to be done.

    • Jérôme Rx

      Thanks for letting me know, I’ll look into it!
      This is of course not a proper solution but whenever something like this happens, you can refresh the page; your character will reappear not far from where you were.

  • Paulo Coutinho

    Hi, i made a game like bomberman, but i think it too slow and dont have a good usability. Can you help me? It is opensource:
    https://github.com/prsolucoes/golandy-web
    https://github.com/prsolucoes/golandy-server

    • Jérôme Rx

      Hi,
      From what I’ve seen, it seemed to run quite well! The interface is basic but being able to move and drop bombs is the most important. The main aspect to improve would be better graphics and animations, but I know how difficult it is to find artists to collaborate.

      In any case, if you have specific questions, feel free to ask (via the contact form)! 😉