Creating Mods

From Pocket Rumble Wiki
Jump to: navigation, search

Making mods in Pocket Rumble is easy with the proper guide! This page will give you step by step instructions on how to create and upload your first mod, which should be the first step for most upcoming mod creators.

Downloading Vanilla Characters[edit]

The very first thing you should do download the unmodified (vanilla) version of the character you would like to mod:

( I'm not given wiki permission to add a link here :( :( :( )


but here are the (as far as I know) vanilla files for each character as their own wiki pages -wa

tenchi.lua

naomi.lua

hector.lua

keiko.lua

quinn.lua

subject11.lua

parker.lua

june.lua


Next, copy your new workshop files from this directory (make sure to only copy the folder labeled with the character name, don't include the root folder labeled with a large number):

  (your steam directory here)\steamapps\workshop\content\389050


and paste them into a new folder you will create named "upload" in your save directory here:

  %appdata%\Roaming\Pocket Rumble\upload

Making Sprite/Sound Changes[edit]

In your new upload folder, you may add unique sounds and sprites in the given /sounds/ and /sprites/ folders inside the character folder. Check the Lua file in the same directory for the file names you want to use!

Making Code Changes[edit]

You may also change the game logic and frame data for characters in the Lua file found in that same character directory.

  • attack format:
 moveName = { -- make sure you have an animation in the sprites folder shares this moveName!
     attackbox = {value1=1, value2=2}; -- variables relevant to the attackbox of this attack
     {
         -- first block of code is assumed to be startup
         frames = {1,10,2,20}; -- show frame 1 of the animation sharing the same name (moveName) in sprites folder for 10 frames, then show frame 2 for 20 frames
     }
     {
         type = "active"; -- attackbox is now active code block
         frames = {3,3,4,1}; -- show frame 3 for 3 frames, show frame 4 for 1 frame
         custom = function(self) -- OPTIONAL function for manipulating the player in many ways for complicated moves (will be done at the start of this code block, not the end. Can be done on any block)
           self:executeSound("sfxName", "sfx") -- play a sound named "sfxName" found in sounds folder, make sure the game knows it is a sound effect and not music by adding "sfx" parameter
           -- as many function calls as you want can be placed here
         end
     }
     {
         type = "recovery; -- attackbox is now deactivated block
         frames = {5,3,6,2,7,4}; -- show frame 5 for 3 frames, show frame 6 for 2 frames, show frame 7 for 4 frames
     }
 }
  • attackbox value descriptions:
 pushback: how far back the player will be moved
 pushUp: how high this attack will push players off the ground
 hitStun: how many frames this will stun the enemy (blockstun or hitstun are equivalent in Pocket Rumble)
 width: the initial width of the attackbox (can be changed in custom code)
 height: the initial height of the attackbox (can be changed in custom code)
 dmg: how much damage the attack will do
 relativeX: attackbox X offset (default is far extension of player hitbox)
 relativeY: attackbox Y offset (default is vertical middle of player hitbox)
 explosionX: attack effect X offset (default is far extension of attackbox)
 explosionY: attack effect Y offset (default is vertical middle of attackbox)
 priority: what should happen during an attack trade (4 = light, 3 = heavy, 2 = specials, 1 = unbeatable)
 external: if the attack is considered a projectile (always wins attack trades)
 forceForward: if the attack connects, the enemy player will face towards the player regardless of current position (essentially this ignores crossups on hit connect)
 forceParry: force a certain parry frame that contradicts the attack type
  • custom function calls (some useful ones, not all of them. Explore vanilla character files for all possible calls):
 self:executeSound("sfxName", "sfx"): play a sound named "sfxName" found in sounds folder
 self:changeSpeed(60, 1): change the speed of the player to 60 units, with a drag value of 1 unit per frame to eventually slow them to a stop
 self:invulnerability = true: change the invulnerability of the player for specials and supers that have invulnerability
 self:gravity = 400: change the value of gravity for this player for floaty (or heavy) jumps
 self.ySpeed = -1500: change the vertical speed of the player for moves that include the player going into the air 
 self:executeProjectile("projectileName"): create a projectile with the properties of the projectile labeled "projectileName"
 self:changeWidth(34): change the width of the player hitbox to 34 pixels
  • projectile format:
 projecileName = { -- make sure you have an animation in the sprites folder shares this projectileName!
   destroyEffect = "projectileNameDestroy"; -- effect in effects table to play when projectile connects
   xSpeed = 100; -- set speed to 100 units per frame 
   relativeX = 10; -- relative X offset for the attackbox (relative to the sprite)
   relativeY = 10; -- relative Y offset for the attackbox (relative to the sprite)
   width = 23; -- width of attackbox
   height = 19; -- height of attackbox
   hitStun = 35; -- amount of hitstun to enemy when projectile connects
   pushback = 300; -- amount of pushback to enemy when projectile connects
   health = 4; -- how many attacks this projectile can do before being destroyed
   priority= 1; -- priority of the projectile (lower is better)
   hitstop = 10; -- amount of hitstop when projectile connects
   explosionX = 30; -- attack effect X offset (default is far extension of attackbox)
   explosionY = 30; -- attack effect Y offset (default is vertical middle of attackbox)
   onUpdate = function(self, enemy)
     -- OPTIONAL function to do something each frame using "self" and "enemy" to analyze game state
   end;
 }
  • effects format:
 effectName = { -- make sure you have an animation in the sprites folder shares this effectName!
   flicker = true; -- does this effect flicker visibility each frame (this is just cosmetic)
   relativeX = -20; -- sprite X offset from spawn location
   relativeY = -21; -- sprite Y offset from spawn location
   {
     frames = {1,3,2,3}; -- show frame 1 for 3 frames, show frame 2 for 3 frames
   };
   {
     frames = {3,3,4,3}; -- show frame 3 for 3  frames, show frame 4 for 3 frames
     custom = function(self, host)
       -- "self" meaning the effect, "host" meaning the player that spawned this effect
     end;
   };
 };

Checking Your Changes[edit]

Make sure the Lua file has been saved after your edits, and open Pocket Rumble. You should be given a prompt that mods have been found, and you should enable them. Head over to training and pick the character you modified. Are your changes there? If not, make sure:

  • The folder and Lua file are named properly (no capitalization allowed!)
  • You are manipulating the Lua file in your save directory and not the Lua file in the Steam Workshop directory
  • Your sound and sprite files are placed in the proper folder and are named exactly as they appear when called in the Lua file
  • You didn't make changes while the game is open (game must be reopen to properly acknowledge file changes)

Uploading[edit]

When you are happy with the changes you made, create a thumbnail for your mod and place it in the upload folder. This thumbnail must be a JPG labeled 'thumbnail' and it must be less than 1MB in size. Then run the uploader.exe found in the same directory as the Pocket Rumble executable in your steam directory. Answer the questions prompted on the terminal. Once the uploader is finished, head over to the Pocket Rumble workshop page and go to "Your Files." Once you find your mod, you may change various parameters before you set the visibility to "public." Congrats, you have now created your first mod!

Unique Characters[edit]

If you'd like to make your own character instead of modding one of the existing characters, just change the name of the character folder and Lua file to the name of your original character! When you check your changes, random select should instead show a box that lists custom characters, and you may check your changes that way.

Multiple Characters In One Mod[edit]

Just add more character folders in the upload folder and use the uploader.exe exactly as if you were uploading only one character. Make sure your thumbnail and mod description makes it clear people are downloading multiple characters!

Update Existing Mod[edit]

If you want to update a mod you have already made, you should take the ID of your existing mod (found at the end of the mod page URL id=XXXXXXXXXX) and use that ID when prompted to update an existing mod in the uploader executable. You may also change thumbnails this way as well!