Serious Sam Fusion 2017 (beta)

Serious Sam Fusion 2017 (beta)

90 ratings
Creating Custom Weapons
By noam 2000
Serious Sam Fusion 2017 provides a ton of new improvements and features for modders to enjoy. One of the biggest features that has been introduced is one that the community has waited for a really long time - the ability to create custom weapon resources without having them replace official ones!

That means, we may finally have custom maps that provides new weapons, or mods such as NSKuber's weapon management that allow you to switch between different weapon types, and also not be limited anymore by a certain number of weapons! Tons of new opportunities await with this new feature. The question remains - how do you create them?

Creating them is very simple. If you had experience before in making custom enemies, then this should be absolutely no problem for you. And even if you don't, that's what the guide is for!

Please note however, this guide will explain how to set up and use the new feature in the editor. I won't be explaining the process of creating, importing or animating your model. If you are unfamiliar with that, I highly recommend you check out this guide by Soulmyr.

Without further ado, let's begin!

3
   
Award
Favorite
Favorited
Unfavorite
Setting Up The Weapon Models
The way we are able right now to create custom weapons is by using other existing weapons as 'bases'. That means, we may re-save an existing weapon and edit it to our likings. That would be until the GenericWeapon feature gets finished which should be a lot better and provide a lot more options to be played around with, but rumor has it that won't be ready until SS4. Although the current method sounds as if we are restricted to making only cosmetic changes, that is not the case at all. We are still provided with a ton of options and settings to fiddle around with, to fit the weapon to our liking. For example, in my Eraser Gun weapon, I've turned a rocket launcher into a railgun! All these different settings will be explained later on in the guide.

So for starters, we're gonna take care of all the new models. For our weapon, we will need to create the following models:

Weapon_FP
Weapon_VR
Weapon_ForItem
Weapon_Item
Weapon_TP (somewhat optional)

For this tutorial, I'm gonna be making an "Ooze Gun" - yet another weapon inspired by the upcoming Serious Sam game "Serious Sam's Bogus Detour".

[SETTING UP THE _FP MODEL]

My weapon acts somewhat similiar to the grenade launcher, and so I will use the grenade launcher as the base for my weapon. Open your desired weapon base _FP model (unless you insist on creating your weapon model from scratch and know what you need to do, which is also fine.) Weapon models are usually located in "Content/*gamename*/Models/Weapons/". For example, "Content/SeriousSamHD/Models/Weapons/GrenadeLauncher/GrenadeLauncher_HD_FP".

Once you have opened it, resave it in a different place. For example, "Content/SeriousSamHD/Models/Weapons/OozeGun/OozeGun_FP".

Now you can start changing the model, reanimating it, and edit it to your liking. Do not forget to unshare official resources before editing them!

Some important things to note:

- In the children holder tab, usually "Barrel01" is the attachment that decides from where your projectile comes out from. Don't forget to move that to the right place on your model.

- Other attachments could be used to determine effects position.

Once you are done, simply save and that should be that for your First Person model.




[SETTING UP THE _VR MODEL]

Now it's time to make the VR part of the model. Simply resave the _FP model and rename it to _VR (OozeGun_FP > OozeGun_VR).

For VR, we will need to add an ammo counter to the model (if your weapon uses ammo), change the animations to be minimalistic and.. well, that's about it! You may want to remove things like hands if you used them, though.

Similiar to how we did the FP model, re-save your base weapon's _VR model, and edit it. To add the ammo counter, all you simply have to do is open another VR weapon model that uses ammo, find the ammo counter on the model and simply copy-paste it and position it on your own weapon model. Simple as that!


If your VR weapon has instant hit and has no spread (for example, the colts or the tommygun in SSHD), it is recommended to add a laser sight. To add it, all you simply have to do is add an attachment in the children holder tab, and name it "Laser". Place it at the right place, and the game will automatically add a laser sight at that attachment for VR.


Now as for the animations, VR weapons should have minimalistic animations. That means, they should not move around too much (or at all) or it will feel weird or unnatural. You may see this from the edits of the original VR weapons. If you are not using any custom animations, You can simply switch from the "FP" animset to the "VR" animset in the Anim host. (for example, from GrenadeLauncher_HD_FP_Animations to GrenadeLauncher_HD_VR_Animations).

