Official The Ultimate Guide To Content Creation And Use For The Terraria Workshop

Leinfors

Quality Assurance
Re-Logic
terraria_workshop_1000x300.png

Greetings Terrarians, and welcome to the wild and wonderful world of Terraria Steam Workshop support! With this latest feature update, we have given you the ability to create, share, and use Maps and Resource Packs – including Texture Packs, Music Packs, and even Language Packs – like never before. The Terraria community has always been one of the most vibrant and creative in all of gaming, and Steam Workshop allows everyone the ability to share new ways to play and experience the wonderful world of Terraria.


This guide serves as your instruction manual to all things Terraria Steam Workshop. How do you download and play that top-rated Adventure Map? How do you find and use a cool texture pack of your choosing? How can you go about creating your very own Map or Resource Pack and then upload it for everyone else to enjoy? What are the rules of the road and guidelines for all of this? Great questions, all – shall we dive into finding the answers?


Below, you will find a table of contents that covers all of the topics available in this guide. Simply select the topic about which you want to learn more and you will be whisked away to that particular section. We will be making improvements and edits to this as time moves on, so if anything seems confusing or you have any questions, be sure to let us know!


We absolutely cannot wait to see and experience the amazing creations that we know the Terraria community will share on Steam Workshop – now let’s get to it!



Steam Workshop Introduction

What is the Steam Workshop?
The Steam Workshop is a system hosted on Steam which allows users to upload and share select game modifications and content with other users. For the core Terraria game, users will be able to upload and share both World files and Resource Packs. Players interested in more extensive game modifications should check out tModloader, linked below. Users can share their favorite worlds, sweet golf courses, or even custom-built adventure maps; enabling anyone on Steam to download and play these maps. Resource Packs takes the customization possibilities even further, allowing creators to publish their own personal library of asset replacements - from changing visuals/textures to swapping out music, to even creating their own translations and new in-game dialogue. While parts of these capabilities existed before, the integration with the Steam Workshop makes uploading modifications/maps and using these features substantially easier than ever before. The Workshop system allows users to search for specific content, or organize by various criteria such as Most Recent and Popular Content.

For more information about the Steam side of things, here is their Steam Workshop page.

For Players seeking more extensive Terraria game modifications, check out tModLoader here: tModLoader on Steam

How do I use content from the Steam Workshop?
The Steam Workshop tab can be accessed from Terraria's Community Hub page on Steam (the link is located right underneath the Play button in the Terraria page in your Steam Library).

HubButton.png


WorkshopTab.png



When you arrive, you will see a few highlighted sections. The first is a featured list of what are the most downloaded and highest rated Maps/Resource Packs as of the current time. Second, you will see a Developer’s Choice feature area. Items listed here reflect what we consider to be cool content that you should definitely check out, and we will do our best to keep this updated as time moves on. Below this, you will find tabbed sections where you can sort everything by a number of different criteria, such as Most Recent, Most Popular, and Most Subscribed. Off on the right sidebar, you can also filter results by World Files, Texture Packs, Music Packs or Language Packs.

Once you've found Workshop content you want to download, you will need to Subscribe to it. Subscribing to a Workshop item will download the content, and - once fully downloaded - should make it available in your in-game Workshop Menu. Subscribed-to content will also automatically update for you over time as the creator makes any changes/improvements, etc. If at any point your subscribed Workshop content is not visible, exiting and re-entering the Workshop menu should refresh the list.


How do I Import and Use Workshop Worlds?

Once you've subscribed to a Workshop world, you will find it in the "Import Worlds" section of the workshop menu. You need to import the world first in order to play it. When you import a world, it will first ask you to rename the world, and then it will make a copy of that world in your Worlds menu. This imported copy is completely distinct from the downloaded version in your "Import Worlds" folder. When you play and save changes on your personal copy of that world, it will not impact the downloaded version of the world.

ImportMenu.png


This separation allows you to import the same world as many times as you'd like, so you can play or replay it in different ways! If the world's original owner updated their world on the workshop, the imported worlds that you made your own will remain untouched, and you may import the world again if you wish to play with the changes.


How do I use Workshop Resource Packs?
Once you've subscribed to a Workshop Resource Pack, you will find it in the 'Use Resource Packs' section of the workshop menu. Enable each of the Resource Packs that you wish to use, exit the menu, and voila - the selected changes will go into effect! If you've chosen to use multiple Resource Packs that modify the same contents, you may adjust which modifications take priority by adjusting the order of the enabled Resource Packs in the menu.

ResourcePackMenu.png


For more detailed information on how to use Resource Packs in general, please see the dedicated Resource Packs section.

How do I uninstall Steam Workshop Content?

Content you see in the workshop menu is only there because you are subscribed to it. If you wish to remove it, simply unsubscribe from the content on its Steam Workshop page. The "Browse" dropdown has an option to filter for your Subscribed Items, which will help you navigate through them more easily. Once unsubscribed, the Workshop file should no longer be present the next time you refresh the Workshop Menu. Note that worlds you've imported and made your own will remain, and can/must be deleted like any regular worlds.

What if I play Terraria on GOG?

Unfortunately, there is no way to integrate the Steam Workshop functionality through GOG, as it is an entirely different game platform.

However, all of the newly-introduced Resource Pack functionality is entirely compatible with GOG versions of Terraria. The updated texture support systems, as well as the newly introduced Language and Music Resource Pack functionality are fully supported. There are just a few differences that you will need to be aware of in regards to how everything works:
- Instead of a Steam Workshop option on the Terraria main menu, there will simply be a standalone Resource Packs menu, which will work the same as it does on Steam versions of the game.
- While you will not be able to download and share your worlds and Resource Packs on the Steam Workshop, you will still be able to manually download and install content from other users, as you have in the past. If you need more information on how to manually install or make Resource Packs, please see the dedicated section here.




Uploading to Steam Workshop

How do I publish content to the Steam Workshop?

To publish content to the Steam Workshop, first head on over to Workshop Menu within Terraria's in-game menus.

WorkshopHub.png


From here, you can select either Publish Worlds or Publish Resource Packs, depending on the type of content you are looking to share with the world. Once you select which type of content that you desire to publish, you should see a menu pop up.

SelectPublishScreen.png


Simply select the World/Resource Pack you want to share from this menu, and you will then be taken to the Submission Screen.

PublishScreen.png


The Submission Screen is where you will provide a lot of necessary and important information about your content. To maximize player enjoyment and to make your content really stand out, we suggest that all content creators take the time and care to make this as accurate and amazing as possible. The Submission Screen has several options and features available, including:
- A link to the Workshop Terms of Service, which must be accepted on your Steam account before you can use it. You can check if you agreed to it or not here (must be logged into Steam on your browser).
- A section that allows content creators to select an image preview for their content, which will be visible on Steam. Image previews must be no larger than 512x512 pixels, and use the .png or .jpg image format. This image is the first thing people will likely see in relation to your content - so make it representative of what you have created and make it awesome!
- Privacy settings specific on whom is allowed to see/download your content (Public, Friends Only, or Private)
- A section where you can set descriptive Tags for your content. These can help people quickly identify the type of content you are uploading as well as the overall intent. These tags are used in the Workshop page on Steam as filters to assist other players in narrowing down their searches for new content to download.

Each of these options may be set once per upload. If you made a mistake or just want to improve upon your choices, don’t fret! You may adjust these options as many times as you wish by republishing the content, which will update the settings on your content's Steam Workshop page. In addition, there are other ways to customize the way your content is displayed on the content's page, where you'll be able to adjust the title and description, and even include screenshots of your content. This is your chance to make sure that your content stands out among the crowd, so take the time and attention to fully/accurately describe what you have created, and provide a few attractive pictures to draw the eye! We will dive into all of this in a later section, so let’s get back to the publishing process itself for now . . .

Once you are satisfied with all of your selections, simply hit the Publish button and the process will start! There will be a brief animation/audio cue as the upload progresses. Particularly large Music Packs or Texture Packs may take several minutes to upload; note that shutting down terraria in the middle of an upload will abort that upload - so make sure that you give things time to properly finish.

