What hinders YOU to start with modding?

I have chosen the path of the modding showcaser instead of modding myself. I’m very bad at technical things and programming and even though making mods would make me a bit more informative when making videos about them, I still can’t spend too much time on learning that. If my channel gets a bit more attention then I will probably be able to spend ALL of my time on the game and then I will most likely learn to mod.

Unfortunately I’m 21 already and my dad doesn’t like the idea of me spending my days “messing around”. So aside from college and making videos, there is very little time for other things :stuck_out_tongue:

I have **no idea whatsoever ** where to start with modding ( the closest thing to coding is things with command-blocks in minecraft :stuck_out_tongue_closed_eyes: )

I suppose the easiest way to start modding is by messing around with the original code. Have an idea what to do, modify parts of the stonehearth.smod to do what you want, rejoice and repeat.

After that you can move on to “real” modding, as in, independent mods. Any tool that can search lots of files quickly (most editors have them, there’d also be grep for unix systems) is useful to search for things that might be of interest (for example, if you want to move an entity, you could search for “move”, “location”, “go”…)

That sounds ok in the first paragraph and i might try “Dwarf’s Speed Mod” (Players simply move faster :stuck_out_tongue_winking_eye: )

I’ve got no idea what happens here

I’m Clueless…

This is my personal approach to new things, be it programming in a new language or creating content for something new.

  1. Find something you want to do. Importantly, I need to stress this: Find something you want to do. You can get much more motivation from something that you think is worth doing than just your average 0815 “Hello World, it’s turtle all the way down”.
  2. Dig into the code. In SH, this means taking a look at the base itself (radiant.smod, stonehearth.smod) and some of the already existing mods. I would not recommend starting with mine, however (at least, nothing related to rp/jelly, as those are pretty advanced).
    Open a few files, get a general idea of the language and a few concepts. Basically, “browse” the application a bit.
  3. Start tweaking the existing code to do what you want. It’s easier to modify existing things than to write stuff from scratch. I still do that sometimes too. To do this, it’s important to get the general idea of how that (smoothly) works.
  4. Find the bits you need to manipulate. If you want to change the speed of the villagers, chances are you are looking for something that changes the speed. So you basically need to search for “speed” in all files - lua and json most likely, perhaps js too. Personally, I use that order.
    Maybe you need to get creative though. It may not be “speed”, it may be “velocity”. If you can’t find anything for that, search a bit broader - perhaps it’s something regarding physical, or location, maybe it’s an attribute? A strength? Find synonyms and broader terms to get the right location.
  5. Make sure those are the bits you want to manipulate. Easiest way: Scrap them or set them to ridiculous amounts. Make sure that your change is not subtle enough to be ignored. Set the speed to zero, then to a billion, see if it has the desired effect.
  6. Get the code to do what you want. You may not want them to move at the speed of light or not at all, so tweak the values until you’ve got something that you think is okay.
  7. Optional but highly recommended: Figure out a way to make it truly modular. (I call them mod mod). Modifying the base game files is okay for your own needs, but has disadvantages (you need to update your mod manually with each update; you cannot really share your mod with others (copyright, file size, incompatibility with other mods); it’s not possible to use two such mods together).
    The goal should be that you can give your friend your mod.smod and he can use both your mods, the vanilla game and whatever else without overwriting files or doing any more installation work.

To be short, it’s basically just a way of digging in code to achieve what you want.

5 Likes

ATM I think the big hindrance for me is animation - voxel work is fine, but I’m totally new to Blender, 3DSM et al*. Other than that… hmm. Inexperience with the code I guess - I’ve yet to poke around inside SH much, and have just been doing artwork etc for now.

*Also 2D art. I can write stuff, but don’t let me near a pencil :stuck_out_tongue: .

Same here. First time I tried anything the model was too big and my computer froze

The code I am taking a break from, I have been learning some coding for a year or two now so I a taking a break

EVERYONE seems to know code but I have no experience whatsoever, I have great visions of what I would do in modding but I simply dont have the means…

deppressed sobs

Always have them as a dream but you will never be able to reach some things. Everything has its limits. I learnt that the hard way.

1 Like

I don’t know any Lua, yet I’m making a mod. :slight_smile: You don’t need to know everything to make a mod for Stonehearth.