If you have created your own custom animations for your model, you will need to once again re-save your animset and edit the animations so that the gun doesn't move by itself and stays somewhat static. (light bobbing is fine, like with the VR tommygun)

An important thing to note is, while people who do have VR can easily edit the "VR Rendering Params" and test it for themselves if the weapon is not located properly, people who do not have a VR headset are unable to test whether the VR model is in the right location and doesn't end up broken in VR. A little tip you can use for this is go to "Children Holder" and add an attachment. Set the model of the attachment to your VR weapon base (for example, I'd put GrenadeLauncher_VR). Now you are able to compare the two weapons and place your model accordingly. Don't forget to remove the attachment once you're through!

_This next part is only if you want your VR weapon to be two-handed (like the sniper rifle, instead of dual wielded you hold one weapon with two hands). If you want your VR weapon to be dual wielded, skip this part_

To prepare the model for two-handed.. ness?, you simply need to do two things (with one of them being optional.) You will need to add a new attachment in the Children Holder called "OffHandGrip". set the target bone and place it at the area where you put your second hand at. This will be the point in which you can rotate your gun with the second hand.

The second thing you need to do which is optional, is the glowy blue indicator at the grip that shows you where to.. well, grip your weapon. All you simply have to do is enter the mesh editor and create an extra part which will glow. You can copy the grip part of the weapon and paste it, and then just slightly make it bigger. After you have done that, give the new part you just copied a new surface map. Now, I could explain to you how to set up each and every setting of the shader, but it would be easier for you to simply open the VR sniper model, enter mesh editor and find the "Grip" surface map. Simply select it, copy it and paste it over your grip surface map. That's about it! Your model is now ready to be two-handed.



[SETTING UP THE _ForItem MODEL]

The _ForItem model is the model of our weapon without things like hands - it's how the weapon should look like in the world, outside of first person. We will be using it as a reference for the Item model.

