There's been a bit of discussion recently about the name-changing feature we're planning on adding to the game. In order to spread enlightenment and illumination throughout the populace I have put together a blog post discussing the progress on the project so far and my own humble contributions.
Without further ado, then, for your delight and edification I present Changing Names, a Blog Post in One Part. Should you have any questions in this thread I will do my best to answer them in between fending off mountains of code and wrestling to the death with bugs.
(15-16-455-59477934)
Without further ado, then, for your delight and edification I present Changing Names, a Blog Post in One Part. Should you have any questions in this thread I will do my best to answer them in between fending off mountains of code and wrestling to the death with bugs.
(15-16-455-59477934)
I’m Mod Duncan, one of the members of the Web Systems team at Jagex. A lot of the work we do in Web Systems goes on behind the scenes, so you may not notice much of it (except when things go wrong), but we're responsible for developing and maintaining all the website systems that support our games, manage your accounts, offer website features like the hiscores and forums, handle payments for membership and all the rest. Most of the time the effects of our systems are limited to the website, but the work I’ve been doing over the last few months will be a lot more visible when it finally launches.
The project I’ve been working on since January (according to version control logs; it seems a lot longer) is called Display Names and, as various hints dropped on the forums and Twitter feeds might have led you to believe, has the goal of allowing players to change their names.
So why, you might ask, has it taken so long? It’s a common occurrence in the programming world that the easier something is to describe, the harder it is to implement, and this project has been no exception. So, make yourselves comfortable, and I’ll lead you through the long and convoluted process of implementing the simplest sounding of ideas: "let players change their names". It can’t be that hard, can it?
Humble beginnings
The beginnings of the Display Names project hark back even further than January, before I was even involved. Back then it wasn’t even called Display Names, and the goal was subtly different - we just wanted to make it easier for people registering new accounts to find a username that wasn’t already taken.
There are millions of accounts registered for RuneScape and FunOrb, and thousands more are added each day, but only a fraction of those accounts are still used. If we were to go through and delete all the inactive accounts, we could free up their usernames for others to choose. A noble goal, to be sure, but alas (as is so often the case) it didn’t last in the face of the technical details. At this point in our narrative a brief digression into the architectural design of the Jagex back-end servers is in order, that you might understand the issues we faced.
The systems we maintain are broken up into many individual applications (we call them ‘modules’), each of which handles a generally quite small part of maintaining the games and accounts. For example, there’s one module that handles creating new accounts; there’s one for polls; another for showing the hiscore tables. The bigger systems, such as handling offences and appeals, are spread over more than one module. Each of these systems stores its own information, and whenever players are concerned we store the information against their usernames. Generally, this makes our life a lot easier, as we can update individual modules without affecting the rest of the systems. However, in this particular case, it made our life a lot harder.
Deleting a user from every module where they might have an entry wouldn’t be something we could do instantaneously, so our first hurdle was what to do if we’d decided someone was "inactive" and they had the temerity to start playing again halfway through the deletion process. Unlikely, you might think, but with the millions of accounts we have, these sorts of troublesome events become more and more plausible. Even if we’d found a solution to that issue, we discovered there was information in the Billing systems that we were legally obliged to keep, which made it even more complicated.
In the end, we gave up on the idea of deleting accounts and considered the alternative - just deleting their names.
What’s in a name?
It’s around about this point in the tale that the project became ‘Display Names’, and, shortly after that, I became involved. The new goal was to add a second ‘name’ to every account, completely separate from their username. Then we can do what we want to the display name on the account without affecting our data storage or old accounts. We could even take names away from unused accounts to free them up for other players, and the worst that would happen is that those accounts would have to pick a new name if they wanted to come back to the game.
We even found a number of extra benefits from this idea. With the display name separate for the account name, we weren’t bound by existing restrictions on name length, or the characters it could contain. If we have the facility to take someone’s name away without otherwise affecting the account, we could do something about offensive names without banning the account outright. It’d even make accounts more secure, as a potential hijacker would have to work out your username as well as your password.
As you might guess from the eight months it’s been since this point, even that apparent simple goal wasn’t quite as easy as it made out. Such things never are...
That which we obtain too easily, we esteem too lightly
Once we had the basic concept of the design down, the first stage was picking it all apart again to find the flaws.
Firstly was the issue of making the display name of each account available to all the modules that needed to know it, not to mention the games themselves. Most of the time we could get away with using the login servers, which hold a lot of relevant information about everyone’s account that is fetched whenever that player logs in. However, that doesn’t help us when we’re showing you your Friends List (if your friends aren’t logged in), or on the website when looking at the hiscore tables or the forums. Because we wanted to let players change their names, we couldn’t just store it everywhere, so we needed to have each system look the name up each time. After some hastily scribbled calculations, it looked like the worst case would be around 40,000 of these look-ups per second. That, incidentally, is quite a lot. We didn’t want to throw that much load at the login servers, so there’d have to be a separate system to handle the look-ups as fast as possible.
Technical problems out the way, we considered making the changes as simple and clear as possible to the users. Keeping the Friends List from breaking was probably the biggest issue. If your friend changed their name, we didn’t really want them to stop being your friend, so the list needed to store accounts rather than display names. That would still leave us with players scratching their heads and wondering who these people with strange names on their list were, so we added a feature to the interface that showed each friend’s previous name when they changed it.
Finally, we thought about the ways players might tread on each others’ toes with display names, so we decided to let players ‘hold’ their previous name for a while after they changed it, so if they decided they didn’t like the new name as much, they could still go back to their previous name without someone else sneaking in and taking it. We also made sure that it wouldn’t be too easy to impersonate another player, so similar-looking names wouldn’t be allowed.
Nine parts perspiration
With all the excitement of writing, rewriting and debating design documents finally behind me, it was time to actually work on the module itself. As an added bonus, there was also the work of integrating display names into our other Web Systems modules and working with the Game Engine, FunOrb and RuneScape Content teams to enable them to do the same. Alongside the work I’ve been doing, they’ve all been hard at work making, testing and tweaking their own changes.
Player Support has been working to ensure we don’t inconvenience the players with our changes, and have made many suggestions to make the project as positive as possible. They’ve also been reviewing the tools they’ll need to handle all the new functionality available to them.
It’s this coding that’s been occupying my days for the last couple of months, but it’s finally drawing to a close. The main display names module is currently at the tender mercies of the Web Systems QA team, who are ironing out all the issues and making it as reliable and easy to use as possible. The Web Content team have produced the public interface, and the RuneScape Content and FunOrb teams have been incorporating display names everywhere (the RuneScape Content team were kind enough to share their list of every line of RuneScape’s code that references the player’s name - almost 2,000 different places).
The final stretch
There’s still plenty of testing and work to be done before all this work bears fruit and players can change their names. We need to test that the new system can handle the load of all the requests being made of it, and co-ordinating the launch of changes across all the teams and departments is a mammoth task in itself. Even after the system is launched there’s still plenty of work to do - not only will I need to keep a close eye on the system and fix any issues, but there are plenty of new features we'd like to add in the future as well.
Possessing the natural tendency of developers everywhere to shy away from deadlines, I won’t leave you with any promised launched dates (I’d only doom myself to some catastrophic interruption if I did), but the project’s coming to a close and I’m very much looking forward to the day we can launch it into the eager hands of our players.
If I happen to be out of the country on that day, leaving no forwarding address, that’s entirely coincidental...
The project I’ve been working on since January (according to version control logs; it seems a lot longer) is called Display Names and, as various hints dropped on the forums and Twitter feeds might have led you to believe, has the goal of allowing players to change their names.
So why, you might ask, has it taken so long? It’s a common occurrence in the programming world that the easier something is to describe, the harder it is to implement, and this project has been no exception. So, make yourselves comfortable, and I’ll lead you through the long and convoluted process of implementing the simplest sounding of ideas: "let players change their names". It can’t be that hard, can it?
Humble beginnings
The beginnings of the Display Names project hark back even further than January, before I was even involved. Back then it wasn’t even called Display Names, and the goal was subtly different - we just wanted to make it easier for people registering new accounts to find a username that wasn’t already taken.
There are millions of accounts registered for RuneScape and FunOrb, and thousands more are added each day, but only a fraction of those accounts are still used. If we were to go through and delete all the inactive accounts, we could free up their usernames for others to choose. A noble goal, to be sure, but alas (as is so often the case) it didn’t last in the face of the technical details. At this point in our narrative a brief digression into the architectural design of the Jagex back-end servers is in order, that you might understand the issues we faced.
The systems we maintain are broken up into many individual applications (we call them ‘modules’), each of which handles a generally quite small part of maintaining the games and accounts. For example, there’s one module that handles creating new accounts; there’s one for polls; another for showing the hiscore tables. The bigger systems, such as handling offences and appeals, are spread over more than one module. Each of these systems stores its own information, and whenever players are concerned we store the information against their usernames. Generally, this makes our life a lot easier, as we can update individual modules without affecting the rest of the systems. However, in this particular case, it made our life a lot harder.
Deleting a user from every module where they might have an entry wouldn’t be something we could do instantaneously, so our first hurdle was what to do if we’d decided someone was "inactive" and they had the temerity to start playing again halfway through the deletion process. Unlikely, you might think, but with the millions of accounts we have, these sorts of troublesome events become more and more plausible. Even if we’d found a solution to that issue, we discovered there was information in the Billing systems that we were legally obliged to keep, which made it even more complicated.
In the end, we gave up on the idea of deleting accounts and considered the alternative - just deleting their names.
What’s in a name?
It’s around about this point in the tale that the project became ‘Display Names’, and, shortly after that, I became involved. The new goal was to add a second ‘name’ to every account, completely separate from their username. Then we can do what we want to the display name on the account without affecting our data storage or old accounts. We could even take names away from unused accounts to free them up for other players, and the worst that would happen is that those accounts would have to pick a new name if they wanted to come back to the game.
We even found a number of extra benefits from this idea. With the display name separate for the account name, we weren’t bound by existing restrictions on name length, or the characters it could contain. If we have the facility to take someone’s name away without otherwise affecting the account, we could do something about offensive names without banning the account outright. It’d even make accounts more secure, as a potential hijacker would have to work out your username as well as your password.
As you might guess from the eight months it’s been since this point, even that apparent simple goal wasn’t quite as easy as it made out. Such things never are...
That which we obtain too easily, we esteem too lightly
Once we had the basic concept of the design down, the first stage was picking it all apart again to find the flaws.
Firstly was the issue of making the display name of each account available to all the modules that needed to know it, not to mention the games themselves. Most of the time we could get away with using the login servers, which hold a lot of relevant information about everyone’s account that is fetched whenever that player logs in. However, that doesn’t help us when we’re showing you your Friends List (if your friends aren’t logged in), or on the website when looking at the hiscore tables or the forums. Because we wanted to let players change their names, we couldn’t just store it everywhere, so we needed to have each system look the name up each time. After some hastily scribbled calculations, it looked like the worst case would be around 40,000 of these look-ups per second. That, incidentally, is quite a lot. We didn’t want to throw that much load at the login servers, so there’d have to be a separate system to handle the look-ups as fast as possible.
Technical problems out the way, we considered making the changes as simple and clear as possible to the users. Keeping the Friends List from breaking was probably the biggest issue. If your friend changed their name, we didn’t really want them to stop being your friend, so the list needed to store accounts rather than display names. That would still leave us with players scratching their heads and wondering who these people with strange names on their list were, so we added a feature to the interface that showed each friend’s previous name when they changed it.
Finally, we thought about the ways players might tread on each others’ toes with display names, so we decided to let players ‘hold’ their previous name for a while after they changed it, so if they decided they didn’t like the new name as much, they could still go back to their previous name without someone else sneaking in and taking it. We also made sure that it wouldn’t be too easy to impersonate another player, so similar-looking names wouldn’t be allowed.
Nine parts perspiration
With all the excitement of writing, rewriting and debating design documents finally behind me, it was time to actually work on the module itself. As an added bonus, there was also the work of integrating display names into our other Web Systems modules and working with the Game Engine, FunOrb and RuneScape Content teams to enable them to do the same. Alongside the work I’ve been doing, they’ve all been hard at work making, testing and tweaking their own changes.
Player Support has been working to ensure we don’t inconvenience the players with our changes, and have made many suggestions to make the project as positive as possible. They’ve also been reviewing the tools they’ll need to handle all the new functionality available to them.
It’s this coding that’s been occupying my days for the last couple of months, but it’s finally drawing to a close. The main display names module is currently at the tender mercies of the Web Systems QA team, who are ironing out all the issues and making it as reliable and easy to use as possible. The Web Content team have produced the public interface, and the RuneScape Content and FunOrb teams have been incorporating display names everywhere (the RuneScape Content team were kind enough to share their list of every line of RuneScape’s code that references the player’s name - almost 2,000 different places).
The final stretch
There’s still plenty of testing and work to be done before all this work bears fruit and players can change their names. We need to test that the new system can handle the load of all the requests being made of it, and co-ordinating the launch of changes across all the teams and departments is a mammoth task in itself. Even after the system is launched there’s still plenty of work to do - not only will I need to keep a close eye on the system and fix any issues, but there are plenty of new features we'd like to add in the future as well.
Possessing the natural tendency of developers everywhere to shy away from deadlines, I won’t leave you with any promised launched dates (I’d only doom myself to some catastrophic interruption if I did), but the project’s coming to a close and I’m very much looking forward to the day we can launch it into the eager hands of our players.
If I happen to be out of the country on that day, leaving no forwarding address, that’s entirely coincidental...
Answers to Questions
Spoiler: Click to Toggle the Spoiler.
Page 4
Now I'm sufficiently fortified with coffee, a few answers
Jeffb87: What lets say, if zezima would want to change his name.. It becomes available to us after a while? I don't want that to happen =/
There's some extra functionality in place so we can put a block on anyone else taking particularly famous names, so even if Zezima changed his name nobody else could take it.
--
Ranlom: When will an account become "inactive"? Six months? A year? More?
We've not made the decision on this yet (it's one of those post-launch things), but our criteria are likely to include a long period of inactivity and very low in-game levels and play time. We'll probably start with accounts that were created years ago and never even logged in
--
Jeffb87: It’d even make accounts more secure, as a potential hijacker would have to work out your username as well as your ********.
- But if that potential hijacker adds your new display name to his friendslist, doesn't he get to see your account name too?
No, your account name is different from your display name and other players only ever see your display name. Even if he has you friended a potential hijacker wouldn't know your account name.
--
we added a feature to the interface that showed each friend’s previous name when they changed it.
- Only shows to friends that the account owner has on his own list aswell?
(useful when you are being stalked)
I can see why that might be useful, but it'd be very hard to do (and what if someone else eventually chose your old name?).
--
The Pain 105: I however have 1 question maybe/maybe not you could answer - If a specific person changed there username to say "Therunescape056" and this was visable in game: would i then search for this username OR would i search for the original accounts username or is there going to be a system implemented where it shows the original username when the display name is entered.?
Everything you do will refer to their display name, so you'll add people to your friends list by whatever their name currently is in game.
--
Chukklz9413: You guys say similar names wont be allowed. Example, Sh00ter and Shooter. One name contains two "O" and the other contains two "0" (zero). So does not being able to have similar names mean the end of in game avatar twins?(I'm mainly talking about twins that use similar names to Pk to confuse or trick other players, or just to team PK)
It won't be any more strict than the current naming, otherwise we'd be stuck trying to give Sh00ter and Shooter their initial display names! The similarity test depends on what characters end up allowed in display names but, for example, it wouldn't let you have "The-Shooter" and "The_Shooter" as two different names.
--
Jarzki87: The thing Im worried most is the name race. People try to get 1 letter length names ASAP. Then 2 letter long.
Those names will be taken already, by the people with those account names
Some of them might free up over time as we go through the inactive accounts, though.
--
Then impersonating will become huge problem unless the old nick is reserver for quite a long time so everyone will know that this player has changed his nick.
The old display name is held for at least a month, longer if you had the name for a while in the first place. Anyone who had you friended will see the name change in their friend list, so would know about the change if they logged in during that time. Preventing abuse is one of the things we've been considering throughout the project, so there are quite a few features in there designed to combat it.
Now I'm sufficiently fortified with coffee, a few answers
Jeffb87: What lets say, if zezima would want to change his name.. It becomes available to us after a while? I don't want that to happen =/
There's some extra functionality in place so we can put a block on anyone else taking particularly famous names, so even if Zezima changed his name nobody else could take it.
--
Ranlom: When will an account become "inactive"? Six months? A year? More?
We've not made the decision on this yet (it's one of those post-launch things), but our criteria are likely to include a long period of inactivity and very low in-game levels and play time. We'll probably start with accounts that were created years ago and never even logged in
--
Jeffb87: It’d even make accounts more secure, as a potential hijacker would have to work out your username as well as your ********.
- But if that potential hijacker adds your new display name to his friendslist, doesn't he get to see your account name too?
No, your account name is different from your display name and other players only ever see your display name. Even if he has you friended a potential hijacker wouldn't know your account name.
--
we added a feature to the interface that showed each friend’s previous name when they changed it.
- Only shows to friends that the account owner has on his own list aswell?
(useful when you are being stalked)
I can see why that might be useful, but it'd be very hard to do (and what if someone else eventually chose your old name?).
--
The Pain 105: I however have 1 question maybe/maybe not you could answer - If a specific person changed there username to say "Therunescape056" and this was visable in game: would i then search for this username OR would i search for the original accounts username or is there going to be a system implemented where it shows the original username when the display name is entered.?
Everything you do will refer to their display name, so you'll add people to your friends list by whatever their name currently is in game.
--
Chukklz9413: You guys say similar names wont be allowed. Example, Sh00ter and Shooter. One name contains two "O" and the other contains two "0" (zero). So does not being able to have similar names mean the end of in game avatar twins?(I'm mainly talking about twins that use similar names to Pk to confuse or trick other players, or just to team PK)
It won't be any more strict than the current naming, otherwise we'd be stuck trying to give Sh00ter and Shooter their initial display names! The similarity test depends on what characters end up allowed in display names but, for example, it wouldn't let you have "The-Shooter" and "The_Shooter" as two different names.
--
Jarzki87: The thing Im worried most is the name race. People try to get 1 letter length names ASAP. Then 2 letter long.
Those names will be taken already, by the people with those account names
--
Then impersonating will become huge problem unless the old nick is reserver for quite a long time so everyone will know that this player has changed his nick.
The old display name is held for at least a month, longer if you had the name for a while in the first place. Anyone who had you friended will see the name change in their friend list, so would know about the change if they logged in during that time. Preventing abuse is one of the things we've been considering throughout the project, so there are quite a few features in there designed to combat it.
Page 5
Ken Genosis: Though, I do have one more question: What name will be displayed here on the forums? Your account or display name?
Your display name is what shows up everywhere
Forums, hiscores and all the rest.
Ken Genosis: Though, I do have one more question: What name will be displayed here on the forums? Your account or display name?
Your display name is what shows up everywhere
Page 6
If I'm called snufflesx1, and lead a clan- but change my name to 'spirius', will my clan members need to join 'spirius' cc to get on my clan chat?
Clan chat has access to the same "previous name" list that friends does, so it'll let you join by either name for a while after you change it - but once they've joined the chat it'll tell them they're in "Spirius's channel".
--
Regarding allowed characters - there aren't any technical restrictions any more, but that doesn't mean we'll allow every possible character
Currently it's not much different from the existing username restrictions.
If I'm called snufflesx1, and lead a clan- but change my name to 'spirius', will my clan members need to join 'spirius' cc to get on my clan chat?
Clan chat has access to the same "previous name" list that friends does, so it'll let you join by either name for a while after you change it - but once they've joined the chat it'll tell them they're in "Spirius's channel".
--
Regarding allowed characters - there aren't any technical restrictions any more, but that doesn't mean we'll allow every possible character
Page 6
More questions! (I need more coffee)
It seems doubtful, but would there be a way to retroactively change the non-displayed Account Name?
Unfortunately not, as it's that account name that's stored in all the different records for your account (so we'd have to update all of them at once, which is just what we were trying to avoid
).
--
Will we be able to change our display names as and when we wish, or will it be a one-time thing only?
There'll be restrictions on how often you can do it (to prevent abuse), but you'll be able to change your name more than once.
--
Will our display names on FunOrb and RuneScape be different or same?
They'll be the same.
More questions! (I need more coffee)
It seems doubtful, but would there be a way to retroactively change the non-displayed Account Name?
Unfortunately not, as it's that account name that's stored in all the different records for your account (so we'd have to update all of them at once, which is just what we were trying to avoid
--
Will we be able to change our display names as and when we wish, or will it be a one-time thing only?
There'll be restrictions on how often you can do it (to prevent abuse), but you'll be able to change your name more than once.
--
Will our display names on FunOrb and RuneScape be different or same?
They'll be the same.
Page 8
If we change our display name how long do we have to wait to change our name again to prevent from name changing abuse? A week? A month?
I don't want to jinx myself by giving a precise figure now. You'll find out at launch
If we change our display name how long do we have to wait to change our name again to prevent from name changing abuse? A week? A month?
I don't want to jinx myself by giving a precise figure now. You'll find out at launch
[Close]
