SDV PC Modding: Configuring Custom Critters

  1. Before We Begin…
  2. Downloading and Installing Custom Critters
  3. Downloading and Installing Critters
  4. Customizing Your New Critters
  5. “SpriteData”
  6. “Animations”
  7. “SpawnConditions”
  8. “SpawnLocations”
  9. “SpawnAttempts”
  10. “Behavior”
  11. “Light”

Custom Critters by Spacechase0 is a framework mod that allows others to create content packs that add new little aesthetic critters to your SDV world. Some of the available packs on Nexus include fairies, fireflies, bees, and more. And, yes, it still works in 1.6!

Before We Begin...

If you are making changes to an existing critter, you must receive proper permissions from the original author and give them credit before uploading anywhere for others to use.

Downloading and Installing Custom Critters

Custom Critters itself will be installed just like any other SDV mod:

  • Download the file using the manual option on Nexus and unzip (extract) the archive (zipped folder).
  • Copy/cut the Custom Critters mod folder and paste it into your SDV game mod folder. (If you haven’t already, make yourself a desktop shortcut to this folder. It will save you so much time in the future.)

Conversely, you could also use a mod manager like Stardrop, Vortex, or Mod Organizer 2 to download Custom Critters.

Downloading Custom Critters and a content pack.

Downloading and Installing Critters

Critter content packs for Custom Critters are installed differently than the framework. We are essentially downloading files to add to the framework mod itself. So, once you’ve found the critters you want, download them manually whether you have a mod manager or not.

  • To easily find what critters are available, navigate to the Custom Critters Nexus page and open the Requirements menu. Mods listed under Mods requiring this file are critters.
  • Download the critter and unzip (extract) the folder.
  • Copy/cut the critter folder. (This folder will contain the critter.json and critter.png).
  • Paste it into CustomCritters > Critters folder. If there isn’t a Critters folder, create one. Every critter you grab will be put in here, with it’s own folder.
Installing Critters.

Customizing Your New Critters

Each critter will come already set up to the mod author’s vision for their creation, but that doesn’t mean you can’t change things to your liking. Customizing each critter is done through the critter.json file found inside each critters folder.

Open these (and any other .json files you come across) through a text editor, like Notepad or Notepad++. I highly recommend the latter and it is what you’ll see me using. It has a ton of features and it’s free. Once installed, open Notepad++ up and choose Language > J > JSON. This ensures our reader is using the right format, and will catch some mistakes if we make them.

TIP: If you’re using Notepad++ for the first time, right click the critter.json and choose Open With > Notepad++, or Open With > Choose Another App and navigate to wherever you installed Notepad++. Choosing Always will set this as the default app to open that particular file type, so from now on, a simple double click will open that format in Notepad++.

If you’re not using Notepad++ for the first time, just open the critter.json in your preferred text editor.

Through the critter.json we can change the spawn rates, spawn locations, add light effects, and more. It is merely a matter of understanding the fields and what goes into those fields.

“SpriteData”

Variations“: How many different variations of animations are present in the .png file.

“FrameWidth”: How wide the animation frame is.

“FrameHeight”: How tall the animation frame is.

“Scale”: Size at which the critter will appear in game. Default is set to 4. Note: Changing the scale can affect the placement of the light source if you elect to use one.

“Animations”

“Frame”: Number of the animation frame. Numerical value range starts at 0.

“Duration”: How long that frame will last. I believe this is in milliseconds or something similar. For slower moving animations, expect these numbers to be in the hundreds.

There will be a “Frame” and “Duration” entry for each animation frame.

“SpawnConditions”

This section covers when and where your critters will spawn.

“Not”: Default is “false” and sets the following fields to be when the critter does spawn.. Setting this to “true” basically turns off all conditions and the critter will spawn on all maps, all the time.

“Seasons”: What season the critter should spawn in. Format should match the image. For fewer seasons, delete what you don’t want, but preserve the format, i.e. [ “spring, “summer” ].

“Locations”: Outdoor locations where your critters will spawn. Follows basically the same format as “Seasons” ( [ “”, “”, “” ] ). You can add in any outdoor vanilla locations or modded ones.

TIP: To add a modded location, open the mod’s folder and locate the content.json, either in the main mod folder or under the mod’s Content Patcher folder (folder name will begin with [CP]) or you can find the custom areas listed in the Farm Type Manager ([FTM]) folder’s content.json as well. Copy the location’s “Name” or “MapName” and insert into the “Locations” entry, preserving the original format.

Example of [CP] content.json from Atelier Wildflour Secret Forage Locations.

Example from [FTM] content.json from Atelier Wildflour Secret Forage Locations.

Example of custom location entries added from Stardew Valley Reimagined 3.

“MinTimeofDay” and “MaxTimeofDay”: The time of day you want spawns to start and stop. This should be a value between 600 and 2600 (6 am to 2 am).

“ChancePerTile”: Chance of spawning on each tile. Value of 1.0 – 15000. Most critters I’ve come across have this set at 1.

“RequireDarkOut” and “AllowRain”: True or false values; does the critter require the dark or is it allowed to spawn in the rain.

“ChildrenCombine” and “Children”: I was unable to locate a critter that uses this for anything and am unsure of what it does. I will update this post if I figure out it’s function. If you happen to know, leave me a comment!

“SpawnLocations”

