I think that's great that you are delving into memory editing of URW.
We need to think what are the main limitations of the current system and what memory editing can do.
One current limitation is that not all object properties can be set in the txt files. I'm thinking of
- Accuracy
- Works as a ski stick
- Works as a beater
And many other hidden properties.
I can access a bunch of these, its just a matter of documenting them and then combining them properly w/ or w/o an official mod, possibly making some sort of interpreter to read the mod files for custom script to apply could be a project.
Ingredient matching is based on names or object property inheritance. If you inherit from "Club", your object will match the "Beater" ingredient; or if you inherit from "Northern spear" you will be able to use the object as a ski stick.
Would be nice to have direct control of these hidden properties, and even define new ones, so that we are not limited to name matching.
Some of these are directly tied to other areas of code/data within the game, in particular I noticed I wasn't able to find some herb effects while documenting herb addresses in the item struct, I noticed that they changed when i edited some of the strings to a different base herb, probably indicating the default values are hardcoded or stored elseware, currently I've just been looking at CharacterName.OBJ file which contains the data for objects the game has generated over play time, the default object list is CONSTANT.OBJ, which could contain the data, but I haven't gotten around to looking at this in more detail as I'm mostly still documenting other objects generated by the game, some of which aren't included in CONSTANT.OBJ such as corpse's and different states of hides/meat cuts from cooked to uncooked, soaked hides, tanning hides, etc. There are some flags for weapons, but I haven't identified them with certainty, my best guess is some sort of identifier as to weather the weapon damages hides or not when used, but I haven't verified this, only a conclusion based on a comparison of weapons which lacked the value seemed to be non-edge based weapons. I don't have a Northern spear in my characters data so I'm not able to compare that currently, but if anyone would like to donate game files for research purposes I could certainly use them, as I want to have multiple comparisons of data files for the best estimate as to what data is what, additionally many people have far more progress than me in the game and generally have more save data to work with. I can also provide modified versions of files for testing purposes if someone would like to help me in documenting the effects of the data changes. Lot's to talk about on the subject of data and files, would be better to talk about it over IM.
A concrete example would need having a [TAG:property1] syntax, to assign to a object, and then being able to require such type of ingredient with the {[TAG:property1]}. Much more diversified and streamlined recipes.
But I'm not sure if this would really be feasible only with memory editing
You'll have to explain what you mean here better, I'm not sure what kind of limitations I have when it comes to recipes yet, I could possibly learn more by tracking a mod's recipe data (if i can find it), but I'm not familiar with the actual official modding syntax yet so I'd be shooting in the dark for a little while (not even sure how to install an official mod yet aside from copying over the main files? lol).
Some other limitations are intrinsic to the recipe system. For example, you can make only one type of object at a time (no multiple products from a single recipe).
This is probably possible to do with relative ease.
Another limitation is that we can't add new buildings.
This along with NPCs, terrain, possibly some other types of data may be possible to manipulate (in theory, likely) its only a matter of documenting the data and the addresses in memory. What this means to me is,
A. I need to know what I'm looking for in terms of what numbers I'm trying to find (for example, an item on the ground has an X Y location in memory).
B. The data needs to be editable, and the edit needs to create the desired effect to be a feasible modification (I edit the X Y location of an item on the ground, it teleports to the edited location, I now have the power to use this as an "action" for a mod, or as a "condition", such as determining if a particular item is at a particular location to trigger some other "action")
Usually, when I'm looking for a particular piece of data, other data relating to the object is also close by in memory, so finding one thing can lead to indications of other things within the data (hence documenting the item struct)
This is the main limitation of what I can do, I am nowhere near close to the best memory-editor's out there, as there are many other people who can manipulate sections of assembly code to change the way the game functions entirely, most of what I do is reliant on changing data that the code interacts with to produce the desired effects. I can do other hacky workarounds with C# and manipulation of the data and using C# code to create some hacky effects, but this can be hard to get stable (for example, I have created a feature for my next update of URWCharacterMenu that allows you to click on a tile, and teleport to it. I was unable to add support for zoomed-out views however, though it is probably possible the math required to do it is beyond what I'm willing to figure out to fix a minor inconvenience).
Finally, if memory editing really enables more modding possibilities, they would be limited only to the windows platform, right?
My app in particular would be limited to windows yes. I'm not familiar enough with other operating systems to say yes or no on their limitations, I do know their op-codes tend to be different, so it would be a matter of weather they have memory editing support for their operating system + a matter of re-documenting the data for that particular operating system, I think anyways. The data itself should be similar, so the methods for finding and documenting the data should be similar, I think. If anyone using linux or ios (if that's even supported, gosh I'm so ignorant!) wants to experiment on their side with this, I would be happy to provide the methods in which I have found my addresses, but they would be starting nearly from the ground up as far as creating an app that can read/write to memory, and the actual design of the app (be it a standalone mod or something that can interpret custom mod files to enable a richer scripting environment for that particular OS) Just my thoughts, I could be completely wrong.
Anyway, I'm currently working on a mod, which is an evolution of caethan self sufficiency mod.
https://github.com/pietralbi/urw-extended-recipes
I'm not really a pixel artist, so I'm ignoring all the custom sprites for now and just focusing on the recipes themselves. I was planning at the end to slowly and painfully do the artwork with gimp, but if you can make the icons instead it would be great!!!
Funny I was just looking at caethan's mod files the other day, admiring his work and efforts. I would defiantly be up for this, if you wanna chat more about it we can hookup on IM and get a workflow going on my side.
I'll be updating the main thread with some contact info, and I'm considering opening up a group chat on discord or somewhere else to get at least some connections/conversations started, forums are great for long, clear, thoughtful thinking but this is closer to sending a letter than having a conversation where our ideas can evolve at a more rapid pace.
edit:
Also just wanted to throw it out there, the more things we can get documented in memory, the higher the chances are someone (maybe myself, maybe someone else) can make things like map editors and tools not currently available, however the line is drawn where-ever the Enormous elk team decides to draw it, making mods to enhance the game is one thing but we need to respect the creators wishes as to what they want made publicly available, being that the game isn't inherently pay to play (protection wise, I believe), I don't want to be the guy creating tools that will create a run away effect where the game is effectively used as an engine, rather than enjoying and expanding its original content. It would be a dishonor to this games development history and DECADES of continuous passion from the developers, and for most of you this probably doesn't seem like it's a big deal, but I've developed and been apart of communities of developers and modders for several different games over many years, and I can tell you from experience, modifying memory can be fun, creative, innovative, and an overall enjoyable experience for everyone, but it can also ultimately, destroy an app from its core, for its developers and users. Most people are familiar with this experience in the form of multiplayer game cheats, such as aimbot and ESP in the case of FPS games, but there are many dangerous ideas that can be executed using reverse engineering processes which can have a longer lasting negative impact, It's only a matter of imagination and code. Just my two cents on it.
edit2: Spent a good amount of hours starting a guide on using cheat engine, should give anyone who wants a swing at it a good chance to succeed. I'll be posting it when I have completed it.