What engine is the best for my project? Browser Game

Started by
8 comments, last by Unduli 8 years, 2 months ago

Hi everyone.

I'm a newbie into the game dev world, and also as programmer, I have been programming only for a year and only for 9 months trying to develop my own game, so my programming skils are very limited.

I tried to make my game on Phaser but I found it impossible, and I need an advice on which engine should I use to make my game.

The game would work the next way:

-It's browser based game, but I would like to extend it in the future to Android, so I had though in HTML5 in the begining, but I'm open to different options which would allow me to do the next.

-You join the web(Own website), and you see a lobby, with different rooms hosted by players.

-You join a room and it could have already started, it's a multiplayer real time game, on 2D, in which I would need physics, because the players could collide between themselves and a ball which would be inside the game, in the game players would have speed, and they could push another players and the ball(Or shoot it).

-The rooms would be between 1-12 players each one, divided in two teams, and I would like to make the game running on the server, so it could work better for the players than if some player has to be the host of the game, running it on his PC in a P2P way.

-easy to use, because as I said my programming skills are weak, so as less coding it needs, better.

- It should allow me me too to, in the future, be able to create accounts for the players, so they can have their own nicks and stadistics, and make a league of the game based on the web.

Maybe I haven't explained myself correctly, but I'm very motivated about this game and I have been working on it for long time but couldn't make it work and I'm finding another way to do it, thanks for your help and if you need any exaplanation more I will answer as soon as I can.

Thanks everyone!

Advertisement

So looking it over:

  • 2D browser-based game, ball physics
  • Game client should run on PCs and mobile
  • Networked gameplay
  • In-game chat
  • Web-based live chat forums
  • Potentially individual games hosted by the players themselves rather than your servers
  • Game's public web server
  • Back-end game server
  • Support for individual accounts
  • Support for leagues and teams
  • Support for leaderboards, etc
  • Support for matchmaking
  • Your experience is less than a year with Phaser.io

Any other requirements?

Do you have any experience with database programming, or with SQL, or with other programming languages?

If there are no more requirements, you could probably implement the entire game client with Phaser and a bunch of your own javascript communications.

For the gameplay, it will probably be easier to host it on the server you control and update the remote views using each browser to send commands.

I think the back-end development and networking components are going to be your biggest concerns.

So looking it over:

  • 2D browser-based game, ball physics
  • Game client should run on PCs and mobile
  • Networked gameplay
  • In-game chat
  • Web-based live chat forums
  • Potentially individual games hosted by the players themselves rather than your servers
  • Game's public web server
  • Back-end game server
  • Support for individual accounts
  • Support for leagues and teams
  • Support for leaderboards, etc
  • Support for matchmaking
  • Your experience is less than a year with Phaser.io

Any other requirements?

Do you have any experience with database programming, or with SQL, or with other programming languages?

If there are no more requirements, you could probably implement the entire game client with Phaser and a bunch of your own javascript communications.

For the gameplay, it will probably be easier to host it on the server you control and update the remote views using each browser to send commands.

I think the back-end development and networking components are going to be your biggest concerns.

I have some knowledges in DB/SQL and with Java/Javascript.

Maybe with Phaser is enough, but I'm stucked, I have no idea how to go further, I don't know how to make a phaser game running on the server, I made it running on the client and getting position and velocity from every player on the client side and updating it at other clients, but it didn't work fine and of course the ball works awful, I was using socket.io.

If I could make a game running on the server, and just send inputs from the client and do the logic related on the server, it should work nice, but I have no idea how to make it :/ And I couldn't find any tutorial related to make a Phaser game running on the server.

Maybe If I knew how to do it, I would keep working on Phaser, but I think It's not possible, I already spent much time trying it.

Looks like you need to understand how to run code in a server and separate code between client and server. I don't think I'm able to explain this in a post, but you can take a look at this tutorial. It uses Phaser for the client code and runs a backend in node.js to synchronise multiple players.

http://ezelia.com/2014/tutorial-creating-basic-multiplayer-game-phaser-eureca-io