“LocationType”: We can see by looking at Eemie’s Bees that it is possible to spawn the critters from an object. And by looking at the Github, we can see there are 3 choices here, “random”, “terrainfeature”, and “object”. Most critters use “random” and through a lot of testing I can tell you that even if you choose an “object” or “terrainfeature” spawn, there will still be some random spawns as well.

To learn more about what constitutes an “object” or a “terrainfeature” I suggest starting here and following the instructions to decompile the game’s code. Once decompiled, you will see sections for each. There are also some SMAPI console commands that may help you find an object name.

Github page on the left. Left pane view in ILSpy once code is decompiled, on the right.

“Not”: Default is “false” and sets the fields in “SpawnConditions” to be when the critter does spawn. Setting this to “true” basically turns the “SpawnConditions” fields into when the critter does not spawn.

“Chance”: Chance of spawn in the location. Numerical value starting at 0. If you choose to spawn critters as anything other than “random”, this number will need to be set high (100) to reduce the number of random spawns that will occur anyway.

“Variable”: Where the critter animation variations are coming from. “ParentSheetIndex” and “name” seem to be the choices here. Honestly, other than this entry, I cannot tell the difference between the 2 just by looking at the .png files associated. I have used both and did not have to do anything special to accommodate either selection.

“RequireNotNull” and “Is”: Defaults are set to “false” and “null”. I haven’t seen any critters that change these values.

“ValueEquals”: can be “0” if you have chosen “random” in “LocationType”. If you’ve chosen “object” or “terrainfeature” as a “LocationType”, this is where you would put the object or terrain feature name. (See the image of Eemie’s Bees‘ critter.json above, under “SpawnLocations”, for an example.)

“ChildrenCombine” and “Children”: I was unable to locate a critter that uses this for anything and am unsure of what it does. I will update this post if I figure out it’s function. If you happen to know, leave me a comment!

“SpawnAttempts”

“SpawnAttempts”: How many attempts to spawn will be made. This number seems to make the most difference in the number of critters you see in game.

TIP: Setting spawns for the bigger maps in the game may result in the smaller maps being overrun by critters! To avoid this, create a copy of the critter’s folder and name it slightly different. Open the critter.json and change the “TIP: Setting spawns for the bigger maps in the game may result in the smaller maps being overrun by critters! To avoid this, create a copy of the critter’s folder and name it slightly different. Open the critter.json and change the “Id” slightly as well. You now have a critter for small maps and a critter for larger maps.

“Behavior”

“Type”: Random movement, a set patrol, or idle: “random”, “patrol”, or “idle”. If idle is given, the patrol points do not need to be filled in.

“Speed”: Speed at which your critter will move, 0 – 10. This number can be a decimal value.

“PatrolPoints”: Here you can set the points for the movement behavior of the critter over the game map.

  • “Type” : “startoffset” seems to be default, but according to the GitHub, there are several choices.
  • “X” : Point on horizontal plane; negative number will move to the left, positive ones will move to the right.
  • “Y” : Point on vertical plane; Negative numbers will move downward, positive numbers will move upward.

You will see several entries for “Type” and “X” and “Y” positions. These are the points at which the critters will move across the screen while performing their animations and how these movements are calculated.

“PatrolPointDelay”: Delay between movements. Eemie’s Bees uses this to create a more floaty movement in the critters. This will basically add a delay between the points, which means the critter won’t be changing direction as frequently.

“PatrolPointsDelayAddRandom”: Random range of time added or subtracted from the previous number “PatrolPointDelay” to create a range of delays for variety.

“Light”

Most critters do not use a light source but adding one is very easy.

We simply need to add in a comma after the curly bracket that follows “PatrolPointDelayAddRandom” and paste in:

"Light": {
"VanillaLightId": 3,
"Radius": 0.5,
"Color": { "R": 255, "G": 255, "B": 255 }
}

Make sure there is still one curly bracket after what you pasted. If any of the curly brackets or commas are incorrect, the critter will fail to load. SMAPI will usually throw you a red warning and even tell you which critter is causing problems. This should be your cue to revisit the critter.json, checking for mistakes.

The new entry should look like this:

“VanillaLightId”: Default light is 3. There are several light sources listed on the Github for use in Custom Critters. I have also tried the other available light sources and can confirm they work in the game.

Light Types listed on the GitHub:

  • 1 = Lantern
  • 2 = windowLight
  • 4 = sconceLight
  • 5 = cauldronLight
  • 6 = IndoorwindowLight

Other SDV Light Types:

  • -85736 = playerLantern
  • 7 = projectorLight
  • 9 = townWinterTreeLight
  • 1 = MapLight
  • 8 = fishTankLight
  • 10 = pinpointLight

Some examples of what the different lights will look like.

“Radius” – The radius of the light, how far out it shines from the critter. This is a numerical value and can be a decimal.

“Color” : The color of the light. Here you will need to have a numerical value for your color. You can easily find this by using an RGB color picker. Once you find the color you like, simply enter the values into the “R”, “G”, and “B” fields. Unfortunately, the color of the light can be finicky and may only be noticeable when the critter is passing over a dark surface, depending on the color you choose. It is also worthy to note that if you use ReShade it will affect the color of the light and may even render it useless.

Choosing a color and entering it into the critter.json.

And that’s it! You now have a basic understanding of how to customize your critters. Have anything to add? Leave me comment below, I’d love to hear from you. Thanks for stopping by and happy gaming!


Discover more from PixelHag – Gaming & Modding

Subscribe to get the latest posts to your email.