Welcome to a new tutorial, everyone! With the announcement of Robo Recall coming to the Oculus Quest I decided to take a look into modding Robo Recall once again (it's been more than a year since Robo Recall's release at this point) and I've gotten much farther into it than the last few times I tried to make a mod for the game! A part of that being because I've gotten more skilled at modelling and rigging, and partially just because I found this amazing manual that explained a lot of things about Blueprinting to me that I had never explored before!
For those of you who don't know, Robo Recall is one of the amazing launch titles that was created specifically for Oculus' Touch controllers, the official motion controllers for the Oculus Rift. Its a giant adventure game filled with rogue robots, a giant flying norse god, and some flirtatious AI assistants! And best of all, it comes free with every Oculus Touch! xD If you would like to check out more, go to https://www.epicgames.com/roborecall
I wanted to start off with a simpler mod (saying simpler because it's still a bit complicated) for us to get our hands dirty and then I'll be making an Instructable later to go further in depth at creating a more complicated weapon. For this tutorial, we'll be making a melee weapon based off of some components from a gun and a model we import.
Here are a few things we will cover in this tutorial:
1. Asset preparation and importation
2. Physics Asset corrections
3. Material assignments and Robo Recall Dissolving
4. Asset Placement and mesh alignment
4. Ammo counts and disabling weapon firing
5. Next Steps
Step 1: Asset Preparation and Importation (A)
so the first thing we need to do if we're going to make a melee weapon is find a melee weapon model and download it! For this tutorial I recommend downloading the Infinity Blade model form modeler's resource
(simultaneously paying homage to another amazing Unreal Engine game and getting a cool model to boot!)
but if you have another melee weapon you would like to use, that should be fine as well.
Here's the link to the infinity blade - https://www.models-resource.com/mobile/infinityblade/model/18271/
there's a lot of info on this page, but what we care about is the download. find the box shown in the image above and download the zip file to your directory of choice (I'm choosing an Instructable folder for all my content). Then, unzip it by right clicking and choosing extract all. This should bring up a new window with a folder called "infinity blade" inside another folder in the directory you downloaded the zip too. right click the Infinity Blade folder and cut it then paste it in the same folder as the zip file.
The second picture up above should be what's inside of that new Infinity Blade folder. the infinity blade itself is an obj file with an mtl file attached to it, and two images, one diffuse texture and one normal texture (normals are used in game engines to fake 3D depth on low poly models) We'll need all of these, but our main focus now is on that obj.
Step 2: Asset Preparation and Importation (B)
We need to adjust a few things in order for the infinity blade model to be ready for unreal engine. to do this, we're going to use a free program called Blender. It's a free 3D modelling and animation program. If you don't have it already, go to www.blender.org to download the newest version!
First things first, after opening Blender, right click on the cube in the center of the screen and then hit your x and enter keys to delete it, we don't need it.
Then, under the file tab at the top left select import>obj file, then find you obj infinity blade and import it.
As you can see, the blade is currently much, much larger than our small grid in the center. We need it much smaller before we do anything with it, so right click to select it and then hit the s key and enter .08 and hit the enter key to make the sword just 8% it's normal size. this size is much closer to what a sword would be like in Robo Recall.
Now, we need to recenter the Infinity Blade so that it's root is right about where you would be holding the sword in-game. to do so, enter edit mode with the tab key (if you're in edit mode, the sword should turn orange) and hit the 1 and 5 keys on your numpad to enter front orthographic mode. then grab the blue arrow in the viewport (it should currently be centered around a small orange dot, that's your root) and move the sword up and down until the orange dot is about 2/3 of the way up the hilt of the sword and then let go of the blue arrow to set it in place. you can then hit the tab key to exit out of edit mode again.
Step 3: Asset Preparation and Importation (C)
Now that the origin is correctly set, we need to make sure that this model has the correct materials applied! To check that, go to the white ball at the bottom of the 3D view and click on it, and change the view mode to "material". The sword should turn pretty much black, and that's because our light is only shining on one side of it. to fix that for now, click on "lamp" in the heirarchy at the top right of your screen and then go to the lamp settings panel in your outliner (shown in the picture above) and in the lamp settings choose "hemi" which will allow us to see all of the model. You should now see a textured Infinity Blade!
Now there is only one thing left to do in Blender before we export it. give the sword a slight angle by right clicking it, hitting r, and typing in 30 and then hitting the enter key. this should give a nice offset angle for our sword, since our hands in-game are a bit slanted. (it should look similar to the second photo above)
With that complete, it's time to export our new sword fbx! go back to the file menu and select export>fbx, then choose a new name for this sword! Before you export, make sure to look at your fbx options down in the lower left and check "selected objects", and save it in your directory!
Step 4: Asset Preparation and Importation (D)
Now we need to bring everything we just did into Unreal Engine! Making mods for Robo Recall requires a special version of Unreal Engine, so open the Epic Games launcher (yes the same launcher used to launch Fortnite)
and go to the modding tab on the top. then select "Robo Recall" from the list on the left and the green button should say "install". click on it and it will begin to download (It's a huge install so if you don't have fast internet it will take a while, go grab a bite to eat and come back later, I'll still be here)
Once the install has finished, click Launch to open the mod kit! (this will also take a few minutes)
When Unreal Engine finally opens, the first thing that you should see is a "New Game Mod" menu. this menu lists all the possible mod types that you could create for the game. for this mod we're going to use the "Custom Revolver" template, so click on it to select it and then give it a name in the Name field down below (you can fill out the other info if you want to, I don't typically) and then hit "Create Mod". (I've highlighted the fields to select and fill in in the second photo above)
This will create your own custom content Folder inside the Robo Recall Modkit folder. You should see in your content browser a folder that says "blueprints". We'll take a look in there later. for now, right click on the blank space next to the folder, and select "Import to/*insert your mod name here*". This will open up a window for you to select an asset to import. Select your new fbx and import it, making sure to select the checkbox for "skeletal mesh" in the menu that pops up (leave everything else the same) and click "Import All". Repeat this process for the two textures as well. That completes importing!
(One final tip, right click the folder in the list to the left and select "save all" so you don't lose your models and textures if unreal engine should crash. do this often.)
Step 5: Physics Asset Corrections
You should've seen when you first imported you fbx file, it created a PhysicsAsset for you (an orange file in the content browser with an icon of a man bending over). open it by double clicking on it (it should open in a new window)
to move about, hold down the right click and use wasd and e and q. move to where you can see the whole sword.
You can see that the physics object thinks that the best shape for a collider (something that manages physics collisions for a mesh) would be a capsule. while that wouldn't be a terrible fit, if we were to drop the object as it is, it would roll along the ground and never stop. We want it to lie flat on tables and stuff, so we need to delete that object and make our own cube shaped one. To do that, right click on the white text in the heirarchy to the left (should say rdmobj00 or something like that) and click on "delete all bodies below" to delete them all. Then right click on that text again and click on "New body".
Under Collision Geometry, select box and hit ok. You should now have a box shape around your entire model like that in the first image above. It would work ok, but I want it to be even closer matching to the sword, so hit the r key to enter scaling mode and scale in the x axis "the red arrow" until the box is just a bit wider than the blade.
To make it easier to see the edges of the sword, enter orthographic mode by using the view menu in the top left. (see the second image)
your view should now look something like the 3rd image above. there's just one little issue. Now the ring is outside the box! To make it so the ring hits objects in game too, right click on the text in the heirarchy again and select "add box". you should see a new outline appear in the viewport of a smaller box. Move it and scale it to fit as well, this time around the ring exclusively (don't worry about the two boxes overlapping, that won't effect anything) You can also look at it from left or right orthographic angles to make sure it's as thin as you want. (see the images above for more references).
Once you have the boxes the way you'd like them, hit save!
Step 6: Material Assignments and Robo Recall Dissolving (AB)
Now that our infinity blade will react right in-game, we want it to look right in-game too!
to start off we'll need to make a new material in our content browser. to do so, right click on an empty space in the content browser and select the "material" option to create a new one. Name is sword_mat and hit enter to create it. then double click to open it up!
The material editor (shown in the image above) works with the Blueprint system in UE4. Meaning you can create incredibly interactive and realistic materials without using a single line of code. For this material we want to do three things:
A) Assign a Diffuse texture to color the model
B) Assign a Normal texture to add a normal map to the model
C) add the dissolve blueprint network from Robo Recall so our model will dissolve
The first two are very simple, we can complete in this step alone. the second one takes a bit more explaining, so step C is reserved for that.
We already have the two textures we need in the content browser, so drag them into the grid area of the material editor to make a reference to them. Then save. When it's done saving, it should look like the second picture above.
both references have a little white orb in the top right. click and drag on that white orb to create a wire. For our diffuse texture, drag that wire on top of the "Base color" orb for the "sword_mat" material node and let go. that will assign our diffuse texture to this material. do the same for the normal map but to the "normal" orb of the node. Then save again.
when you have finished, click and drag on the orb in the top left to see that our texture and normal map have been applied!
Step 7: Material Assignments and Robo Recall Dissolving (C)
Now, for the explanation of what's next.
In the world of Robo Recall, items can be teleported anywhere, especially your guns and defective robots. The way things are teleported in-game is by "dissolving". A material is set up so that when an enemy is destroyed or a weapon is out of ammo, it can flash a blue or orange color across it's surface and then disappear. (this is explained better in the first three images above using an old weapon I created)
The blueprint nodes needed to create this effect are a little beyond my current scope of understanding,
but luckily for us, the modkit has an example material that we can copy the nodes right from!
To find it, go to your content browser and click on the folder at the top of the list that's called "content". (great name) and then in the search bar over to the right in the folder view, search for "weapon_master" and open the material that's completely dark.
It will be zoomed in, so use the scroll wheel in the node view for the material and zoom out all the way. then right click on an empty space in the node view and drag to bring all the nodes into view.
One of the big blocked categories in the weapon_master material is something called "dissolve". (check the images above for an example) We just want to copy that part of the material, so drag a box around that box of nodes to select them all, and then ctrl+c to copy it. then quickly exit out of that material so we don't mess anything up.
Back in our sword_mat material, paste the box in and move it by dragging the top bar until it looks like the picture above.
there are two inputs at the end of that box that we need to attach to our sword_mat node.
One is a "hotline" multiply node output, and the other is a "UseDissolve" switch parameter.
The Hotline needs to be connected to the "Emissive Color" node orb and the "Use Dissolve" node needs to be connected to the "Opacity Mask" node orb (don't worry because Opacity Mask is dark, it still works).
when you complete those connections, it should look something like the picture above.
There are two more major things we need to do before dissolving works with our texture. Save you material
and right click in the content browser. Select "create material instance" and change it's name to include dissolve somewhere. then open the new instance.
an instance is like a preview to check and see if all the variables on your materials work the way they should. Over to the left you should see four things we need to change. Enable the dissolve and use dissolve checkboxes (including the second checkbox on usedissolve) as well as the dissolveBurnColor checkbox (this being so that we can make the dissolve color whatever we want it to be, in my case orange like the sword is burning). the last thing is under general, a drop down labeled "Blend mode". Check the box and change the Blend mode to "Masked".
Now, if you drag on the slider for Dissolve to about 3, you can see the dissolve take effect and your texture hide.
Go ahead and save your instance, and then we're on to the last step for this material! We need to apply the material to the dissolve slot on the mod's blueprint. For this, we'll need to open the mod's Blueprints folder and Weapons folder, then open the blueprint itself.
When you first enter the mod Blueprint you'll be on it's base (self) component. that's where we want to be for now, so over on the right side, in the Details search bar, search for "dissolve", and drag your new sword_mat_dissolve material instance into the Dissolve Material slot, then compile and Save.
Believe it or not, that's it for the material! Now onto the mesh!
Step 8: Asset Placement and Mesh Alignment (A)
Now, because of setting that dissolve material, we're already inside of the mod blueprint, which is where we need to be for this step!
In order for us to see the sword in stead of the revolver, we need to swap out the gun's mesh with our sword's mesh. to do this, go to the component's section of the window and select "WeapMesh (Inherited)" from the list. Over to the right a new option should pop up just simply called "Mesh". (you may need to clear dissolve out of your search bar first). the mesh currently in the revolver's mesh spot is called "SK_Revolver" and that's what we want to replace with our infinity blade fbx. find the infinity blade fbs in your files and drag it into the spot where SK_Revolver's image is to replace it.
When you do, you'll see the model does change... but the sword is still WAY TOO BIG. *insert guffah here*
That's ok, we can fix that! Compile and save your mod blueprint and then double click your infinity blade fbx to open it in the editor. On the left side of the screen is the Asset details. One of the Transform options is called "uniform scale". Set that from 1.0 to .16 and reimport the mesh up at the top. (It should almost disappear from view in the viewport) Then save and go back to the mod blueprint. It should now be exactly the size we want! (and added bonus, because we set the root of the model earlier, the handle is right where we want it aswell!) Now we can drag the sword_mat material into the mod blueprint's mesh material slot so we can see the material in the blueprint's viewport. (It'll take a little while as it will have to compile some shader. just give it a minute) In a few seconds you should see our newly textured Infinity blade inside the mod viewport! And that's all we need to do to align it! Id you'd like to test it out the way it is right now (we still have a few things to fix but it's in viewable order) click the play button up top and put on your headset!
Step 9: Ammo Counts and Disabling Weapon Firing
So if you went and tested out the mod the way it is now, you'll have noticed something.
Even though we replaced the mesh of the weapon with that of a gun, it still acts just like the revolver, and will fire bullets when the triggered is pulled. we don't want that obviously, so we need to disable two things.
A) The ammo count and remaining ammo counts, and
B) the firing mechanism of the weapon's blueprint
To get rid of the ammo, select the self component again and search for ammo. The picture above shows the two variables that need to be zeroed out. (ammo remaining and ammo capacity)
well that takes care of ammo, but what if you happen to throw it at an enemy and it bounces off? (I don't know how to get this working with mod items yet but normal guns reload completely when bounced off an enemy) well, we wouldn't want this sword to be able to fire that at all, so we need to simply stop it from shooting entirely. luckily, there's a way to mod it so it won't do anything when the trigger is pulled!
Next to the viewport tab in the middle of the screen, there are two more tabs, the construction script and the even graph. Click on the even graph to open it. this is similar to the node editor we used for our material, but instead of changing colors on things, it is the way things are coded in Robo Recall. (So all game functions use the Event Graph)
To stop the sword/gun from firing, we need to override it's default behavior. to do this, right click and search for "Event Fired", and select the option "Event Notify Fired". that will override the behavior that would take place any time the trigger was pulled on the Touch controller. so not connecting it to anything means that nothing will happen if the trigger is accidentally pulled on our controller, meaning no more gun/sword! now compile and save your mod blueprint.
Step 10: Next Steps
And that's it! you have successfully created your first mod for Robo Recall, a sword that can bash in the heads of some of metropolis's nastiest badbots. this mod tutorial can be reused over and over again with different sword models, heck, it doesn't even have to be a sword! Grab a baseball bat, a club, or even a giant carrot and make your own amazing recall weapons! I hope you guys enjoyed this tutorial, and I can't wait to show you guys more about making firearm mods in the next one! It's gonna be a real... blast. xDDD
I have one step after this one in this Instructable just for some little things I did to polish up my own personal mod after finishing with these previous steps. They aren't as important as what I did previously, but they're fun, so if you'd like to see what I did next, head on to the next step!
I'd like to thank Zak Parrish and all the other members of the Robo Recall development team for their amazing documentation and videos that helped me get this far in the mod system, the roborecallmods.com community and the roborecall mods forum, and ChAIR games for the original Infinity blade model. As usual with mods, I claim none of the assets I used here as my own. They are WAY too amazing to have been made by me. I just organized them in a way so you all could use them. If you're too giddy to wait for my next Instructable and want to get started modding Robo Recall right away, you can find the mod manual I used myself to get started right here - Learn How To Make Your First Mod
Once again, thank you to everyone who reads my Instructables, your comments are always so motivating for me.
Now I hope you have fun modding, and stay safe, Agents!
Step 11: Extras
Ok, so if you guys have been following along and doing these steps while reading them,
when you get to the end you'll realize two things:
A) the revolver's iron sights and barrel still are present when you play, even though the main revolver is gone, and
B) The holographic loading symbol on your HUD still shows a pistol, not the Infinity blade while loading.
I'll be fixing both those things in this step. the first two are easy!
simply open your mod blueprint and select the item you wish to hide, in this case the revolver chamber. then, in the detail's panel that pops up to the right, scroll down until you find a section labeled "rendering". One box is checked, but the other is not. Make sure both are checked, and compile and save. It should look like the second picture above. Then simply repeat the process for the iron sights!
Note: this currently only works inside of the Robo Recall mod kit. Exported mods still show the cylinder and iron sights for some reason even with these steps. I'll be talking to the kit developers here soon to try and get that one sorted out, but keep that in mind for now.
Now, we want to see a sword as our loading logo, right? Well, this one is a bit more tricky. first, you need an icon image that's completely white or black. Luckily, I happen to have just the thing! I found a white image of the Infinity Blade logo and rotated it to fit in the box used for reload icons. then I just had to make everything else black, which was a cinch! If you'd like to use my own image, you can find it in my google drive here -
However, even with that image, we aren't quite ready. first import it into your content folder for your mod and then open it up in the editor. there are a bunch of options, but rather than explain what each of them does (cause even I'm not entirely sure what each one does exactly) just look at the third image above to see what needs to be set as what. When you're done, save the image and in a few seconds the image in your content folder should change to a checkered background! Wala!
Now back in your mod blueprint, we need to add it as the sword's reload icon. To do that, go back to the self component and search in the details panel for "icon". then drag the image we just made into the slot, compile and save, and just like that, the next time you play the mod preview if you grab the sword out of your belt, the infinity blade logo will appear on your left or right, and load like any of the other weapons!
the last thing I want to tell people in this tutorial is how to share your mod! the upper middle of the main UE4 screen has a "Share Mod" button. Click on that, then on your mod of choice, and then choose a save destination and it will bake your mod to a .robo file (an executable for Robo Recall) that you can execute to install the mod in your main game!
Stay safe, and have fun Agents!