Jump to content

Mod Thoughts and Feedback


Recommended Posts

@PeterA

After hours of pulling my hair out and bashing my head against the wall trying to figure out why interacting with the Shopkeeper (custom prefab) wasn't working in Up and Away as a client, I figured out. Remote left click actions don't work as a whole for custom mod actions due to a typo in playercontroller.lua, where an underscore was typed instead of a period.

pls fix

Link to comment
Share on other sites

btw is there some kind of traffic protection? Or players must trust to each other?

i mean editing client side traffic to cheat/harass.

Also maybe Klei have some plans for standalone server? Without all this .NET dependencies, so its can be installed on cheap VPS and work 24/7.

Edited by Rincevvind
Link to comment
Share on other sites

btw is there some kind of traffic protection?
I don't think so. I ran into a bug with my Geometric Placement mod (I had to modify SendRPCToServer to catch the client-side deployment cases) which caused me to be able to give objects at range. So I think there's definitely some room for cheating by modifying traffic, but it still depends on checks on the server (e.g. the range for giving was actually available on the server, but the intent was probably to make it less likely to fail due to lag or fast movements). 
Link to comment
Share on other sites

The unloading and reloading sequence of mods needs to be checked to make sure configuration options are properly being disposed. My mod has enough options to cause the sequence to throw an out of memory error during world generation. Also, Don't Stave both versions does not properly illustrate out of memory errors. It does not indicate any stack trace upon reaching the out of memory, so debugging became difficult.

Link to comment
Share on other sites

I found something else strange in the Configuration Options that I'd like to report.

 

First:

{name = "spring_pond.allow_multiple",label = "Pond, Fishermen",options ={{description = "Multiple", data = true},{description = "Single", data = false},},default = true,},

This particular configuration option does not allow it to be saved or loaded properly. It will always be true because it's true by default. However, if we change default to false it will be changeable.

 

Second:

The issue with loading and unloading mod configuration options is directly related to internal selection of an option.

 

Example:

{name = "spring_pond.children.frog.spawn.chance",label = "Pond, Frogs",options = {{description = "Disabled", data = 0.00},{description = "1%", data = 0.01},{description = "2%", data = 0.02},{description = "3%", data = 0.03},{description = "4%", data = 0.04},{description = "5%", data = 0.05},{description = "6%", data = 0.06},{description = "7%", data = 0.07},{description = "8%", data = 0.08},{description = "9%", data = 0.09},{description = "10%", data = 0.10},{description = "11%", data = 0.11},{description = "12%", data = 0.12},{description = "13%", data = 0.13},{description = "14%", data = 0.14},{description = "15%", data = 0.15},{description = "16%", data = 0.16},{description = "17%", data = 0.17},{description = "18%", data = 0.18},{description = "19%", data = 0.19},{description = "20%", data = 0.20},{description = "21%", data = 0.21},{description = "22%", data = 0.22},{description = "23%", data = 0.23},{description = "24%", data = 0.24},{description = "25%", data = 0.25},{description = "26%", data = 0.26},{description = "27%", data = 0.27},{description = "28%", data = 0.28},{description = "29%", data = 0.29},{description = "30%", data = 0.30},{description = "31%", data = 0.31},{description = "32%", data = 0.32},{description = "33%", data = 0.33},{description = "34%", data = 0.34},{description = "35%", data = 0.35},{description = "36%", data = 0.36},{description = "37%", data = 0.37},{description = "38%", data = 0.38},{description = "39%", data = 0.39},{description = "40%", data = 0.40},{description = "41%", data = 0.41},{description = "42%", data = 0.42},{description = "43%", data = 0.43},{description = "44%", data = 0.44},{description = "45%", data = 0.45},{description = "46%", data = 0.46},{description = "47%", data = 0.47},{description = "48%", data = 0.48},{description = "49%", data = 0.49},{description = "50%", data = 0.50},{description = "51%", data = 0.51},{description = "52%", data = 0.52},{description = "53%", data = 0.53},{description = "54%", data = 0.54},{description = "55%", data = 0.55},{description = "56%", data = 0.56},{description = "57%", data = 0.57},{description = "58%", data = 0.58},{description = "59%", data = 0.59},{description = "60%", data = 0.60},{description = "61%", data = 0.61},{description = "62%", data = 0.62},{description = "63%", data = 0.63},{description = "64%", data = 0.64},{description = "65%", data = 0.65},{description = "66%", data = 0.66},{description = "67%", data = 0.67},{description = "68%", data = 0.68},{description = "69%", data = 0.69},{description = "70%", data = 0.70},{description = "71%", data = 0.71},{description = "72%", data = 0.72},{description = "73%", data = 0.73},{description = "74%", data = 0.74},{description = "75%", data = 0.75},{description = "76%", data = 0.76},{description = "77%", data = 0.77},{description = "78%", data = 0.78},{description = "79%", data = 0.79},{description = "80%", data = 0.80},{description = "81%", data = 0.81},{description = "82%", data = 0.82},{description = "83%", data = 0.83},{description = "84%", data = 0.84},{description = "85%", data = 0.85},{description = "86%", data = 0.86},{description = "87%", data = 0.87},{description = "88%", data = 0.88},{description = "89%", data = 0.89},{description = "90%", data = 0.90},{description = "91%", data = 0.91},{description = "92%", data = 0.92},{description = "93%", data = 0.93},{description = "94%", data = 0.94},{description = "95%", data = 0.95},{description = "96%", data = 0.96},{description = "97%", data = 0.97},{description = "98%", data = 0.98},{description = "99%", data = 0.99},{description = "100%", data = 1.00},},default = 1.00,},

 

