1
\$\begingroup\$

I'm building a game similar to Mafia Wars where a player can do tasks for his gang and gain experience and thus advancing his level.

The game is built using PHP and a Mysql database.

In the game I want to limit the resources allowed to player based on his level.

For example:

________| (Max gold) | (Max army size) | (Max moves)  | ...      
Level 1 |    1000    |       100       |      10      | ...  
Level 2 |    1500    |       200       |      20      | ...  
Level 3 |    3000    |       300       |      25      | ...
  .
  .
  .

In addition certain features of the game won't be allowed until a certain level is reached such as players under Level 10 can't trade in the game market, players under Level 20 can't create alliances,...etc.

The way I have modeled it is by implementing a very loooong ACL (Access Control List) with about 100 entries (an entry for each level).

However, I think there may be a simpler approach to this seeing that this feature have been implemented in many games before.

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

I would recommend using some type of algorithm rather than an ACL:

Algorithm for dynamically calculating a level based on experience points?

https://gamedev.stackexchange.com/a/14314/20399

These aren't specific to your question, but the general principle is that there are formulas you can use to determine the requirements rather than hardcoding every possible outcome

\$\endgroup\$
2
  • \$\begingroup\$ well my problem starts after calculating the Level itself from the experience points. Think about it this way, if I know that a player is Level 4 how should I handle the privileges for that level? \$\endgroup\$
    – Songo
    Apr 30, 2013 at 12:09
  • 1
    \$\begingroup\$ I updated the answer to give another example. the main point is that you can use an algorithm to determine the access levels rather than hardcoding everything based on user levels \$\endgroup\$
    – wes
    Apr 30, 2013 at 12:38

You must log in to answer this question.

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