That’s deep, @Newf

1 Like

Animations is not rocket science. I am also not a gifted artist, but with the right tools you get something reasonable done without too much efforts. You just have to get started… and this seems to be the biggest obstacle for me, just to get started :wink:.

1 Like

I have done zero animation work before but managed quite well with @voxel_pirate’s tools and blender - which was surprisingly. It’s by no means a very complex animation, admittedly, but I think it looks nice. It’s just a matter of… routine, I suppose.

As for scripting questions, you can always ask them here. I’ll gladly help out from time to time.

3 Likes

What prevents me from modding code is what was said by others earlier in Feb. There’s just not enough concrete stuff there in terms of documentation or finalized structure.

I mostly focus on the 3D models and art for now, having had zero luck with actual animation. I’ve followed @voxel_pirate 's tutorials to get where I am currently (and would be lost without them). What prevents me from doing more with models and animation is the fact that is simply takes a lot of time, and I believe I’d be making things Radiant already plans to do, and plans to do better than I can. For example, I wouldn’t want to spend 2 months making a fox and making it run, just to see that they did it better and faster. (Ok, so it would only take like 2 weeks, but still).

Also:

So that seems like a great approach for “breaking the ice” of modding, but it also seems like the worst possible way to actually mod :slight_smile: not that I totally know what I am talking about. But having people change random constants and variables in the files is not a good way to make a reliable or safe mod?

Personally, I’ve spent about 1+ month now and maybe 40+ hours going thru the Stanford online CS106a course and learning basic object oriented programming. I learned procedural programming over 10 years ago, and my brain has been slow to recover. I have now grasped the wonder that is Java. I took a peek over into the Programming in Lua and have been struck blind. I do not follow it at all. I’m not done with the CS106a so I am going to finish that out first, because it has good things I need to know regardless of the language. Then I’ll tackle LUA and see what is going on. I even poked around in the Corona documentation for the whole Class/Prototype thing, and again was still totally adrift.

This is very much what I am to do, but I don’t feel like it is accessible yet to me.

Basically, the barriers are:

  1. Lack of actual game base, APIs (the game’s not done :P)
  2. Lack of documentation
  3. Lack of “what’s going on,” aka what is the game supposed to do in situations X, Y, Z, and what would my mod even change?
  4. Lack of tutorials. This is not anyone’s fault - I’m eagerly awaiting the game progression so that you all can get us great how-to tutorials that really address a more finalized and approachable SH engine. But even if tutorials were put out now, I probably would pass them up, because they are so unfinalized.
  5. Lack of personal skill. If you could find Mehran Sahami and have him teach a Lua course this would be best :slight_smile:

Said step isn’t about modding, it’s about discovery. Before you can change anything you need to figure out where it is. This remains true even if there will be an official API, unless you tweak around with some values you won’t know what they do. I sincerely doubt that there will be an official API for everything.

It’s also not about “random”, it has to have a system of course. Usually, absurdly high values, zero, less-than-one are good for starters. Of course, print()ing the original values before changing them is a sane idea.

That will necessarily not help you at all. lua is not an object oriented language. Sure, they provide structures that can be used to simulate OO to a certain extent, but it has no native support and besides the ‘:’-syntax sugar nothing in its syntax to support it. lua is much more flexible than Java and much more simple in its basic - yet to achieve similar results in lua, you’ll have to do it yourself.

I mean, classes are an example - native in Java, do it yourself in lua. One is static typed, the other’s dynamic typed - there are so many differences, not just syntax-wise (which would be rather Pascal than C), that make coding really different.

Of course, in the end, it’s about the same difference and any good or skilled programmer will simply abstract the language away to implement the algorithm… But that might not be as easy to those new to programming or said language.

Depending on your definition, the game will never be done. Software’s never done and the day the game stops receiving updates, it’s practically dead. Of course the community may continue for some time, but the time will be limited.

Point being: Even in the final game I do not expect APIs to be stable. Software is not something that you build once and then it will keep running forever (although I am surely impressed how some games from 1996 still work on W7x64…).