Looks like you need to understand how to run code in a server and separate code between client and server. I don't think I'm able to explain this in a post, but you can take a look at this tutorial. It uses Phaser for the client code and runs a backend in node.js to synchronise multiple players.

http://ezelia.com/2014/tutorial-creating-basic-multiplayer-game-phaser-eureca-io

The problem of that tutorial is that the game still runs on the client, i need the logic to run on the server, and manipulate it according to the inputs the players send me, that's the place where I'm stucked.

Also, I need to run multiple games, because I'm using several rooms, that tutorial explains how to run only 1 game... But thanks anyway! :)

Phaser seems to be a good choice for client side. But eventually you'll need an own server no matter which one you choose.

So maybe checking isogenic engine's multiplayer code helps you. As far as I recall it had room support and multiplayer with interpolation and said to be a good implementation. (I never had chance to check as I switched to a webGL solution)

mostates by moson?e | Embrace your burden

Looks like you need to understand how to run code in a server and separate code between client and server. I don't think I'm able to explain this in a post, but you can take a look at this tutorial. It uses Phaser for the client code and runs a backend in node.js to synchronise multiple players.

http://ezelia.com/2014/tutorial-creating-basic-multiplayer-game-phaser-eureca-io

The problem of that tutorial is that the game still runs on the client, i need the logic to run on the server, and manipulate it according to the inputs the players send me, that's the place where I'm stucked.

Also, I need to run multiple games, because I'm using several rooms, that tutorial explains how to run only 1 game... But thanks anyway! smile.png

I'm a bit confused here. What's the issue with running your game logic in the server? If you can code it in the client you can code it in the server. You just need to set up a connection system for the clients to send the user input and to get the game state. You can go a long way from here improving this and running simulations in the client to avoid lag and stuff, but not before you can set up a basic system.

For the multiple rooms, I wouldn't worry too much until you figure out how to make this work in a single room. Then you can have a different instance of the server game code for each room, each one handling the connections of the clients assigned to that room. You can improve this a lot, but then again, you should be able to set up the basics before.

Looks like you need to understand how to run code in a server and separate code between client and server. I don't think I'm able to explain this in a post, but you can take a look at this tutorial. It uses Phaser for the client code and runs a backend in node.js to synchronise multiple players.

http://ezelia.com/2014/tutorial-creating-basic-multiplayer-game-phaser-eureca-io

The problem of that tutorial is that the game still runs on the client, i need the logic to run on the server, and manipulate it according to the inputs the players send me, that's the place where I'm stucked.

Also, I need to run multiple games, because I'm using several rooms, that tutorial explains how to run only 1 game... But thanks anyway! smile.png

I'm a bit confused here. What's the issue with running your game logic in the server? If you can code it in the client you can code it in the server. You just need to set up a connection system for the clients to send the user input and to get the game state. You can go a long way from here improving this and running simulations in the client to avoid lag and stuff, but not before you can set up a basic system.

For the multiple rooms, I wouldn't worry too much until you figure out how to make this work in a single room. Then you can have a different instance of the server game code for each room, each one handling the connections of the clients assigned to that room. You can improve this a lot, but then again, you should be able to set up the basics before.

I have no idea how to make it, also Phaser needs a browser to make it run, that's my problem... Everybody says it's very easy to run logic on server, but I couldn't find any tutorial which what I'm asking for, none was usefull for now, so I'm stucked.

Well, Phaser runs on browser, but you already need a server to serve the html and js files to the browser... how are you executing your game right now? Are you double-clicking an html file or are you opening a browser and typing "localhost[something]"? If the former I suggest you to try to deploy your game using node js (https://www.npmjs.com/package/http-server). If the second, well, you already have a server running and you just need to figure out how to code on it, which depends a lot on what server you are using.

Well, eventually you will need to write your own server logic anyway.

An authoritative server will run each "room" as instances , (unfortunately) will run whole physics server side (unless you trust clients) and will act on discrepenancies. After having a naive broadcast all implementation, there is room for optimization (client side interpolation, selective broadcast etc).

mostates by moson?e | Embrace your burden

This topic is closed to new replies.

Advertisement