-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathEvEmu_Class_Descriptions.txt
391 lines (282 loc) · 14.2 KB
/
EvEmu_Class_Descriptions.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
Alasiya EvE Source Code Class definitions and descriptions
** NOTE: this does NOT include James' alliance and sov updates **
** this data is still incomplete, but better 27 June 20 **
** NOTE: i use the term "system" rather ambiguously here (and often).
lowercase "system" is used to mean a server system in which code is run. (i.e. the bookmark system)
solSystem means a solar system
* names for systems used by ccp
DogmaIM
item instance manager
processes item property changes
blurry line between DogmaIM and DogmaLM
DogmaLM
item location manager
processes item location changes
blurry line between DogmaIM and DogmaLM
Godma
item attribute manager
processes item attribute changes
Destiny
server-side object movement manager
Michelle
client-side object movement manager
Jennifer/Jessica
item renderer and misc python code snippets (probably more)
- this has never been seen outside CCP (in-house tool)
LSC
large scale chat
this system manages all chat communications and client notifications
neocom
client-side information manager
ballpark
client-side solar system object
each solar system has it's own ballpark in client
this ballpark is destroyed (in client) when docking or jumping
balls
space objects in a solar system
bubble
a container within a solar system for all non-static and global SE objects and have a set radius of 250km
also called a 'grid', these item containers hold data for all objects within its' sphere of influence (soi)
all non-global objects on a players screen are contained in the players current bubble
all non-static objects must be in a bubble, and can only be in one bubble at a time
suns, planets, moons, and stations are static objects and displayed separately (except stations, are never in a bubble)
some dynamic objects are considered global and displayed separately (i.e. cyno fields, system blockade units, customs offices)
bracket
hud display manager for balls
* non-class objects used by client/server systems *
call
a request from the client to the server
most expect a result from the server, but some are for information only
return
data sent from server to client as a result of a call
bound object
this is a special object used to make direct system calls to the server
they do not go thru the usual client processing/decoding
notification
data sent from server to client as a result of other client calls or data processing
error
data sent from server to client to describe an incorrect call or an error in processing
this data is usually sent as a notification
throw
this is an error sent on a specific 'channel' to client which calls client-side processing for the error
a throw will break out of the clients current processing loop
a throw can only be done during specific client calls
a throw cannot be sent during server processing of notifications
** ERRATA
a 'wire object' is a set of data sent over the network.
- these can be either calls or returns, but are always python
a 'packet' is the part of a decoded wire object from the client for a specific server system
- this does not include packets during login (which have different layouts)
- a packet has a type, source, destination, method, and payload
- type is call or return
- destination is server system, client id, character id, corporation id, or a myriad of other things
- method is the actual call the client wants (i.e. launch drone, activate mining laser, dock to station)
- payload is data pertaining to call (i.e. what drone ID, what laser to use and the asteroid ID to target, what station to dock to)
an 'instance' is an implementation of code at runtime in the server for a given system.
the server itself is a single instance.
clients connected to the server are multiple instances of same system (each client has it's own instance)
a 'server object' is an implementation of a class created in the running server.
- every instance of a class is a server object
- a SystemEntity and it's corresponding InventoryItem are separate server objects representing different states of the same game object
a 'game object' is an item used in the game.
i define an 'object' as a game item that can be in space without being contained within another item. all objects are SystemEntitys
- this is not to be confused with 'server object' or 'wire object'
i define an 'item' as a game item that must be in a container. this container can be in another item, or be an object.
items cannot survive in space without a container.
most items have an inventory and can contain other items
some items only contain objects and have no real object themselves (i.e. solarsystems)
everything in game is an item.
a SystemEntity is an object that can survive being in space without a container, i.e. Moon, Ship, Station, CargoContainer
- there have been SE updates that no longer really make much sense, but have yet to be fixed in class descriptions
an InventoryItem represents a game object in the server
- this can be either an object or item or both
- this can be a container for other objects or items (a ship has an inventory, a wreck contains items, etc)
items and objects are completely separate resources, but all objects are created for and from their respective item
as an example, a ship item is derived from InventoryItem and processes all inventory-type calls.
a ship object is the dynamic system entity found in space, created from it's relevant ship item.
most objects have references to their items (thru base SE class) but not vice-versa
all class pointers are derived from base class to allow generic dereferencing without knowing the specific derived class
all class pointer lifetime is handled in derived classes where applicable
*** Now, on to the class types ***
* the static and singleton classes *
* these classes have only a single instance running in the server and are part of the base system
eve-server
this is the main program code for the server emulator
it creates the initial static instances for main process systems and updates main loop timer
EntityList
main loop processor for server
this class is a container for all loaded solSystems, connected Clients, players ingame, and holds counts for loaded DSEs
BubbleManager
main control for all SystemBubbles
keeps track of all bubbles (across all solSystems) and used to determine placement for creating new bubbles
PyServiceManager
this manager is used to decode client calls and route packets to appropriate system for processing
it is also used to create and track bound objects for system processing
ItemFactory
class to process item creation and generic call processing
all generic item calls are run thru here to send to appropriate item class for processing
ModuleFactory
class to process ship module creation
after creation, control of the module item is handed over to it's ship's ModuleManager
Effects
specific system to process effects
this includes skill, module, ship, attribute, and system effects
ConsoleManager
interactive console class for running server
StaticDataMgr
handles loading and storage of static game data for entire server into easily-accessed memory objects
StatisticMgr
server information system for managing and saving trivial game data
Profiler
lightweight profiling code specifically for timing sections of running EvEmu application
this code is very basic, and very specific.
* server system class objects *
Timer
a countdown for a specific function
there are multiple timer instances for a vast array of items and objects
RefObject
this is a reference-counting class to manage lifetime of a server object
RefPtr
smart pointer class, derived from RefObject, used to maintain references to InventoryItems
BulkManager
class to verify and update client data
CachedObjectManager
poorly understood system to manage cache of calls and returns
intended to reduce server load/processing of returns that rarely change or change on a timed, periodic basis
AttributeManager
class to maintain item attributes
attribute data consists of an attribute ID and a value
attribute values can be either float or integer, and can switch between types after creation
all items have their own instance of the AttributeManager class
EvilNumber
a number class with data types for both float and integer variables
created specifically for attributes
SystemEntity
(there are multiple derived classes from this base class, and multiple classes derived from the derived classes that arent completely defined here)
Base (abbreviated as 'SE')
base class code, consisting of all class tests and common data types used for all SEs
contains various virtual methods that redirect and/or reference other systems for ease of data acquisition
Static (abbreviated as 'SSE')
static, non-mobile, non-destructible celestial objects - no TargetMgr, no DestinyMgr
(Sun, Planet, Moon, Station, Stargate, AsteroidBelt)
Station
this is the SSE object of a station item
Stargate
this is the SSE object of a stargate item
Item (abbreviated as 'ISE')
non-static, mobile, non-destructible celestial objects - no TargetMgr, has DestinyMgr
(Containers, Wrecks, DeadSpace)
Container
ISE object of a cargo container item
unanchored objects have a timer for deletion from solSystem when empty or after 2h
Wreck
ISE object of a destroyed ship object
Object (abbreviated as 'OSE')
non-static, non-mobile, destructible celestial objects - has TargetMgr, no DestinyMgr
(POS, Outposts, Asteroids, Deployables)
FieldSE
OSE object of force field for POS tower
Dynamic (abbreviated as 'DSE')
non-static, mobile, destructible celestial objects - has TargetMgr, has DestinyMgr
(Ships, Drones, Missiles)
NPC, Concord, Civilian, Sentry
DSE object for npc ships
Ship
DSE object for player ships
SystemManager
main control of solar system
maintains all objects within it's solSystem
each solSystem has its' own Manager instance
SystemBubble
bubble objects in a solar system.
maintains data on all objects within it's soi
DestinyManager
movement manager class, processing all movement for a given SE
each applicable SE has it's own instance of DestinyMgr
Client
this system is currently a combination of both an object for processing the client's program data and an object for processing player calls and returns
should be split into a "Client" and a "Player" class, but will require major code re-factoring and much thought to properly implement
InventoryItem
class to create, load, save, and maintain all game items
Inventory
system to manage contents of an InventoryItem
each applicable item has it's own Inventory instance
CosmicManager
multiple classes to manage specific aspects of solSystems
Anomaly
anomaly creation and destruction
Belt
asteroid manager
Civilian (singleton)
non-interactive NPC ships
Dungeon
dungeon spawning
Spawn
npc spawning
Wormhole (singleton)
universe-wide wormhole management
DogmaLM (Location Manager)
processes all calls for item location manipulation
Agent
this is a special NPC that is not derived from any Character or NPC class
they are only found in stations and used to process mission and locator calls
POS_ - Player Owned Structure (with subclasses)
Manager
processes all calls and returns of POS systems
Structure
the base DSE for POS items (following classes derived from this)
this includes territory claim units, system blockade units, planet orbitals (customs offices), structure upgrades and all POS items
Tower
also called Control Tower, or CT, this item is the main control structure of player-owned starbase systems
this is the code for managing and controlling all CT operations
Module
any item to enhance or extend a CTs functions
Reactor
item used to produce goods at POS system
Weapon_
pos weapon module
Array
pos weapon module
Battery
pos weapon module
ModuleItem
a subclass of InventoryItem specially for ship modules.
this class processes all module calls and data (activate/deactivate and effects)
ModuleManager
class for containing, tracking and processing all modules fit on a ship
has methods for install, remove, damage and destroy ship's modules
each ship has it's own instance of this class
Damage
specific code for processing damage
uses generic SE call for base damage processing
uses virtual SE calls for specific damage processing and kill handling
TargetManager
system for managing targets
each applicable SE has it's own TargetMgr instance
BookmarkManager
system to manage all aspects of bookmarks
DataClasses
data containers that cannot be trivially constructed or destroyed (not POD)
Colony
class for management of Planetary Interaction items
MapData
a group of methods and functions to get map info.
this is mostly used for getting random points in system, system jumps, and misc mission destination info
* server python classes *
these are the classes for python data
some are still not completely understood and are incomplete
found in /eve-common/python/
PyRep
base class for wire objects
derived from RefPtr to manage lifetime
* server python to c++ implementation classes *
** all these generators process the /eve-common/packets/*.xmlp files and convert into c++/python encode/decode implementations **
these generators have their own description file, along with a 'users manual' found in EvEmu_Crucible/doc/code_and_design_notes/eve_python_xmlp_tags
found in eve-xmlpktgen/
ConstructGenerator
DestructGenerator
CloneGenerator
DecodeGenerator
EncodeGenerator
HeaderGenerator
DumpGenerator