This article will guide you through the process of creating a completely new ammunition type inside the Editor setup.
ToDo: instead of creating detailed guide for this, we should simply introduce a creator window that only shows the most relevant fields for editing.
Steps
you should find an existing flavour that most closely matches your intended end result,
duplicate it, rename it, and start your customization from there.
This is because the existing flavours, especially those generated in the test scenes, must’ve been guaranteed to function properly.
All images mentioned here should be selected inside Sprite invariant->Image id in the respective flavours.
You will need these flavours:
- The
shootable_charge
flavour of the cartridge itself - basically, just an item that can be dropped to the ground or stored in a backpack.- You will need an image.
- Examples:
-
Cyan charge:
-
Orange charge:
-
- Examples:
- Make sure to customize:
- item invariant’s
space_occupied_per_charge
as it determines how many charges fit into respective magazines. - cartridge invariant’s
shell_trace_particles
to give a unique effect to the hot shell that has just been cast out of the chamber.
- item invariant’s
- You will need an image.
- The
plain_missile
flavour of the round that is spawned upon shooting.- You will need an image.
- Examples:
-
Cyan round (colorized in the game - the image is reused for rounds of different colors):
-
Orange round:
- Almost identical to the charge image, but sometimes it may be appropriate.
-
- It is recommended to give it a strong neon map so the round is visible in the dark.
- It is recommended to give a proper physical shape to the bullet in the image meta.
- The shapes for round images should remain convex to avoid some strange physics bugs.
- Examples:
- Make sure to customize:
- missile invariant
pe_damage_ratio
. This ratio determines the amount of Personal Electricity that is required to spawn this round in a magical weapon, like Amplifier arm. A reasonable default is0.25
.- For example, since the
ELECTRIC_MISSILE
round flavour has a base damage of42
, the PE required to spawn it isfloor(42 * 0.25) == floor(10.5) == 10
- For example, since the
trace_particles
. This determines the stream of particles that flies along the bullet in mid-air.- Also,
trace_particles_fly_backwards
- Also,
trace_sound
. This determines the sound that the bullet will make when it passes close to your ear.muzzle_leave_particles
. This determines the explosion that happens during a shot.- The entire
damage
field. What it does is self-explanatory. ricochet_sound
andricochet_particles
. Self-explanatory.max_lifetime_ms
. Determines how long will the bullet live, in milliseconds.recoil_multiplier
- The contribution of recoil per every shot.1
means no contribution.remnant_flavours
. A vector of flavours that will behoming_towards_hostile_strength
- The round can “magically” seek the nearby enemies while in mid-air.- For example, the Amplifier arm’s missile flavour has this force set to
1.0
.
- For example, the Amplifier arm’s missile flavour has this force set to
damage_falloff_starting_distance
- Not implemented.minimum_amount_after_falloff
- Not implemented.
- Optional: rigid body invariant
- If you want the missile’s velocity to not be linear, but to start fast and damp over time,
you will need to set a non-zero linear damping. For example, the standard shotgun pellets have a damping of
3
,
whereas all other rounds have it0
.
- If you want the missile’s velocity to not be linear, but to start fast and damp over time,
you will need to set a non-zero linear damping. For example, the standard shotgun pellets have a damping of
- missile invariant
- You will need an image.
- The
remnant_body
flavour of the shell that is spawned upon shooting.- You will need an image.
- Examples:
-
Cyan shell:
-
Orange shell:
-
- Examples:
- Make sure to customize:
- remnant invariant.
- You will need an image.
- The
finishing_trace
flavour of the entity that is spawned upon the bullet’s impact.- Usually, you should just set the Sprite invariant to be the same as of the round itself.
- For example, finishing trace of the cyan round will smoothly shrink with the same sprite, until it disappears completely.
- Later, this flavour might contain some explosion information for exploding rounds.
- Usually, you should just set the Sprite invariant to be the same as of the round itself.
- Optional: One or more
remnant_body
flavours of the bullet remnant. These will be spawned upon the bullet’s impact.- You will need an image.
- Examples:
-
Steel round remnant 1:
-
Steel round remnant 2:
-
Steel round remnant 3:
-
- Examples:
- Make sure to customize:
- remnant invariant
lifetime_secs
. Obviously, to avoid bloating the scene, the bullet remnants have a very limited lifespan. This value shouldn’t be greater than a mere second or two.start_shrinking_when_remaining_ms
. Self-explanatory.trace_particles
. This determines the stream of particles that flies along the remnant in mid-air.
- remnant invariant
- Remember to set the
remnant_flavours
in the missile invariant of the flavour that is to spawn these remnants upon shooting.
- You will need an image.
If the ammo is intended to be used for a shotgun with a chamber magazine,
and thus each cartridge is going to be loaded by hand, you’ll need to set a proper price in the item invariant.