Jump to content

BearWrestler

Vintarian
  • Posts

    53
  • Joined

  • Last visited

Everything posted by BearWrestler

  1. Well, it seems to me that the best for modders would be if you regex search and replace every "internal class" in a Vintagestory.*.NoObf.* namespace, to put the public keyword instead of the internal keyword. And then use this principle for future classes. Since you never know what modders might need to monkey patch. If you're asking what I need for my specific project, I'd rather hold on and make a list that's as exhaustive as possible, so I'll get back to you. But the initial intent of this post was to make a request that benefits everybody, not just me. BTW here are my various attempts to work around the internal class and unregister GuiDialogDead's tick function, if anyone is curious: Manual patching approach, "works" but doesn't skip the constructor body as expected. Most likely fails because constructors are a strange beast to patch: public static class Patcher { public static void DoPatching() { // Apply all attribute-driven patches var harmony = new Harmony("multispawn"); harmony.PatchAll(); // Manual patching required to get to the type, since typeof doesn't work with internal types from other assemblies // However, it seems to fail to properly skip constructor body. var type = AccessTools.TypeByName("Vintagestory.Client.NoObf.GuiDialogDead"); var constructor = AccessTools.Constructor(type); var prefix = AccessTools.Method(typeof(Patcher), nameof(GuiDialogDeadConstructorPrefix)); harmony.Patch(constructor, prefix: new HarmonyMethod(prefix)); } static bool GuiDialogDeadConstructorPrefix() { return false; } } Various failed attribute-based patches: // Doesn't work because type Vintagestory.Client.NoObf.GuiDialogDead is internal. [HarmonyPatch(typeof(Vintagestory.Client.NoObf.GuiDialogDead))] [HarmonyPatch("GuiDialogDead")] class PatchGuiDialogDead { } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Custom attribute to allow class to be looked up by string name, doesn't seem to be picked up correctly by Harmony public class HarmonyPatchStringTypeAttribute : HarmonyPatch { public HarmonyPatchStringTypeAttribute(string typeName) : base(AccessTools.TypeByName(typeName)) { } } [HarmonyPatchStringType("Vintagestory.Client.NoObf.GuiDialogDead")] [HarmonyPatch(MethodType.Constructor)] class PatchGuiDialogDead { //Attempt to skip whole constructor body static bool Prefix() { return false; } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Attempt to unregister GuiDialogDead. Doesn't actually destroy the gui, probably because it's kept alive by tick/callback registrations. [HarmonyPatch(typeof(GuiManager))] [HarmonyPatch("RegisterDefaultDialogs")] public class PatchGuiManager { [HarmonyPostfix] static void Postfix(GuiManager __instance) { ClientMain client = (ClientMain)__instance.World; var guiDialogDeadType = AccessTools.TypeByName("Vintagestory.Client.NoObf.GuiDialogDead"); List<GuiDialog> loadedGuis = Traverse.Create(client).Property<List<GuiDialog>>("LoadedGuis").Value; var guiDialogDead = loadedGuis.First(x => x.GetType() == guiDialogDeadType); Debug.Assert(guiDialogDead != null); client.UnregisterDialog(guiDialogDead); } }
  2. Simply put, I'm trying to create a mod that modifies quite a bit how spawn points work, and this involves monkey patching Vintagestory.Client.NoObf.GuiDialogDead so the constructor doesn't register callbacks and ticking - this way I can replace it with my own GUI. Unfortunately this is made very difficult by this type being internal to the dll and therefore much harder to monkey patch - the type isn't available to use in Harmony annotations, for starters, and you can't use it in a postfix method signature for easy access to properties and the like. So I'd like to humbly request from @Tyron and the dev team that they set all such types to be public. Given that we have the API interfaces to keep a clean separation between dlls, I don't think using internal should be all that important? Thoughts welcome.
  3. Please use spoilers when discussing stuff new players might not have discovered yet . It's not a matter of working "exactly like Lovecraft stories" - by saying this you're implying that it's some insignificant detail that you can leave out without consequence. It simply goes against the core tenets of the Lovecraft mythos*. Might as well throw the "Lovecraftian" moniker to the trash if ancient underground horrors end up as your pets. I for one hope the devs seek to achieve consistency with the lore they have established (or change the lore to fit the game) instead of creating a jumbled mess by just including whatever sounds cool (read: Minecraft). And yes, I'd argue that is already ruining the theme a bit. At the very least you'd expect your sanity/temporal stability to take a huge hit when using one of those artifacts. It's the kind of thing I fully expect to be reworked in the future given that the game's horror elements are still kind of barebones. Glad that we at least agree on that. *Pretty much: ignorance protects us from ancient horrors thinly veiled behind our daily reality; too much knowledge leads to madness; those who live who tell the tale do so because they only caught a glimpse of the monster/entity/dark dimension and are haunted by this sight they can't explain to others for the rest of their lives.
  4. I don't know about the player-usable aspect, it's creative but sounds very overpowered and off-theme compared to what's currently available in the game. Especially since the game claims to take inspiration from Lovecraft - if you've read his works, you know that there's a hefty price for using ancient and forbidden knowledge, usually it comes as the cost of going completely insane. So taming the terrifying underground stuff is a no-go unless there's a terrible price to pay for it. However, I'd absolutely love (i.e. be terrified and run away screaming for my life) seeing a mob like this in caves. The way I imagine it, each segment could individually walk on a floor, wall or even ceiling square, as long as it stays adjacent to another segment through a cube edge of course, and it could also let its segments hang straight down to traverse air blocks downwards. Just imagine these horrors walking on the walls and ceilings and using their length to drop down on unsuspecting travelers.
  5. Will chicken still reproduce in nature, since there are no "boxes" available? Or will they make nests from twigs and grass? All animals run around with their babies, so it would be weird for chicken to suddenly stop doing so because of a lack of boxes .
  6. Thanks guys for your well thought-out input. For our game, for now I decided to mod in a large increase in temporal gears spawn rate from drifters and see how it goes. Unless I'm missing something this rate is the exact same in Wilderness Survival, Survival and Exploration. Without removing all sense of danger, it would make a lot of sense to be able to change your group's base at least every thousand blocks you travel, in a mode called "Exploration" - as long as you hit a few caves and ruins along the way. So I think there should be a multiplier to the temporal gear spawn rate according to the difficulty, just like there seems to be for rusty gears. I've considered all the ideas that have been put forward, and in the end I think this game would benefit most from having multiple bases on the map you can respawn from, in Survival and Exploration mode (not Wilderness Survival). I don't like everything about Ark, but it has a pretty nice balance in that you can cut down on repetitive travel by teleporting naked to other beds you own, but when you want to actually move your stuff around, you need to mount a proper expedition with a bunch of dinosaurs that can carry heavy stuff, with a real risk of losing everything in an ambush. In short, sticking close to current Vintage story mechanics, if using a temporal gear created a new spawn point to pick from after death instead of replacing the existing one, it would encourage you to go further from your original base and make more risky journeys, knowing that you don't have to lose your main base's spawn point just to create intermediate ones along your trip. It also increases the potential play variety: take a break from your main base by respawning at your jungle base and working there for a while. You can't easily transfer materials between the two without finding a translocator, but the change of scenery keeps things fresh. For sure this would gradually increase the total area on the map where you can "corpse-rush" (which amounts to a radius around each spawn point), but given the pretty much infinite world, most of the world would still remain a hostile wilderness. For players who dislike the map feeling more and more conquered and civilised, we can always have a maximum number of respawn bases: having two, i.e. your main and one that you leapfrog every 1000-3000 blocks would already be much more conducive to exploration. TL;DR here are my suggestions to improve Exploration Mode: Increase temporal gear drop rate. Let the player set multiple spawn points (potentially with a configurable limit on how many you can set, and/or a minimum distance between them). @Thalius Stocking up on more than 2-3 non-stackable temporal gears is not really an option given how limited inventory is, if we want to gather materials during the trip. So even if we had spent our precious game time grinding those (which TBH would probably kill any desire to play this game due to sheer boredom), assuming we set a new spawn every 1000 blocks or so to keep downtime after death somewhat reasonable, we wouldn't get far. @Streetwind I think keeping herds of livestock would be a wonderful addition to the game. Both for a fully nomadic lifestyle and a seasonal one where you head for the greener pastures in the mountains in the summer. I don't think we need or want a mobile helve hammer - semi-realistic heavy industry means having a fixed base somewhere, at least unless the game one day extends to the age of petrol-based heavy machinery. But pack animals that can carry a lot of your heavy stuff would be welcome, as well as UI commodities to make packing and unpacking a bit less cumbersome. In the current state of the game I see the fully nomadic lifestyle as either something temporary until you settle down at your ideal location, or just a lifestyle choice whereby you give up on the higher tiers of the tech tree. Eventually, perhaps the game can spawn in some poor villagers whose main purpose in life is to be raided Viking-style for their delicious flax, or provide some other loot and exploration-based way to unlock the advanced stuff.
  7. Thanks for the useful guide. Seems to me like the devs should strongly consider making the prospecting pick detect chalk and limestone too.
  8. This mod works great 99.9% of the time. Unfortunately we had an instance where a player broke his grave to get his items, saw the items spawn, but then they disappeared. He was under the impression that they "disappeared into a nearby block". If it matters, the grave appeared to spawn in mid-air in a one-block-wide hole above a cave. I don't really have more diagnostic info than this.
  9. We have a small 3-player private server and we decided to make a trip to the equator. The distance to cross is huge, even though we generated the world with Exploration settings. What we soon realized is that this game tends to punish you a lot for a nomadic lifestyle. Temporal gears are really rare and getting enough to change the spawn for three players takes dozens of hours of play (despite killing any drifters we encounter). Given how easily this game spawns enemies on top of your head in confined spaces, we had to interrupt the trip several times because a team member died and spawned all the way at the base, which was further and further away. Nowadays getting back wastes the whole play session, and we still have only found two temporal gears out the three needed to make one base switch. I feel like a system similar to Minecraft (switch spawn by sleeping in any bed) or even Ark (respawn at any bed) would be more conducive to actual exploration. All this beautiful world generation is kinda wasted if you're forced to stick within a close radius of your base forever. In the spirit of the game, some investment could perhaps be required to make a bed safe for respawn, for example putting it in a 7x7x7 room - a bit like cellars work. Requiring the walls to be made of wood, cobblestone, stone or glass would be a good way to require investing. Or instead of a bed, perhaps a more thematic alternative like building, perhaps even sculpting a kind of totem pole to set up your tents around (there a mod that provides pretty nice tents). Not being able to take long trips feels weird especially since our prehistoric ancestors were mostly nomadic. Curious to have the devs' and players' opinion on whether you think it's a problem, and how it could be fixed.
  10. Thanks for checking. Right, so it keeps every single copy of the assembly in memory. You'd have to be careful when debugging then, because I believe that any already-created object would still use the old assembly it originated from, which could lead to a very wild mix of behaviors.
  11. Thanks for the in-depth insight @ApacheTech. I hope the messy codebase doesn't end up slowing development to a crawl through bug explosion as features pile up, or forcing a major months-long refactor. The OnUninstall method sounds like a great idea that should be introduced sooner than later. As far as the remapping command goes, it seems pretty limited? IIUC you have to map each missing ID to a unique valid ID. But if you had built, say, Lichen tents with their various blocks and just want them to disappear and be replaced by air i.e. all by the same ID, it doesn't sound easy?
  12. Interesting! Is the game's runtime able to unload assemblies? Or do you end up with multiple copies of the game mod loaded (which sounds problematic)? I know standard .NET Framework can't do it, and the ability was in development for .NET Core last I checked, but looking at the game files the game might be using Mono, whose ability to unload assemblies I'm not sure about.
  13. Thanks for the info. At this point I'm thinking that regenerating a brand new world with the desired settings and the same seed, and switching temporarily to creative mode to recreate our base might be an easier solution. If any dev is reading this, it would be appreciated if you guys could complete the wiki pages I linked above, or confirm that the value can't be changed at runtime if that's the case (but I'd be surprised, given you can change so much other stuff in world gen). A command to list or export the list of all worldconfig variables would also be very useful.
  14. I'd like to increase the ore density in my existing Survival world to match the ore density in Exploration settings. I assume it must be possible with the /worldconfig command, but the corresponding value is not listed in the wiki: https://wiki.vintagestory.at/index.php?title=List_of_server_commands/worldconfig Does anyone know the correct value, and is there an exhaustive list somewhere (at least in the game's public source code portion, I assume?) Once that's done, I'd like to delete or regenerate every chunk on the map except the one(s) our home base is on - we've already explored very far and I'd like those chunks to contain the new ore densities. Is there a command I can use for this, or do you have any pointers to code a custom server command that would do this? Thanks!
  15. Some mad math genius already explored pretty thorougly in 2016 how to deal with the deformation of blocks caused by a round Minecraft-like world, as well as how to wrap N/S and E/S edges, making the world a torus (a sphere covered with a grid of uniform squares is unfortunately impossible... a mind-blowing problem when you think about it). He even implemented the whole thing in Minetest! You could download it on their forums and check it out. Some people are also making cubic planets with 6 flat faces... probably easier if you can handle the gravity switch. All those ideas are better suited for a space age planet-hopping game though. I don't think it would be a good idea at all for this game though due to the massive effort required and the unintuitive behavior of a torus. I see it more as a curiosity. There are so many things to do to improve this game first such as water life and better spawning mechanics.
  16. Ahhh, yeah. It would explain why we literally exited the base through the only possible single-block-wide access (we had a roof, walls, and the only open side was over a 4-block-high cliff) and walked a few blocks away, and when we came back to our base shortly after a wolf was inside waiting to destroy us. Do you have any short-term plan to prevent this kind of thing from happening? Frustration was running high in our group. I have a few suggestions to tackle this, in order of increasing complexity: Digging or building on the exact spot of the spawn point destroys it (better than nothing since it prevents the most surprising scenario) Any edit to the map in the vicinity of the wolf spawn point destroys it (exploitable) Any significant to the map in the vicinity of the spawn point destroys it (say, removing/placing 10 blocks) Destroying trees around the spawn destroys it. Wolf spawn point is represented on the map by a wolf "nest" (presumably just the bones of small animals, leftover of the wolves' meal). You can destroy the nest block or blocks and wolves will stop spawning there. (exploitable, unless wolves defend the spawn point and it's long to destroy - then it serves as a fair warning not to build a base there) Wolves actually live somewhere instead of spawning out of thin air. So you spawn wolf "nests" (gotta find a better term) in a suitable area like a cave, and that in turn can spawn wolves going out to hunt, a mother and babies, and will also spawn wolves that will defend the cave agaisnt intruders. If you can get to the cave alive and destroy the "nest" or block off the cave, it destroys the spawner. In my case, it was default server settings, and the only mods are Primitive Survival, Adjustor and Grave Mod. I know anything is possible, but given the nature and stability of these mods and the small overall amount, I doubt the spawning of wolves is affected in any way.
  17. Thanks for your input. What I'm suggesting is pretty much keeping the current map, but covering it with a black shroud that clears in a rather small radius around you. Just like you see in the section I timestamped in the video below. It's pretty much standard Minecraft map behavior. I'm all for a more complex mapping system one day, having to build your own map by identifying landmarks might be interesting if the right balance between realism and fun is found, but I wouldn't put a high value or priority on it until we have a more fleshed-out world with oceans, and especially, more refined spawning mechanics (my nightmare right now).
  18. Agreed. I'm curious to know whether this is the kind of thing that could be modded in cleanly and in a highly compatible fashion within the constraints of the current modding API btw?
  19. I was surprised to see that you start the game with a huge area revealed on the map in this game and that chunks incredibly far from you get added to the map as you explore. I think there's a lot of charm in uncovering the map little by little, it bolsters the feeling of exploration. Hope this can be implemented. The map as it works now also makes ruins and some other types of location super-easy to spot BTW. I find it a lot more interesting to find things by spotting them in the distance when wandering around than having their existence "spoiled" by a map.
  20. On my small 3-player server, we find communication difficult because the map doesn't show our respective location if we get too far from each other. Along the same lines, we'd really like to see each other's waypoints (at least the ones we'd elect to share) so we can mark interesting locations for the benefit of the group. (This could perhaps be tied to the in-game Groups feature so it scales to servers with more players and/or PvP.)
  21. Thanks for the tip. Kind of a "high-tech" one though, since we haven't even found any clay and were too busy getting destroyed by wolves to make any progress towards this. Also, am I wrong or this would light protect from drifters, but not wolves because the latter spawn in broad daylight? Thanks for taking the time to write those detailed tips, much appreciated. I'm cool with the "building defenses" part and the danger overall - it's somewhat realistic (though wolves are not THAT feral unless hungry AFAIK) and I like the challenge. Having to work around the spawning mechanics is rather disheartening though. The more I think about it the more surprised I am that they are not more refined in this game, given the degree of attention that went into other systems. I tend to consider stuff like "don't spawn a creature within a certain radius of the player" and "don't spawn a creature on a block a player can see if the block is within X distance of the player" to be spawning 101 so... I'm confounded as to why is it not covered here? As I said I never had the issue of mobs spawning literally on top of me or inside my base in broad daylight in Minecraft, so I never expected a game like this that built its own engine to get away from Minecraft's technical limitations to behave worse in such a basic aspect. Maybe we were too hasty in our purchase decision.
  22. Playing with my buddies, we had this basic base set up, a dirt platform with a roof, pretty high up on a cliff face. Our campfire was there as well as storage baskets. But this happened to be a wolf-spawning region, and one spawned right on the platform itself! We pretty much had to abandon the region as we couldn't even create a secure location. Later on, we had a base with a basic drawbridge like setup so you had to jump over a deep trench to get into the base. However, a Drifter spawned right in the base, a mere five blocks behind me. We had a fire or two, but I guess that entrance block wasn't lit up enough or something. But torches are not permanent... To be honest it kills the fun of the game for us and breaks immersion. Minecraft always was pretty good at not spawning stuff on top of you, here in this game it seems very hard to make a safe base. It even prompted one of my friends to request that we set the game to exploration mode. We usually don't mind a challenge, but if you can't even set up a good base to work from, it doesn't feel fair or interesting. Overall it seems like the spawning mechanics need a revision... I also often see animals popping out of nowhere right in my face when exploring. Are there any plans in this area? It seems at least that any area that the player has stayed into for at least X minutes should prevent animal spawns on those blocks for the next day or two minimum. And as far as drifters go, some kind of flood-fill from an active campfire to determine the enclosed safe area (and just a reasonable distance from players overall) would go a long way to make the spawns feel more believable. And in the meanwhile, do you have any tips on how to make a safe base early-game?
  23. It would be very interesting to have herds of sheep that need to graze, and you have to change locations every season to find better pastures - head to the mountain in the summer like shepherds do to this day in France. The dogs are essential as protectors and guides for the herd in this scenario. It would be an interesting and different lifestyle in-game than settling down and growing vegetables and doing everything else in one place... at the very least you need to have multiple bases to switch between.
  24. (Moving my post here since it got zero replies in the Vintarian forum.) Hi! Having recently bought the game, I'm starting a small coop server for my friends. Part of the setup is deciding which mods to use - I considered using none, but I think I want at least Primitive Survival and the Gravemod. However, do I have to pick a list and stick to it (really hard when I know we won't get to test some parts of those mods before having invested dozens of hours in our world), or is it possible to add or remove mods mid-game without destroying the savegame? Some posts on the forum had me worried, especially this one: I'm interested in the technical details of what goes on behind the scenes with block ids and what not when you add or remove mods. From my memories of Minecraft, I think it handled this pretty gracefully? What approach was taken here? Thanks!
  25. The ocean... in a Lovecraftian game ? Better be careful what you ask for guys. Or you haven't read the Shadow over Innsmouth or played The Sinking City perhaps. If you combine the Ocean and Lovecraft votes you get 40% of the total so I think this is what you should go for next, devs. Terrorize us with nameless things in the deep and ancient underwater temples of madness-inducing cults that call to us to revive them. Scary legendary lakes are also allowed, see: Loch Ness. That doesn't preclude fishing of course (gotta give us a practical reason to stumble over all this horrifying stuff), but I hope you go for something different than the tired "sit there for 10 min with your fishing pole" mechanic. Primitive fishing such as the one practiced by Native Americans involved catching fish by hand in the water or using nets - no fishing poles AFAIK. The fishing system in Primitive Survival is also pretty great since it's pretty much traps you set up and check from time to time, you just need a variety of bodies of water (streams, rivers, ponds, lakes, lagoons, shallow and deep sea) each with their own ecosystem of plants and aquatic creatures - frogs sitting on lilypads and singing at night plz - to ground it more in reality. Pearl fishing (another reason to dive) also comes to mind. As well as the beatiful variety of underwater creatures such as coral, anemones, squids, jellyfish, rays, whales, dolphins, sharks, seashells, starfish, urchins, sand dollars... given the care you've given to the overland generation I must say I have high expectations for the underwater one. I think your seabed will be a lot more interesting than Minecraft's.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.