Just think about it: If you, as developer, want to offer backwards compatibility until all eternity, not only will it make your life increasingly harder - it will also limit your creative and productive freedom. Example: You can’t write a new map generator that is four times as fast as the current one because there are mods using the official API, which you cannot offer in said form anymore. So what do you do - keep the old one, deprecate the old one and replace it with the better, newer API?

Documentation is always a sensible topic; but it’s very different here. Although a good chunk of functionality is hidden behind the great C barrier, it’s somewhat easily possible to get a list of available functions and, using silly calls (model_variant:num_variants({}, function() end, 1, 2, 3, "hoho", math.huge) or, if you want to be boring, I guess model_variants.num_variants()) even the signature.

The thing is: All of the game itself, minus engine, is there, in “plain” sight. You can understand what the important bits of the code do - how the AI works, what the gameloop looks like. Most importantly: This will always be there and it will always be uptodate, even if the documentation is outdated, incorrect or not available. Code doesn’t lie. Usually.

I also suspect that there will be a complete (or even slightly complete) documentation available until the first release in September. I could imagine that this non-vital part would be delayed until after the content has been finished. The APIs, however, most likely will already be in place.

Well, I guess that’s one point where I don’t have an answer for. Effectively, the application is just a round based game, every frame a new round, every move dictated by the player, verified by the rules (the code) and based on the last round (i.e. the current state/the last frame’s state). If you find out what happens in a certain situation, you can bend that to do what your mod wants to do.

You may find better ways to do that later if you’re into that kind of stuff. Personally, I would even say you have to find a proper way to do it later.

I don’t get this quote at all and seeing as I’ve made similar rules with Jelly, I understand why. Let’s recall the first and most important rule when it comes to software engineering:

Programmers are lazy.

Well, good programmers are. We can safely assume that’s the case here. Believe me, the very last thing that somebody wants to do is rewrite code. Especially in lua, you cannot simply open your IDE, say “well, show me all reference to this function” and then re-name it, or re-arrange parameters, or insert a new one, or whatever your IDE may offer.

You need to search for all occurrences of whatever you want to change, then replace them accordingly if they are really what you are looking for. The evil thing about lua is that if you forget one reference, it won’t complain at compile time (because there is none), neither will it complain necessarily at start up. It can create a little, small logic error that explodes much later.

With that being said, it’s important to have an idea what the structure could look like so that changes, if necessary, can be made easily or, even better, are not required at all. However, it may happen. Maybe you really do have to do a complete rewrite of a class. If you told people that using the API was now fair game, then you’ve got a lot of angry customers yelling at you about how you broke their favourite mods.

Alternative: Tell people that the API is unstable and will explode, use with caution/own discretion et cetera. It doesn’t mean that any code is less final, nor does it mean that you will change more, it just is a safety measure for you to avoid, well, whining and/or complaining.

I’ve written stuff in r6 that still works four months and 50 versions later. It required very few if any changes and most of those were my own fault (i.e. I’ve changed an API myself because I was not satisfied with it - not because the game update required me to). Admittedly, they are all not exactly very complex or deep mods - but the point remains: A lot of the APIs have been stable so far. I don’t want to say that they are not going to change, but I doubt that there will be any severe, unfixable change.

So long story short, I would argue that the API right now is as unstable as it will be in September.

1 Like

It just seems like there is very little game to mod at this point.
Once we have some real economy, scenario, military etc. I intend to dive in.

For the moment I am satisfied reading about other people’s early implementations, experiments, and the dev blogs.

Edit: please don’t sell out to facebook.

For me, it is not owning Stonehearth. It’s a pretty big hurdle.

I would think it was less of a hurdle and more of a concrete wall.

2 Likes

I can answer this one pretty easily;

First, i don’t have much time to spare lately, these last months i’m starting to work with a spanish fansite (the faniste it’s about the new MOBA Blizzard game) and i never imagined what a lot of time does that take from me, also i’m finishing my studies and looking for a job too, and when i’ve some free time i prefer to play the game more than actually design something; but… let’s talk about the reasons about why i’m not modding.

Well when the KS finished, i started with an idea of a magic mod. I still have that idea in mind, and slowly but surely i began to design it in paper: a tree-class, world gen things needed, how are the workshops going to be, how would it work with the city, what fun stuff i could add… and when i already have a clear idea of what to do; i started making a prototipe, something really basic like: making the class item, making the qubicle model for male and female versions of my first class, and then introduce it in the game. Really basic, yes? Well i found a huge problem that i’m unable to solve.

