Adding RPG elements to games has been a popular trend lately. Unfortunately, this can often just mean that they added an experience bar to a game that doesn't really need it. This can often turn an otherwise good game into a grind. Another problem area I noticed in the app store is new developers trying to recreate their favorite RPGs from their childhood and missing what made the game great (the story) while recreating what was largely interchangeable with any other RPG of the era, the character development system. Here are some designs to consider when developing a leveling system for a game.
When a game is complicated it tends to scare off new players. A system for gradually increasing the complexity is a must if the game is to ever become mainstream. Some games opt for tutorial lessons, but a good designer can gradually add features through regular gameplay. World of Warcraft (WoW) uses leveling this way; every level alternates between giving you a new ability or a new customization option. I can say from personal experience in WoW that learning how to play a Death Knight, which starts at level 55, required much more deliberate effort than learning to play any other class, which slowly introduces the abilities.
A similar issue with game play complexity in multi-player games is that other players have expectations on how the game is to be played. A new player that doesn't understand all the complexity will be rejected by more experienced players. WoW gradually teaches players how to play via the dungeon system. The early dungeons require 5 people that don't have to be organized, mid-level dungeons require players to work as a cohesive team and take specific roles, and end-game dungeons/raids increase the number of players to make coordination even more important.
The key to obtaining flow is a challenge at just the right difficulty. The problem for the game designer is getting the difficulty right for a large number of players at varying skill levels. An experience system can be self balancing. Every time the player levels up, the game gets easier. Every time the player pushes deeper, the game gets harder. This leads to a self regulating system that, when done right, will keep the game at a challenging level for all players.
As surprisingly difficult challenges can break flow and be frustrating, sometimes, as a game designer, you need an easy way to indicate how powerful an opponent is when you don't have an art department to add spikes and prongs and blackened bits to let the players know that things are going badly for them.* Player level, or some other rating system, can be an easy indicator of relative power. However, don't go overboard on this. If everything you need to signal about an opponents difficulty can be reduced to one number then your game has no room left for skill.
Leving Up as a Game
This genre of game is a glorified slot machine/skinner box. The greatest games of this type are the Diablo series. The player engages in increasing amounts repetitious behavior for fewer and fewer rewards. The dopamine bust from an unexpected reward (random item drop) keeps the player hooked while the experience system gives a feeling of accomplishment to keep the player from getting discouraged when the reward doesn't come.
Some would argue that this isn't a game, or even fun, or even ethical, but it represents a large chunk of addictive games. The trick to getting these games right is to make sure to minimize down time (walking in town, menus, watching plot, or managing inventory) so that the player is constantly making progress. Progress Quest goes one step further and cuts out all player interaction. It just runs in your system tray and gives you the same satisfaction of actually playing a game like this.