Jump to content

Search the Community

Showing results for tags 'guide'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Oxygen Not Included
    • Oxygen Not Included FAQ
    • [Oxygen Not Included] - Developer log
    • [Oxygen Not Included] - General Discussion
    • [Oxygen Not Included] - Bug Tracker
    • [Oxygen Not Included: Spaced Out!] - Bug Tracker
    • [Oxygen Not Included] - Mods and Tools
    • [Oxygen Not Included] - Suggestions and Feedback
    • [Oxygen Not Included] Art, Music & Lore
    • Community Challenges
    • [Oxygen Not Included] - Latest Content Update
    • [Oxygen Not Included] - Latest Animated Short
    • Oxygen Not Included DLC Alpha
  • Don't Starve Together
    • Don't Starve Together FAQ
    • [Don't Starve Together] Developer log
    • [Don't Starve Together] General Discussion
    • [Don't Starve Together] Beta Branch
    • [Don't Starve Together] PlayStation
    • [Don't Starve Together] Xbox One
    • [Don't Starve Together] Nintendo Switch
    • [Don't Starve Together] Bug Tracker
    • [Don't Starve Together] Trading
    • [Don't Starve Together] Server Bulletin
    • [Don't Starve Together] Dedicated Server Discussion
    • [Don't Starve Together] Mods and Tools
    • [Don't Starve Together] Tales of Life and Death
    • [DS + DST] Art, Music and Lore
    • [Don't Starve Together] Suggestions and Feedback
    • [Don't Starve Together] The Forge
    • [Don't Starve Together] The Gorge
    • [Archived Bugs]
  • Don't Starve
    • Don't Starve FAQ
    • [Don't Starve: Pocket Edition] iOS / Android
    • [Don't Starve] General Discussion
    • [Don't Starve] Mods and tools
    • [Don't Starve] Art, Music & Lore
    • [Don't Starve] Suggestions and Feedback
    • [Don't Starve] Videos
    • [Don't Starve] Bug Tracker
    • [Don't Starve] Trading
    • [Don't Starve] Testing Discussion (archive)
  • Griftlands
    • [Griftlands] - General Discussion
    • [Griftlands] - Suggestions and Feedback
    • [Griftlands] - Mods and Tools
    • [Griftlands] - Localization
    • [Griftlands] - Bug Tracker
    • [Griftlands] - Developer log
  • Hot Lava
    • [Hot Lava] - General Discussion
    • [Hot Lava] - Suggestions and Feedback
    • [Hot Lava] - Bug Tracker
    • [Hot Lava] - Strats and Records
    • [Hot Lava] - Developer Log
    • Hot Lava Latest Update
  • Klei Entertainment Games
    • Eets Munchies
    • [Invisible, Inc.] General Discussion and Strategies
    • Mark of the Ninja
    • Shank
  • Other Stuff
    • Other Klei Services

Categories

  • Don't Starve
    • Custom Characters
    • Game Modifications
    • Language Packs
    • Modding Tools, Tutorials & Examples
    • Custom Maps

Categories

  • Oxygen Not Included
  • Oxygen Not Included: Spaced Out!
  • Griftlands
  • Don't Starve
  • Don't Starve Together
  • Don't Starve Together: Beta Branch
  • [Don't Starve Together] Nintendo Switch
  • [Don't Starve Together] PlayStation
  • Don't Starve Together: Return of Them
  • Don't Starve Together: The Gorge
  • Don't Starve Together: The Forge
  • Don't Starve Together: The Forge (Archive)
  • [Don't Starve Together] Xbox One
  • Don't Starve: Shipwrecked [archive]
  • [Don't Starve Together] PS4 (archive)
  • [iOS] Don't Starve: Shipwrecked
  • Don't Starve: Hamlet [ARCHIVE]
  • Don't Starve: Shipwrecked [ARCHIVE]
  • Don't Starve: Hamlet Early Access [archive]
  • Don't Starve: Hamlet Closed Beta (ARCHIVE)

Categories

  • Oxygen Not Included
  • Oxygen Not Included: Spaced Out!
  • Griftlands
  • Hot Lava
  • Don't Starve Together
  • [Nintendo Switch] Don't Starve Together
  • [PlayStation] Don't Starve Together
  • [Xbox One] Don't Starve Together
  • Don't Starve
  • Don't Starve: Shipwrecked

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Biography


Location


Interests


Occupation


Favorite Game


Modder


Chester Kickstarter


Chester Kickstarter


Chester Kickstarter


Chester Kickstarter


Chester Kickstarter


Klei Featured Artist


Early Supporter


Early Supporter


Don't Starve


Don't Starve Together


Oxygen Not Included

  1. Hi everyone, a few years back I had written a tutorial on creating custom skins for modded characters. Today that tutorial becomes deprecated as the Revamped Modded Skins API created by me and some others makes its release. This API will make it easy to add both skins for characters and items/structures. I’m very happy to present this new API to you all and I hope you enjoy it too, as it comes with custom art for new rarities, frames, and even a custom skin unlockable system for modded skins. This will be a multi-tutorial post, so be sure to check out the table of contents and find what you’re looking for! Thank you @Fidooop, @Cunning fox, and @Dudedude for helping to develop the API and having me hop on board. Here is the API related to the topic! Modded Skins [API] Table of Contents: Creating Custom Skins for Modded Characters Creating Custom Skins for Modded Items Miscellaneous Adding an event icon to your custom skin Making a Modded Skin Lockable Setting Custom Offset/Scale for Clean Sweeper effects Compatibility with Mods in Menu Resources Some quick important notes: All of the skin id’s(aka the names of the skins in the code) you choose for your skin should start with “ms_”. For example, an appropriately named skin would be “ms_whimsy_victorian”. (The default ‘_none’ skin is excluded from this rule, however) This tutorial will assume you have your skin assets ready to go if you’ve created a modded item/character before. If not and you are completely unaware on how to create items and character builds in the first place, it is likely you’re not ready for this tutorial yet. I’ll be using my friends character mod as an example throughout the tutorial :), @-Variant, love u bb. Creating Custom Skins For Modded Characters Creating Custom Skins For Modded Items/Structures Miscellaneous Resources And also! Let me know when you've got a mod compatible with the API! So that I may add it to the collection of API compatible mods :>
  2. 1. Download and install SteamCMD: Click here to download 2. Visit the Klei Accounts site and log in to your account. (Please note, Dedicated Servers are not supported for the Xbox and PlayStation versions of the game.) 3. On the accounts page, visit the “GAMES” tab, then scroll down to Don’t Starve Together and click on the “Game Servers” button. 4. If you don’t have any server yet, please click the “ADD NEW SERVER” button. If you have a valid server, click the green “CONFIGURE” button. Expired servers are colored in red and should be deleted. 5. In the “Configure Server” page you will find a form with some options that you can edit to customize your server. Once you are ready, click the “Download Settings” button. Download the Zip archive, extract the content, and place the folder “MyDediServer” inside \\Documents\Klei\DoNotStarveTogether\. 6. Copy and save the following text to: \\Documents\Klei\StartDSTServers.bat Please Note: You will need to fix the file pathing if the steamcmd or the game’s folders were not installed in the default location. 7. Checklist of all the files you should have now: 8. Double-click StartDSTServers.bat to start your dedicated servers!
  3. Hey! If you've ever needed to send information from one shard to another, we're pretty sure we figured out how. I partially wanted to write all this down since it doesn't look like anyone has had an in-depth discussion on handling inter-shard communication. @AlbertoRomanach (my brother) and I were recently working on a mod that needed this ability and we finally sat down and figured it out. There's a link at the bottom. As a little teaser, it is possible to send commands from one shard to another... This guide could help if you're making a mod that needs to deal with overworld and cave shards differently. First of all, Klei is very nice with their mod utils, and none of this would be possible without the AddShardModRPCHandler function. I'm pretty sure we also saw an example of this function used in GemCore under gemscripts/tools/shardrpc.lua in case anyone wants to take a look, so say thank you to @zarklord_klei! From A Mod Here is a very simple implementation of an RPC that allows you to execute a Lua string on any target shard: AddShardModRPCHandler(modname, "ShardInjection", function(shardId, namespace, code, injection) ------THIS BODY CAN BE CUSTOMIZED------ -- Only run if the current shard is different from the shard that called the RPC. The *calling* shard's ID is held in shardId. if GLOBAL.TheShard:GetShardId() ~= tostring(shardId) then GLOBAL.ExecuteConsoleCommand(injection) end ------END------ end) When you are using caves (or a dedicated server with caves), when one shard uses this RPC, the opposite shard will detect it and execute the contents of the RPC (which shown above is just a call to ExecuteConsoleCommand). If you remove the "GLOBAL.TheShard:GetShardId() ~= tostring(shardId)" check, then the RPC will run on ALL SHARDS. If you're somehow running a server with more than two shards, then you'll likely have to be a little more specific with the shardId check depending on what you're doing. The three parameters "shardId, namespace, and code" we found in GemCore's shardrpc.lua, but we never used them. But we added a custom parameter "injection" which is where the Lua string is passed in. You'll see its usage a little lower. Here is an example of its use in a mod file: function testFunction(string) --In mods, "modname" will automatically translate to the name of the directory the mod is in. SendModRPCToShard(GetShardModRPC(modname, "ShardInjection"), nil, nil, nil, "c_announce(\""..string.."\")") end For us normal cave users, the ShardInjection RPC will simply execute the string "c_announce(\""string"\")" from the opposite shard. If you're using more than two shards and you only want to target a single shard, I imagine you could theoretically change the first "nil" argument in the GetShardModRPC to be a more specific shardId, but I've never used more than two shards before, so you'll have to mess around with that. The Lua string can be literally anything you want, as long as the string can be executed from the console. Remember, this RPC can be customized to do something other than code execution. You can add parameters as you please. If you simply need to retrieve or send info from other shards or do anything else, you can do that. In fact, data retrieval was what we mainly used the AddShardModRPCHandler for in the first place. From the Terminal ~~~This next section talks about sending commands to another shard from the terminal, but a mod with this RPC must be enabled first.~~~ Now, for an even more interesting use of this, admins on a dedicated server can technically use this RPC from the console if they know what to do. They can execute a command on another shard. Clients without admin privileges, however, are not able to use the following command since they don't have access to the remote terminal. If they did, this would be a security issue since any random client would be able to hop onto a server with this RPC and execute Lua code injections. Fortunately, they can't! Unless you deliberately set that up, this should not be a problem. Using the same RPC as before, this command can be used from the console (remotely) by admins: SendModRPCToShard(GetShardModRPC("workshop-########", "ShardInjection"), nil, nil, nil, "Lua code here") "workshop-########" must be the mod that has the ShardInjection RPC defined in it. If you're testing locally, then you can just change "workshop-########" to be the mod's directory name like "folderNameHere" (it must be in quotes). Also, you could theoretically set up a new console command from inside a mod that simply accepts the Lua string and executes this line internally. It would look very similar to the RPC I showed earlier, but instead of "c_announce(\""string"\")" you could just put the variable "string". You'd also have to make the function GLOBAL to make it accessible from the console. Here's a console command that could go in a mod file: function GLOBAL.testFunctionTwo(string) SendModRPCToShard(GetShardModRPC(modname, "ShardInjection"), nil, nil, nil, string) end You should be able to call it from the console like this: testFunctionTwo("AllPlayers[2].components.health:SetPercent(1)"). If called from the overworld, this command would refill the health of player 2 from the perspective of the cave shard. This also works in the other direction. For example, if there are 4 players, 2 in the overworld, and 2 in the caves, the command will refill whoever is in the AllPlayers[2] spot in the caves. However, this command will not work if you try to target players who are in the same shard as you. Our mod shows a list of every player in the game (including caves) on the screen based on the server's version of AllPlayers. Using the same example, player 2 in caves would appear as player 4 on our list. We have a few console commands that are capable of detecting whether player 4 is in the caves. If the target player is in the caves, we have a function that both converts the number 4 into the proper player number and sends the command to the caves. But if player 4 is NOT in the caves, it can ALSO execute the console command on the same shard. You can see how my brother and I dealt with this toward the bottom of our modmain. You can also read more about it in the mod comments and in the readme for the mod. In Conclusion: Communication between shards doesn't have to be so much of a nightmare. Once you have it down, it's pretty easy to replicate and tailor to your needs. Like I said earlier, it's possible this could help with mods that need to deal with overworld and cave shards differently. Regardless, as I also mentioned earlier, Klei is very nice. I admire Don't Starve Together not only for its gameplay, but also for its amazing programming and team. I've learned a lot from its code, and I hope I can help people with what I've learned before I forget all of this ! Also, if anyone needs help setting up dedicated servers on Linux, I just recently figured that out (at least on ubuntu) so ask me about that if you need to. Leave a comment in case any of you need more info! If you think I should discuss anything else in here, please let me know and I can add it so people can see it. You can see the mod with which we used this method of communication right here. It was used in order to collect the list of players from both the overworld AND the caves and print them in order based on the server's version of AllPlayers: Sorry! I realized two seconds after I posted this that there was a tutorials and guides subforum
  4. Hey there, today we've released the starting pages of a new Modding Guide to the public. Currently it's a basic 'how to get started' tutorial, but as the time goes on we'll add more examples and advanced concepts. Note that the has been updated to the mergedown changes. We no longer provide pre-mergedown information, and we suggest not supporting legacy vanilla for new mods and just waiting for the mergedown to complete in a few weeks. Link to the Guide: https://github.com/Cairath/Oxygen-Not-Included-Modding/wiki The guide is currently maintained by @CynicalBusiness and myself. Feedback is appreciated.
  5. This guide will help you set up a dedicated server on Mac OS X. The commands in this guide must be entered in the Terminal.app. The character ~ at the beginning of directories and filenames is shorthand for $HOME which is a variable that refers to your home directory, for example, /Users/alice/. 1. Install steamcmd. 2. Configure and download the server settings 3. Create the script that will run the servers. 4. Give the script executable permissions 5. Run the script to start the dedicated servers:
  6. This guide will help you set up a dedicated server on an Ubuntu machine (32 or 64-bit) 1. Install dependencies: 2. Install steamcmd. 3. Configure and download the server settings 4. Create the script that will run the servers. 5. Give the script executable permissions 6. Run the script to start the dedicated servers:
  7. I made a guide on Steam on how to reskin mobs in 2019 from making to publishing the mod. Back when I made it, I had just learned about how to do it by searching through the few mods that actually did it among other various resources. There wasn't as many mods as I'd like that reskinned mobs and I couldn't find a guide that explained the ins and outs of this process for somebody that did not know much of anything regarding modding this game. I've seen many people utilize the comments there and have even seen people reference it on the forums. I've decided to look back at what I've written and do some extensive rewriting and port it to the forums, so I hope I've properly documented the process this time. My goal is to make sure this is easily understandable without any prior knowledge, so please let me know if there is anything I can do to improve this guide. Don't Starve Together Reskinning Creatures Guide - YouTube Please check out this YouTube video I made that walks you through the process! Introduction File Types Tools Overview Methods Overview Finding the Files Reskinning Method 1: Spriterless Reskinning Method 2: Spriter Making the Mod / Implementation Uploading to the Workshop End Thank you for reading the guide and I hope it was helpful. Again, if you had any difficulties or want clarification, I can take comments here. If you end up making a mod where my guide was useful, I would appreciate spreading the word about this so others that want to reskin are able to.
  8. Hello there! This is going to be my first ever tutorial, so apologies if anything is unclear (though let me know if it is and I'll try to update this/help out!) or, in worst case, flat out incorrect. Let's jump in! EDIT: Just wanted to clarify, this guide is only for extracting the sprites. It does not cover the process of recompiling the assets back into the game. I have linked the Steam post guide for that down further into the guide. Sorry, I just don't know how to do that personally and I apologize if anyone feels this guide is useless because of that lack of information. So I've noticed a lot of people lately (including myself) struggling to do this, for one of 2 reasons (possibly more): First, Krane's intended command prompt usage simply doesn't work, no matter how you do it Second, the desired graphics/animations don't come with a corresponding anim.bin file I have solutions to both of these problems (though maybe not perfect ones), so hopefully anyone else looking to do this and running into the same issues will be able to accomplish what they want to do. Alright, let's get started! You'll need: -KTools -TEXTool -A program that can open/extract .zip archive files -An image editing program that supports transparency (this is really important) 1. First, you want to make sure you have KTools. Without this, you won't be able to extract any graphics or animations. The downloaded folder for KTools can be saved anywhere (though I recommend renaming the folder to simply "ktools". E.g. "ktools-4.4.4" changes to just "ktools") to avoid any errors. Also be sure you've downloaded the Microsoft Redistributable Package linked on KTools' download page to avoid errors as well. 2. Now you'll need TEXTool, which comes with Handsome Matt's set of tools. With this, you can extract the .tex files themselves in their "raw" state, just in case KTools doesn't extract the sprites correctly and you have to take the sprites from the texture atlas itself (more on that later). 3. Time to look for the sprites/animations you want to extract from the game. This works for both Don't Starve and Don't Starve Together, so it will work the same for whichever one you need. In this example, we'll want to go to [disk drive that has your Steam folder in it]\Steam\steamapps\common\Don't Starve Together\data\anim. So in my case, it would be D:\Games\Steam\steamapps\common\Don't Starve Together\data\anim, though it may be under C:\Program Files\Steam\steamapps\common\Don't Starve Together\data\anim for most people. 4. So, say you want to extract Wolfgang's sprites/animations. You would go to Wolfgang's .zip file (simply called wolfgang) located under the "anim" folder we just navigated to. Open that or extract the contents using whatever archive-opening program you have (I have WinRAR for example), You'll notice that it contains an "atlas-0.tex" and a "build.bin" file. Extract these directly into your ktools folder. ...But the .zip file doesn't have an "anim.bin" file! We need that in order for Krane to be able to extract the sprites and animations for us, so what do we do? Well, I discovered a solution to this through trial and error. 5. Now, we'll go to the player_idles.zip file, extract the anim.bin from that and place it, again, directly into the ktools folder along with your atlas-0.tex and build.bin files we just extracted from Wolfgang's archive. 6. Next thing we want to do will ensure that we can actually use Krane in the first place, because, as some of us know, trying to run it through command prompt simply doesn't work. So, we'll want to open our text editor (I use Notepad++, but plain old Notepad should work just fine) and create a new file. It can be named whatever you want (I named mine "slurtle" because I started testing this with Slurtle's files), but make sure that this exact code is pasted into the very first line of the text file: krane anim.bin build.bin output_dir And that's it! All we have to do now is save that text file as a .bat file in the ktools folder, again. This is a Windows Batch File which will run Krane as if it were an executable file. What that means is, we can simply double-click this .bat file and it will run Krane without having to go through command prompt! How exciting! 7. Now that all that's done, our folder structure should look exactly like this: ...with "slurtle" being our .bat file. Now, double-click on your new .bat file, and watch the magic happen! Look! It's not closing immediately like it would if you had simply tried opening Krane itself. Now, look what happened... 8. That "output_dir" folder has all our newly extracted assets in it! Let's look inside... Hooray! If you made it to this point, you should now have your sprites in proper animation order! 9. ...But hold up. We looked in Wolfgang's "torso" and "torso_pelvis" folders, and something's not right here... They look kinda blurry and stretched, don't they? And they're the only sprites like that! Why did that happen? Well, to tell you the truth, I don't know why this happens. It just does with certain assets, even for entities that DO have all three matching anim, atlas, and build files. How do we fix it then? Well, I don't know of a "proper" fix yet, but I do know a workaround. It will involve TEXTool that I had you download earlier. 10. Go to where you downloaded and saved your folder for Handsome Matt's tools. You should see TEXTool and TEXCreator in there. TEXTool is what we want. Now, once you open TEXTool, click the little folder icon to browse to where you saved your atlas-0.tex file. We will load this into TEXTool. So, once we load Wolfgang's .tex file, it will look like this: It looks like a total nightmare, doesn't it? Well, this is how the game stores its graphical assets. Good thing Krane automatically cuts these sprites out for us. So, we won't actually be doing much here aside from clicking the little floppy disk icon to save this texture atlas to wherever we want, as a .png file. Now comes the slightly tedious part. 11. Now, if you don't already have one, acquire that image editing program I mentioned. I personally recommend Paint.NET as it is free, supports transparency, and it suits all our purposes here just fine. Just please make sure you don't use MS Paint. So, let's open our new atlas-0.png file in our image editing program. As you can see, the atlas is quite a large image. This is all the sprites for Wolfgang at their proper resolution. Now, here comes the tedious part (though it's not that hard): If using Paint.NET, you'll first want to click the paint bucket tool. Why? It'll just make our lives a bit easier when we go to pick the sprites we need out of the atlas. We aren't keeping this atlas anyway (unless you intend to change the actual sprites and put them back into the game, but that's not what this guide is for). Now, pick a gaudy color that sticks out from the sprites but won't burn your eyes. We'll pick a nice shade of pink for this. Now, the left and right arrows point to the paint bucket tool and color palettes, obviously. But what's this middle part? That would be the Flood Mode, Fill Type, Tolerance, and Anti-Aliasing toggle. What does all this mean? I'll tell you! First, make sure Flood Mode looks like an empty lightbulb as I have it (aka don't set it to "global"). "Fill" basically just changes the pattern you want to use for the paint bucket tool. So if you want it to only fill a grid pattern with our chosen pink, change that option. But for this purpose, keep it on Solid Color. Next, make sure Tolerance is all the way down at 0%. This is very important, because if it's at any number above that, it could mess up our sprites. Sampling isn't important and is difficult to explain, so for now let's just keep it on Layer. This next one is also very important. Right after the Sampling setting, make sure the little "connect the dots" icon is jagged like I have it in the screenshot, not curvy and smooth. This basically means, if you hover over it and it says that the paint bucket is set to "anti-aliasing enabled", then the pink color will blend into our sprites, and we do not want that. Now, having all our settings the way we want them,, let's actually do it. Select the paint bucket tool with our color chosen and click in any space that has the white and gray checkerboard pattern. This is the image's transparency. It's what lets the sprites "hover" over other sprites and be see-through, without any background or color behind them. Let's see what happens when we do this: Now, if you can still see little transparent "junk pixels" around the sprites, then you did it correctly. Alright, now here actually comes the tedious part. Use your select tool (click the little rectangle icon in the top left, or press the S key once) and carefully click and drag the selection rectangle around the sprite we want. In this case, we'll start with this torso sprite here as it is the first sprite frame in the "torso" folder (be sure to zoom in with ctrl + scroll up on the mouse wheel to make this easier): Now, press shift + s (or click the magic wand tool in your tool box on the left). Then, press alt + left click anywhere on the pink background to "snap" the selection to the exact boundaries of the sprite, like so: Now, press ctrl + X to cut the sprite out of the image. Then press ctrl + alt + V to paste this sprite as a new image. Like this: Save this sprite as a new image with ctrl + S. It will ask you where to save this sprite. You can either save it in another folder or you can overwrite the blurry export. Compare the difference between the sprites: The bottom one from the atlas is the correct version of the sprite. Now you have to do this same process for the rest of the sprites that came out wrong (in Wolfgang's case, only the torso and pelvis came out wrong), using the blurry exports as reference for the animation order. Always be sure to check the exported sprites closely and, if they look off, compare them with those from the texture atlas itself to make sure they are at the correct resolution. 12. Congratulations! You now know how to export sprites in their correct animation order and, in some cases, fix the sprites that don't come out as they should and use them for whatever you want! Now, bear in mind that this probably won't work if you're trying to edit the sprites and re-insert them back into the game. However, there's a guide on that here. I hope this helped! This is my first guide so I apologize that it's so long and wordy when it probably doesn't need to be. I just wanted to make sure I covered all the bases and didn't under-explain anything. If you encounter any problems or find anything I missed, please let me know and I will try to help as best I can! ~Garamonde EDIT: Sorry about these last two images at the bottom of the post. I can't seem to remove them. They can be safely ignored though. EDIT 2: If anyone has problems getting Krane to run, despite following this guide, try checking out this thread.
  9. Hello and welcome to my tutorial on how to make your own custom shader for DST! This sort of knowledge is limited to very few people in the community so I thought to make a tutorial to make this knowledge available for everyone who wants to make a custom shader for their mods! What’s a Shader? Originally shaders were used to shade 3D models in video games. Today they're used to shape, change color, size and etc on textures, used in post processing and so on. They're used all the time in DST and I can show you some examples! One common shader is the “bloom” shader. In the first image here is a roaring campfire where the fire has the “bloom” shader applied that greatly brightens the fire, the 2nd picture has a campfire without the “bloom” shader. The “bloom” shader is generally used to make things bright and shiny! They’re used everywhere in the game. They’re used for the tiles you stand on, the ocean, the UI, spider webbing, haunted effect, colour cubes and much much more! (Bloom On) (Bloom Off) So what do I need to make a custom Shader? -To make a shader file(.ksh), you’ll need a vertex shader(.vs) file and a pixel/fragment shader(.ps) file Quick Explanation on Vertex and Pixel Shaders -Some basic knowledge of GLSL(OpenGL Shading Language) GLSL is the main language we’ll be using to make our custom shaders, I recommend you get some basic understanding and knowledge of the language but if you understand other languages fairly well(such as LUA, which is used for DST programming most of the time) then you should be able to figure out GLSL as you go along An important resource will be this website here! https://thebookofshaders.com/ https://thebookofshaders.com/edit.php This website has a lot of knowledge on shaders and even has an editor for making fragment shaders! Some shaders being showcased are clickable and will lead you to an editor with the code that make up that shader. Almost every shader you see on this website can be applied in DST itself, so take a gander around and see what shaders you like. Programming your Shader So let’s get to programming your shaders! In both the vertex shader and pixel shader files! Create two files like these wherever you’d like. (We will be moving these files later however) You can name them whatever you’d like. But I've named them “examplePixelShader” and “exampleVertexShader” in my case. Be sure the PixelShader file has .ps has its extension, and the VertexShader has .vs as its extension. Now open up your VertexShader.vs file and copy paste this code in. uniform mat4 MatrixP; uniform mat4 MatrixV; uniform mat4 MatrixW; attribute vec4 POS2D_UV; varying vec3 PS_TEXCOORD; void main() { vec3 POSITION = vec3(POS2D_UV.xy, 0); float samplerIndex = floor(POS2D_UV.z/2.0); vec3 TEXCOORD0 = vec3(POS2D_UV.z - 2.0*samplerIndex, POS2D_UV.w, samplerIndex); mat4 mtxPVW = MatrixP * MatrixV * MatrixW; gl_Position = mtxPVW * vec4( POSITION.xyz, 1.0 ); PS_TEXCOORD = TEXCOORD0; } Why do we put this code in? Well this code is necessary for making sure our PixelShader will only apply to the texture/entity we apply it to. What the code is doing is loading in some variables the game gives us (POS2D_UV, PS_TEXCOORD, MatrixP, MatrixV, etc) and we’re doing calculations with those variables to give the game the positions(gl_Position variable). And now the PixelShader will only apply to pixels in that position. If we just did something like gl_Position = vec4(1.0) And set that to the gl_Position variable, our Pixel Shader will run for every pixel on the screen which isn’t what we’d like. As for the code you put in your PixelShader? Well, it can be anything really! But you can find many examples in the bookofshaders website I linked earlier. For my example i’ll be using the code here! Found in: https://thebookofshaders.com/06/ This pixel shader here will switch the color of our entity/texture from yellow to blue and back constantly. You can follow along and plop the code of the example i'm using, or plop your own code in. Just like that! But before we continue, there’s something very important we need to do for my example. (This might not apply to the code you're using) Do you see that “u_time” variable there? Well we need to replace it! Unfortunately the game does not provide us with a u_time variable to use. However! That’s because there’s another variable that’s used to measure time. uniform vec4 TIMEPARAMS; We can use the TIMEPARAMS variable instead! Go ahead and replace the uniform float u_time; line with the “uniform vec4 TIMEPARAMS;” line up above. The TIMEPARAMS variable is used in the game's own shader files(anim.ksh) and that’s where I found it. Now go ahead and replace all instances of “u_time” in your code with “TIMEPARAMS.x” For example, from this To this! Of course if you don’t have the “u_time” variable anywhere in your code you can ignore this. If your pixel shader does something that's unchanging and constant then you probably don’t need a time variable to use. Compiling Our Shader Now we should be done programming our VertexShader and PixelShader files. It’s time for the fun part of compiling our files into the actual “ksh” file which is the actual shader we’ll be loading in-game. Copy your files, and head on over to this directory here “C:\Program Files (x86)\Steam\steamapps\common\Don't Starve Mod Tools\mod_tools\tools\bin” And paste your files here. You’ll notice there’s an executable called “ShaderCompiler.exe” which will be the program we use to compile our shader. Open your command prompt (Windows Key + R, or search Command Prompt in your computer search bar) Type in “cd”, put a space and then paste the directory I gave you earlier and press Enter. Now you’re able to do the compiling as you’re in the directory with the ShaderCompiler. ShaderCompiler.exe -little “shadername” “exampleVertexShader.vs” “examplePixelShader.ps” “shadername.ksh” -oglsl Paste this line into your command prompt like this. Make sure to replace instances of “shadername” with what you’d like to name your shader. And replace “exampleVertexShader” and “examplePixelShader” with the names you have given them. And then you can execute the command by pressing Enter. If your files were prepared correctly and there are no errors, you should get something like this right after in your command prompt. If an error did pop up. Let me know and i'll try to help you out! But anyways, if you did it correctly, this means the shader compiled correctly! You should now find a file named “shadername.ksh” or whatever you set the name of your shader to be, in the directory. Yup, there it is! Grab this file, and head on over to your mod directory Make a new folder named “shaders” in your mod directory., place/paste your new shader file in there. Head on over to your “modmain.lua” and load the shader file in the Assets table like this. You’ll probably already have an Asset table filled up so just plop the Asset(“SHADER”, “shaders/shadername.ksh”) line in your assets table, and be sure to rename accordingly. It’s finally time to test in-game, will your custom shader work? Let’s find out! Create a world and enable your mod. Once you’re in, copy and paste this command and hover over any entity in the game. (Be sure to replace “shadername” with the actual name of your shader) c_select().AnimState:SetBloomEffectHandle(resolvefilepath(“shaders/shadername.ksh”)) And Congratulations you (hopefully) did it! You may use this shader on any entity/texture you’d like at any time. Have fun with this new knowledge and understanding of shaders and I hope us Modders can make some wicked stuff with this! Notes:
  10. A guide for my Beard Template mod, intended to be used alongside Dragon Wolf Leo's Extended Sample Character mod (which you can find here). What You Need Your character mod, which you have to provide yourself. Basic knowledge of making character mods. (If you can make a character using the ESC, you'll be fine.) An image editor with transparency support. Pretty much anything other than MS Paint should be fine. A text editor. I recommend using Notepad++. Ignoring modmain.lua and modinfo.lua This tutorial doesn't really modify the modmain.lua or modinfo.lua, since all the code to add a beard to your character goes in your character prefab file. In the Character Prefab The character prefab provided should include all the instructions needed to add a beard to your character in the form of comments. Creating the Beard Assets In the download you should find a folder called "beard templates" outside of the "exported" folder. These are the templates you'll use for making your character's beards, including Wilson's beard and versions of the ESC beard alongside the headbases and faces used. Of course, the beard you create should not include the headbase and faces used and will go to the exported folder for the game to properly export it into the game. Outside of this, all instructions you'd need to make your character are mostly unrelated to the files provided. If you can already make a character using ESC you should be good to go with this. I hope this was useful to you; I don't know how to make tutorials or guides at all and I'm pretty new-ish to Don't Starve Together modding anyways. If you have any problems with this guide, let me know. Beard Template for ESC.zip
  11. Hey everyone! I've created a library that sends data between the clients without server code. This is very useful when you want to create a client mod and send something to other players with your mod. First of all you need to download the library from here: Then place it into your mod folder(MOD/scripts/tools). local ClientData = require("tools/client_data")(modinfo.name) And now you can create a command for sending: ClientData:AddCommand(name, Fn) --Fn arguments: caller (guid, userid, name, prefab), ... And send your command with: ClientData:SendCommand(name, ...) For example there's my mod that prints something for other players that use this mod: local _G = GLOBAL local require = _G.require local ClientData = require("tools/client_data")(modinfo.name) ClientData:AddCommand("test", function(entity, str) print("TEST", str) end) _G.TheInput:AddKeyDownHandler(_G.KEY_F1, function() ClientData:SendCommand("test", math.random()) end)
  12. MOD IN WORKSHOP! This mod replaces the main menu background with some videos. You can pause and skip videos to the next ones! Once you'll start the video, the main menu theme will be stopped, but when you stop the video, it will start to play again! For moders: This mod has its own API! You can add your videos! Guide: Many thanks to the Electroely. This mod wouldn't be possible without him!
  13. So you make your first mod, and it works just fine. However, you find out soon, either by yourself or from other users, that your mod is completely broken and ceases to function when you're playing with caves. Either it crashes, makes players have weird stats, messes up the crafting recipes, shows the sandstorm effect, or just isn't doing what you intended. But why? It just worked fine without caves, so what's wrong? The truth is, if your mod is having those issues, then your mod doesn't work at all. It's written incorrectly, and it only worked for you because you've tested it under very specific circumstances. I've seen this problem in countless mods from the workshop, usually from new modders, but sometimes I've even seen this in the Top 3 mods of the week. So, what's the issue? The issue is that you wrote a mod that only works on the server. That means it only works for the server and only the server. If other players joined that server, then the mod won't work for them. Those players are clients. To simplify the difference between servers and clients: Servers host the game, and clients play the game. The server and the client don't know what each other knows, so they need to communicate. Information available for the server is not immediately available to the client, and vice versa. For example, the server has access to any entity's components, such as 'health', but the client doesn't. That's why players can't know how much health mobs exactly have, because that information is inaccessible for them. If your mod is working only if you're hosting a world without caves, then that's because hosting a caveless world works differently from hosting a world with caves. When you host a world with caves enabled, then you're playing on that world as a client. However, when you host a world with caves disabled, then you're playing on that world as the server itself. That is why I highly recommend testing your mods in a world with caves as it allows you to know if it works for clients. Do you notice how a mod can either be a Client_only_mod, a Server_only_mod, or an All_clients_require_mod? A client-only mod is a mod that is supposed have client-sided code, such as Minimap HUD or Geometric Placement, and you can see them categorised as 'Client Mods' in the game. Server-only and all-clients-require mods are both categorised as 'Server Mods' in the game, but there's a difference between the two. Server-only mods are supposed to only have server-sided code, but all-clients-require mods can have server-sided and client-sided code. Server-sided code is different from client-sided code because, again, servers and clients don't know what each other knows. Clients don't have access to an entity's components that the server handles, and the server doesn't have access to a client's HUD elements. So how do you separate server-sided code from client-sided code? You can use TheNet:GetIsMasterSimulation() or TheWorld.ismastersim for this purpose: --'Server and client code here' if not TheNet:GetIsMasterSimulation() then --'Client-sided code here' end if TheNet:GetIsMasterSimulation() then --'Server-sided code here' end There's more to this, I'm mainly trying to explain basically why a lot of mods have the 'can't work with caves' issue and how you can fix that issue for your mods. You can look up guides on how to do things like having your mod make the server and the client communicate with each other using netvars and RPCs. And again, I really recommended testing your mods in a world with caves enabled to see if they work. Note that I'm not an expert or anything, just my attempt at helping. If you see mistakes or misinformation, please tell me below.
  14. Hey whats up fellow Kiel members and Don't Starve players. I just uploaded a video on youtube of a Don't Starve Character Guide on "WILSON"! Needless to say, check it out if you are interested! I am just starting out, any support would be appreciated! Lemme know what yall think! =D Video link:
  15. I made guide in picture-based form by modifying and manipulating original graphics. Although, I am not creator of original graphics. The guide is also available on Steam. Chapter 1: Introduction 1.1 Playable Characters. 1.2 Giant battle techniques. Chapter 2: RoG + Together Walkthrough Chapter 3: Shipwrecked Walkthrough Chapter 4: Undergrounds Chapter 5: Add-ons 5.1 Optional start for RoG 5.2 Cooking guides 5.3 Other guides
  16. -persistent_storage_root Change the directory that your configuration directory resides in. This must be an absolute path. The full path to your files will be <persistent_storage_root>/<conf_dir>/ where <conf_dir> is the value set by -conf_dir. The default for this option depends on the platform: Windows: <Your documents folder>/Klei Mac OSX: <Your home folder>/Documents/Klei Linux: ~/.klei -conf_dir Change the name of your configuration directory. This name should not contain any slashes. The full path to your files will be <persistent_storage_root>/<conf_dir> where <persistent_storage_root> is the value set by the -persistent_storage_root option. The default is: "DoNotStarveTogether". -cluster Set the name of the cluster directory that this server will use. The server will expect to find the cluster.ini file in the following location: <persistent_storage_root>/<conf_dir>/<cluster>/cluster.ini, where <persistent_storage_root> and <conf_dir> are the values set by the -persistent_storage_root and -conf_dir options. The default is "Cluster_1". -shard Set the name of the shard directory that this server will use. The server will expect to find the server.ini file in the following location:<persistent_storage_root>/<conf_dir>/<cluster>/<shard>/server.ini, where <persistent_storage_root>, <conf_dir>, and <cluster> are the values set by the -persistent_storage_root, -conf_dir, and -cluster options. The default is "Master". -offline Start the server in offline mode. In offline mode, the server will not be listed publicly, only players on the local network will be able to join, and any steam-related functionality will not work. -disabledatacollection Disable data collection for the server. We require the collection of user data to provide online services. Servers with disabled data collection will only have access to play in offline mode. For more details on our privacy policy and how we use the data we collect, please see our official privacy policy. https://klei.com/privacy-policy -bind_ip <bind_ip> Change the address that the server binds to when listening for player connections. This is an advanced feature that most people will not need to use. -port <port_number> Valid values: 1..65535 The UDP port that this server will listen for connections on. This option overrides the [NETWORK] / server_port setting in server.ini. If you are running a multi-level cluster, this port must be different for each server. This port must be between 10998 and 11018 inclusive in order for players on the same LAN to see it in their server listing. Ports below 1024 are restricted to privileged users on some operating systems. -players <max_players> Valid values: 1..64 Set the maximum number of players that will be allowed to join the game. This option overrides the [GAMEPLAY] / max_players setting in cluster.ini. -steam_master_server_port <port_number> Valid values: 1..65535 Internal port used by steam. This option overrides the [STEAM] / master_server_port setting in server.ini. Make sure that this is different for each server you run on the same machine. -steam_authentication_port <port_number> Valid values: 1..65535 Internal port used by steam. This option overrides the [STEAM] / authentication_port setting in server.ini. Make sure that this is different for each server you run on the same machine. -backup_logs Create a backup of the previous log files each time the server is run. The backups will be stored in a directory called "backup" in the same directory as server.ini. -tick <tick_rate> Valid values: 15 .. 60 This is the number of times per-second that the server sends updates to clients. Increasing this may improve precision, but will result in more network traffic. This option overrides the [NETWORK] / tick_rate setting in cluster.ini. It is recommended to leave this at the default value of 15. If you do change this option, it is recommended that you do so only for LAN games, and use a number evenly divisible into 60 (15, 20, 30). Examples: The recommended way to run a two level server is with the following commands: dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Master dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Caves These two commands will run two dedicated servers using the following configuration files: <Your Klei Folder>/MyClusterName/cluster.ini <Your Klei Folder>/MyClusterName/Master/server.ini <Your Klei Folder>/MyClusterName/Caves/server.ini For the location of <Your Klei Folder>, see the explanation of the -persistent_storage_root and -conf_dir options above. For information on setting up a dedicated server, see one of the following guides: Dedicated Server Quick Setup Guide: Windows Dedicated Server Quick Setup Guide: Linux Dedicated Server Quick Setup Guide: Mac OS X
  17. The main idea is that a mod can determine the existence of the language pack on the client side. Then the mod can translate phrases and names of items only for that user (client-side). The difficulty lies in the fact that the phrase is sent entirely over the network. Therefore, as a solution we should create a lookup table. A string in English comes from the server, and it is replaced by the phrase from the table. Names of items and descriptions of recipes can be safely changed locally. But we want a nice unified solution to make our translations of items, recipes, phrases etc. I think one file for each language is nice enough, isn't it? http://pastebin.com/9ahhHQ3D Here is the mini code. You should copy&paste it into your modmain. Then you should change it for your mod: LANG_FILE_PREFIX - is the prefix of your language files, e.g. yourmod_en.lua where prefix is "yourmod_" SUPPORTED_LANGS - list of supported language signs. Each sign is defined by language pack. You can find it in modmain of any language pack in line with "LoadPOFile" function. TEST_LANG - uncomment this line if you want to test some language file without installing specific language pack. After that make files for translations including English language, i.e. yourmod_en.lua file. Use aliases for initialization string values: nm - for names of items (instead of STRINGS.NAMES) desc - for description phrases of items and other objects (by prefab name as usual) rec - description for recipe in recipe tab (instead of STRINGS.RECIPE_DESC) actf - special alias for action fail strings (instead of STRINGS.CHARACTERS.GENERIC.ACTIONFAIL) ch - for personal phrases by character (e.g. ch.WILLOW.DESCRIBE.SOMEITEM = "...") Also you can use the function AddPhrase() directly (only for phrases). Example mod: Kindling Fire (v0.24+). Examples of language files:
  18. I've noticed that hardly anyone knows how to make worldgen mods, so I thought I'd share my knowledge on the subject. Feel free to correct me on anything I got wrong or give me information I might not have EDIT: Yay! My post got the "popular" thing! ----> Thanks Guys! Section 1: What are the parts of World Geneation? Part 1: Prefabs and Static Layouts Prefabs are, as far as this guide is concerned, the smallest units in the don’t starve worldgen. Everything you see in the world is made of a combination of prefabs. I’m not going to be going over how to create prefabs in this guide, only how to implement already made prefabs and place them in the world. Static layouts are a series of prefabs that are placed in a specific order, when a static layout is placed, it will be exactly the same every single time. If you remember the pig king, or the teleportato pieces, these are good examples of static layouts (mostly just because they’re easy to remember as the same every time). I include these two in the same part because they’re both used when you make... Part 2: Rooms, and Setpieces Rooms are the first randomly generated part of don’t starve, they have contents (prefabs and static layouts), tags, and values. The tags determine special characteristics of a room, and the value determines the floor, what you’ll find yourself standing on. Contents are defined in a table, under several categories which are: countstaticlayouts, a table that holds the static layouts that you want in your room countprefabs, a table which holds prefabs that you want in your room distributepercent, a floating point value that determines the distribution of the prefabs in your room distributeprefabs, a table of prefabs to be distributed and how distributed they are prefabdata, to determine how to modify the prefabs in the room At first glance, distributeprefabs and countprefabs seem to be similar, but they’re actually used for very different purposes. The table, distributeprefabs is used for prefabs that you don’t necessarily want a specific amount of, but you want them evenly distributed across the room, things like trees, and flint. Whereas countprefabs is used for prefabs that you want a specific amount of. The countstaticlayouts table is used in an identical fashion to countprefabs, but obviously for static layouts. The table, prefabdata is used to determine the starting conditions of prefabs like trees (which can be burnt) and spider dens (which can be teir1,2,or 3) You don’t need to use prefabdata to determine the starting conditions for tree growth, as that is randomly selected by the trees. The reason for this is that people are unlikely to want a tree forest with trees the same height, but spider dens are frequently all tier1, or all tier3, or a random selection, so naturally you would want to determine this on a room-by-room basis. Setpieces are the middleground between a room and a static layout, generally incorporated into the world after it has been generated, and around the same size as a static layout, but (somewhat) randomly generated like a room. Part 3: Tasks, locks and keys A task has five important parts: Locks, which determine how the task can be “attached” to other tasks Keys, are the other half of the equation that determines if two tasks can be attached to eachother. Rooms, which are in essence what the task is made up of. room_bg and background_room, which determines the type of room used to flesh out the area. When the world is being generated, it goes through each task, checks the locks, and keys, and attaches the tasks together so that each lock is unlocked by any of the keys that can unlock it. A list of locks and keys can be found in the locksandkeys.lua in the maps folder. Locks and keys can be used to shape mildly. Rooms are the main rooms of the world, you define a specific amount of these. As opposed to room_bg and background_room, which are used to flesh out the area and an amount of them is chosen at random.. Part 4: Levels This is the part where you pick what you want in the world. The level is made of several portions, In this guide I’ll discuss the important parts for a survival mode world leveltype, there are a few options for this, we’ll be using survival id, the level id, this is how the game recognized the level name, the name of your world, which will be viewable by the players desc, the description of the world, which will be viewable by the players overrides override specific settings in the world tasks, these are guaranteed to be in the world which is what the world is made of optional tasks, which are what the world could be made of, if they’re picked setpieces, guaranteed to be in the world, covered in part 2 random setpieces, that could be in the world if they’re picked Leveltype is the type of level that this level is going to be, survival, adventure, etc. survival maps can be picked from the world generation menu. Overrides are used to override specific settings in the world, meaning you could make the start season winter, or have only islands, start on a specific setpiece, or a number of other things. Tasks are where you put the tasks that you made in part 3, setpieces are where you put the setpieces that we learned about in part 2. Random setpieces and optional tasks are setpieces and tasks that shouldn’t necessarily be in every world, but belong in some worlds. Section 2: Making your worldgen mod; A tutorial. This is going to be the most basic world you could possibly make, but it uses all the basic concepts and makes for a fairly short tutorial that someone could easily make a much better world based off of. So here we go Part 1: Making mod folder. Name it whatever you want, and make the following directory structure Top level folder modinfo.lua (empty) modworldgenman.lua (empty) scripts map levels rooms tasks Part 2: Making your first room Create a new empty lua file in scripts/map/rooms and open it in your favorite text editor Start with the function addroom(“name of your room”{}) Add in colour and value, color is (as far as I’m aware) purely for debugging purposes which we aren’t going over in this guide. Add the contents, I chose to add only grass Add a background room, it’s going to be pretty much the same as your normal room, but in this specific case, it doesn’t really matter, as it’s probably going to get overwritten by the start node(although you can choose to not include a start node) Part 3: Make yourself a task Since we only have one task this is pretty simple, I’m only planning on putting in one task for this demo. If you want more, you’re going to have to go through the locks and keys lua file in maps, but since we only have one right now, I’m just going to leave locks and keys as none. For future reference, you must choose locks.none if you want a specific area to be your starting area. Then we need to make our room_choices table, for mine I put in one of the plains room we made. If you want to see your background room, you should put in more than one, you’ll see why when we actually make the world. Lastly, add in your room_bg (it should match the room you’re making), your background_room, and the colour, which once again, is only used for debug purposes, so you can make it any color you want. Part 4: Levels Add in your survival level, with an id, name, and description of your choosing. Next comes overrides, you can make your own starting setpiece if you want to, but I just used the default one provided with don’t starve. And finally tasks, we have no optional tasks because we only made one task. Part 5: Playing the mod Now comes the moment of truth, link all your files in modworldgenmain.lua, name the mod in modinfo, and install your mod! If everything worked out, you should have a new world preset, and when you select it…. I know it looks stupid, but that's because there's only one room. Note: the green comes from the start node, and you can't see any of my background room, but my plains room is clearly visible.
  19. I made a small php script for cropping images in any spriter project. You can use it for free. http://pastebin.com/LJcTUzGr Size of your mods is very important in DST. There could be very many mods on the server. Less size of the mod, more happiness of admin (and users). Mostly it affect size of used video memory. Example: Before running the script. Size 2048x2048: After running the script. Size 1024x1024. The is the same animation and it looks same way in game but takes less size in files (and video memory). Quality of the art is the same too: How to use (you should be advanced user): 1) Create file crop.php in spriter project's folder and copy script there. 2) (Not necessary) Set correct variable $project in crop.php. Also you may change variable $ADD_SPACE if you like. 3) Install PHP (last version) 4) Enable GD library 5) Configure paths in Windows. 6) Use console command "php crop.php" or make bat file. Bat file helps the script to find current folder so it's easier to use. 8) Compile new animation with autocompiler.exe. Also you can send me your final version of Spriter project (scml + images in folders) and I will crop it for you. P.S. I can't edit previous topic because of update of the forum. So I had to post it again, sadly.
  20. This is the first video in my How to play mini series and it shows all the ways you can find gears in Don't starve shipwrecked. https://www.youtube.com/watch?v=OP0b19MI94Q Hope you enjoy and leave any suggestions for future videos, thanks in advance
  21. Modding Practices: Series Index Introduction This post is a collection of the chapters in the Modding Practices series created by Kzisor/Ysovuka. It will contain a short description of each chapter and a link the chapters thread. Modding Practices: CHAPTER 01: Before Beginning CHAPTER 02: Introduction to Modding. CHAPTER 03: Introduction to atlas and texture files. Conclusion If you have questions, concerns or suggestions for a particular chapter please leave them in the appropriate thread. ~Kzisor/Ysovuka
  22. What's the best way to accumulate a food surplus in DST? I've been playing on a server with some friends, and we tried several strategies that rapidly depleted: 6 farms of dragonfruit near a frog field -supposedly after I left the server that day winter hit, and two out of 4 people who originally set up the base barely made it through winter. 2 beeboxes and about 8 berry bushes -beeboxes took too long to set up, due to difficulties getting silk. -berrybushes...aren't that useful, we had more, but they were unfertilized. Koalefant hunting-with someone constantly hunting koalefants, we got a fairly decent rate of meat coming in...that soon stopped because the hunter left. most of the meat was converted to jerky. Any ideas? Tips? Strategies for food rationing?
  23. I'm testing out a stamina system I made for one of my characters. The stamina stat works so now I want to try and create a visualization for it. WIDGETS... I have no idea where I should start. Trying to find the beginning for figuring these things out so I can understand how to create one in the future. Tried searching for a widget guide but can't really find what I'm looking for. From their outward appearance they look complicated, but I bet they might be easier than I'm making them out to be. At any rate, where should I start for figuring these things out? Did anyone make a guide for widgets that I just seemed to overlook? Edit: Looking at the mod Always-On Status, I think I got them figured out, at least some of the basic parts of it. I managed to get what I want to show up. Edit 2: This is what I managed to come up with out of looking at Always-On Status The if true then is just there for me to replace with a config boolean to replace it later. But I think I figured it out generally well. Edit 3: Okay I figured out basic widgets (sorta) though I am quite curious as to how the badges handle their meter graphic going up and down. A new question, how would I make a widget that act's as a bar that fills up or empties depending on the variable it's referencing? I'm going to dig at the healthbadge and badges a bit for this info, but if anyone who's worked with them knows what does what, some guidance would be helpful.
  24. If you have more than 1 option fro your mod, you can easily fix annoying Klei bug. Just use following code for each option: local some_var = GetModConfigData("some_var") if type(some_var)=="table" then some_var = some_var.option_dataend ​
  25. Hello guys I am trying to make Don't starve tutorials for beginners. Click here to see my list of tutorials I made so far! If you find them helpful share my tutorials to your friends
×
×
  • Create New...