Global License Plate System

Revision as of 19:37, 2 May 2021 by NelsonJenkins (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The Global License Plate System (GLPS) is a free, open-source license plate system maintained by the NTBI Group. Anyone can attach a GLPS license plate onto their own vehicle and sell their vehicle with GLPS license plates installed.

Contents

Overview

GLPS is the combination of a full-permissions model, script, PSD files, and web API. While designed for vehicle manufacturers, GLPS plates can be installed on any modifiable vehicle by simply linking them to the vehicle object.

GLPS is designed to overcome formatting issues with license plates previously used on NTBI vehicles and those created by some other manufacturers. On those models, characters shown on the plate had to be displayed where the individual character faces were positioned on the model. Instead, GLPS uses an innovative text rendering technique that allows characters to be displayed effectively anywhere on the plate at any size while still using only one texture per font. This also allows GLPS plates to be resized automatically between US/Japan and UK/Euro sizes without needing to duplicate the entire plate for another size, because fonts can be changed and characters can be moved and scaled appropriately for each plate size and design.

Click here for the GLPS developer kit.

Click here for the GLPS JP/US sized custom texture PSD.

Click here for the GLPS EU/RU/UK sized custom texture PSD.

For a list of default templates, scroll to the bottom of the page.

Compatible Vehicles

GLPS is being integrated into NTBI vehicles on a rolling basis. However, since GLPS is a free standard, other manufacturers may also implement GLPS on their vehicles.

Instructions

GLPS is very simple to install and use - see the instructions below.

For End-Users

Each manufacturer implements GLPS differently, so refer to your vehicle's owners guide.

Most vehicles allow you to set a plate by navigating the vehicle's configuration menu.

If you are developing your own vehicle, or for some reason you cannot access the GLPS configuration menu, drop the NTBI GLPS Configuration Tool script into the vehicle. It will send the command to open the GLPS configuration menu and immediately delete itself.

For Vehicle Developers

Follow the instructions at the top of the script inside the plate to set it up for your vehicle.

GLPS plates can be configured two ways - either by sending a command that causes the plate to send the user the GLPS configuration menu, or by sending configuration information directly to the plate.

To trigger the GLPS configuration menu for the owner, use:

llMessageLinked(LINK_SET, 0, "GLPS_OPEN_MENU", "");

To set the plate number, use:

llMessageLinked(LINK_SET, 0, "GLPS_SET_NUMBER", "[plate number]");

To load a template directly, use:

llMessageLinked(LINK_SET, 0, "GLPS_LOAD_TEMPLATE", "[template code]");

To request the current GLPS config, use:

llMessageLinked(LINK_SET, 0, "GLPS_GET_DATA", "");

This will return:

llMessageLinked(LINK_SET, 0, "GLPS_GOT_DATA", "[JSON object of GLPS config]");

To load a GLPS config, use:

llMessageLinked(LINK_SET, 0, "GLPS_LOAD_DATA", "[JSON object of GLPS config]");

You may also want to set the current template ID using:

llMessageLinked(LINK_SET, 0, "GLPS_SET_TEMPLATE_ID", "[template code]");

Note that this will not actually load the template, but can be used to force the template code into memory.

For Roleplay Managers and Other Developers

GLPS plates can be "read" using a chat command, which facilitates simulated ALPR cameras. Communication to the plate is performed on a pseudo-random channel, and communication back to the reader is sent on channel 2250. The command is as follows:

key vehicle_key = llDetectedKey(0); // this key can be obtained any way you want
llRegionSay(-1 - (integer)("0x" + llGetSubString((string)vehicle_key, -7, -1)), "GLPS_SCAN|" + (string)vehicle_key);

The response, sent to channel 2250, will be:

GLPS_SCANNED|[vehicle_key]|[template code]|[plate number]

[template code] is the code of the default template, if used. If the plate has any modifications, or is using a custom code, [template code] will be "XXXXX".

Frequently Asked Questions

Can I change the number on my plate?

Yes. Open the GLPS configuration menu and select Number..., then enter your desired number. Note that for some plates, such as the default Second Life US-style plate, only a specific number of characters can be entered.

Can I change the plate design/template to something else?

Yes. Open the GLPS configuration menu and select Templates... -> Load..., then enter the template code of the template you want to use. The template code will load a plate texture, layout, and font. Scroll down for a list of public template codes.

Can I use my own plate textures?

Yes. Open the GLPS configuration menu and select Templates... -> Customize... -> Texture..., then paste the texture UUID in the text box. Then, if prompted, select whether you want to apply that texture to the Front, Back, or Both plates. Then select Layout... and apply a default layout or change the layout as needed to fit the texture. Then, if desired, select Font... and select your desired font.

My plate texture already has numbers on it, can I still use it?

Yes. Open the GLPS configuration menu and select Number... -> Clear Number, then follow the instructions above to use a custom texture UUID.

Why does my plate use an invalid combination of letters and numbers for my state/country?
Why does the Japanese plate not use only numbers?
Why does the hiragana character on the Japanese plate not match the vehicle type?

Due to how GLPS works, plates are issued semi-randomly using both letters and numbers regardless of whether that would be an appropriate combination in real life for each jurisdiction and vehicle type. If you like, you can change the number to something appropriate.

My country isn't included among the default templates, how do I add it?

Download the PSD file and design a template in Photoshop, or use someone else's template.

Note that GLPS plates are limited to 7 characters, so some plates (such as those issued in Russia) cannot be rendered fully.

Note also that characters on GLPS plates are flexible but generally cannot be made small enough to be stacked on top of each other, as seen on certain US specialty plates. Therefore, if you are making a specialty plate template that uses two characters stacked on top of each other, we recommend that you include those characters directly on the template if possible.

Finally, keep in mind that GLPS can only display 0-9, A-Z, certain Japanese hiragana (see below), and the following special characters: -.: GLPS cannot display registration or inspection stickers, other special characters, or non-English characters.

If you design a real-life plate template that is not in the default templates, send an IM to Nelson Jenkins and we will review it to see if it would be appropriate to add to the default templates. Note that we will only add templates that are effectively identical to real-life plates.

Why do you call them "license plates" and not "registration plates" or "number plates"?

Because the person who developed GLPS is an American. Sorry.

What plate sizes are available?

GLPS includes, by default, 12x6 inch (305x152 mm) plates for Japan/US and 520x130 mm plates for Europe/Russia/UK. Other sizes may be available for specific jurisdictions, but these two sizes are the only ones that we provide PSDs for.

Some trivia as to why the UK/Europe GLPS size is not accurate: all US states and Canadian provinces managed to agree on a reasonable, delightfully proportional 12x6 inch standard all the way back in 1956, which fits perfectly onto a 512x256 px texture. Europe, meanwhile, mostly uses 520x110 mm or 520x120 mm plates with horrendous 52:11 and 13:3 aspect ratios, with many countries using completely different sizes for no clear reason, including some even using the 12x6 inch format. Because of this, GLPS also bucks the trend with a "standard" 520x130 mm plate to facilitate the use of a 512x128 px texture.

Are motorcycle plates available?

While GLPS does not include any templates for smaller motorcycle plates, you may create your own using the PSD file and instructions above. However, it will be difficult if not impossible to render characters in two rows as seen on most European motorcycle plates due to technical limitations of the font textures.

What information is stored by the GLPS web API?

The GLPS API, hosted by Northbridge Business Systems, only stores the plate template (design only, no text) and plate owner's UUID when copying a plate template code. This data is not available to the public and is only used for detecting abuse of the template code generation service. This service is necessary because plate configurations are very long and are not easy to load into the plate manually. GLPS does not store any information about the vehicle, such as its position, speed, driver, or model, except for the vehicle owner's UUID as a consequence of storing the plate owner's UUID.

Why is an NBS API key required?

The GLPS API hosts saved plate data as described above. There is currently no limit to the number of plates any one person can save. To allow NBS to monitor the system for abuse, an NBS API key is required for calls that either read or store custom plate data.

How are default plate numbers assigned?

Plate numbers are generated as seven-digit strings, and if the plate template cannot display seven digits, only the first digits are displayed up to the maximum. The first two characters are random alphanumeric characters, the third character is the first character of the region name that the car is first rezzed in, the fourth through sixth characters are the last three digits of the current Unix timestamp, and the last character is a random alphanumeric character.

Are plate numbers unique or searchable?

No. Due to privacy concerns, we chose to make plate numbers pseudo-random and they might not be unique. However, plate numbers only change when the vehicle owner changes or the plate is edited by the user, so plate numbers will persist even if the vehicle is taken and re-rezzed.

Why is the layout/font not accurate for my state/country?

We have tried to implement as many plate designs as we could, but the person who developed GLPS is a stupid American, so many of the European plates are wrong because we do not have access to every accurate font, and we do not have the time to make sure every state plate is pixel-perfect. Different states and countries use a wide variety of fonts, layouts, decals, additional stickers, and sizes. We have attempted to emulate these formats, but the layout and font may not be completely accurate in every case.

For European plates with inspection stickers, can they be changed?

While you are welcome to make your own inspection sticker, the sticker on the template is the only inspection sticker possible by default. We have thus attempted to avoid referring to any specific year on the default templates.

For Russian plates, can the region number be changed to not say "SL"?

No. Due to the fact that GLPS can only render 7 characters, the region code was replaced with "SL", but you can edit the default template to set a custom region number if you like.

What does the Japanese plate say at the top?

The kanji at the top reads "import" and the number to the right is the vehicle class code, which is estimated depending on the plate type you use, but can be edited (see above). Realistically, the kanji would indicate the local office that issued the plate, but incorporating all of the possible office codes would make the characters unreadable. For more information, see the relevant Wikipedia article. It is also possible that the kanji reads something totally nonsensical or that we glossed over an appropriate real-life alternative that could have been used, since the person who developed GLPS is a baka gaijin.

For Japanese plates, can I change the issuing office and class codes at the top of the plate?

Yes, but this can only be done by making your own texture using the PSD file in Photoshop. Due to Second Life limitations, only the hiragana character and sequential digits can be changed in-world.

For Japanese plates, how do I display dots instead of leading zeroes?

Use ":" (the colon punctuation mark) for each centered dot.

For Japanese plates, how do I enter the hiragana character?

GLPS will accept hiragana in the number input. Alternatively, you can use the following romanji and punctuation that are mapped to the following hiragana:

0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J
K L M N O P Q R S T U V W X Y Z - . : @

Note that the hiragana mapped to 0-9 and A-T are used on private vehicles and those mapped to U-Z and punctuation are used on commercial vehicles, though due to the nature of GLPS, these combinations are not always accurate. Also, GLPS does not support the れ and わ "rental vehicle" hiragana due to space limitations, and does not support any of the following hiragana not valid on license plates: 'ばだがぱざびぢぎぴじぶづぐぷずべでげペぜぼどごぽぞゑゐ

Default Templates

Below is a list of default template codes:

Code Size Digits Description
GLPSD/SLUSS JP/US 6 Second Life Default (US Style)
GLPSD/SLUSV JP/US 1-7 Second Life Vanity (US Style)
GLPSD/SLMBE JP/US 1-7 Second Life Mainland - Bellisseria
GLPSD/SLMBS JP/US 1-7 Second Life Mainland - Blake Sea
GLPSD/SLMCO JP/US 1-7 Second Life Mainland - Corsica
GLPSD/SLMGI JP/US 1-7 Second Life Mainland - Gaeta Islands
GLPSD/SLMHE JP/US 1-7 Second Life Mainland - Heterocera
GLPSD/SLMJE JP/US 1-7 Second Life Mainland - Jeogeot
GLPSD/SLMNA JP/US 1-7 Second Life Mainland - Nautilus
GLPSD/SLMSA JP/US 1-7 Second Life Mainland - Sansara
GLPSD/SLMST JP/US 1-7 Second Life Mainland - Satori
GLPSD/SLMSC JP/US 1-7 Second Life Mainland - Sharp Continent
GLPSD/SLMZI JP/US 1-7 Second Life Mainland - Zindra
GLPSD/JPPSS JP/US 5 Japan - Private
GLPSD/JPPKS JP/US 5 Japan - Private Kei
GLPSD/JPCSS JP/US 5 Japan - Commercial
GLPSD/JPCKS JP/US 5 Japan - Commercial Kei
GLPSD/JPTPS JP/US 5 Japan - Temporary
GLPSD/USCAS JP/US 1-7 United States - California
GLPSD/USCAB JP/US 1-7 United States - California (Black)
GLPSD/USNJS JP/US 6 United States - New Jersey
GLPSD/USNJV JP/US 1-7 United States - New Jersey Vanity
GLPSD/USNYS JP/US 7 United States - New York
GLPSD/USNYV JP/US 1-7 United States - New York Vanity
GLPSD/USNYA JP/US 7 United States - New York (2010s)
GLPSD/USNYB JP/US 1-7 United States - New York Vanity (2010s)
GLPSD/USNYC JP/US 1-7 United States - New York Livery (2010s)
GLPSD/USNYD JP/US 1-7 United States - New York T&LC (2010s)
GLPSD/USNYE JP/US 7 United States - New York (2000s)
GLPSD/USNYF JP/US 1-7 United States - New York Vanity (2000s)
GLPSD/USNYG JP/US 1-7 United States - New York Livery (2000s)
GLPSD/USNYH JP/US 1-7 United States - New York T&LC (2000s)
GLPSD/USNYI JP/US 6 United States - New York (1990s)
GLPSD/USNYJ JP/US 6 United States - New York Vanity (1990s)
GLPSD/USNYK JP/US 6 United States - New York Livery (1990s)
GLPSD/USNYL JP/US 6 United States - New York T&LC (1990s)
GLPSD/USNYM JP/US 6 United States - New York Commercial (1990s)
GLPSD/USPAS JP/US 7 United States - Pennsylvania
GLPSD/USPAV JP/US 1-7 United States - Pennsylvania Vanity
GLPSD/USTXS JP/US 7 United States - Texas
GLPSD/USTXV JP/US 1-7 United States - Texas Vanity
GLPSD/SLEUS EU/RU/UK 1-7 Second Life Default (EU Style)
GLPSD/EUALS EU/RU/UK 7 Albania
GLPSD/EUAAS EU/RU/UK 6 Austria
GLPSD/EUBYS EU/RU/UK 7 Belarus
GLPSD/EUBBS EU/RU/UK 7 Belgium
GLPSD/EUBIS EU/RU/UK 7 Bosnia and Herzegovina
GLPSD/EUBGS EU/RU/UK 7 Bulgaria
GLPSD/EUHRS EU/RU/UK 7 Croatia
GLPSD/EUCZS EU/RU/UK 7 Czech Republic
GLPSD/EUDKS EU/RU/UK 7 Denmark
GLPSD/EUDKC EU/RU/UK 7 Denmark - Commercial
GLPSD/EUDKP EU/RU/UK 7 Denmark - "Parrot"
GLPSD/EUESS EU/RU/UK 6 Estonia
GLPSD/EUFIS EU/RU/UK 6 Finland
GLPSD/EUFFS EU/RU/UK 7 France
GLPSD/EUDDS EU/RU/UK 7 Germany
GLPSD/EUGRS EU/RU/UK 7 Greece
GLPSD/EUHHS EU/RU/UK 6 Hungary
GLPSD/EUISS EU/RU/UK 5 Iceland
GLPSD/EUIRS EU/RU/UK 7 Ireland
GLPSD/EUIIS EU/RU/UK 7 Italy
GLPSD/EULVS EU/RU/UK 6 Latvia
GLPSD/EULIS EU/RU/UK 7 Liechtenstein
GLPSD/EULTS EU/RU/UK 6 Lithuania
GLPSD/EULLS EU/RU/UK 6 Luxembourg
GLPSD/EUMMS EU/RU/UK 6 Malta
GLPSD/EUMDS EU/RU/UK 6 Moldova
GLPSD/EUMNS EU/RU/UK 7 Montenegro
GLPSD/EUNLS EU/RU/UK 6 Netherlands
GLPSD/EUNMS EU/RU/UK 7 North Macedonia
GLPSD/EUNNS EU/RU/UK 7 Norway
GLPSD/EUPLS EU/RU/UK 7 Poland
GLPSD/EUPPS EU/RU/UK 6 Portugal
GLPSD/EUROS EU/RU/UK 7 Romania
GLPSD/EUSRS EU/RU/UK 7 Serbia
GLPSD/EUSKS EU/RU/UK 7 Slovakia
GLPSD/EUSLS EU/RU/UK 7 Slovenia
GLPSD/EUEES EU/RU/UK 7 Spain
GLPSD/EUSSS EU/RU/UK 6 Sweden
GLPSD/EUUAS EU/RU/UK 7 Ukraine
GLPSD/RURUS EU/RU/UK 6 Russia
GLPSD/UKUKS EU/RU/UK 7 United Kingdom (Front/Rear)
GLPSD/UKEUS EU/RU/UK 7 United Kingdom EU (Front/Rear)
GLPSD/THPCS Custom 6 Thailand - Private Car
GLPSD/THPVS Custom 6 Thailand - Private Van
GLPSD/THPPS Custom 6 Thailand - Private 2DR Pickup
GLPSD/THPTS Custom 6 Thailand - Private Motorized Tricycle
GLPSD/THTCS Custom 6 Thailand - Taxi
GLPSD/THSCS Custom 6 Thailand - Service Vehicle

Default Fonts

Below is a list of default font codes:

Code Description
US1 United States - Generic 1
US2 United States - Generic 2
USCA United States - California
USFL United States - Florida
USIL United States - Illinois
USMA United States - Massachusetts
USMD United States - Maryland
USMI United States - Michigan
USMO United States - Missouri
USNC United States - North Carolina
USNJ United States - New Jersey
USNY United States - New York
USOH United States - Ohio
USPA United States - Pennsylvania
USVA United States - Virginia
USWA United States - Washington
USWI United States - Wisconsin
CAON Canada - Ontario
CAQC Canada - Quebec
UK United Kingdom
EU1 Europe - Generic 1
EU2 Europe - Generic 2
EU3 Europe - Generic 3
JPR Japan - Romaji/Numerals
JPH Japan - Hiragana

Changelog

Rev. 3

  • Fixed stack-heap collision when loading certain templates.

Rev. 2

  • Fixed current prim height/width being displayed incorrectly in menu.
  • Fixed prim height/width being prompted for in millimeters but being applied as meters.
  • Fixed rare issue when changing colors that caused copying plate via API to return invalid_api_key.

Rev. 1

  • Added ability to change minimum and maximum characters on template.
  • Fixed GLPS plate scanning API.

Rev. 0

  • Initial public release.