When i designed my models, (just a wizard apprentice) he wears a robe instead of pants, so in order to him more consisten, i removed the feet (they didn’t fit with the model because they were too big) And i decided to animate the lower part of the robe to make it look like it’s walking. But… i’ve no idea on how to animate such thing; and i’ve no idea on how to use any animating program (even watching Tom’s streams it’s hard for me to animate).

So a nice thing would be some tutorials to be able to animate anything diferent from the typical human model. Also, it would be a really good idea to be able to introduce more than 6 humans in the world. (i think it’s 6 what you start with) because if i’m testing thing, i’d like to have like… 10 to start taesting the AI with more people and to be able to have all the classes (i know tehe’s only 2, but once they introduce 2 more classes, we will have 2 workers, and the other 4 would be a carp, a hunter, a shepperd and a farmer… yeah… Not enough workers xD). And i’m really interested in testin ghte synergies between my mod and the core classes.

Also i think that my mod even if it can be used in the early game, i still need more resources into the game and i need to see more classes to know how the game it’s going to work.

Also… i want to start making some GUI in pixel-art to start working on how my workshop menus are going to look like, but… I’ve no idea on how to make pixel-art and place it into the game(photoshop seems soooooo hard for me; i guess i could learn to make ONLY pixel art… ).

i don’t really mind the lack of features in the game because once i start to know how the code of the game works, i think that i’ll be able to introduce new stuff to supply the ack of features (except the lack of diferent resources different from wood as i mentioned previously), but there’s a ton of things that i don’t know how to do.

BTW, it’s there a way to introduce new elements?? not to substitute trees for another tree, or trees for rocks as we’ve seen in some development tuesday, but like… making another tree and add it to the game, or let me say it in a clear way: with the modding tools in the alpha right now, can i make a “mod” to harvest gold (create gold ore, being able to harvest it, and to melt it(the workers could melt it, i want to keep it simple) to make gold bars?). the maing thing would be, how do we add resources or another content in the world gen???

hope this answers your question and helps the comunity to know what can we do :p, i know this game has a ton of potential… we just don’t know how to take the most of it yet :wink:

Greetins!

Yes and no. No official thing yet (scenarios might provide something like that, but they’re kinda wobbly at the moment), but I’ve made something that allows you to just do that. Relatively easy, too.

Technically, Jelly only supports replacing trees and other fauna right now (which does, of course, not stop you from simply pretending that rocks are just another type of flower) but I could easily add options to have your own stuff generated independently of the current fauna at your own density/spread rules.

If you fancy a look, the documentation for said jelly feature is over here.. It’s documented much more complicated than it really is though, flowers are relatively easy for example

So I’ll try and chip in on the two other points that you mentioned. Firstly being animating a robe, secondly the GUI.

For the robe animation, it’s going to be harder than a human depending on how complex you want it, someone like @voxel_pirate is probably best but I’ll throw in some thoughts. As every piece that moves separately needs a separate matrix I’d say you’ve got two main choices, vertical strips or horizontal rings, it’s somewhat self explanatory in the names. For details though I’m pretty sure they animate via translating/rotating and then taking frames, check with @voxel_pirate and his tutorials though. What you need to do though would just be split it up into all moving parts in qubicle and then just move them slightly and take keyframes repeatedly, the part that could be tricky is figuring out which ways look best.

As for the gui, you’ll probably want to look under the ui folder in stonehearth.smod, you might want to look in entities/professions/XXX/skin. Gives some more details and I’ll try and help more, if it’s reskinning the crafting ui then I made this reference a while back. It’s a psd that splits the carpenter’s crafting ui into a bunch of separate layers with 5 layers labelled EDIT controlling the colour scheme, other than a little bit of touch up on the chains and the pattern of the paper all the patterns will adjust to recolouring of the EDIT layers. For example here is the crafting ui for some kind of ice sculptor or something, this was around 2-3 mins work using the file and I’d improve on it in time but it should hopefully demonstrate that basic things are really easy.

1 Like