The Plugin Writer's Index

Everything about HD, MD, and their mods.

Moderator: Halo Moderators

Post Reply

Will you help?

Of course!
0
No votes
I want to help, but I don't have CE.
3
100%
Nope.
0
No votes
 
Total votes: 3

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

The Plugin Writer's Index

Post by Sparky » Sun Jan 24, 2010 10:41 pm

NEW!
Eschaton Plugin Writer's Guide v2.0
Introduction
The Plugin Writer's Index is a data structure index of every tag type for the Halo engine. Those who wish to participate in cataloguing the structure of each tag can take part in one of the following jobs. Essentially, this is a kind of reverse-engineering of HEK's Guerilla and can be used in creating a mac version of Guerilla and can serve as a collaborative project for Eschaton plugin authors.
Directions
Job 1: Catalog Structure

1. Open Guerilla and create a new tag of the type you want to index.
2. Take note of every field and its entry type (whether check box, float, integer, menu, file selector...)
3. Take note of every help text displayed when you hover the mouse over a field title
4. Organize the information in such a way that it is legible (we'll eventually develop a format for consistency) and post it here

Job 2: Catalog Data

1. Open Guerilla and find and open a working .scenario file.
2. In the scenario file, scroll down to the bottom where it says "References".
3. Add a new instance to the References. You can add up to 256 references to each scenario. Leave it blank for now.
4. Go under File -> New tag.... Choose the tag type that you want to index.
5. Save a blank copy of the tag to a directory wherever you'll be housing a bunch of these tags.
6. Check one flag or change one value, then save the tag as a new file. Use an order system to the filenames, like 1, 2, 3, or name the file after the value(s) that you changed inside it. This will make it easy to identify what has been changed inside each tag.
7. Once you've gotten a nice collection of tags, go back into that scenario tag and add those tags as instances under the References section, from step 3 above.
8. Build the cache file with Tool and transfer the file over to your mac (or whatever) and open the cache file with Eschaton.
9. Find the tags that you are indexing and recursively extract each one externally.
10. Compare the .meta files using HexEdit or another favorite file comparison program. Use the empty tag as a template and discover and catalog the other tag data!
Tag Checklist
Completion Key wrote:Structure Data
  • actor Structure
  • actor_variant Structure
  • antenna Structure
  • biped Structure
  • bitmap Structure
  • camera_track Structure
  • color_table Structure
  • continuous_damage_effect Structure
  • contrail Structure
  • damage_effect Structure
  • decal Structure
  • detail_object_collection Structure
  • device Structure
  • device_control Structure
  • device_light_fixture Structure
  • device_machine Structure
  • dialogue Structure
  • effect Structure
  • equipment Structure
  • flag Structure
  • fog Structure
  • font Structure
  • garbage Structure
  • gbxmodel Structure
  • globals
  • glow
  • grenade_hud_interface
  • hud_globals
  • hud_message_text
  • hud_number
  • input_device_defaults
  • item
  • item_collection
  • lens_flare
  • light
  • light_volume
  • lightning
  • material_effects
  • meter
  • model
  • model_animations
  • model_collision_geometry
  • multiplayer_scenario_description
  • object
  • particle
  • particle_system
  • physics
  • placeholder
  • point_physics
  • preferences_network_game
  • projectile
  • scenario
  • scenario_structure_bsp
  • scenery
  • shader
  • shader_environment
  • shader_model
  • shader_transparent_chicago
  • shader_transparent_chicago_extended
  • shader_transparent_generic
  • shader_transparent_glass
  • shader_transparent_meter
  • shader_transparent_plasma
  • shader_transparent_water
  • sky
  • sound
  • sound_environment
  • sound_looping
  • sound_scenery
  • spheroid
  • string_list
  • tag_collection
  • ui_widget_collection
  • ui_widget_definition
  • unicode_string_list
  • unit
  • unit_hud_interface
  • vehicle
  • virtual_keyboard
  • weapon
  • weapon_hud_interface
  • weather_particle_system
  • wind
Last edited by Sparky on Sun Jun 27, 2010 2:28 pm, edited 3 times in total.
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Contrail

Post by Sparky » Sun Jan 24, 2010 10:54 pm

Contrail (cont)
Structure

Code: Select all

flags
	first point unfaded
	last point unfaded
	points start pinned to media
	points start pinned to ground
	points always pinned to media
	points always pinned to ground
	edge effect fades slowly

scale flags										// These flags determine which fields are scaled by the contrail density
	point generation rate
	point velocity
	point velocity delta
	point velocity cone angle
	inherited velocity fraction
	sequence animation rate
	texture scale u
	texture scale v
	texture animation u
	texture animation v

POINT CREATION

point generation rate	float	points per second				// This many points are generated per second
point velocity			float	to	float	world units per second	// Velocity added to each point's initial velocity
point velocity cone angle	float	degrees					// Initial velocity is inside the cone defined by the marker's forward vector and this angle
inherited velocity fraction	float							// Fraction of parent object's velocity that is inherited by contrail points

RENDERING

render type		vertical orientation						// This specifies how the contrail is oriented in space
			horizontal orientation
			media mapped
			ground mapped
			viewer facing
			double-marker linked
texture repeats u		float							// Texture repeats per contrail segment
texture repeats v		float							// Texture repeats across contrail width
texture animation u		float		repeats per second			// The texture along the contrail is animated by this value
texture animation v		float		repeats per second			// The texture across the contrail is animated by this value
animation rate		float		frames per second
bitmap		(select file)
first sequence index	float
sequence count		float
shader flags
	sort bias
	nonlinear tint
	don't overdraw fp weapon
framebuffer blend function		alpha blend
					multiply
					double multiply
					add
					subtract
					component min
					component max
					alpha-multiply add
framebuffer fade mode		none
					fade when perpendicular
					fade when parallel
map flags
	unfiltered

SECONDARY MAP
Optional multi-textured second map

bitmap		(select file)
anchor		with primary
			with screen space
			zsprite
flags
	unfiltered
u-animation source		none
				A out
				B out
				C out
				D out
u-animation function	one
				zero
				cosine
				cosine (variable period)
				diagonal wave
				diagonal wave (variable period)
				slide
				slide (variable period)
				noise
				jitter
				wander
				spark
u-animation period		float		seconds				// 0 defaults to 1
u-animation phase		float
u-animation scale		float		repeats				// 0 defaults to 1
v-animation source		none
				A out
				B out
				C out
				D out
v-animation function	one
				zero
				cosine
				cosine (variable period)
				diagonal wave
				diagonal wave (variable period)
				slide
				slide (variable period)
				noise
				jitter
				wander
				spark
v-animation period		float		seconds				// 0 defaults to 1
v-animation phase		float
v-animation scale		float		repeats				// 0 defaults to 1
rotation-animation source		none
				A out
				B out
				C out
				D out
rotation-animation function	one
				zero
				cosine
				cosine (variable period)
				diagonal wave
				diagonal wave (variable period)
				slide
				slide (variable period)
				noise
				jitter
				wander
				spark
rotation-animation period		float		seconds			// 0 defaults to 1
rotation-animation phase		float
rotation-animation scale		float		degrees			// 0 defaults to 360
rotation-animation center		x float y float
zsprite radius scale		float

POINT STATES		float seconds	Add, Insert, Duplicate, Delete, Delete All
-STATE TIMING
	duration			float to float		seconds		// The time a point spends in this state
	transition duration		float to float		seconds		// The time a point takes to transition to the next state
-POINT VARIABLES
	physics		(select file)
	width			float		world units				// Contrail width at this point
	color lower bound	a float r float g float b float				// Contrail color at this point
	color upper bound	a float r float g float b float				// Contrail color at this point
	scale flags									// These flags determine which fields are scaled by the contrail density
		duration
		duration delta
		transition duration
		transition duration delta
		width
		color
Either you are groping for answers, or you are asking God and listening to Jesus.

Dirk

Re: Sticky me: The Plugin Writer's Index

Post by Dirk » Sun Jan 24, 2010 11:16 pm

Problem is, you don't know jack about halo structures and you cannot reverse engineer something by copy-pasting data from HEK.

Modzy
Green Beret
Posts: 3058
Joined: Fri Feb 22, 2008 11:06 pm
Location: Portland, OR

Re: Sticky me: The Plugin Writer's Index

Post by Modzy » Sun Jan 24, 2010 11:36 pm

lol@this topic
This idea is as old as HEK itself. I've even dipped my quill into it more than once with small projects like "Dawn" and "Architect."
The problem is the amount of work it really is to reverse every single tag, and do it properly. Few people around are even able to take on the task. Those few are limited to the Devs of Halo, who seem the only people capable of this work, note this doesn't include you, Sparky, your method will fail, and has too many issues you're probably not aware of. Not to mention your method has some meaningless steps that are not needed and will slow you down.

Leave the reverse engineering to the people who actually know how to do it, Sparky. We're not working for you, either.

Side note:
Architect's "Create New Tag" interface:
Image
Only had a few tags you could create, but it was open to expansion. The project is still active, but Pearl is the forefront of my projects for the foreseeable future.
I believe Alt had something similar on the back-burner called "Apocalypse."

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: Sticky me: The Plugin Writer's Index

Post by Sparky » Mon Jan 25, 2010 12:15 am

Dirk wrote:Problem is, you don't know jack about halo structures and you cannot reverse engineer something by copy-pasting data from HEK.
Thank you for that vote of confidence.
Modzy wrote:lol@this topic
This idea is as old as HEK itself. I've even dipped my quill into it more than once with small projects like "Dawn" and "Architect."
The problem is the amount of work it really is to reverse every single tag, and do it properly. Few people around are even able to take on the task. Those few are limited to the Devs of Halo, who seem the only people capable of this work, note this doesn't include you, Sparky, your method will fail, and has too many issues you're probably not aware of. Not to mention your method has some meaningless steps that are not needed and will slow you down.

Leave the reverse engineering to the people who actually know how to do it, Sparky. We're not working for you, either.
Thank you for that vote of confidence.

I will assume that when I have "copy-pasted" all the information into a file, as Dirk so tactfully put it, you will not be using it for any purpose. I'll be happy to put this on HDM instead when I'm done with it, and simply tell the rest of the MGM community when I'm done.

Keep up the great work with your own projects!
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Actr - Deca

Post by Sparky » Mon Jan 25, 2010 2:14 am

Structures for Actor through Decal (incomplete):

Code: Select all

##############
#Actor (actr)#
##############
Structure

flags *check*
	can see in darkness
	sneak uncovering target
	sneak uncovering puruit position
	unused
	shoot at target's last location
	try to stay still when crouched
	crouch when not in combat
	crouch when guarding
	unused
	must crouch to shoot
	panic when surprised
	always charge at enemies
	gets in vehicles with player
	start firing before aligned
	standing must move forward
	crouching must move forward
	defenseive crouch while charging
	use stalking behavior
	stalking freeze if exposed
	always berserk in attacking mode
	berserking uses panicked movement
	flying
	panicked by unopposable enemy
	crouch when hiding from unopposable enemy
	always charge in 'attacking' mode
	dive off ledges
	swarm
	suicidal melee attack
	cannot move while crouching
	fixed crouch facing
	crouch when in line of fire
	avoid friends' line of fire

more flags *check*
	avoid all enemy attack vectors
	must sttand to fire
	must stop to fire
	disallow vehicle combat
	pathfinding ignores danger
	panic in groups
	no corpse shooting

type *menu*
	elite
	jackal
	grunt
	hunter
	engineer
	assassin
	player
	marine
	crew
	combat form
	infection form
	carrier form
	monitor
	sentinel
	none
	mounted weapon

<h2>perception</h2>

max vision distance			*float*	world units
central vision angle		*float* degrees
max vision angle			*float* degrees
peripheral vision angle		*float* degrees
peripheral distance			*float* world units
standing gun offset			i *float*	i *float*	k *float*
crouching gun offset		i *float*	i *float*	k *float*
hearing distance			*float* world units
notice projectile chance	*float*	[0,1]
notice vehicle chance		*float*	[0,1]
combat perception time		*float*	seconds
guard perception time		*float*	seconds
non-combat perception time	*float*	seconds

<h2>movement</h2>

dive into cover chance		*float*	[0,1]
emerge from cover chance	*float*	[0,1]
dive from grenade chance	*float* [0,1]
pathfinding radius			*float*	world units
glass ignorance chance		*float*	[0,1]
stationary movement dist	*float*	world units
free-flying sidestep		*float*	world units
begin moving angle			*float*	degrees

<h2>looking</h2>

maximum aiming deviation	y *float*	p *float*
maximum looking deviation	y *float*	p *float*
noncombat look delta L		*float*	degrees
noncombat look delta R		*float*	degrees
combat look delta L			*float* degrees
combat look delta R			*float*	degrees
idle aiming range			y *float*	p *float*
idle looking range			y *float*	p *float*
event look time modifier	*float* to *float*
noncombat idle facing		*float* to *float*	seconds
noncombat idle aiming		*float* to *float*	seconds
noncombat idle looking		*float* to *float*	seconds
guard idle facing			*float* to *float*	seconds
guard idle aiming			*float* to *float*	seconds
guard idle looking			*float* to *float*	seconds
combat idle facing			*float* to *float*	seconds
combat idle aiming			*float* to *float*	seconds
combat idle looking			*float* to *float*	seconds
DO NOT USE					*openfile*
DO NOT USE					*openfile*

<h2>unopposable</h2>

unreachable danger trigger	*menu*
	never
	visible
	shooting
	shooting near us
	damaging us
	unused
	unused
	unused
	unused
	unused
vehicle danger trigger		*menu*
	never
	visible
	shooting
	shooting near us
	damaging us
	unused
	unused
	unused
	unused
	unused
player danger trigger		*menu*
	never
	visible
	shooting
	shooting near us
	damaging us
	unused
	unused
	unused
	unused
	unused
danger trigger time			*float* to *float*	seconds
friends killed trigger		*int*
friends retreating trigger	*int*
retreat time				*float* to *float*	seconds

<h2>panic</h2>

cowering time				*float* to *float*	seconds
friend killed panic chance	*float*	[0,1]
leader type					*menu*
	elite
	jackal
	grunt
	hunter
	engineer
	assassin
	player
	marine
	crew
	combat form
	infection form
	carrier form
	monitor
	sentinel
	none
	mounted weapon
leader killed panic chance	*float*	[0,1]
panic damage threshold		*float*	[0,1]
surprise distance			*float*	world units

<h2>defensive</h2>
	<notes>
	danger values:
		being aimed at: 0.7
		an enemy shooting in our general direction: 1.2
		an enemy shooting directly at us: 1.6
		an enemy damaging us: 2.0
	</notes>

hide behind cover time				*float* to *float*	seconds
hide target-not-visible time		*float*	seconds
hide shield fraction				*float*	[0,1]
attack shield fraction				...to be continued...
pursue shield fraction
defensive crouch type
attacking crouch threshold
defending crouch threshold
min stand time
min crouch time
defending hide time modifier
attacking evasion threshold
defending evasion threshold
evasion seek-cover chance
evasion delay time
max seek-cover distance
cover damage threshold
stalking discovery time
stalking max distance
stationary facing angle
change-facing stand time

<h2>pursuit</h2>

uncover delay time
target search time
pursuit-position time
num positions (coord)
num positions (normal)

<h2>berserk</h2>

melee attack delay
melee fudge factor
melee charge time
melee leap range
melee leap velocity
melee leap chance
melee leap ballistic
berserk damage amount
berserk damage threshold
berserk proximity
suicide sensing distance
berserk grenade chance

<h2>firing positions</h2>

guard position time
combat position time
old position avoid distance
friend avoid distance

<h2>communication</h2>

noncombat idle speech time
combat idle speech time
DO NOT USE

######################
#Actor Variant (actv)#
######################
Structure

flags
	can shoot while flying
	interpolate color in HSV
	has unlimited grenades
	moveswitch stay w/ friends
	active camouflage
	super active camouflage
	cannot use ranged weapons
	prefer passenger seat
actor definition
unit
major variant

<h2>movement switching</h2>
	<notes>
	note: only the flood combat forms will ever try to switch movement types voluntarily during combat
	</notes>

movement type
initial crouch chance
crouch time
run time

<h2>ranged combat</h2>

weapon
maximum firing distance
rate of fire
projectile error
first burst delay time
new-target firing pattern time
surprise delay time
surprise fire-wildly time
death fire-wildly chance
death fire-wildly time
desired combat range
custom stand gun offset
custom crouch gun offset
target tracking
target leading
weapon damage modifier
damage per second

<h2>burst geometry</h2>
	<notes>
	At the start of every burst, we pick a random point near the target to fire at, on either the left or the right side. The burst origin angle controls whether this error is exactly horizontal or might have some vertical component.
	Over the course of the burst, we move our projectiles back in the opposite direction towards the target. This return motion is also controlled by an anle that specifies how close to the horizontal it is.
	For example, if the burst origin angle and the burst return angle were both zero, and the return length was the same as the burst length, every burst would start the same amount away from the target (on either the left or right) and move back to exactly over the target at the end of the burst.
	</notes>

burst origin radius
burst origin angle
burst return length
burst return angle
burst duration
burst separation
burst angular velocity
special damage modifier
special projectile error

<h2>firing patterns</h2>
	<notes>
	A firing pattern lets you modify the properties of an actor's burst geometry. Actors choose which firing pattern to use based on their current state:
		'new-target' when the target just appeared,
		'moving' when the actor is moving,
		'berserk' if the actor is berserk.
	If none of these apply, no firing pattern is used.
	The default values in teh burst geometry are multiplied by any non-zero modifiers in the firing pattern.
	</notes>

new-target burst duration
new-target burst separation
new-target rate of fire
new-target projectile error
moving burst duration
moving burst separation
moving rate of fire
moving projectile error
berserk burst duration
berserk burst separation
berserk rate of fire
berserk projectile error

<h2>special-case firing properties</h2>

super-ballistic range
bombardment range
modified vision range
special-fire mode
special-fire situation
special-fire chance
special-fire delay

<h2>berserking and melee</h2>

melee range
melee abort range
berserk firing ranges
berserk melee range
berserk melee abort range

<h2>grenades</h2>

grenade type
trajectory type
grenade stimulus
minimum enemy count
enemy radius
grenade velocity
grenade ranges
collateral damage radius
grenade chance
grenade check time
encounter grenade timeout

<h2>items</h2>

equipment
grenade count
don't drop grenades chance
drop weapon loaded
drop weapon ammo

<h2>unit</h2>

body vitality
shield vitality
shield sapping radius
forced shader permutation

<h1>change colors</h1>

	color lower bound
	color upper bound

################
#Antenna (ant!)#
################
Structure

attachment marker name
bitmaps
physics
spring strength coefficient
falloff pixels
cutoff pixels

<h1>Vertices</h1>

	spring strength coefficient
	angles
	length
	sequence index
	color
	LOD color

##############
#Biped (bipd)#
##############
Structure

flags
	does not cast shadow
	transparent self-occlusion
	brighter than it should be
	not a pathfinding obstacle

bounding radius
bounding offset
origin offset
acceleration scale
model
animation graph
collision model
physics
modifier shader
creation effect
render bounding radius

<h2>export to functions</h2>

A in
B in
C in
D in
hud text message index
forced shader permutation index

<h1>Attachments</h1>

	type
	marker
	primary scale
	secondary scale
	change color

<h1>Widgets</h1>

	reference

<h1>Functions</h1>

	flags
		invert
		additive
		always active

	period
	scale period by
	function
	scale funciton by
	wobble funciton
	wobble period
	wobble magnitude
	square wave threshold
	step count
	map to
	sawtooth count
	add
	scale result by
	bounds mode
	bounds
	turn off with
	scale by
	usage

<h1>Change Colors</h1>

	darken by
	scale by
	scale flags
		bland in hsv
		...more colors
	
	color lower bound
	color upper bound
	
	<h1>Permutations</h1>
	
		weight
		color lower bound
		color upper bound

<h1> Predicted Resources</h1>

	type
	resource index
	tag index

<h2>$$$ Unit $$$</h2>

flags
	circular aiming
	destroyed after dying
	half-speed interpolation
	fires from camera
	entrance inside bounding sphere
	unused
	causes passenger dialogue
	resists pings
	melee attack is fatal
	don't reface during pings
	has no aiming
	simple creature
	impact melee attaches to unit
	impact melee dies on shields
	cannot open doors automatically
	melee attackers cannot attach
	not instantly killed by melee
	shield sapping
	runs around flaming
	inconsequential
	special cinematic unit
	ignored by autoaiming
	shields fry infection forms
	integrated light controls weapon
	integrated light lasts forever

default team
constand sound volume
rider damage fraction
integrated light toggle
A in
B in
C in
D in
camera field of view
camera stiffness
camera marker name
camera submerged marker name
pitch auto-level
pitch range

<h1>Camera Tracks</h1>

	track

seat acceleration scale
soft ping threshold
soft ping interrrupt time
hard ping threshold
hard ping interrupt time
hard death threshold
feign death threshold
feign death time
distance of evade animation
distance of dive animation
stunned movement threshold
feign death chance
feign repeat chance
spawned actor
spawned actor count
spawned velocity
aiming velocity maixmum
aiming acceleration maximum
casual aiming modifier
looking velocity maximum
looking accerlation maimum
AI vehicle rdius
AI danger radius
melee damage
motion sensor blip size

<h1>New HUD Interfaces</h1>

	unit hud interface

<h1>Dialogue Variants</h1>

	variant number
	dialogue

grenade velocity
grenade type
grenade count

<h1>Powered Seats</h1>

	driver powerup time
	driver powerdown time

<h1>Weapons</h1>

	weapon

<h1>Seats</h1>

	flags
		invisible
		locked
		driver
		gunner
		third person camera
		allows weapons
		third person on enter
		first person camera slaved to gun
		allow vehicle communication animations
		not valide without driver
		allow AI noncambatants
	
	label
	marker name
	acceleration scale
	yaw rate
	pitch rate
	camera marker name
	camera submerged marker name
	pitch auto-level
	pitch range
	
	<h1>Camera Tracks</h1>
	
		track
	
	<h1>Unit HUD Interface</h1>
	
		unit hud interface
	
	hud text message index
	yaw minimum
	yaw maximum
	built-in gunner

<h2>$$$ Biped $$$</h2>

moving turning speed
flags
	turns without animatiing
	uses player physics
	flying
	physics pill centered at origin
	spherical
	passes through other bipeds
	can climb any surface
	immune to falling damage
	rotate while airborne
	uses limp body physics
	has no dying airborne
	random speed increase
	unit uses old (NTSC) player physics

stationary turning threshold
A in
B in
C in
D in
DON'T USE

<h2>Flying</h2>

bank angle
bank apply time
bank decay time
pitch ratio
max velocity
max sidestep velocity
acceleration
deceleration
angular velocity maximum
angular acceleration maximum
crouch velocity modifier

<h2>Movement</h2>

maximum slope angle
downhill falloff angle
downhill cutoff angle
downhill velocity scale
uphill falloff angle
uphill cutoff angle
uphill velocity scale
footsteps

<h2>Jumping and Landing</h2>

jump velocity
maximum soft landing time
maximum hard landing time
minimum soft landing velocity
minimum hard landing velocity
maximum hard landing velocity
death hard landing velocity

<h2>Camera, Collision and Autoaim</h2>

standing camera height
crouching camera height
crouch transition time
standing collision height
crouchign collisoin height
collision radius
autoaim width

<h1>Contact Points</h1>

	marker name

###############
#Bitmap (bitm)#
###############
Structure

-Show Bitmaps-

<h2>type</h2>
	<notes>
	Type controls bitmap 'geometry'. All dimensions must be a power of two except for SPRITES and INTERFACE BITMAPS.
	
	*2D TEXTURES: Ordinary, 2D textures will be generated.
	*3D TEXTURES: Volume textures will be generated from each sequence of 2D texture 'slices'.
	*CUBE MAPS: Cube maps will be generated from each consecutive set of six 2D textures in each sequence. All faces of a cube map must be square and the same size.
	*SPRITES: Sprite texture pages will be generated.
	*INTERFACE BITMAPS: Similar to 2D TEXTURES, but without mipmaps and wihtout the power of two restriction.
	</notes>
	
type

<h2>format</h2>
	<notes>
	Format controls how pixels will be stored internally:
	
	*COMPRESSED WITH COLOR-KEY TRANSPARENCY: DXT1 compression, uses 4 bits per pixel. 4x4 blocks of pixels are reduced to 2 colors and interpolated. Alpha channedl uses color-key transparency instead of alpha from the plate (all zero-alpha pixels also have zero-color).
	*COMPRESSED WITH EXPLICIT ALPHA: DXT2/3 compression, uses 8 bits per pixel. Same as DXT1 without the color key transparency. Alpha channel uses alpha from plate quantized down to 4 bits per pixel.
	*COMPRESSED WITH INTERPOLATED ALPHA: DXT4/5 compression, uses 8 bits per pixel. Same as DXT2/3, except alpha is smoother. Better for smooth alpha gradients, worse for noisy alpha.
	*16-BIT COLOR: Uses 16 bits per pixel. Depending on the alpha channel, bitmaps are quantized to either r5g6b5 (no alpha), a1r5g5b5 (1-bit alpha), or a4r4g4b4 (>1 bit alpha).
	*32-BIT COLOR: Uses 32 bits per pixel. Very high quality, can have alpha at no added cost. This format takes up the most memory, however. Bitmap formats are x8r8g8b8 and a8r8g8b.
	*MONOCHROME: Uses either 8 or 16 bits per pixel. Bitmap formats are a8 (alpha), y8 (intensity), ay8 (combined alpha-intensity) and a8y8 (separate alpha-intensity).
	
	Note: Height maps (a.k.a. bump maps) should use 32-bit color; this is internally converted to a palettized format which takes less memory.
	</notes>
	
format

<h2>usage</h2>
	<notes>
	Usage controls how mipmaps are generated:
	
	*ALPHA BLEND: Pixels with zero alpha are ignored in mipmaps to prevent bleeding the transparent color.
	*DEFAULT: Downsampling works normally, as in Photoshop.
	*HEIGHT MAP: The bitmap (normally grayscale) is a height map which gets converted to a bump map. Uses <bump height> below. Alpha is passed through unmodified.
	*DETAIL MAP: Mipmap color fades to gray, controlled by <detail fade factor> bleow. Alpha fades to white.
	*LIGHT MAP: Generates no mipmaps. Do not use!
	*VECTOR MAP: Used mostly for special effects; pixels are treated as XYZ vectors and normalized after downsampling. Alpha is passed through unmodified.
	</notes>
	
usage
flags
	enable diffusion dithering
	disable height map compression
	uniform sprite sequences
	filthy sprite bug fix

<h2>post-processing</h2>
	<notes>
	These properties control how mipmaps are post-processed.
	</notes>

detail fade factor
sharpen amount
bump height

<h2>sprite processing</h2>
	<notes>
	When creating a sprite group, specify the number and size of textures that the group is allowed to occupy. During importing, you'll receive feedback about how well the alloted space was used.
	</notes>

sprite budget size
sprite budget count

<h2>color plate</h2>
	<notes>
	The original TIFF file used to import the bitmap group.
	</notes>

color plate width
color plate height
compressed color plate data

<h2>processed pixel data</h2>
	<notes>
	Pixel data after being processed by the tool.
	</notes>

processed pixel data

<h2>miscellaneous</h2>

blur filter size
alpha bias
mipmap count

<h2>...more sprite processing</h2>
	<notes>
	Sprite usage controls the background color of sprite plates.
	</notes>

sprite usage
sprite spacing

<h1>Sequences</h1>

	name
	first bitmap index
	bitmap count
	
	<h1>Sprites</h1>
	
		bitmap index
		left
		right
		top
		bottom
		registration point

<h1>bitmaps</h1>

	signature
	width
	height
	depth
	type
	format
	flags
		power of two dimensions
		compressed
		palettized
		swizzled
		linear
		v16u16
	
	registration point
	mipmap count
	pixels offset
	<unknown>
	<unknown>
	base_address

#####################
#Camera Track (trak)#
#####################
Structure

<h1>Control Points</h1>

	position
	orientation

####################
#Color Table (colo)#
####################
Structure

<h1>Colors</h1>

	name
	color

##########################
#Continuous Damage Effect#
##########################
Structure

radius
cutoff scale

<h2>vibrate parameters</h2>

low frequency
high frequency

<h2>camera shaking</h2>

random translation
random rotation
wobble function
wobble funciton period
wobble weight

<h2>damage</h2>

side effect
category
flags
	does not hurt owner
	can cause headshots
	pings resistant units
	does not hurt friends
	does not ping units
	detonates explosives
	only hurts shields
	causes flaming death
	damage indicators always point downwards
	skips shields
	only hurst one infection form
	can cause multiplayer headshots
	infection form pop

damage lower bound
damage upper bound
vehicle passthrough penalty
stun
maximum stun
stun time
instantaneous acceleration

<h2>damage modifiers</h2>

dirt
sand
stone
snow
wood
metal (hollow)
metal (thin)
metal (thick)
rubber
glass
force field
grunt
hunter armor
hunter skin
elite
jackal
jackal energy shield
engineer
engineer force field
flood combat form
flood carrier form
cyborg
cyborg energy shield
armored human
human
sentinel
monitor
plastic
water
leaves
elite energy shield
ice
hunter shield

#################
#Contrail (cont)#
#################
Structure

flags
	first point unfaded
	last point unfaded
	points start pinned to media
	points start pinned to ground
	points always pinned to media
	points always pinned to ground
	edge effect fades slowly

scale flags
	point generation rate
	point velocity
	point velocity delta
	point velocity cone angle
	inherited velocity fraction
	sequence animation rate
	texture scale u
	texture scale v
	texture animation u
	texture animation v

<h2>point creation</h2>

point geneartion rate
point velocity
point velocity cone angle
inherited velocity fraction

<h2>rendering</h2>

render type
texture repeats u
texture repeats v
texture animation u
texture animation v
animation rate
bitmap
first sequence index
sequence count
shader flags
	sort bias
	nonlinear tint
	don't overdraw fp weapon

framebuffer blend function
framebuffer fade mode
map flags

<h2>Secondary Map</h2>
	<notes>
	Optional multitextured second map
	</notes>

bitmap
anchor
flags
	unfiltered

u-animation source
u-animation function
u-animation period
u-animation phase
u-animation scale
v-animation source
v-animation function
v-animation period
v-animation phase
v-animation scale
rotation-animation source
rotation-animation function
rotation-animation period
rotation-animation phase
rotation-animation scale
rotation-animation center
zsprite radius scale

<h1>Point States</h1>

	<h2>state timing</h2>
	
		duration
		transition duration
	
	<h2>point variables</h2>
	
		physics
		width
		color lower bound
		color upper bound
		scale flags
			duration
			duration delta
			transition duration
			transition duration delta
			width
			color

######################
#Damage Effect (jpt!)#
######################
Structure

radius
cutoff scale
flags
	don't scale damage by distance

<h2>screen flash</h2>
	<notes>
	There are seven screen flash types:
	
	NONE: DST' = DST
	LIGHTEN: DST' = DST(1-A) + C
	DARKEN: DST' = DST(1-A) - C
	MAX: DST' = MAX[DST(1-C), (C-A)(1-DST)]
	MIN: DST' = MIN[DST(1-C), (C+A)(1-DST)]
	TINT: DST' = DST(1-C) + (A*PIN(2C - 1, 0, 1) + A)(1-DST)
	INVERT: DST' = DST(1-C) + A
	
	In the above equations, C and A represent the color and alpha of the screen flash, DST represents the color in the framebuffer before the screen flash is applied, and DST' represents the color after the screen flash is applied.
	</notes>

type
priority
duration
fade function
maximum intensity
color

<h2>low frequency vibrate</h2>

frequency
duration
fade function

<h2>high frequency vibrate</h2>

frequency
duration
fade function

<h2>temporary camera impulse</h2>

duration
fade function
rotation
pushback
jitter

<h2>permanent camera impulse</h2>

angle

<h2>camera shaking</h2>

duration
falloff function
random translation
random rotation
wobble function
wobble funciton period
wobble weight

<h2>sound</h2>

sound

<h2>breaking effect</h2>
	<notes>
	Controls particle velocities when a damage effct shatters a material.
	</notes>

forward velocity
forward radius
forward exponent
outward velocity
outward radius
outward exponent

<h2>damage</h2>

side effect
category
flags
	does not hurt owner
	can cause headshots
	pings resistant units
	does not hurt friends
	does not ping units
	detonates explosives
	only hurts shields
	causes flaming death
	damage indicators always point downwards
	skips shields
	only hurts one infection form
	can cause multiplayer headshots
	infection form pop

AOE core radius
damage lower bound
damage upper bound
vehicle passthrough penalty
active camouflage damage
stun
maximum stun
stun time
instantaneous acceleration

<h2>damage modifiers</h2>

dirt
sand
stone
snow
wood
metal (hollow)
metal (thin)
metal (thick)
rubber
glass
force field
grunt
hunter armor
hunter skin
elite
jackal
jackal energy shield
engineer
engineer force field
flood combat form
flood carrier form
cyborg
cyborg energy shield
armored human
human
sentinel
monitor
plastic
water
leaves
elite energy shield
ice
hunter shield

##############
#Decal (deca)#
##############
Structure

<h2>decal</h2>
	<notes>
	A 'compound decal' is a chain of decals which are instatntiated simultaneously. Compound decals are created by choosing a <next_decal_in_chain> below. NOTE: Do not attempt to create a circularly linked decal chain, i.e. A->B->C->A! Also, do not reference a decal from an effect if it is not the 'head' of the chain; for example and effect should not instantiate decal B if the chain was A->B->C. Compound decals can have separate bitmaps, separate framebuffer blend functions, and can be drawn in separate layers. In addition, each decal in the chain can either inherit its parent's <radius>, rotation, <color>, <fade>, and <sequence> - or it can randomly choose its own. The behavior is controlled by the 'geometry_inherited_by_next_decal_in_chain' flag, below.
	
	The decal <type> (or layer) determines the drawing order of the decal with respect to the rest of the environment. Decals in the primary layer are drawn after the environment diffuse texture, hence they affect the already-lit texture of the surface. Decals in the secondary layer are drawn immediately after decals in the primary layer, so they 'cover up' the primary decals. Decals in the 'light' layer are drawn before the einvironement diffuse texture, hence they affect the accumulated diffuse light and only indirectly affect the lit texture.
	</notes>

flags
	geometry inherited by next decal in chain
	interpolate color in hsv
	...more colors
	no random rotation
	water effect
	SAPIEN- snap to axis
	SAPIEN- incremental counter
	animation loop
	preserve aspect

type
layer
next decal in chain

<h2>radius and color</h2>

radius
intensity
color lower bounds
color upper bounds

<h2>animation</h2>

animation loop frame
animation speed
lifetime
decay time

<h2>shader</h2>

framebuffer blend function
map

<h2>sprite info</h2>

maximum sprite extent

#################################
#Detail Object Collection (dobj)#
#################################
Structure
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: Sticky me: The Plugin Writer's Index

Post by Sparky » Mon Jan 25, 2010 2:26 am

Note: I'm posting all the info out in code text here so that it can be useful for when people search the forums for info. After I'm finished with the file, I'll upload it to HDM and add it on a wiki page, perhaps, in addition to downloadable file form. Syntax is as it appears in the previous post, with indentations important for hierarchy, as in Python.
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: Sticky me: The Plugin Writer's Index

Post by Sparky » Wed Jan 27, 2010 10:35 pm

Update: I've added the structures of 24 tags to HDM. Each tag's structure is listed under it's tag page.
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

The Plugin Writer's Guide

Post by Sparky » Mon Jun 21, 2010 8:49 am

I've created a Plugin Writer's Guide. Version 1.0 includes a tutorial on how to create Entity-style plugins for Eschaton. Version 2.0 finalizes that tutorial.

The tutorial is best viewed with Smultron.
Last edited by Sparky on Sun Jun 27, 2010 2:26 pm, edited 1 time in total.
Either you are groping for answers, or you are asking God and listening to Jesus.

Altimit01
Eschaton Dev
Eschaton Dev
Posts: 2108
Joined: Sun Apr 15, 2007 7:43 pm

Re: The Plugin Writer's Index

Post by Altimit01 » Wed Jun 23, 2010 4:58 pm

It'd probably be more efficient to do what conure did and just hack the object data out of HEK. But then his HDD died and he said frack it. G'luck.
Disclaimer: I am no longer active. Any posts, PMs or other communication I use has no guarantee of accuracy or follow up.
Download Eschaton: Mediafire

Modzy
Green Beret
Posts: 3058
Joined: Fri Feb 22, 2008 11:06 pm
Location: Portland, OR

Re: The Plugin Writer's Index

Post by Modzy » Wed Jun 23, 2010 10:31 pm

Altimit01 wrote:It'd probably be more efficient to do what conure did and just hack the object data out of HEK. But then his HDD died and he said frack it. G'luck.
But then you end up with every tag class having obscure information, sometimes missing identification for the values.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: The Plugin Writer's Index

Post by Sparky » Sun Jun 27, 2010 2:29 pm

Version 2.0 of the plugin writer's guide released. Link prepended to the first post above.

EDIT: Minor updates to this final version released. Newer version uploaded.
Either you are groping for answers, or you are asking God and listening to Jesus.

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 50 guests