0
\$\begingroup\$

I'm looking to develop a 2D multiplayer RPG game for Android, with a bird's eye view similar to that of zelda/pokemon. The game is very simple in all ways since my intent is for thousands of players to occupy the same world which I imagine requires good performance. However, I am unsure about the performance requirements of two properties:

  1. the tile map that is used as a background is dynamic (interactive). For example, a player steps in the water, and the water turns black. Every tile in the game does this.

  2. the tile map is the same object used for all players, but it is displayed differently on each user's mobile device, even though the players exist in the same world. For example, the water that turned black is displayed as red on all other players' screens.

I have knowledge of java, but almost none regarding game dev. tools. Is there a best process for these requirements? Should I develop in pure java, or use some tool like Slick2D etc.? How performance intensive are these properties, if even possible?

Edit: There are no collisions in the game or difficult animations, I am imagining simply changing the colors of the tiles (like in the examples), and a client-server architecture

\$\endgroup\$
6
  • \$\begingroup\$ "Which tech to use" questions are off-topic here (as they are opinion-based and not possible to really answer authoritatively), you should remove those bits from your question and just focus on the design/architecture problem. \$\endgroup\$ Oct 30, 2013 at 21:43
  • \$\begingroup\$ I'm just asking if the problem is able to be reasonably solved, how can it be done most efficiently \$\endgroup\$ Oct 30, 2013 at 22:20
  • \$\begingroup\$ I think you dropped a "not", completely reversing the intended meaning and tone of your comment. \$\endgroup\$
    – TASagent
    Oct 30, 2013 at 22:31
  • \$\begingroup\$ The question is also too broad, and questions about "best" or "most effective" ways to do things are generally subjective unless you have two pieces of code to compare against. There's not enough requirements to go on either, changing tiles for connected players ... well you just find one way to implement and do that, and when there IS a performance issue that's when you go in and see what you can do about it. \$\endgroup\$
    – CodeSmile
    Oct 30, 2013 at 23:47
  • 1
    \$\begingroup\$ You said "the game is very simple" and then you ask for advice on something that is really trivial (changing tiles), followed by questions about which language and tools/engine to use. You admit to being new to game development. All of this combined tells me you simply don't know where to start, which I understand can be difficult, but the best way to overcome it is to start somewhere. Prefer to use an engine with built-in support for tile maps (ie TMX format). This is the best advice I can give you right now. \$\endgroup\$
    – CodeSmile
    Oct 31, 2013 at 10:09

1 Answer 1

1
\$\begingroup\$

You should be fine doing all of this (tiles with states, various players, etc) as long as you maintain your world state (i.e. the state of each tile, player, etc) on the server. Each client would then receive the current world state from your server at some interval - which you should tweak according to your specific requirements and testing.

Performance wise, none of the things you want to do would specifically be an issue on mobile (or in java). As long as your design is sound and your server is up to the task of supporting your intended number of players. As for this last point (thousands of players in your world) it will again mostly be up to your server, not the mobile client to do the heavy lifting - the mobile will only need to display the visible number of players at any one time so there should not be a performance problem.

As a performance test you could render your required number of tiles and characters as static images and measure the performance. This would give you a baseline of render performance, which will of course be higher than the final implementation, but should provide you with the assurance that your mobile device(s) will be capable of handling it - and if not you could play around with ways to optimize the rendering in order to achieve decent performance.

I would personally first create a prototype to test your ideas out, instead of designing the whole thing outright. You will gain many insights into what needs to be done if you play with a live implementation, instead of theorizing about it. There are other considerations once you implement the final version (such as texture organization and render ordering, etc) but these are best handled once you have a working system.

Don't design with too much optimization in mind, but rather solve your problem first (i.e. get it working). You might then "see" better ways to optimize than you could theorize without a working implementation.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .