Overview
This is just a basic guide on how to get a head start in replacing weapon sprites and voxels for Ion Fury, and is exclusively a visual only modification. This guide will NOT teach you how to model or program your own weapon (although there are some tips on sprite editing).Ideally, you will already have created your custom sprite and voxel model, and now you want to import them into the game. This guide will be focusing on modifying the Penetrator SMG, so if you want to edit the other weapon sprites and sounds, you will need to adjust accordingly. Also note that since Ion Fury runs on a modified Build Engine, this process should work for other Build titles, such as Duke Nukem (with a few alterations here and there).We’ll be changing the:- First person weapon sprite- Pickup sprite- Pickup voxel
1. The tools you will need
By now, you will have already made your weapon sprite and voxel using your own methods, so from here on out we’re going to import them into the game itself!
Here are the tools I used:
- Any good Hex Editor (to allow access to the tiles000.art file)
- WinRAR (to open the fury.grp file)
[link] - *Clip Studio (sprite editing)
[link] - GIMP (sprite editing + palette conversion)
[link] - BAFed (sprite exporting)
[link] - MagicaVoxel (voxel creation)
[link] - SLAB6 (voxel creation, editing and exporting)
[link] - Ion Fury colour palettes (palette files to convert the 2D sprites to Ion Fury’s colour palette)
[link] - IM_NOFULL.dat (palette file to convert the 3D voxel to Ion Fury’s colour palette)
[link]
*Clip Studio is the only one I consider non-essential (and is the only program here that requires purchasing), as GIMP can be used for all your image editing needs: however I use Clip Studio extensively for all my image editing needs and can’t live without it, and I just used GIMP for palette conversion as I haven’t found a way to do it from inside Clip Studio.
2. Exporting the game files for editing (also sprite references)
Using WinRAR, we’re going to open up the fury.grp located in the Ion Fury main directory. Export the tiles000.art to an appropriate folder of your choice. If you want to export the voxel model (e.g. for reference) the voxel model is located at voxels230_SMG.kvx and this will need to be extracted to your main Ion Fury folder, in it’s own respective folder titled voxels (so it should read as Ion Furyvoxels).
The tiles000.art is initially encrypted, and will need the use of a Hex Editor to allow access (don’t worry this isn’t doing anything wrong). Using a Hex Editor, open the tiles000.art file and remove the first 8 bytes of the file. After this, the first 16 bytes should now look like this:
01 00 00 00 84 4E 00 00 00 00 00 00 83 4E 00 00
Now save this file, and it should be ready to open! Full information on this procedure can be found at the bottom of this page, [link] Special thanks to user dwtietz for discovering this!
Next we’re going to use BAFed to open up the tiles000.art file. On the top toolbar, click on File, Open ART… then open the tiles000.art file. No doubt you’ll have noticed the funky colours appearing on the right pane. To fix this, on the top toolbar, click on Palettes, then Ion Something.
It should now look like this. On the left pane is the preview window for how the selected sprite will look roughly in the game. Here the X and Y offsets can be changed (horizontal and vertical), and on the right is the main directory where you can see all those sexy sprites.
Extract the following sprites:
230
6003-6033
6050-6055
6072-6074
(You can also drag a selection box to select multiple items). Right click on your selected sprites, then click on Export Tile, then extract them to an appropriate folder of your choice.
Here is the folder showcasing most of the sprites that you should have extracted. For reference, here are what each sprite number correlates to:
230 = World/pickup sprite
6003-6005 = Muzzle Flash
6006 = Idle
6006-6008 = Firing
6008-6023 = Reload
6025 = dropped magazine
6026 = New magazine (part of the reload animation)
6027 = Ejector animation
6028-6033, 6050-6055 = Holo sight
6072-6074 = Muzzle glare off gun(These sprites below are the exact same, only one has magazine in, other has magazine out)
Mag in / Mag out
6023 = 6012
6022 = 6013
6021 = 6014
6020 = 6015
6019 = 6016
Bonus Chapter – Handy tips on weapon sprite making
Here is the sprite 6006, in all it’s original glory. This is the “idle” sprite, the main one you will see when the gun is resting in your hands as you play the game. Notice the missing holo-sight image: this is actually a separate sprite with it’s own alpha transparency, so this will have to be edited separately if you wish to add something smiliar to your own gun.
Here I have erased the gun image, leaving only Shelly’s hand visible.
Since my sprite was originally a 3D model created in Blender, I positioned a camera in the scene and used it for the animation viewport, zoomed it out a little, print screened it, so I could paste this screenshot into Clip Studio and work from there. Also note the background is solid pink: this basically works like a greenscreen, so I can select that single colour and delete it, so what’s left is only the gun itself.
I then pasted the gun image over Shelly’s hand and adjusted it accordingly.
Using a variety of different layers:
– Shadows were added below the gun, but ontop of Shelly’s hand. This gives the impression that it’s a physical object she’s actually holding and not just a literal copy and paste job.
– The trigger guard was added below Shelly’s hand.
– I hand painted (well digitally) extra highlights, shadows, and altered the image to make it appear more artistic and less like a print-screened 3D model. Don’t forget that down-scaling a textured 3D model and converting it into a 2D image doesn’t always turn out how you would like it to.
3. Getting your sprites in-game using a def file
OK, let’s say we’ve finished all our sprite work, so now we’re going to put them all neatly in a folder for Ion Fury to read. I’m going to call this folder “test.” Create a new folder called test in your Ion Fury main folder, open it, create a new folder called tiles, and place all these new sprites in there.
Create a new def file by using Notepad and going to the top toolbar, clicking on File, Save, then for the File name, type the name of your gun, followed by .def. So let’s say your gun is called “test“, we’ll be saving this as test.def. Save this in the test folder.
This def file is basically going to tell the game what sprites will be affected and replaced by the ones in the external folders. This method is MUCH better than replacing the actual game files, and as such you can edit, disable or delete this def file without it altering the main game files.
Copy this segment below, paste it in your test.def file, and save it.
Next, we’re going to tell Ion Fury to read from this new def file…
Right click on the Ion Fury icon in your Steam library, in the GENERAL tab click on SET LAUNCH OPTIONS…, copy and paste the following line -mh testtest.def in the text box and press OK.
Create a shortcut to the game application, right click it, select Properties and add the parameters -mh testtest.def to the start-up after the quotation marks, so it should read like this: Fury_nodrm.exe” -mh testtest.def
– Hot Tip: Make sure they’re all small cases, as I’ve discovered some OS cannot handle a single capital letter in this file (although Windows can) for some bizarre reason. Also make sure not to remove any spaces, as the game will refuse to read that line of code.
– Also further down the line, you may have to start editing offset placements,
(e.g. tilefromtexture 6023 { file “test/tiles/6023.png” xoffset -50 yoffset 30 })
to get your weapon to look right in game. This will have to be done on your part and requires experimentation either in-game or with an external program.
– When renaming your weapon from test to something else, in Notepad, search for the words test, type in your desired weapon name (e.g. ionuzi). Copy this name, then hit F3 to search for the next word, and just hit CTRL+V to paste. Repeat this for all the lines of text.
4. Sprite editing and importing
So now you’ve got your collection of weapon sprites plus created your def file, jolly good. There is just one more thing we need to do for our sprites, and that is palette conversion.
Ion Fury uses a specific colour palette, and when a new image is imported with it’s own palette, Ion Fury will not fully show the correct colours in-game, and may showcase some funky visual glitches (example at the bottom of this section). Alright, let’s get started.
Remember the palette file we downloaded? Open that up with WinRAR. The main files we want are IF_palette_FULL.pal and IF_palette_NoFBrights.pal, extract those to an appropriate folder.
– IF_palette_FULL.pal includes full bright pixels (pixels that glow in the dark, useful for lights)
– IF_palette_NoFBrights.pal excludes full bright pixels (no glow in the dark ones)
First, we need to import these palette files into GIMP. Fire up GIMP, and on the right hand side, there should be a section with some pretty colours. Click on white arrow on the far right, then Palettes Menu, then Import Palette…
From here, we want to go down to where it says Palette file, and click on the file icon next to it. Choose your appropriate palette file, click open, then finally click on import. This palette should now be intergrated into GIMP and you won’t need to do this again.
With our palette imported, open up your desired sprite in GIMP. Now we need to go to the top toolbar, click on Image, Mode, then Indexed…
From this window, in the middle it should say Use custom palette. Click on it, then scroll down to your desired palette, and click convert. Your sprite should change colour now: this means it’s now converted to the colour palette that Ion Fury can use. Now we go to File and export it as the original png file. Do this for every single sprite (or batch convert them if you know how to).
Now for the exciting part: fire up Ion Fury and see how your weapon sprite looks!
Hopefully your weapon sprite should be visible in game. If not, then go back and check your def file, and make sure you’ve set Ion Fury to read from it (as explained in chapter 3).
Here’s what it can look like without converting the colour palette to the Ion Fury one. Be sure to test it out properly by venturing into a dark area and seeing if any unintentional pixels are full brights.
5. Voxel exporting
After I created my voxel model using MagicaVoxel, I went to the export section on the bottom right, clicked on slab, then saved my file as test.vox.
In order to convert this voxel for use in Ion Fury, I then used Slab6. After opening the program, I clicked on File, Open, then opened my test.vox file.
Just like our sprites, now we need to convert the voxel to use Ion Fury’s correct colour palette, so it will show up in-game correctly. On the top toolbar, click on Tools, Replace palette and convert colours, then choose the IM_NOFULL.dat file. You should notice your voxel has changed colour (hopefully not too drastically). You can now edit the colours safely using Slab6 now that it’s using the assigned palette.
Also note you can also use one of the original Ion Fury voxels in replacement of the palette file.
Once you’re happy with how your voxel model looks like, we’ll click on File, Save As, then save it as 230_SMG.kvx (also be sure to choose the 5 Mips option when that window pops up). Place this 230_SMG.kvx file in your Ion Fury/voxels folder.
If everything turned out alright, then your voxel should look like this in-game.
Here is how it will look like without using the proper palette file.
6. Last section and hot tips
Hopefully by now you’ve successfully imported your weapon sprite and voxel into the game! Feel free to use my Ion Uzi or MP5K mod as a reference to make your own. Bare in mind that some of this is from memory, so please correct me if something doesn’t work as intended, and also I understand that English is not everyone’s first language, so any words that you don’t understand or need replacing, let me know!
Hot Tips
– Weapon sprites not in the correct position on-screen? You might need to go back to the def file and edit the Y and X offsets.
– Glow in the dark spots on your sprites and voxel? Make sure you’re using the correct colour palettes.
– Voxels appear in game, but not the 1st person sprites? Check to make sure the game is reading the def file (launch parameters).
– Keep everything lower case as some OS systems freak out when they encounter upper case characters… except for Windows. So yea, use Windows.
Ion Uzi made by YijArt (2019). Special thanks to Mamijomale, Mkvamm, BFG9000 and fgsfds for the direct help and support, plus the 3DRealms Discord server for additional support! I would appreciate if this mod is left as it is, only used for Ion Fury and not modified or distributed for other products, thank you.