Simply re-save your _FP model and rename it from _FP to _ForItem. Then edit the model to look the way it should in the world (at some cases you might not have to do anything, like my ooze gun which doesn't have any hands attached in its model. At such cases you could even use your _FP model for the item, but I prefer to make a ForItem model just in case.)

[SETTING UP THE _Item MODEL]

Now in order to create the pickable item model, we're gonna go back to the weapon base we want to use and open up the _Item model from it (for example, GrenadeLauncher_Item).

This model contains the mechanism, sounds and most importantly - animations that items use. You may edit those to your liking, but I would like to use the classic SSHD item animations.

Resave the model into your own folder with _Item at the end of its name. Go to children holder, and change the Item attachment's model into your "_ForItem" model.


You may preview the animation at the "List" tab (next to the others tabs such as "Config, Tools, etc. if you do not see it, go to the bar on top and next to File and Edit, click View > Tools.)

Sometimes the oscillation animation might look a little weird, either your weapon being the wrong size or not rotating at the center. That's an easy solution, of course. You can resize the attachment at Stretch and move the attachment to the center by clicking it and moving it. Play around with it until the result looks good.










Setting Up The Weapon Models - Continuation
...huh, looks like I reached the word limit for a single section. Quite the talker aren't I :P

[SETTING UP THE _TP MODEL]

A "third person" model is not something very common, and not really used by croteam themselves. It is something I like to keep for myself, in the case that _ForItem model does not fit well in third person and has to just adjusted.

You could simply use the _ForItem model and edit it to fit in third person, and after that fix the Item model accordingly. But I simply prefer having a seperate model for that.

So all you simply have to do is open your _ForItem model and resave that and your mesh as _TP, and save it. I am not going to touch it any more for now, but will when I get to test it in game and see what changes should be made in third person.

And that's that for the weapon models! Now let's move on to creating the ammo and projectiles.
Setting Up The Ammo & Projectile Models
Let's begin first with the ammo models. If your weapon does not use ammo, you can skip this part.

Open up an existing ammo item (unless, again, you wanna do it from scratch and know what to do, go ahead :P), for example, "Content/SeriousSamHD/Models/Items/Ammo/Grenades.mdl". Notice how there's two kinds of models for ammo, regular one and another one that ends with "_Item". This works the same way that "ForItem" and "Item" work in the weapon models. The regular model is the one containing the mesh, the _Item model contains all the necessary things for an item (mechanism, animations, sounds, etc), and uses the regular model as an attachment.

Open up the regular model first and re-save it with your own name (Ooze, for example). Create a new mesh and import your model there. Make sure the sizes are alright, and save. Now open up the _Item model and re-save it again with your own name (Ooze_Item), and in the same way we changed Weapon_Item, go to Children holder and change the Item model to your model. And once again, you are free to change whatever you would like in it (animations, sounds etc. Just don't forget to unshare/re-save saved resources!)

That should be pretty much it. Now for the the projectile.



If your weapon does not use any projectiles (only bullets), you can skip this part.

Once again, for the projectile I would recommend starting with a base that you can edit to your liking, but you can, again, do it from scratch if you know what to do. Open up a certain projectile model from "Models/Projectiles" (for example, Content/SeriousSamHD/Models/Projectiles/Grenade/Grenade.mdl).

Resave the model to your own folder and edit it to your liking - the model, sounds, particle effects. Note that in projectiles, there's two commonly used particles in the "Particles Scheme" of the schemes, and those are "Flying" and "Explosion". Setting an effect in "Flying" will play the effect when the projectile is flying (or falling, it doesn't matter much. as long as the projectile is moving, it will play.) The "Explosion" one is played when the projectile is destroyed, 'explodes'.

In the destruction (destruction editor) you can also set many different things to play when your projectile is destroyed (sounds, effects, shake effects, etc.) However if you dont need more than just one explosion effects or sound, just use the "Explosion" term in the particle/sound scheme.

Also make sure to adjust the collision box in the mechanism (Mechanism editor) so that it fits accordingly to your projectile model.




And with that, we are finally finished creating the necessary models for our weapon!



HUD Icons
Just before we begin working on the weapon parameters, we need to create custom HUD icons for our weapon and ammo.

The weapon's hud icon size should be 128x64, while the ammo should be 64x64. Here, for example, are the icons are I created.





Once you have created them, save them either in your own folder or along with the other weapon icons located in "Textures/Interface/WeaponIcons || "Textures/Interface/AmmoIcons".

Now you can go to Texture > Create Textures. However, before you create them, In the "Atlas group params", you must set the HUD resource which is located in "Content/Shared/Databases/DynamicAtlasGroups/HUD.rsc". After that you can create.


Now that we have created the icons, we can finally tackle the weapon params!


Weapon Parameters
Now we will create the weapon parameters - it is a file that contains inside of it a lot of different settings to be used for our weapon. Go to "Content/*gamename*/Databases/Weapons", and open the weapon file which you used as a base. For me, that would be "Content/SeriousSamHD/Databases/Weapons/GrenadeLauncherWeapon.ep".

Once opened, re-save it with its own name ("OozeGunWeapon.ep").

Look at that! So many different options and settings to play around with. Most of them -should- be self-explanatory, but I will still walk you through the important ones.

First one is "Ammo Type", which is the ammo the weapon will use. This is also a resource file of its own as it will be used for the ammo item as well. If you do not wish your weapon to use any ammo, simply remove it. If your weapon uses custom ammo, then re-save this file and start changing accordingly.


Auto fire decides whether the weapon will keep shooting if you hold down your fire key. For example, the tommygun has auto-fire, the shotgun does not.

Charging time is the amount of time it takes to charge the weapon (if your weapon is chargeable, like the grenade launcher or cannon)

Min/Max charge recoil duration is the recoil duration - the amount of time you are unable to fire after firing your weapon. Min/Max refers to chargeable weapons - min recoil duration is for the lowest amount of time the weapon was charged, the max recoil duration is for the longest amount of time the weapon was charged. If your weapon is not chargeable those two can pretty much be the same.

The projectile - now this is an important one. If your weapon shoots bullets and not projectiles then you can skip this part, there should be settings for bullet damage for bullet-type weapons like the colts or tommygun. Also note that setting a projectile for bullet-type weapons might not work. For weapons that shoot projectiles like the rocket launcher or grenade launcher, the projectile is its own file as well. Re-save it as your own file and open it, to reveal a bunch of more settings to set for your projectile!
Again, there are a lot of settings and most are self-explanatory, so I will only go through the important ones:

Model: put your projectile model here. Flags: Different flags you can set to affect the projectile's behavior. Launch velocity: the speed/velocity of the projectile. Stretch: Stretch the projectile's size. Damage (min/max) - the minimum and maximum amount of damage the weapon can deal. Range damage - the damage dealt not directly - by a certain radius around the projectile which you can set yourself. Damage fall off + Damage hotspot - That certain radius around the projectiles which deals splash damage. The hotspot is the point where you suffer all of the damage, while the fall off is you suffer the damage depending on close you are. Life time: How long can the projectile 'live' before exploding.

That's that for the projectile. Back to the weapon!

Name - the name of your weapon.

HUD Icon - put your HUD icon here.

Weapon slot - the slot the weapon will be in on the HUD. The first number represents the rows while the one that follows after the dot represents the columns. for example, if I'd like to put my weapon on the 7th row, 3rd column, I would write 7.3.

Selection wheel slot - the weapon's slot in VR. The numbers there do not matter as much as the weapons are mostly scattered around together without, at least as far as I can see, a real order.

UPDATE: Due to the VR selection wheel slots being very limited, coupled with the bug that happens when two weapons use the same slot and become unuseable, NSKuber has released a wonderful mod that extends the selection wheel up to 59 slots. ( Get it right here )

So when setting up your selection wheel slot, it is recommended to choose a random value between 20 and 59, to avoid it overlapping with vanilla weapons, and decreasing the chances of it overlapping with another weapon!

Slots Table [docs.google.com]

Netricsa message:

Category: In what category is your netricsa message
Model: The path to your _Item model
Animation: The animation that the item model will play
(SS1) Text: The info text of the netricsa entry. You can simply create a .txt file, write stuff on it and save it in your weapon folder, and link the path there.
(SS1) Model Size: The size of your model in the netricsa entry - note that the number somewhat go in reverse, the lower the number is, the bigger the model is.
(SS1) Offset: Offset of the model in the netricsa entry.

Note that this netricsa is only for SSHD.

Model/VR Model - Put your FP and VR model here.

Left/Right hand tool - Those are the 'tools' your player model uses, and this is where you can set your third person weapon model. However, the tool name must have a specific name so that the player model can recognize which animations to use. Because of that, when re-saving those tools, create another folder with your gun's name on it, and re-save the tools there, with the same name. after you have re-saved, simply set the model and save. Do so for both tools and the VR tools.


Rendering parameters - those parameters help you set the location and angle of your weapon on the screen. Re-save the file and play around with the position/angle/FOV/Bobbing multiplier, etc. You won't be able to see the changes right now, only once we insert the weapon into a world and you get to hold it yourself. Then you can continue making changes until you feel satisfied.

Two handed - This is only for people who prepared their VR model to be two-handed. If you did, tick the little box. If you prepared it for dual wielding, keep it unticked.

Those should be the -important- parts of the weapon parameters, but of course, there are many more settings to play around with. Take your time to check them out! Once done, let's move on to creating the item.
Items
Now it's time to create the items that will grant us our weapon/ammo.

Let's start with the ammo one quickly first. If you did not create any ammo, then you can skip this part. First, load any level you'd like so that we will be able to test it on there. Just be sure to not accidently save the level!

Insert a "Generic Item" entity from the entitiy list. In the "Item Params", insert the base ammo you would like to use. (Grenades for me) [Ammo items are located in Content/*gamename*/Databases/Items _OR_ GenericItems/Ammo] . After that, re-save them to your own. (Ooze)

Set the "Ammo type" to the same file that we created and set in the weapon params, and set the model to your item model. Save your item params and that's about it! There are more settings to play around with if you'd like, I will leave that to you.

Now let's create the weapon item. Insert another "Generic Item", this time set the Item Params to the base weapon you'd like to use (Grenade Launcher for me) [Weapon items are located in Content/*gamename*/Databases/Items _OR GenericItems/Weapons]. Re-save this file to your own and set the Weapon Params to the one that we just created, as well as the Item model for the model.

With that, it should be ready! Now you can finally test it. Chances are you will still need to adjust and fix a few things, so check and test everything properly.

Once finished, you can finally pack everything into a gro and upload it to the workshop!

Final Note
Thank you very much for reading this guide, and I hope it didn't end up too confusing. I did not have the time to explain the basic SED things like importing a model, yet I feel like I ended up still explaining a few very basic things, and just ending up in a really weird mix of both. Either way, the purpose of this guide was to help you go through the process of custom weapon creation, as well as a few important notes you may or may not have known about (for example, third person model workaround).

If you did not understand something and need help, feel free to leave a comment! I will try my best to help you.
19 Comments
TIPPLE 8 Jul @ 11:41pm 
Is there a way to change the outline color of a weapon. So my custom weapon flashes red from a distance, can I change it to a green outline?
EGO 17 Apr, 2021 @ 7:31am 
Good tutorial!!!
M1L1tarist 16 Jan, 2021 @ 11:41pm 
Так, на свой вопрос сам нашёл ответ: скачал звуки из интернета.
M1L1tarist 16 Jan, 2021 @ 5:26am 
Большое спасибо за подробное объяснение. У меня в ходе работы с редактором возник вопрос: как выбрать нестандартные звуки для своего оружия? Ибо только оригинальную озвучку можно поставить. А из чужих модов я вытащить звуковые дорожки не смог.
Innominus 3 Aug, 2020 @ 12:58pm 
Understood! Thank you for the advice! There's several folks in my personal life that all learned coding in a few different ways. I have a cousin who learned the basics of C# i believe it was and has been practicing and making things. She told me to try Unity as well. My friend i mentioned began in school, started with Python and Java. And theres this other dude who claimed he basically go into coding from learning to mod his favorite games and so forth.
noam 2000  [author] 3 Aug, 2020 @ 12:44pm 
If you're interested in coding and gamedev in general, I'd highly suggest you try Unity or Unreal - both have very extensive documentation and you'll find a ton of tutorials and help online. SED is niche, has no documentation and the only way to get help is from small dedicated communities. Furthermore lua is not a language that's going to get you anywhere further than modding, compared to C languages which are in high demand these days.

Even the small idea you had, you'd have a much better learning experience doing it in an engine that's designed to give you the freedom to create any ideas, compared to SED which is limited to its core functionality.
Innominus 3 Aug, 2020 @ 12:27pm 
My best friend is currently REALLY succeeding in getting his programming degrees and whatnot in college. I've always held an interest in game design, so Im just debating on challenging myself to learn the basics of Coding and seeing what i can do. In terms of creating an RPG game within the editor, i mean it like a basic sense. Nothing extremely in-depth or complicated lol. Like perhaps creating a medieval spin off where you're battling monsters and exploring levels and finding secrets like in the heart of SS, but are able to level up and adjust defined stats and things like that
noam 2000  [author] 3 Aug, 2020 @ 12:21pm 
You're given a lot of versatile tools and features to play around with, but you'll find yourself struggling if you try to break out of what the engine is designed for. SED supports scripting with LUA, but that too is sandboxed and you'll often find yourself fighting with the engine using cheap or hacky methods to achieve certain features that might still end up feeling janky.

tl;dr, it's very capable, but it's not gmod.
Innominus 3 Aug, 2020 @ 12:11pm 
I've been interesting in learning to code and hopefully learn how to mod. My question is, how versatile is the Serious Fusion editor? Could you create something like, an RPG game with it? Of course it'll all be with the same engine. Also, does this mean its possible for modders to perhaps remaster SS2? Or maybe bring the Next Encounter over with it? What are the limits of using the editor i guess im trying to ask lol
Soulmyr 16 Jan, 2018 @ 3:44pm 
Some bonus info on HUD icons:

For BFE make the icons 100% white. For HD, simply reduce the BFE icon's opacity down to 60~70% to ensure it fits with the others.