As soon as your upload is complete, a Steam window will pop up via the Steam overlay, showing the Workshop page for your content. However, it is important to note that this will only happen if Steam overlay is enabled.

What happens if something goes wrong? Well, sometimes an attempt to publish content may fail, so we've added a "Logs" menu - found in the Steam Workshop menu - where you can read & understand what caused the failure, as well as how to potentially resolve it! The "Logs" section will show a brief description/explanation of every failed upload during the current play session - so be sure to get any information that you need from these logs before you close the game. Some examples of potential reasons why an upload might fail include:
- the user has not properly accepted the Steam Workshop ToS
- the user's preview image for the Resource Pack is too large
- the user's internet connection has been lost, or they have lost connection with Steam


Modifying Your Content on the Steam Workshop Page

Once your content has been successfully published through Terraria, you can now view your published content via the Steam Workshop page itself.

From the Terraria Workshop page, look on the right side for your avatar and a link that says "Your Workshop Files". This will take you to your personalized Content page, filtered specifically for Terraria content. You can also access this page more directly by simply going to your user content page on Steam and selecting "Workshop" - though this will show all Workshop content tied to your account across all games that you own on Steam, rather than being limited to only Terraria content.

You now see all of your currently published Workshop files, and if you click on one of them, you will have access to a number of related features. Remember those additional customization options that we mentioned earlier? This is where you will find all of these options, each incredibly useful not only towards making/maintaining the best content possible, but also making sure that your content stands out from the pile for other players. This is the “cover” of your content here – so we really encourage everyone to take the time to make this as accurate and attractive as possible (as we have suggested in earlier steps).

WorkshopScreen.png


Features available on your Workshop page for each content item that you have uploaded include, but are not limited to:

- A description page, which can be updated with a full description of your choosing
- A dedicated discussion forum for your content
- A comments page
- A changelog page for updates you've made
- A variety of metrics and rating system information for Workshop files
- An option to change the name of the content (it uses the file name of the uploaded item by default)
- Options to attach additional screenshots or even videos to demonstrate your content in action
- A visibility toggle (the same as the visibility option you set when publishing)

We encourage you to explore the full options available on the Workshop page, as there is a ton of potential for content creators to utilize here to make their content really pop and to create a community and following all your own!

Updating Your Workshop Content

If at any point, you've made changes to your World or Resource Pack, and wish to update what is available for players to download on the Workshop, you will need to republish the content. Don't worry - the process is very simple! All you have to do is follow the same process that you did initially in order to publish the content for a second time, and the new version will replace the original version (without erasing any of its Steam-side information, such as ratings or comments, etc). This update will then be propagated to any users who have subscribed to your content, automatically updating their versions to match the latest and greatest. Note that this will NOT update a user's imported world file, as these are no longer connected to the Workshop system. It will, however, update their Workshop download of the world file, which they can then freely import whenever they desire.

We highly recommend that when you make significant changes to any existing Workshop content, you provide a changelog note on the file's content page. This is a good best practice to follow, as it lets your subscribers know what to expect and gets them excited for what's new.

Deleting Your Content From the Steam Workshop

Should you decide that you would like to remove some or all of your content from the Steam Workshop, this process is also quite simple. On the file's Workshop content page, there is a clearly visible and labeled "Delete" option. Pressing this button will remove the file from the Steam Workshop. Please note that this will also delete the file from the Terraria installations of all subscribed users. However, as we have mentioned previously in regards to World files, changes you make will NOT apply to Imported Worlds. Though your Workshop copy of the World file will be deleted, there is no way that you can access or delete a user's imported copy.

Accessing Downloaded Workshop Content On Your Hard Drive

Aside from Imported Worlds - which are saved to the normal world save directory (My Documents > My Games > Terraria > Worlds) - downloaded Workshop Worlds and Resource Packs are not found in the same location as the rest of your Terraria save data. If for some reason you need to access these files directly, they can be found in your Steam installation folder using the following folder path:


steam/steamapps/workshop/content/105600


If you have multiple downloaded files, you will have to navigate through the folders until you find the one you are looking for, as the files themselves only use assigned number IDs from Steam.





Resource Pack Introduction

What is a Resource Pack?


A Resource Pack is a downloadable collection of files - organized in a specific folder structure in your ResourcePacks folder - which can modify select portions of the game. In regards to Terraria, Resource Packs are able to modify three different types of content in the game, either individually, or in any combination:
- Texture Packs - Functionality that allows users to replace one or more of the in-game sprites, including things like items, enemies, bosses, or UI elements
- Music Packs - This allows users to replace music tracks in the game with other tracks of their choosing
- Language Packs - A system that supports modifying/changing the in-game text in one or more languages, including entire language overhauls or writing alternate text (e.g. NPC chat lines, etc)

Resource Packs are distinct from more traditional mods in that they require minimal external support (for example, through the use of the Tmodloader add-on), and that they are limited to basic replacements of pre-existing Terraria content, rather than adding brand new content/dramatically overhauling vanilla content. Again, for that level of modifications, you would need to utilize the tModLoader version of Terraria.

How do you download and install Resource Packs?

Resource Packs can be downloaded and used in two ways:
1. You can manually download and install Resource Packs to your Terraria folder in My Documents
2. You can download and use Resource Packs via the Steam Workshop

Manual Download/Install:
Most manually downloaded Resource Packs will be downloaded as a zip file or alternative compressed archive file type. Terraria supports both standard folder structure Resource Packs, as well as Resource Packs which have been compressed into zip files. However, non-zip archive files (such as 7z) are not supported, and will need to be extracted prior to use.

To install a Resource Pack, you will need to either place the zipped file directly into the Terraria ResourcePacks folder, or extract its contents into the ResourcePacks folder.

Where is the ResourcePacks folder to which we keep referring? ResourcePacks is a sub-folder in the Terraria save files directory, which is found in different locations depending on your OS.
  • Windows: %USERPROFILE%\Documents\My Games\Terraria\ResourcePacks
  • Mac: ~/Library/Application support/Terraria/ResourcePacks
  • Linux: ~/.local/share/Terraria/ResourcePacks

If you do not already have a ResourcePacks folder, you can make one at any time. However, Terraria should attempt to make one automatically when being launched.

Once you've navigated to the ResourcePacks folder, you will need to create a folder for each Resource Pack that you plan to install or make. Be sure to give each folder a name so that you can remember what is what – but the folder name will have no impact on how the pack is displayed in game. Once you have a folder made for the Resource Pack you wish to install, simply place the Resource Pack's contents into the folder that you created and you are all set.

Steam Workshop Download/Install:
Alternatively, you can download Resource Packs via the Steam Workshop, which we suspect will be the primary method for most players. To download a Resource Pack, simply navigate to its page on Terraria's Workshop and click "Subscribe". Any Resource Packs that you have subscribed to will automatically appear in the Steam Workshop Resource Packs menu, marked with a Steam logo to distinguish Workshop packs from manually downloaded Resource Packs.

Once your Resource Pack is in place, you will be able to access and use it from the Resource Packs option in the Steam Workshop sub-menu within Terraria itself. Let's dive into how that works next!

How do you use Resource Packs?

The Resource Pack menu is found within the Steam Workshop menu option on the title menu of Terraria. Once you click on this selection, you should be presented with a screen that looks like the one below:

TexturePackMenu.png


On the left side of the screen, you will see a list of all available (downloaded and installed) Resource Packs. However, just because you have downloaded them does not turn them on automatically in game. The Resource Packs menu allows you to pick and choose which Resource Packs you want on or off (in any combinations) at any time.

Choosing which packs to have active is very simple. Players can enable any given Resource Pack by pressing the Red/Right Arrow button. Similarly, any given pack can be disabled by pressing the Green/Left Arrow button. You will be able to see the packs move between the two columns as you do so, confirming your selections visually.

All currently enabled Resource Packs will be on the right-side column. You can have more than one Resource Pack functional at a time. However, if two or more packs modify the same asset (sprite, music, localization entry, etc.), the game will only show the change from the highest priority pack in order to resolve that conflict. You can adjust pack priority with the Up/Down arrows in the Enabled Packs column. Packs at the top will take priority over packs at the bottom.

