Category NPCs.html
NPC
Non-Player Characters are one of the main ways to earn in-game ISK when playing EVE. These are server-controlled ships and are one of a handful of factions: Guristas, Angel, Drones, Serpentis, Sansha, and Sleepers (feel free to edit if I forgot some).
TODO: I have some notes on this subject I have to add here, but here are my thoughs on initial stuff we need to get working for basic NPC stuff to function:
- NPC class to create a ship and allow its control in space and targeting and combat
- NPC AI class to make intelligent and/or scripted decisions on ship movement, targeting, combat, repair, support, and collaboration with other NPC ships in the same grid
- NPC bounties: we need to add data to all NPC ships in the database to specify the bounties of each NPC ship the player will receive when an NPC ship is killed and a system that on a 5-10 minute timer, all NPC kill bounties are queued up, summed, and delivered to the player's wallet
-- Bounties are already assigned via the dgmtypeattributes under attributeID 481 -- Deslona
- NPC Death and Wreck placement: we need to create linkages between NPC ships and their wrecks in some database table so the server knows which wreck object to spawn when that NPC ship is killed
-- This is handled by the invtypestowrecks table -- For example; typeID 2382 = Guristas Arrogator, creates wreckTypeID 26543 in invtypestowrecks, it would use the entity table x,y,z, system location -- Deslona
- NPC Loot Drop: we need to make some system by which certain parameters like NPC ship value, system security status, region, and random numbers are all used to determine what loot gets dropped into the wreck's container when it is killed
-- Security status doesn't effect the loot, but it does effect what will spawn. The same with region. Once a ship is spawned, it should be limited to it's loot tables. A Guristas ship shouldn't drop Ammar loot regardless of where it spawns. -- Deslona
NPC Artificial Intelligence
NPC AI in EVEmu is implemented as a series of Lua scripts that we create to analyze data from surroundings and then process it in some algorithms to make decisions to fly, target, shoot, warp, dock, jump, etc.
More to follow ;)
NPC Loot Drops
Page to assess how the tables and items should be distributed.
NPC Spawns
Some notes on how to create NPC spawns in the Database follow. We would like to create a Tab section in EVEmu Control Panel that would make creating spawn groups and spawn entries much easier and much more quickly.
- TODO - Create new EVEmu Control Panel tab called 'Spawn Creator' that allows admin or user to create their own spawn groups, spawn entries, and spawn bounds for the database.
There are four tables used to create spawns in EVEmu:
Table | Description |
---|---|
spawnBounds | ? |
spawnGroupEntries | ? |
spawnGroups | ? |
spawns | ? |
spawnBounds
In this table goes one record for each physical location of a spawn, such as a coordinate in space or perhaps in the future, EVEmu will support a locationID, such as an asteroid belt, station, or stargate. The spawnID value directly corresponds to the spawnID in the spawns table described below. At this time, it is unknown as to what the pointIndex refers to. Of course, the x,y,z values are the absolute position in space relative to the sun (0,0,0) in a solar system in which the spawn will be located. Since records in this table do not contain solar system IDs, one can use a record from this table multiple times, once for as many different solar systems as desired, however, absolute (x,y,z) coordinates only make sense for perhaps one system.
spawnGroupEntries
This table contains one record for each different type of NPC ship that is spawned for a particular spawnGroupID that is referenced in the spawnGroups table and for each entry in the spawns table. Each record in this table contains the typeID of the NPC ship, the quantity of these ships to be created for this spawn group, and the owner and corporation IDs to assign to these ships. To create a spawn group with multiple ship types, one must create a record in this table for each unique NPC ship typeID in the group.
spawnGroups
This table contains one record for each different spawnGroup whose members are specified in the spawnGroupEntries table where the records' spawnGroupID match. Records in this table simply specify the name of each spawn group and the formation they shall conform to when spawned.
spawns
This table contains the entire list of spawns all throughout the entire galaxy. One record is created per physical location of a spawn in any solar system, for each solar system, since one must specify the solarSystemID for the spawn record. When creating a spawn record in this table, one must specify a spawnID that matches one in the spawnBounds table to specify the physical location in the solar system, a solarSystemID to indicate into which solar system the spawn will appear at the spawnBounds location referenced, the spawnBoundType which is a formation (point, triangle, cube, tetrahedron, etc - see formations below), a spawnTimer value in seconds indicating how much time elapses before a spawn occurs, and a minimum and maximum respawn time, both of which are used to randomize how much time elapses before the next spawn occurs.
Spawn Formations
TBD