Making an arcade style high score name entry screen
by Manjit Bedi · 06/13/2007 (7:54 am) · 6 comments
The game I am working on will ultimately be in an arcade cabinet and using a joystick and buttons.
I have spent the last day and then some tinkering with making a name entry screen. The idea is something very classic in design. I thought it was about time that I gave something back to the TGB community. :-)
Here is what I mocked up some far:

This is really just something functional, it is bound to get some graphical flourishes later.
Basically, what I did was create a series of text objects and then when the level is loaded; I stored the objects in an array. I keep a position for the 'cursor' which is x, y pair which I use to get the text objects from the array. I have move maps set up for the direcitonal arrow key and when the space bar is pressed.
There are two special text objects: one for deleting the last letter and the other for ending the high score entry. I check the name of the text object to see it is one of them.
And here is the code:
TGB high score script
Level file download
Note: I make reference to an image map for the cursor and background shapes. Everything else are just text
objects.
I have spent the last day and then some tinkering with making a name entry screen. The idea is something very classic in design. I thought it was about time that I gave something back to the TGB community. :-)
Here is what I mocked up some far:

This is really just something functional, it is bound to get some graphical flourishes later.
Basically, what I did was create a series of text objects and then when the level is loaded; I stored the objects in an array. I keep a position for the 'cursor' which is x, y pair which I use to get the text objects from the array. I have move maps set up for the direcitonal arrow key and when the space bar is pressed.
%this.letters[0, 0] = letter11;
%this.letters[1, 0] = letter12;
%this.letters[2, 0] = letter13;
%this.letters[3, 0] = letter14;
etc....
// update position of cursor
%letterObj = %this.letters[%this.cursorPosX, %this.cursorPosY];
echo("move cursor to" SPC %letterObj.getName() SPC "with position" SPC %letterObj.getPosition() SPC "letter" SPC %letterObj.text);
%pos = %letterObj.getPosition();
$cursor.setPosition(%pos);
// Now for some fun, display the letter in the name text object.
if(%letterObj.getName() !$= "delLetter" && %letterObj.getName() !$= "endName" )
{
%character = %letterObj.text;
%this.nameLetters[%this.lettersUsed] = %character;
HighScoreName.text = %this.nameLetters[0] @ %this.nameLetters[1] @ %this.nameLetters[2] @ %this.nameLetters[3] @ %this.nameLetters[4] @ %this.nameLetters[5];
}
etc...There are two special text objects: one for deleting the last letter and the other for ending the high score entry. I check the name of the text object to see it is one of them.
/*
Given the current cursor position use the letter.
*/
function nameEntryClass::selectLetter(%this)
{
%letterObj = %this.letters[%this.cursorPosX, %this.cursorPosY];
if(%letterObj.getName() $= "endName")
{
// store the name in a global and switch to the high score table
}
else if(%letterObj.getName() $= "delLetter")
{
if(%this.lettersUsed > 0)
{
%this.nameLetters[%this.lettersUsed] = "-";
%this.lettersUsed--;
HighScoreName.text = %this.nameLetters[0] @ %this.nameLetters[1] @ %this.nameLetters[2] @ %this.nameLetters[3] @ %this.nameLetters[4] @ %this.nameLetters[5];
}
}
else if(%this.lettersUsed < 6)
{
%this.lettersUsed++;
%character = %letterObj.text;
%this.nameLetters[%this.lettersUsed] = %character;
HighScoreName.text = %this.nameLetters[0] @ %this.nameLetters[1] @ %this.nameLetters[2] @ %this.nameLetters[3] @ %this.nameLetters[4] @ %this.nameLetters[5];
}
}And here is the code:
TGB high score script
Level file download
Note: I make reference to an image map for the cursor and background shapes. Everything else are just text
objects.
#3
I'm curious, is this intended for xbox device/controller users only (hence the red button comment), otherwise asking potential pc/mac users with say, I don't know, a standard 'stroke' cheap gamepad with numbers/letters instead of colours, could cause a bit of a problem, no? (ignore this if your not planning to final release with that text)
Anyhow, I suppose this is easy to change/adjust from script so therefore nice resource! :0)
06/13/2007 (10:48 am)
Nice retro look! I use the profile name for top ten scores, so there isn't any need for the player to enter another name at any point.I'm curious, is this intended for xbox device/controller users only (hence the red button comment), otherwise asking potential pc/mac users with say, I don't know, a standard 'stroke' cheap gamepad with numbers/letters instead of colours, could cause a bit of a problem, no? (ignore this if your not planning to final release with that text)
Anyhow, I suppose this is easy to change/adjust from script so therefore nice resource! :0)
#5
The game is going to into a cabinet and there will be a USB joystick and it looks like 4 buttons. We have not decided on the button colours. But there is bound to be a red one. :-)
The game will have an attact mode which will go between a few animations, a help screen and high score table. I plan to blog a bit about the game structure in another post.
Cheers.
M.
06/13/2007 (11:34 am)
In reply to Leroy's question about the help text.The game is going to into a cabinet and there will be a USB joystick and it looks like 4 buttons. We have not decided on the button colours. But there is bound to be a red one. :-)
The game will have an attact mode which will go between a few animations, a help screen and high score table. I plan to blog a bit about the game structure in another post.
Cheers.
M.
Associate Andy Hawkins
Default Studio Name
TGB high score script
Level file download
By the way - I'd like to use this for my BRAVE game if that's okay ?