By adding 15 of these options you should receive a not enough memory error during world generation with only the modinfo.lua and a blank modmain.lua file. If you do not receive the error I can post an error prone modinfo.lua which the error is directly related to internal selections of an option.

 

EDIT:

Stupid post keeps cutting half of it off when posting. I think it has to do with the code tag.

Edited by Kzisor
Link to comment
Share on other sites

Hi, all. :joyous:

 

How much luck are people having with the caves mod (Extended Map Generation)? We've had it fail (and simply leave the game as if the mod hasn't been selected even though it was) but then we've had it work successfully for days on end. Was wondering if anyone had found some consistently nasty clashes with other mods and this one. A weird one for us was the Woodie character being included. Would need to test more on that but it's not happy when Woodie's in there. No cave biomes at all.

 

However, saying that, huge thanks to the modder as it's breathed life into the Beta as we've pretty much enjoyed all of the content for DST until now.

Link to comment
Share on other sites

I was also thinking about iteration/debugging

Debug Print

Maybe this already exists, but it would be nice to be able to select a object and invoke a test output on it. I've been hooking into "update" and spamming the console, but being able to highlight and event and send it messages would be handy. Could be a returned id value on a commandline spawn printed to the console, and then invoking a DebugString method on said object if it exists.

Quick Startup

Also, a quick startup would be nice. I have to start up the game, click host, sometimes create a new game, wait, then load on every crash. It would be nice to have a 1-click startup that jumped to either the character selection or world.

Asset Pipeline?

Another thought - is the only documentation on the content pipeline here?

I had some trouble finding it - and I was never sure if this was the latest.

Link to comment
Share on other sites

Remote Debug

Well Its annoying to watch small part of log. I have tried to make a mod that would do this but there are big limitations how far I can go with that. Allowing remote debug will definately help out both beginners and experts alike. As most of the mod help requests come from people who have great ideas but have lack of programming knowledge and often don't even look at the log. Remote debug console screen should print same log as ingame one and also allow running of lua that will be run ingame. Also allow to print tables and classes so that we can easily take a look at those values and don't have to print them out individually. Somethin similar to chromes inspector console for javascript would be nice. It should stay open even if the game closes though. 

Proper API documentation

Why there are so few good mods is easy. There are few really good tutorials for modding. Best ones out there are character mod tutorials and well there is plenty of those. Anything harder there is simply no guides available. Coding is hard for most beginners who get easily discouraged when they are not able to understand how to search answers and examples from games lua files and if they don't get info from forum posts. API examples file is all nice but I think it would benefit everybody if we had api docs similiar to laravel api docs for example. Containing best practices and also list of prefabs, components, widgets, anims etc. Also would have examples how to add most types of objects and items into game as a mod. Yes its nice if people learn from other people, but what I can see is that often looking other mods can lead to fact that another mod is launched with same cardinal mistake as the one that was taken as example. This is where best use cases and best practices come in play. 

Mod IDE

Well also problem is that there are almost no good IDEs for lua. There are some that are good multilangual ones, but it would be nice if there would be some plugin or IDE that would be able to grab classes, functions and files from data folder and give code completion and function generation functionalities as well as different file template generation capabilities like most of Intellj products do.

Better Mod loading 

Current mod loading is so random and unhelpful. Currently people have no control over mod load order and also game does't check issues that could arise form mods being incompatible. Due to the fact that some modders disregard guidelines that are basic for any programmer just because they haven't programmed anything before is also the problem of not having proper guide on how to do stuff and what not to do that would be definately in the API docs I mentioned before. Game should also protect player from such issues as a game breaking bug can show it's face at day 200 when somebody crafts a item that causes a conflict with other item in some other mod. 

Link to comment
Share on other sites

 

 I understand why

os.execute

function has been taken out of lua. What I do not understand is why is 

TheSystemService:StartDedicatedServers

hardcoded to work with only 2 servers (1 master and 1 shard). As a fellow developer I have gone trough fair length to try to get info on the function in question and finally decided to decompile your exe ( do not ban me ;P) To find out the server config generation has been hardcoded. Has anybody  As far as I have gathered when creating a world it creates folders and ini files to save folder and although we can't

os.execute

we can create files, but everything i have tried will still result only 2 servers being launched. What I am trying to achieve is to launch third world (or any number really above that) besides the two that allready exist. 

well there is way to do this with dedicated server launch commands but as os.execute is nowhere to be found can't emulate that either. 

dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Master
dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Caves

the reason why this is important is the ability to make additional custom worlds and have the servers launch in client as the average player will not be fiddleing server launch code we as modders could easily implement gui and everything else in mods. 

 

PS: as far as I have taken a look it is nothing hard to implement. refactoring couple c++ functions and couple lua functions that use them.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...