If you select the Info button (the three horizontal lines), you can view more information about a Resource Pack, such as its current version, and an extended description of the pack.

If enabled by the pack creator, Resource Packs will also have a unique icon, but this is not required.

If you want to learn how to make and format your own Resource Pack, please see this section.





Creating A Resource Pack

How do you make and format your own Resource Pack?

When making a functional Texture Pack for Terraria, there are two critical steps that you must follow:
1. Creating the base folder structure format, so that Terraria can read it properly. This also includes adding a special information file called the pack.json
2. Populating this folder with the properly formatted and valid assets and content for changing the game

So, first things first, let's discuss how you set up the base folder structure.

All Resource Packs share the same basic folder structure: by this we mean a specific arrangement and order of folders in the ResourcePacks folder. This folder structure must be adhered to precisely for the game to detect and properly utilize the contents within a Resource Pack. We've provided an empty, pre-formatted Resource Pack available for download here.

However, if you would like to learn how to create the folder formatting yourself, the following instructions will explain the exact folders and order needed:

1. Navigate to the ResourcePacks folder (if you don't know how to find it, see the above section for more details)
2. Create a new folder. You can name this folder anything you want, but we suggest choosing something that will help you remember which Resource Pack you are working on. However, the folder name will not have any impact on how the Resource Pack will be displayed in game (packs are named in the pack.json file, but more on that in a bit). For this example, we will call it "MyResourcePack".
3. Navigate inside of the MyResourcePack folder, and make a new sub-folder called "Content".
4. Inside of the Content sub-folder, you will need to create one or more new sub-folders depending on what you are changing with your Resource Pack. There are only three options here: Images, Localization, and Music. Having all three folders is not necessary, you will need to create a folder for the type(s) of content that you are changing. All of that said, it is worth pointing out that all three folders are found within the "Content" folder.
5. You will need an appropriately formatted pack.json file for proper operation. This file determines the basic information your Resource Pack will display in-game. This is a required step for proper functionality, and is also invaluable towards making your pack stand out. To see more about how to make or edit a pack.json file, be sure to check out the related section below.

Congratulations! You now have a basic and functional Resource Pack folder structure. This pack should be visible when launching Terraria, but will not change anything because it does not yet contain any assets within the Content sub-folders intended to alter anything in-game.

How do you go about filling up these folders with amazing content? As you start populating your pack with new content, it is very important that you familiarize yourself with the rules for each type of content replacement. Each type of content has its own set of steps and guidelines, and these are covered below in dedicated sections: Sprites, Music and Language


Creating a Zipped Version of Your Resource Pack

Terraria can read Resource Packs in both a normal folder layout and while compressed into a zip format. The folder structure of a zipped file is also important for proper function, so lets cover how to properly zip your Resource Pack.

1. Navigate to your ResourcePacks folder
2. Enter the folder for your Resource Pack
3. You should now see the Content folder, the pack.json file, and potentially other files such as the icon.png or a workshop.json (which the Steam Workshop may have created as an identifier). Highlight all of these files and then right click to bring up a popup menu, then use any zipping programs you have installed to add all of them to a single zip library.

The resulting zip file, if placed directly into the ResourcePacks folder, will be correctly read by Terraria.

IMPORTANT: zipped Resource Packs cannot be published to the Steam Workshop, but are easier to upload/send to other people via other means outside of Steam.



Modifying Resource Pack Information

Modifying Your Resource Pack's Information and Making a Pack.json

When you open up the Resource Pack menu in-game and select a pack, some information is visible to the user, with an additional sub-menu providing even further information. The information options here are modified through the pack.json file, which uses the JSON file format. (This guide will have a more extensive discussion on how JSON files work more in the Language Pack section section) The pack.json should be located/placed in the root folder of your Resource Pack's installation folder. Note: the pack.json ONLY controls IN-GAME information for the Resource Pack. It does not impact the information listed on the Steam Workshop, and changes to Steam Workshop information do not change the in-game information of your pack either.

The information controlled by the pack.json file includes:
- Name of Pack
- Author of Pack
- Description of Pack
- Version of Pack

Here is how that appears within an actual JSON file, with only the colored text being okay to change:
JSON:
{
    "Name": "Pack Name",
    "Author": "Author",
    "Description": "Place a brief description of your pack here.",
    "Version": {
        "major": 1,
        "minor": 0
    }
}

The above pack.json would look like this on the Resource Pack Menu and the Pack Info Pages:
PackInfoDemo.png


In order to create your very own pack.json file from the above, you would simply copy and paste the above text into Notepad (or text editor of choice), and replace the placeholder text with your own information, and then save the file as "pack.json".

For convenience, you can download a copy of a basic preformatted pack.json file here. You can then place it into the root folder and simply edit it to include the information you want it to contain. If you want to make things even more simple, you can download a copy of a basic, pre-formatted pack.json file below. Simply save this off into the root folder of your Resource Pack’s installation folder and then make whatever edits you want directly from there!

Once you have your edits all complete, the pack.json should be located/placed in the root folder of your resource pack's installation folder. That’s it, you have successfully updated the in-game information for your Resource Pack!

Note: the pack.json ONLY controls IN-GAME information for the Resource Pack. It does not impact the information listed on the Steam Workshop, and changes to Steam Workshop information do not change the in-game information of your pack either.

One final topic for the pack.json: versioning.

The pack.json supports a two-digit version number (e.g., 1.0, 2.4, etc). Typically, the initial release of your Resource Pack should be 1.0. Subsequent minor updates (small tweaks, typo fixes, and other low impact adjustments) would be represented by an increase to the second number. For example, if you fixed a handful of typos, you would increase your version from 1.0 to 1.1.

If your pack has gone through major revisions, large scale content additions, or other such modifications, a pack creator would normally indicate this by increasing the first number, and resetting the second number to zero (e.g., going from 1.3 to 2.0).

Properly adjusting the version number of your pack will help users understand the scale of your changes, which will dovetail well with properly documented changelogs on your Pack's Steam Workshop page.



Changing Your Resource Pack's Icon:

Terraria Resource Packs also come with the ability for Pack creators to assign a custom icon to each Resource Pack. This is an optional step to take, but a great one to help your Pack stand out. Resource Pack icons are blank by default, but you can change the icon associated with your Resource Pack by placing an png file named "icon.png" in the root folder of your pack's installation folder. The icon.png can be any size, but the system will resize things up/down to fit a 60x60 pixel standard. You may want to keep that in mind when deciding on what image to use so that you avoid any unwanted stretching/distortion.

Just like with the pack.json, this icon only impacts how your Resource Pack is shown in-game, and it is NOT automatically the same image preview that you upload to the Steam Workshop. Both the Steam Workshop image and the Pack Icon need to be added separately; they can even be different images - or you can add just one or none at all for either location.

Here is an example image of how a Resource Pack Folder should look with an Icon image added.
Icon Example.png





Texture Packs

What is a Texture Pack?

A Texture Pack is a downloadable set of sprites that, when installed, will replace the appearance of one or more of the normal/vanilla sprites in-game. This can include weapons, armor, blocks, enemies, bosses, and even the user interface. The number of sprites changed in a Texture Pack can vary significantly, based on the intentions of the creator. It could include just a single item change, or it can be an entire overhaul to hundreds or even thousands of sprites in the game.

How do I add Sprites to Texture Pack?

This section will cover how to properly format and add sprites to your Texture Pack, and what rules need to be followed for those sprites to be detected by and to function properly and be detected within Terraria.


All of Terraria's sprites are stored as xnb files, and are located in an image library in its Steam installation folder. In order to function properly, your Texture Pack's Images folder must mirror this library. Thus, if you place a valid sprite into that folder, with the correct name and same location as in the installation library, it will replace that sprite when in-game. More on that in a moment - first, let's cover what is required to be a valid sprite in Terraria:

Valid sprites require the following conditions to be met:
- They must use the .png file format
- They must have the exact same resolution as the sprite being replaced
- They must have the exact same name as the sprite to be replaced (barring the file name extension png replacing xnb)
- They must be located in the same sub-folder of the Images directory that is being replaced

To elaborate further on the last point: the Image Library for Terraria has several sub-folders, some of which even have their own sub-folders. While these folders are not absolutely critical for a Texture Pack to function, you will not be able to replace any sprites found in these sub-folders unless you have them in your Resource Pack as well. You can create these manually, by going to your Steam folder's installation and comparing what folders are there.

Want to keep it simple? Download this pre-formatted pack, which includes the complete sub-folder structure already made. With this template, you can just place whatever sprites you want to replace in the matching folder to its vanilla sprite and voila - Texture Pack!

Sound confusing? It is not so bad - to further explain, we will cover a step-by-step process for replacing sprites below for practice:


1. Navigate to the ResourcePacks folder (if you don't know how to find it, see the above section for more details)
2. Navigate to the MyResourcePack/Content/Images folder. This folder will contain all of the texture replacements you want to add.
3. Assuming you have the modified texture file you want to use, you need to find out what the original texture xnb file is named in Terraria's Image library, and where it is located.
4. As an example of the above, lets use the Title Screen logo for practice. In the Terraria Image library, this is found directly in the Images folder, and is named Logo.xnb
5. You can make your own replacement Title Screen logo if you like, or you can download one here to use for practice.
6. Place this file in the Texture Pack Images folder, and make sure it is named Logo.png (to match Logo.xnb)

At this point, if you turn on Terraria and activate your Resource Pack, the Terraria title screen logo should change to a vivid purple color as soon as you close the Resource Pack menu. This will let you know your Texture Pack is functioning properly. Since this purple logo is simply for testing purposes, you can safely remove it at your discretion at any time. However, this is a great example of how it works and an easy way for you to learn the process and to check to see that you can execute it properly.

So, that was a pretty simple example. Let's take our practice to the next level. Here is another example, where we are making a replacement for a sprite found in one of the sub-folders:

1. Navigate to the MyResourcePack/Content/Images folder.
2. Inside of the Images folder, open the folder named "UI", or if there isn't one, create a folder named "UI" and open it
3. If you check the Terraria Image library in the UI subfolder, one of the first xnb files will be called Achievement_Borders.xnb. This sprite, along with being used as the border for the Achievements in the Achievement menu, is also visible in the Resource Pack menu itself, and surrounds the icon for your Resource Pack, which makes it ideal for practice and testing.
4. You can make your own replacement Achievement Border logo if you like, or you can download one here to use for practice.
5. Place this file in the Resource Pack's Images/UI folder, and make sure it is named "Achievement_Borders.png". It is important that for sprites like this, the sub-folder that the replacement texture is placed in exactly mirrors the location of the original xnb location in the Terraria installation files. Failing to follow these steps will result in your Texture Pack failing to function properly.
6. Launch Terraria and activate your Resource Pack. Close the Resource Pack menu to let the textures update, and then re-open the Resource Pack menu. The borders around the Resource Pack logos will now look bright blue. Like with the Logo file, this can be deleted whenever you want, as it was only for practice.

Here is an example screenshot of what an Images folder with the additional Sub-Folders would look like:

Folder Structure.png


Depending on how extensive your Texture Pack is going to be, you may need to memorize the contents and purposes of several of Terraria's sub-folders. A large portion of the game's user interface files are stored in sub-folders, but this also applies to some other more basic content is as well - including most of the chest-piece armor sprites, some accessories and the Town NPCs. The premade empty Texture Pack we provided above has a complete library of these various sub-folders already included, so you can download that to skip the process of manually making all of the sub-folders. However, these sub-folders are NOT mandatory for Texture Pack functionality. They are only required if the texture in question is found in those sub-folders.




Advanced Texture Packs Guide

The previous section covers the logistics of how to properly make and use Texture Packs, but it felt prudent to include a brief introduction towards the best practices of sprite editing. Terraria's sprites follow some specific rules to properly function, and knowing these rules, as well as some useful tools for sprite work, can be a great head start on a successful Texture Pack.

Choosing What You Want To Replace

To replace a sprite, you must know what its contents are, specifically: its resolution size, its location, frame count, and how it actually looks. To do that, you need to be able to open & see the art files. Terraria's art files are stored in the game's installation folder under the `content/images` path, as mentioned earlier. They use the `XNB` file format, which will need to be converted to PNG form before they can be worked on. You can use a great conversion tool created by @trigger_segfault for this purpose, check out the following link below for details:

One resource we've put together to facilitate Texture Pack making is a spreadsheet (which you can download here). This spreadsheet has a complete list of every sprite asset in the game, along with a variety of information for that sprite.

This information includes:
- The folder pathway, showing what folder the sprite is found in (and subsequently where to put a Texture Pack replacememt)
- The file name of the sprite
- The width and height of the sprite, as Texture Pack replacements must use the same size as the sprite being replaced
- When the sprite has an associated in-game name, it will be listed. This includes all items, NPCs/enemies, projectiles, buffs, glowmasks, and extra IDs
- In the case of blocks and walls, it will usually list the block item that is used to create it (which can help identify it)
- Some items have associated glowmask and flame sprites. In some cases, these related sprites will be listed as well.

This document is best opened in a spreadsheet program, as the information is arranged in columns. Using a text editor such as Notepad will work, but is not recommended.

Using this document, you can more easily find a large portion of what sprites correspond to what content, and their required specifications for proper use. Once you've gotten a png file you'd like to edit, make sure to paste it into the matching folder pathway in your Resource Pack, as mentioned earlier!


Sprite Editing Tools and Resources

Once you've picked a sprite to replace, as long as it is properly named, formatted, sized, and in the correct location, any changes you make to it will show up in Terraria. To actually change the contents of its image however, you need image editing tools. Here's a few tools we recommend looking into!

Free:
- Piskel - Free online sprite editor, A free tool dedicated to pixel art that runs directly in your browser.
- Animation Graphic Editor - GraphicsGale, A freeware and versatile image editor specialized in pixel art and sprite animation.
- Pyxel Edit: pixel art and tileset creation tool, Another tool specialized in pixel art, available in both free and paid versions. Pyxel Edit’s main focus is facilitating the creation of tilesets but it can also be used for general pixel art. It is also used by members of our team.
- Paint.NET - Free Software for Digital Photo Editing, A free, simple, and capable image editing tool. You can rely on it for simple edits.
- GIMP , A free and open source image editor, highly flexible and capable of pixel art.

Paid:
- Aseprite, This is a paid but accessible image editor specialized in pixel art, preferred by many professional pixel artists and fellow game developers. Aseprite is constantly updated with new features and is used by members of our team.
- Adobe Photoshop - Photo, image & design editing software , Photoshop is a powerful multi-purpose tool used by many professional visual artists including members of our team. Even though it is not aimed towards pixel art, it is versatile enough to allow for a good pixel art workspace. It requires a paid subscription, which might make it less accessible than other options.

Any of these tools should suffice for getting started on your art edits - they're also all fairly popular and there's many guides on how to use each of them!


Introduction to Terraria's Art Contents and Specifications

Most of Terraria's art files have required specifications/practices by which they function properly. Correctly modifying them will require understanding these specifications.

To facilitate understanding some common examples of sprite formatting, we've put together a collection of sprite format templates, which you can download here.

This includes several images which illustrate how many of our sprites are put together, and can be used as a reference for how to properly put together a fresh sprite.

Most Sprites/General Purposes:
- Almost all sprites are manually doubled in size - you can use this to your advantage and make high resolution texture packs. In layman's terms, this means that every block of "color" in a sprite is actually a 2x2 grid of pixels, instead of a single pixel. To maintain consistency of pixel size while editing Terraria sprites, you will want to maintain this 2x2 format. But as mentioned, if you intentionally created all of your replacement sprites using a 1x1 pixel format, then you can create higher resolution textures.
- Most sprites utilize transparency, please pay attention to that! Using programs which are not designed for this type of editing will often fill blank space with "white", which will show up in game as a large white square around your pixels.
- Any sprite with multiple frames tends to have 2 pixels worth of separation between each frame. Be aware that painting over these separations may result in the paint leaking between the frames.
- Some content uses additional images to display glow. If you edit this content, please consider editing its additional images, as well! If you use our Sprite Spreadsheet, some sprites will list their related glow sprites.

For Tiles (Blocks, Walls, and Furniture)
- Most regular blocks are separated into 16x16 sized frames, and into sets of 3 variations per block placement style. We've provided a sprite sheet color coding this in our Template Pack.

- Some furniture will have their bottom frame be 16x18, the last 2 pixels sinking into the floor.

For NPCs
- Some NPCs use black & white images, and are colored with code, instead. If you try adding color to these NPCs, please be wary that your color will be tinted by the NPC's tint ingame. An example of this is NPC_1, the sprite used for most of the colored slime variants.
NPC_1.png

This single sprite is used for a large number of slimes, and if you were to attempt to color it, ALL of those Slimes would be impacted, and show a mix of that color and the code-side color tint. So be aware that texture packing cannot easily change the color of this sort of sprite, although normal sprite adjustments will still work normally.

For Trees
-Terraria's trees use a special paint system, and will only try repainting colors within specific hues, the kind matching their leaves. If you edit a tree's color significantly, please be wary that painting it with the game's paints may be limited.


Best Practices

Here are some tips & resources from our artists regarding making new art for Terraria! If you're ever stuck, this section may help!

Finding the correct size for each frame of a sprite sheet:
It is extremely important to keep in mind the correct size of individual frames for sheets that include multiple sprites. Since most of the sprite sheets follow a vertical format, a great way to find the correct frame size is to divide the image’s height by the number of sprites included vertically. It is also important to keep in mind that most of these sprites will have some empty space below them (usually 2 pixels), which serve as a separation between frames.

Limiting your colors:
A common recommendation when working pixel art is to keep tight control of the colors you use. Having a limited palette for a sprite can help you keep your focus and make your sprite crisp and readable. This is not a requirement or a rule to create pixel art but it is a tip that can help to keep your workflow consistent.

Thinking about contrast:
Contrast is of extreme importance for video game assets. When editing or creating a new sprite, try to think about its function and how it is going to interact with the other assets. You won’t want to draw an NPC that is too hard to see against a wall!

Sometimes simpler is better:
Pixel art is a very economic form of digital art, so due to its nature you might find it hard to create highly detailed assets in such low resolutions. Sometimes when trying to add too much detail you might find yourself with a sprite that is not readable because it has too much noise. In cases like that, think about simplifying your art and focusing on the overall picture, leaving the rest up to the player’s imagination.

List of recommended pixel art resources:
Pixel Art Walkthrough by Derek Yu: - a complete and accessible overview of pixel art including exercises and practical examples for beginners.

Creating Pixel Art by Cure: - a compendium that includes a comprehensive list of topics, serving as a complete pixel art guide for anyone who wants to delve deep and improve their skills.

Pixel Art tutorials by Saint11 - a series of bite-sized tutorials exploring all manner of pixel art techniques, well illustrated and easily digestible.

Lospec - Free tools and resources for people making pixel art, voxel art and more - A hub for pixel art resources including lists of tutorials, color palettes and even a free online editor.

Pixel Art Course by Fil Razorback - An in-depth series of pixel art classes divided into 8 Chapters, covering from the basics to advanced techniques.

Finally, if you prefer to follow community tutorials, feel free to check out this thread from @ArmyFrog!






Music Packs

A Music Pack functions much like a Texture Pack functionality, except that instead of replacing sprites, it replaces music files in the soundtrack. This also includes the Rain and Wind ambience tracks, since they use the music file system instead of the other ambience/sound effects systems. Upon activating a Music Resource Pack, any replaced music will play your chosen track when heard in-game rather than the usual vanilla track, while unreplaced music will continue to play the standard track.

Music Packs are actually the simplest type of Resource Pack to create and modify.

1. Navigate to the ResourcePacks folder
2. Once inside, navigate to the MyResourcePack/Content/Music folder.
3. Place your intended replacement music files into this folder. Music Packs are able to utilize .wav, .mp3, and .ogg vorbis music files, so make sure that each of your music files use one of these three file types.
4. Be sure to rename your music files to the corresponding music file they are replacing. For example, if you are intending to replace the Empress of Light theme, you would want to rename the replacement mp3 to Music_57.mp3, because the Empress of Light track is #57 (there will be a full list of track numbers below).
5. Your replacement track should now be fully functional when the Resource Pack is activated in-game.

Here is a full list of the Music ID numbers for the music tracks in-game, click the drop-down spoiler tab to view.
Music_1 = Overworld Day
Music_2 = Eerie
Music_3 = Night
Music_4 = Underground
Music_5 = Boss 1
Music_6 = Title (Classic)
Music_7 = Jungle
Music_8 = Corruption
Music_9 = The Hallow
Music_10 = Underground Corruption
Music_11 = Underground Hallow
Music_12 = Boss 2
Music_13 = Boss 3
Music_14 = Snow
Music_15 = Space Night
Music_16 = Crimson
Music_17 = Boss 4
Music_18 = Alt Overworld Day
Music_19 = Rain
Music_20 = Ice
Music_21 = Desert
Music_22 = Ocean Day
Music_23 = Dungeon
Music_24 = Plantera
Music_25 = Boss 5
Music_26 = Temple
Music_27 = Eclipse
Music_28 = Rain (Ambient)
Music_29 = Mushroom
Music_30 = Pumpkin Moon
Music_31 = Alt Underground
Music_32 = Frost Moon
Music_33 = Underground Crimson
Music_34 = The Towers
Music_35 = Pirate Invasion
Music_36 = Hell
Music_37 = Martian Madness
Music_38 = Lunar Boss
Music_39 = Goblin Invasion
Music_40 = Sandstorm
Music_41 = Old One's Army
Music_42 = Space Day
Music_43 = Ocean Night
Music_44 = Windy Day
Music_45 = Wind (Ambience)
Music_46 = Town Day
Music_47 = Town Night
Music_48 = Slime Rain
Music_49 = Day Remix
Music_50 = Journey's Beginning w/ Relogic Intro
Music_51 = Journey's Beginning
Music_52 = Storm
Music_53 = Graveyard
Music_54 = Underground Jungle
Music_55 = Jungle Night
Music_56 = Queen Slime
Music_57 = Empress of Light
Music_58 = Duke Fishron
Music_59 = Morning Rain
Music_60 = Alt Title
Music_61 = Underground Desert
Music_62 = (Otherworldly) Rain
Music_63 = (Otherworldly) Day
Music_64 = (Otherworldly) Night
Music_65 = (Otherworldly) Underground
Music_66 = (Otherworldly) Desert
Music_67 = (Otherworldly) Ocean
Music_68 = (Otherworldly) Mushroom
Music_69 = (Otherworldly) Dungeon
Music_70 = (Otherworldly) Space
Music_71 = (Otherworldly) Underworld
Music_72 = (Otherworldly) Snow
Music_73 = (Otherworldly) Corruption
Music_74 = (Otherworldly) Underground Corruption
Music_75 = (Otherworldly) Crimson
Music_76 = (Otherworldly) Underground Crimson
Music_77 = (Otherworldly) Ice
Music_78 = (Otherworldly) Underground Hallow
Music_79 = (Otherworldly) Eerie
Music_80 = (Otherworldly) Boss 2
Music_81 = (Otherworldly) Boss 1
Music_82 = (Otherworldly) Invasion
Music_83 = (Otherworldly) The Towers
Music_84 = (Otherworldly) Lunar Boss
Music_85 = (Otherworldly) Plantera
Music_86 = (Otherworldly) Jungle
Music_87 = (Otherworldly) Wall of Flesh
Music_88 = (Otherworldly) Hallow
Music_89 = Journey's End
Music_90 = Deerclops
Music_91 = Aether

Important note: music files are the most likely to significantly increase download/upload time when working with the Steam Workshop. Any time you are publishing or subscribing to a Resource Pack that replaces more than a few music tracks, expect that the transfer time may be substantial, potentially several minutes or more. It may be necessary to wait longer than normal for Music Packs to become available, and the upload process may be just as long, so prepare accordingly when publishing lengthy Music Packs.

As a final note, please ensure that any music files that you utilize in your Music Packs are in compliance with Steam Guidelines as well as all relevant Copyright law. Otherwise, you risk having your Pack removed at any time.




Language Packs

What is a Language Pack?

A Language Pack works similarly to a Texture Pack, in that it allows a user to individually modify or entirely replace the text from one or more of the languages in Terraria. That may be a bit confusing, so let me explain it in a bit more detail.

Terraria has several different language options. All of the text (items, tooltips, enemies, NPC dialogue, menu/UI text, etc) is all stored in a special file system. If you change the text in one of the entries in this file system, it will change the text in game, for that language only.

A Language Pack is a file that replaces one or more of the text entries in the game. Any text changes in the modified file will replace normal in-game text for that language, while any unmodified text will remain unchanged. For example, you could install/make a Language Pack that changed entire English localization text into Norwegian. As long as the Language Pack is activated, the game would be in Norwegian while the English language setting was used, and simply deactivating the Language Pack would revert it to normal text.


How do I make a Language Pack?

Changing in-game text is accomplished by placing one or more specially formatted files into the Content/Localization folder of your Resource Pack. The pack creator will edit these files to list all of the text changes they want to make in their pack - a language file could contain only a single text change, or it could contain literally thousands. This entirely depends upon the scope of the changes the creator wants to make.

All of Terraria's text is organized into several categories:
- First, each language is its own dedicated file structure. Both for Terraria's normal localization, and for Language Packs, every additional language being modified will need its own files. These each have specialized naming requirements, which we will cover later.
- All of the text within a language is organized into categories. Categories might include things such as the names of Items (ItemName), Item Tooltips (ItemTooltip), the names of enemies (NPCName), etc. Some categories have only a few text entries, while some, such as ItemName, have several thousand. Knowing the internal name for each category is necessary for language replacement.
- Every line of text within a category has something called a "key", which is the internal name that the game uses to find the text that goes with it. The key never changes, even in different languages. For example, the key for the Copper Shortsword item name is "CopperShortsword". In every supported language, the key is ALWAYS CopperShortsword, and this will never be changed in language replacement. Knowing the key for the text you are changing is also required to be able to properly format it.

Thus, a Language Pack for even a single string of text would begin by creating a properly named file for the language being changed. This file would then include the category which the text string falls under, and then the key for that text. It is then at this point that you add your replacement text. The exact formatting will depend upon the file type you use to create your Language Pack.

We currently support two different file types for texture packs: CSV and JSON.

index.php

How to make CSV Language Files

The CSV file format is probably the easiest type of format to use for language replacement. It can be edited either with a word processing program like Notepad, or using a spreadsheet program like Microsoft Excel or Google Spreadsheets. Properly formatted, a CSV file will be compatible with both types of programs.

Lets examine a basic CSV file. You can copy this text directly into Notepad, and it will work properly.

Code:
Key,Translation
ItemName.CopperShortsword,Overpowered Sword
ItemName.ToiletCactus,Nightmare Toilet
ItemName.Wood,Lumber
ItemTooltip.ToiletCactus,'This is going to be a huge mistake.'
ItemTooltip.Gel,'Do not consume while on fire.'

Here is a picture of the same CSV data, if it were being worked on in Google Spreadsheets:
CSV Spreadsheet.png

Note: Due to a how Excel and Google Spreadsheets work, cells beginning with ' may omit this character entirely. Because a large number of Terraria item flavor text is enclosed in these, this requires a workaround. Any time when your replacement text would begin with ', you should enclose the entire cell in an additional set of quotation marks. This will then omit the quotation marks instead, and display the text properly. This is not required when editing a CSV file through Notepad or text programs.

The example CSV file will change the following things:
- Change the name of the Copper Shortsword to Overpowered Sword
- Change the name of the Cactus Toilet to Nightmare Toilet
- Change the name of Wood to Lumber
- Change the flavor text on Cactus Toilet to 'This is going to be a huge mistake.'
- Change the flavor text on Gel to 'Do not consume while on fire.'

The best way to think of CSV files is that they are columns of text. When working in a text editor, these columns must be divided by a comma, with no space. When working in a spreadsheet app, you simply put them into their columns, and do not add commas. In the above example, we have two columns: Key and Translation. These are columns 1 and 2, and everything below falls into the matching column. For an CSV file to be functional, it MUST include the Key and Translation columns.

In the Key column, for every string of text we want to change, we want to list the category (ItemName, ItemTooltip), followed by the text key (ToiletCactus, CopperShortsword, etc). These should be divided by a single period, and no spaces.

In the Translation column, you then include the text you want to appear in-game.

As an added benefit of the CSV system, you can include additional columns for whatever purposes you need. For example, you could have a column for notes, and a column to list the original text. This is strictly optional, but could be useful for collaborative projects, where documenting information with other contributors would be useful. These additional columns would not be detected by the game. Additionally, the columns can be in whatever order you like - it will not impact their functionality if they are out of order. The only absolutely necessary inclusion is that there must always be a Key and a Translation column.


index.php


How to make JSON Language Files
The JSON file format is actually the same file type that Terraria's programming uses for its language files. It is more complex to work with, as it requires very specific punctuation to function properly. However, because you can list all entries in a single category, without having to list them for every cell, it may be more easily organized. It is most easily edited with a basic word processing program - Notepad is more than sufficient for the task.

It is important to note that Language Pack json files are substantially text heavy files, and are relatively prone to breaking with even minor punctuation/formatting mistakes. Any extensive attempt at a major language overhaul (for instance, adding an entirely new language) is going to require something in the realm of ten thousand lines of json code. It is important to test your work-in-progress json file regularly, as a single error could break the functionality of an entire pack, and it could take many hours to track down a specific minor issue.

So to take a look at a basic example JSON file, here is a very short one. You can download it here to use it as an example file, but I'll also post its full-text here in the guide:

A very simple JSON file looks like this:
JSON:
{
    "ItemName": {
        "CopperShortsword": "Overpowered Sword",
        "ToiletCactus": "Nightmare Toilet",
        "Wood": "Lumber",
    },
    "ItemTooltip": {
        "ToiletCactus": "'This is going to be a huge mistake.'",
        "Gel": "'Do not consume while on fire.'",
    }
}

This will change 5 things:
- Change the name of the Copper Shortsword to Overpowered Sword
- Change the name of the Cactus Toilet to Nightmare Toilet
- Change the name of Wood to Lumber
- Change the flavor text on Cactus Toilet to 'This is going to be a huge mistake.'
- Change the flavor text on Gel to 'Do not consume while on fire.'

So let's break down the basic format here.

1. In our example, we had two different categories that were used: ItemName and ItemTooltip. These categories, as you could guess, contain all Item Names and all Item Tooltips respectively. For every additional category you want to include, you would need to format the JSON file to include that category as well, with ALL entries in that category falling within it.
2. Each text replacement has what is called a key; this is the internal name/identifier for the text you want to replace. This will always be the same, regardless of the language you are choosing, because this is how Terraria recognizes what thing you want to change.
3. The actual text to be replaced - this is the part that you get to change. It follows after the specific text key you want to modify.

The punctuation is really important here, as well. Using the reference above is important, because you will want to follow its punctuation rules very accurately.

1. The ENTIRE JSON file must be enclosed in a set of curly brackets, or { }. These should be the very first, and very last lines of your entire file.
2. Category names should use the following format:
JSON:
    "ItemName": { },
The category itself should be in quotation marks, followed by a colon and space. After that, you will need another set of curly brackets. This second set of curly brackets contains ALL of the text keys in that category. So if you change 200 item names, ALL of those 200 item keys need to be within this set of curly brackets. Note that in my example text, the three item keys are on separate lines, with the curly brackets enclosing them.
3. After the curly bracket, there should be a comma. Unless this is the very last entry in your JSON file, this tells the game that there is another category coming.
4. Like with the category names, the item keys and text-to-be-changed must be enclosed within quotation marks, with a colon and a space between them.
5. You will also need a comma after each text key's line. It is likely that if any mistake is to be made in a JSON file, it is missing this comma from time to time. This can entirely break a JSON file, so be particularly attentive to making sure you always put a comma after every change line!

index.php

It is up to the pack creator whether they want to use CSV or JSON for their Language Packs. CSV may be simpler to use for newcomers, is less prone to breaking, and modifying it with a spreadsheet app may be easier for some users. Feel free to experiment with both and discover which works best for you.


Properly Naming Your Localization JSON and Changing Multiple Languages

Once you have your JSON or CSV file ready, it's time to install it in the Localization folder of your Resource Pack.

Your localization file MUST begin with the prefix name of the language you are working with. This is how Terraria will properly detect and utilize your file. Aside from this prefix, you can name the files whatever you want. For example, en-US-Localization or en-US-ItemRenaming would both work perfectly fine for changing things in the English language.

Here is a list of all of the language prefixes:
English - en-US
German - de-DE
Italian - it-IT
French - fr-FR
Spanish - es-ES
Russian - ru-RU
Chinese - zh-Hans
Portuguese - pt-BR
Polish - pl-PL

If your pack changes multiple languages, you will need a file for every single language being changed.

One final note; you can divide up your changes into as many language files as you want. It may be easier for you to organize changes based on type (Item Name changes, Enemy name changes, Dialogue changes, etc), since having thousands of lines of text within a single file could become overwhelming. As long as you add the right language prefix into their name, feel free to organize them with as many files as you want. If you attempt to change the same text with two different files, it will not break anything, but the game will pick one of them and ignore the other, so it is best to avoid doing this, to avoid conflicts.



Advanced Language Packs Guide

For the most part, a simple text replacement will suffice for 99% of text strings in a Language Pack. One merely needs to change the specific text to what they want the game to say, and it will work properly.

However! There are several more advanced features, both for formatting purposes, and for some of the more complex text strings, which will be useful or required for more substantial overhauls. This section will detail those, so that you can understand and replace any text string in the game properly. Examples will be given in both JSON and CSV format. There is a ton of information to cover here - so to avoid a giant text wall for those that do not care for this level of detail, all of the information is contained in the nested spoiler below.

Newline - \n
There are a number of bits of text in the game, most commonly found in Item tooltips, that list multiple lines of stats, or the lines of text are lengthy enough that they need to be broken up. Using a newline, via the text "\n" will cause the text in question to be displayed on a second line of text. You can use as many newlines as needed to properly display the item's information.

For example, the following text string is for the Shark Bait item-
JSON
JSON:
    "SharkBait": "Summons a Shark Pup\n'Doo, doo, doo, doo, doo, doo'",
CSV
Code:
ItemTooltip.SharkBait,Summons a Shark Pup\n'Doo, doo, doo, doo, doo, doo'

In game, this would show up as:
Code:
Summons a Shark Pup
'Doo, doo, doo, doo, doo, doo'

Arguments - {}
There are times in Terraria's text where multiple text strings are combined into a single sentence. In the localization text, these are usually represented by a set of curly brackets {}. Depending on how you fill the text inside of the brackets, this will automatically add another section of text to your text string, in the exact place where the argument was.

There are two types of arguments that Terraria normally uses:

Dynamic/Variable Arguments
Terraria's code is setup to detect these arguments, and automatically access a variable section of text from elsewhere in the language files to insert into this spot. This allows you to have text lines such as:
Code:
"Leinfors was killed by Demon Eye"

It wouldn't be feasible to have a text line like this for every single enemy, to say nothing of the player's name. So instead, the arguments are designed to detect the proper variable and fill it in when it shows up in game. Here's the bad news: the code that supports dynamic arguments and what they can insert into various text strings is not controlled by localization files. You cannot add entirely new dynamic arguments to text that does not already support them. The good news is, you CAN still impact the location of arguments in a text string, and even remove it entirely, if you so desire.

Here is a more hands-on example:

JSON
JSON:
        "EnemiesDefeatedByAnnouncement": "{0} has defeated the {1}th {2}!",
CSV
Code:
Game.EnemiesDefeatedByAnnouncement,{0} has defeated the {1}th {2}!
The above string is displayed in multiplayer when another player defeats enough enemies for a banner drop. It would say, for instance:

"Leinfors has defeated the 450th Demon Eye!"

The numbers in this specific string correspond to:
{0} - The Player who did the defeating
{1} - The number count for the enemies killed (always a multiple of 50)
{2} - The name of the enemy defeated

You could, if you wanted to, re-arrange the arguments to say
JSON:
        "EnemiesDefeatedByAnnouncement": "The {1}th {2} was defeated by {0}, earning a banner!",

"The 450th Demon Eye was defeated by Leinfors, earning a banner!"

This still allows a measure of control over dynamic arguments, even if the content of the arguments themselves cannot be adjusted.

Pre-specified Arguments - {?}

The second type of argument commonly found in Terraria's text often references a SPECIFIC line of localization text, and does not change on the fly like Dynamic Arguments do. And the good news is, these can be added/adjusted through the localization files.

The format these take is the following:

JSON
JSON:
        "Steak": "{$CommonItemTooltip.MajorStats}\n'Well done with ketchup!'",
CSV
Code:
ItemTooltip.Steak,{$CommonItemTooltip.MajorStats}\n'Well done with ketchup!'

Inside of the curly brackets, you put a $ mark, followed by the Category name where your text is located, after which you place the key for the text in question. This will display the actual text from that text key once you are in-game.

Though you could use this to display virtually any text string, in Terraria, this is most often used for something we casually refer to as Common Tooltips, or Common Text. There are times when a significant number of related items all use the exact same line of text. Not only would it be inefficient to add this text to them all manually, but if there is ever any need to rewrite/typo correct one of these lines, it would be very error prone to track down all of them and correct them individually. When possible, we use an argument to access a pre-written string of language text, which will then be displayed automatically as part of the text display in-game. And changing this pre-written text will automatically change what is displayed on ALL of the items that use it.

Due to the nature of the Language Pack system, it is not possible to ADD new Common Tooltips/Text strings, but it is simple to change their text, and equally easy to add/remove them from other text strings.

So let's take our Steak example above. Steak, like all other Food items in the game, provides one of three Well Fed buffs to the player. Because there are dozens of Food items, we use an argument to display the same, shared tooltip for ALL of them. This string is found in the "CommonItemTooltip" category, and it looks like this:

JSON
JSON:
        "MajorStats": "Major improvements to all stats",
CSV
Code:
CommonItemTooltip.MajorStats,Major improvements to all stats

Combined with the Steak tooltip, the resulting text display would look like:

Code:
Major improvements to all stats
'Well done with ketchup!'

This allows you to change the regular tooltip text by adjusting the Steak item's unique tooltip, but also allows you to change the shared Buff description tooltip used in all Tier 3 Food Items independently.

Inputs - <>

These do not crop up very often in Terraria, but are found in a number of key UI and Item Tooltips. Input strings like this function very much like Dynamic Arguments, in that their inclusion will add something to the text that can change automatically depending on the conditions. In this case, Inputs always tell the player what button to use to accomplish something.

The reason these need to change like arguments, and don't just use pre-written text, is because users can change their keybinds, and Gamepad users also have special non-text icons which can appear in the Input as well, which does not typically happen with normal arguments.

Like with Dynamic Arguments, the player cannot change what information is conveyed to specific Input text, they are all pre-determined in Terraria's code. But you can still modify them in various ways.

An example of an Input in practice:
JSON
JSON:
        "RifleScope": "Increases view range for guns\n<right> to zoom out",
CSV
Code:
ItemTooltip.RifleScope,Increases view range for guns\n<right> to zoom out

In game, the <right> will be replaced by the text Right click, or whatever the player has changed their Right click keybind to. If that user is currently on Gamepad, it may also change to show the correct Gamepad button icon which is bound to Right click. Aside from the unique Keybind related mechanics, you can treat Inputs as mostly behaving the same as normal Dynamic Arguments.

Finding the Text Key you want in the Localization Files

We are including a downloadable CSV file which contains the entirety of Terraria's localized text, in all languages. This resource has all of the text sorted by categories, which each text key then showing the translation in every language in that row. This should allow you to search for the specific key you want, in every language, and easily find the text you want to change. Because of the tremendous amount of raw text and content within this document, it is strongly recommended you use a spreadsheet editor or dedicated CSV editing program for review. Notepad and other text editors are no longer sufficient for properly examining the contents.

You can download the Localization CSV file here.

Terraria has over ten thousand lines of localized text per language. If you are attempting to change a specific line of text, it can be like finding a needle in a haystack, so it's important to learn how the game's text is organized into various categories. Remember that every line of text is sorted under a category, and most of these categories are fairly clearly labeled. For instance, all enemy/NPC/critter names are found in the category "NPCName", while all Item names are within the aptly named category "ItemName". The easiest way to find the specific text you are looking for is to simply use Ctrl+F to do a text search for a word or words that are included in that text.

Using the text keys is not usually the best method of searching for text strings, because many of the text keys use internal naming that are never used visibly in-game. Familiar item names may use a text key that is vague or seemingly unrelated to the final name of a specific item, because the text keys are created before most content is finalized. Furthermore, especially in the UI and Legacy sections of the text, many of the text keys are rather vague or use numbers, which may not provide enough information to go off of. As such, it is most reliable to search for the specific text as explained above.

Worth an additional note is the "Legacy" categories. Earlier Terraria content used a different, less systematic approach to storing game text. These sections usually had simple non-descriptive numbers for their text keys, and often lumped together large quantities of text together in a way that was less organized than latter methods. This system ceased being used for most systems around 1.2, but the original text from that era is still included in these categories. As a result, there are certain types of localization which are found in two different locations. Most prominent of these is NPC Dialogue, which has hundreds of dialogue lines in the LegacyDialog category, but also can be found across a wide array of more modern NPC Dialogue categories such as "MerchantSpecialText" or "AnglerChatter". There is also a substantial quantity of UI/Menu text in the Legacy categories, which is probably the most difficult section to work. Despite this, experimentation with various text strings should reveal what text keys do what, and searching for exact text continues to be a viable method of locating the required text key.


Limitations of Language Packs
Language Packs offer a large amount of control over the game's content with minimal code knowledge or use of modding tools, but they do have some notable limitations.

Language Options
It is important to note that Language Packs do NOT allow the user to add additional languages to the Language Selection menu. They can only be used to REPLACE one or more languages with a different option. However, given the ease of activating/deactivating Language Packs, this could effectively expand the language selection to as many choices as people are willing to create.

Special Characters and Different Alphabets
Localization files are not capable of adding text characters or alphabets which are not inherently supported by Terraria's code. Attempting to use special or unsupported characters is likely to replace them with a placeholder generic character, or potentially cause errors (though in general, it should use the placeholder character).

Pre-determined Arguments
The localization files only have the ability to change the words, and to a limited degree, the structure, of in-game text. Any text changes which require special code references to other text that is not already supported will not be able to work. Mostly, this type of code input takes the form of something called Arguments. Arguments are explained in the Advanced Language Packs section, but the key limitation is that you won't be able to add new dynamic arguments that aren't already supported by the game's code. You will, however, be able to re-arrange their sentence order, or even remove arguments if need be.

Special Language Rules and Syntax
It can be difficult to account for specific linguistic rules regarding word modification. This is going to be most common with noun gender, which does not exist in English, but is present in most other languages. The short explanation here is that because English does not inherently use gender for inanimate objects/nouns, the game's text system was not programmed to account for this. As a result, there is limited support for the ability to detect and automatically adjust pronouns/adjectives to account for the gender of the noun it is referring to. Some of our other languages circumvent this in some ways, for instance, weapon prefixes put the prefix in a parenthesis at the end of the weapon. So instead of a "Legendary Gold Broadsword", the game will show "Gold Broadsword (Legendary)". This is done to account for the fact that some languages will have a different version of "Legendary" depending on the linguistic gender of the word in question. This is simply not something Terraria can account for, and users will not likely be able to restructure the language systems to force it to do so, as this goes far beyond the confines of what a JSON file is capable of achieving in Terraria's code. The same limitation will apply to most other complex linguistic rules which require dynamic adjustments between different words being combined by the game automatically.



So, we have come to the end of our journey through the wonderful world of Terraria’s new Steam Workshop support for Maps and Resource Packs. We hope that – whatever your specific need – you found the information and guidance that you needed to be able to download, play, and even create the most amazing user generated content for Terraria. If you find anything unclear or have any suggestions for how we could improve this guide, please let us know!



We are eagerly anticipating what we will see you come up with – and we will be checking a lot of these out ourselves. The very best might even get tagged with “Developer’s Choice” – so get out there and get building, Terrarians!
 

Attachments

  • Basic Testing Pack.zip
    39.2 KB · Views: 13,187
  • pack.json
    189 bytes · Views: 4,461
  • Logo.png
    Logo.png
    11.9 KB · Views: 2,186
  • Achievement_Borders.png
    Achievement_Borders.png
    541 bytes · Views: 1,912
  • en-US.json
    262 bytes · Views: 2,496
  • Sprite Information Spreadsheet.tsv
    531.7 KB · Views: 2,165
  • All Localizations.csv
    6.5 MB · Views: 4,777
  • Sprite Templates.zip
    63.3 KB · Views: 1,170
Last edited:
Question, are music packs compressed or will the file size still be utterly gigantic if you use wav files? I need to know so that it doesn't take a super long time to download if I make one, as if I'm basing one on my old wavebank then they will all still be wav files which are notoriously large compared to mp3 files.
 
They are not compressed that I'm aware of.

You CAN run, and manually download, zipped resource packs. But the Workshop process does not appear to compress them automatically.
 
They are not compressed that I'm aware of.

You CAN run, and manually download, zipped resource packs. But the Workshop process does not appear to compress them automatically.
Alright, I'll probably make a forum thread for it instead of putting it on the steam workshop then. I don't want to upload a folder that's over a gigabyte in size :D
 
I dont see the Myresourcepacks/content/music folders for making a music pack. i tried making the folder myself but i cant select the folders in game. any advice?
 
The folder should be called "ResourcePacks", not "MyResourcePacks"

That's probably why its not showing up. Even if you don't make a music folder, a properly formatted (empty) pack should show up in your Resource Packs menu in-game. Once that's working, you can add in the Music folder.
 
The folder should be called "ResourcePacks", not "MyResourcePacks"

That's probably why its not showing up. Even if you don't make a music folder, a properly formatted (empty) pack should show up in your Resource Packs menu in-game. Once that's working, you can add in the Music folder.
In the music pack instructions it says to navigate to MyResourcePacks/Content/Music. before that point theres nothing else in it. i will however delete the folders i created and try again
 
You can name the folder anything you want, sorry, if I was unclear about that.

So it should be ResourcePacks/MyResourcepack(Or whatever you named it)/Content/Music
 
Wait are you not able to edit the language text for weapon prefixes? I can't find any of them in the key provided.
 
You should be able to. Are you doing English or a different language? Prefixes have some unique behavior in non-English languages.
 
Hey guys.
Trying to make a language pack here.
Where can I find the internal names for each category (ItemTooltip, ItemName...) ?
Also figuring out the key for each item would be helpful. But I'm mostly struggling with the categories.
If anyone could help me out that'd be greatly appreciated. Thanks! :happy:
 
Hey guys.
Trying to make a language pack here.
Where can I find the internal names for each category (ItemTooltip, ItemName...) ?
Also figuring out the key for each item would be helpful. But I'm mostly struggling with the categories.
If anyone could help me out that'd be greatly appreciated. Thanks! :happy:
I haven’t looked but it might or might not be in the en-US file in the post
 
Back
Top Bottom