The following is the initial documentation I came up with for a game idea based on the Cowboy Bebop anime series. Game play would span the entire SL world. Development should be based on formalized standards so anyone can contribute items.
The basic premise is you can visit a kiosk and sign up to play as a bounty hunter or as a villain. If you play as a bounty hunter, you will be given a list of villains to choose from. Bounty hunters can only chase one villain at a time. It can be a very high-stakes game if played for money. Villains have more risk but higher rewards, and bounty hunters have somewhat less risk and slightly lower rewards.
I give this idea to the public because I don't have any chance whatsoever of getting around to this within any reasonable time. The SL development environment may not be ready for this type of game yet, as it requires low latency communications for smooth play.
I believe Azelda Garcia may have already created something vaguely similar to this.
Bounty Hunter - SL-wide combat for money
========================================
Player Experience
=================
Sign up to play as a Villain:
1. Choose free or purchasable weapons.
2. Pay into the Bounty Hunter kiosk the amount (L$30 minimum?) you are willing to risk, and the amount you want your multiplier to be. This means that if someone wants to hunt you, they have to pay that amount.
3. The kiosk will ask for an image. The image will be optional, via dialog.
4. The Villain will be vulnerable immediately.
Sign up to play as a Hunter:
1. Choose free or purchasable weapons.
2. Villains are listed with their deposit amounts. Pay the kiosk the deposit amount.
3. The Hunter will be vulnerable after 1-2 minutes(?). This should reduce the possibility of Villains (or other Hunters) camping at the kiosks only to kill the Hunters before they have a chance to arm themselves.
Kiosks:
*Lists villains with name, kills, last known sim (weapons will tell the server what sim they are in), image if available, deposit requirement, and current worth.
-Villains get bigger, better weapons for free.
-Villain and Hunter weapons will be keyed to the villain so they cannot interfere in other fights.
-Weapons will not activate immediately upon attachment because they have to contact the server and get their target lists.
-Both Villains and Hunters can pay extra for better weapons.
-Take commissions (10%?) upon someone's death. If someone withdraws their deposit before they die, their own deposit is not charged commission, but whatever kills they have racked up are charged.
-Villain worth only increases with kills. A Villain can cash out at any time and his/her Hunters will have their deposits refunded in full.
-If a Villain and Hunter die at the same time, regardless of whose weapon caused it, the Hunter gets paid. Will need to do a bit of work to figure out the logic for this case. Maybe wait a few seconds after a Villain dies and if a Hunter dies in that time as well... what happens to the money? What if 5 Hunters and a Villain all die at once? Keep the money?
-Another possible situation is that Hunter A kills Villain, but then Hunter B immediately kills Hunter A. I think in this situation Hunter A should get the money.
-Have a free demo mode with limited weapons and limited Villain lifespan?
Damage System ideas
===================
-The system must NOT rely on the intended victim to be holding a weapon or other attachment for someone to be killed, as this would allow cheating to occur.
All weapons will stay in constant contact with the server so it always has a current list of its targets. Everyone in the same game (the villain and its hunters) can kill each other, with all Hunters killed adding to the Villain's worth.
-This means Hunters can kill Hunters to increase the pot if they want to.
-This also means Hunters can kill themselves with bombs.
-This also means players will be somewhat vulnerable in no-build and no-script areas.
-Need to determine how to report damage. Damage needs to be reported quickly and correctly without requiring the avatar being damaged to be wearing any attachments.
-In the case of bullets each bullet will have a script in it that a) turns the bullet phantom, nonphysical, and transparent upon collision, then b) if the collision is with an avatar it emails the server with the key and damage inflicted and dies. Bullets should be set to die after 5(?) seconds if no collision is detected.
-In the case of larger flying bombs I think what would be really neat is to have schrapnel -- The bomb rezzes or contains schrapnel prims, then when the main bomb detects a collision, it goes phantom, unlinks, and the whole thing blows up (spewing appropriate particles) and the schrapnel contain scripts just like the bullets. At the same time as it blows up it does a sensor scan and pushes any participating players accordingly. I *hope*
this is possible... would be a neat effect.
-When the server receives a damage report it updates the database accordingly, then forks processes to send the update to all the "Gear" that need the update (armor?).
-Damage reports received after the Villain is dead are ignored.
-This system will probably be too slow for a fast-action fight, although it will be accurate.
Gear
====
Weapons
-------
Obligatory hunting knife (free)
Swords
A few different pistols (free)
Sniper rifle
Assault rifles / guns (automatic / semiautomatic) (some free for Villain)
Laser guns
High-power Turret (very expensive, will allow kills while user is offline)
Long-range high-calibre gun
Cruise missile using autopilot script(? would assume knowledge of pinpoint location)
Grenades / Grenade launchers
Rocket laucher / Heat-seeking missiles
Block of C4 with timer (dialog-based set timer menu and touch-activated timer)
Vehicles (hopefully)
--------------------
-Vehicles would take damage before player
-Vehicles will be no-copy and relatively cheap (cheaper than most weapons)
Truck / Jeep without weapons
James Bond car with weapons
Helicopter with guns
Airplane with guns
Jet with bombs
Hovercraft / spaceship looking thing with laser guns
Tank
Tools
-----
Proximity Detector
Armor
Database
========
*Will need transactions, so use InnoDB tables
Users
-----
UserID int unsigned not null auto_increment primary key
Name varchar(??) not null
Key varchar(??) not null
LifetimeKills int unsigned not null default 0
Balance int not null default 0
Games
-----
GameID int unsigned not null auto_increment primary key
Name varchar(30) not null default ''
Deposit int unsigned not null default 0
Worth int unsigned not null default 0
Start datetime not null
End datetime null
WinnerKey varchar(??) null
WinnerName varchar(??) null
Players
-------
PlayerID int unsigned not null auto_increment primary key
UserID int unsigned not null
GameID int unsigned not null
PlayerTypeID int unsigned not null
HitPoints int not null default 1000
Region varchar(??) null
Kills int unsigned not null default 0
PlayerTypes
-----------
PlayerTypeID int unsigned not null auto_increment primary key
Name varchar(30) not null
('Hunter', 'Villain')
HitPoints
---------
HitPointID bigint unsigned not null auto_increment primary key
PlayerID int unsigned not null
InflictedByPlayerID int unsigned not null
ReportedByPlayerID int unsigned not null
Adjustment int not null default 0
Microtime float() unsigned not null
Gear
----
GearID bigint unsigned not null auto_increment primary key
PlayerID int unsigned not null
GearTypeID int unsigned not null
XmlRpcKey varchar(??) null
GearTypes
---------
GearTypeID int unsigned not null auto_increment primary key
PlayerTypeID int unsigned not null
Name varchar(??) not null
-Other columns to enable/disable bits describing the gear's capabilities as far as the server is concerned?
ReceiveTargetUpdates bit not null default 0 --Not all gear should need target list updates
ReceiveHealthUpdates bit not null default 0 --Not all gear should need health information
UserHistory
-----------
UserHistoryID bigint unsigned not null auto_increment primary key
UserID int unsigned not null
UserHistoryTypeID int unsigned not null
Timestamp datetime not null
Description varchar(200) null
Amount integer bigint not null default 0
Balance integer bigint not null default 0
UserHistoryTypes
----------------
UserHistoryTypeID int unsigned not null auto_increment primary key
Name varchar(50) not null