Popular Content

Showing most liked content since 03/15/19 in Posts

  1. 33 likes
    In this week's patch notes there was a small line that a lot of people would have glossed over, that being “Fixed a number of movement issues.” There’s a long story behind this one, with a few weeks total of working on it and something completely insane that I had to fix, so I wanted to write a bit about it - if you’ll forgive my rambling. Note: Before we start this I should point out that in the context of this post, "desync" is referring to a creature or player appearing at one location from your view, but from their view they're in a different spot. This isn't related to the "Your position on the server is not updated." message that you can sometimes get when the server itself is lagging. Hopefully by now some people have noticed a bit smoother movement in general (ignoring today's horses being a bit jittery on bridges), and a lot less (ideally none) movement desync that the game has had troubles with for a long time. These desync issues were magnified with the Fishing update and became a lot more apparent over the last few months. You might have encountered this on your boat by disembarking after a long trip and being a tile or two away from where you thought you were, or by leading a creature a long distance and it slowly getting farther and farther away from you. The cause of the desync becoming more apparent was a change I did months ago for fish. Each fish in the game is technically a creature the same as any other and the server controls it as such. When you cast your line it decides when your fish will spawn, then tells it to move towards your line where it stops for a bit. Early on we ran into issues where the fish wouldn’t always stop right on your line, but sometimes off to one side or the other. To get into the reason for this issue and how I fixed it we have to dive a bit into how the movement updates in Wurm work. Movement is calculated on the client based on your input which then sends your new position to the server. Server then checks that data against what you’re allowed and expected to actually do with that movement then if everything is okay it saves that as your new position and updates everything that needs to know where you are. This includes any other players that can see you, all the creatures within range of you, anything you’re riding or dragging or leading and a few other things. When doing these updates they’ve historically been done using position differences. The difference is passed along and calculations are done based on that instead of the exact new position. This is where the problem starts. For reasons of keeping data packets to all clients as low as possible, all movement difference values got packaged into byte values (which is a quarter of the data that sending the full position value would be), meaning a number in the range of -127 to +127. This means that when you’re moving from [1587.33, 903.19] to [1587.39, 903.81] the X and Y differences have to be converted into that -127 to 127 range, whole numbers only. To accomplish this the differences were multiplied by 10, which had the downside of ignoring any movement difference below 10cm (0.1) since that would get rounded down to 0cm when converted into a whole number byte. Here’s where we get back to the fish problem. Because the final movement of the fish to get to the hook was sometimes less than 10cm the update packet sent to the client was rounded down to 0cm and ignored. After some testing to figure out the actual movement values being sent to the client was never getting beyond the -7 to +7 range, I changed that x10 multiplier into a x100 multiplier. This gave us an extra degree of precision in movement, while keeping the movement difference values inside that -127 to +127 range. Although this fixed the fishy issue that we were having at the time, it brought to light some new desync issues and made some existing ones worse. At that time the biggest issue was stamina drain problems because of this change - I had thought it was because I missed some x10 -> x100 change at some point, but after going through the related stamina drain code it didn’t make sense. I gave up some point after and tweaked the draining code to be as close to live as it was before the change and chalked it up to something weird that I might find later on. The last few weeks was that ‘later on’ where I found out that my initial thought of “this doesn’t make sense” was correct. You may have noticed that I glossed over what happened in the old code when those difference values were rounded down to 0cm if they didn’t hit that 10cm (or 1cm after the x100 change) threshold. This is the source of the desync that the game has had in varying degrees since day one. When these values were rounded down to 0cm (or remainders from a whole number were rounded down), the movement would still be applied but the “update everything else” code would see it as no movement and not run. This means there could be some movement ticks where nothing was sent to players that were in range, or stamina would not drain at all if it was a player’s movement. But then how has everything still mostly worked all of this time if these movement differences weren’t updating properly? Now we get to the meat of the issue. The code that transformed the new position values into a difference value was prone to a rounding error that every now and then would cause a movement difference that is usually under 1cm to get rounded up to 10cm and trigger the chain of updates to everything and stamina drain. When the difference code was working on 10cm intervals, the rounding error just happened to occur about as often as the “lost movement” from rounding down would have added up to 10cm, so it kind of balanced itself out. Changing it to 1cm intervals meant less data was lost to rounding down, but also meant when the rounding-up error did occur it was only triggering enough movement for 1cm, meaning it lost the ‘happy accident of balance’ that it previously had which lead to desync problems being slightly more pronounced over the last couple of months. During my trek over the last few weeks into figuring out the desync issues Samool and I came across that piece code and recognised that it could cause some precision errors, so I changed it to something that wouldn’t. This lead me to a couple days of pulling my hair out over stamina no longer draining as expected before realising the rounding error was the reason it ever worked properly in the first place, and that the code down the chain relied on it to work 99% of the time for smaller movements. Without having this rounding error, slow movement will very rarely be above that 1cm threshold, meaning none of the drain code or update code was ever called, since the movement was rounded down to 0. Fixing this new issue involved changing the entire chain of code to not use the byte value differences, and instead use the actual position data and calculating exact difference values when needed, eliminating any need for rounding down (or random errors causing rounding up). This also lead to a couple days of rebalancing stamina drain from movement to be as close to live as possible considering the old system relied on a random rounding error to work at all. I’m truly surprised that it worked as well as it did being based on an error for smaller movements like that. The upside of all of this is that movement updates sent to players now use the exact position instead of difference values, meaning desync should be a thing of the past. The place that you see other creatures and players is the exact same position that the server sees that creature of player - and stamina draining should be a lot more precise for smaller movements instead of relying on a rounding error. I hope I never have to touch movement code again.
  2. 24 likes
    After having been on Xanadu since october 30th, 2017 we finally managed to locate it: The Venerable, starving Red Dragon Hatchling. It will drop Red drake hide pieces and red drake blood (Weapon smithing potions) for everyone in local. The public slaying will take place on Sunday, march 17, 2019 at 10pm UTC+1 (22:00 Amsterdam time) Details: The slaying will take place Inside a mountain, as the drake was found smack down in the middle of it. Alts may therefore have to be standing inside the tunnel to be eligible for drops. It is in the mountain between Jellyfish Outpost and Windfall Peninsula. If you want to come by Land, both deeds are on the highway system so you can find them using the "find route" option at a waystone If you want to come by sea, the location is G8 on xanadu, you can park your boats either at the northside at Jellyfish Outpost, or NW of Windfall Peninsula, There are signs up leading you to the slaysite from both Parking spots. The event will be in a live stream on Twitch:
  3. 9 likes
    Going to be killing a goblin leader this weekend, all are welcome to come and get bloods/fight. Makes mining potions. F19-20 Ingame
  4. 8 likes
  5. 7 likes
    Sunrise over Niflheimr (which is heavily in WIP).
  6. 6 likes
    That one is fixed in the preview client already.
  7. 6 likes
    It's bad because it eliminates the explorative element of observing your character fail when coming closer to the soft cap. Are your tools sufficient? Is this beyond your skill? The game won't hold your hands at it, and it being enough of a button clicking simulator as it is, reasoning this change with "I can do something with my alt in the meantime" is a step in the wrong direction. And you can already do some hardcore multitasking, especially with higher mind logic. "All those fails" the game is giving you are a pretty strong signal that you should reconsider your current endeavour. Unless you're enough of a masochist to grit through the odds. Either way, sounds like a change in your strategy is due, not in a fundamental aspect of a game that those grizzly old veterans have come to like.
  8. 5 likes
    Call it "Focused Growth". Same 40 faith as Wild Growth. 20 second timer. Grows a single plant three stages. (Or 2-4 stages depending on cast power to not deny devs their RNG sadism fix). Great for evening out groves, handling oaks, that kinda stuff eh. Edit: I made it intentionally inefficient compared to regular wild growth which does 9 cumulative plant growth stages per cast minimum as you'd be "paying for accuracy". If you're trying to get that grove corner from mature to very old (which the surrounding trees may be at that point), you recover that inefficiency's time from all the pruning you don't have to do to avoid shriveling half your grove.
  9. 5 likes
    tldr: We want to do this, needs some rendering tech improvements first to not have every deed look like it's on the sun. There was some work done in that direction with this recent update (the reason why it was so troublesome, a ton of back-end changes). Won't be in very soon, but it's coming.
  10. 5 likes
    Looks great I LOVE the tall banner in #1 these designs looks much better than the original (no offense to whoever did the original one) Thanks for allowing everyone to vote on this, job well done!!!
  11. 5 likes
    Independence somewhere. Totally forgot the name of the place. Was in awe of this build so much I had to turn round and grab a screenshot. The same day, I went to Dragon Fang mountain for the first time. Even in the fog it looked pretty daunting.
  12. 4 likes
    When a deed decays, the buildings and walls dissappear, but the terrain, the terrain remembers. After a server has been out for a while, after villages have come and gone, the dirt walls, pits and plateaus stay. One of the reasons I love new servers is being able to explore new, fresh land. Being able to find untouched land to build my new house. My suggestion; Any tile that has been raised above the height of when the map was originally created, should decay it's excess height over a long period of time This would remove dirtwalls This would not remove mountains unless they were player created Deeded areas should not decay Decay should not occur arround structures Walls/fences are structures Paths are structures Areas around water should have increased decay Water is erosive Land bridges - Reminder: Would still need to be undeeded AND not paths/fences to decay Raised dirt in the water would decay and allow ships to pass again Dirt tiles should have increased decay Stone tiles should have reduced decay Areas around "Should not decay" areas have a less likely chance of decaying governed by a function of distance Prevents jarring edges at the border of "Should not decay" areas The excess dirt should erode to a new location to fill pits
  13. 4 likes
  14. 4 likes
    This thing has more evolutions than an Eevee.
  15. 4 likes
    I think the biggest issue with the fishing system is that it seems like a pile of a lot of work for no reward at all. Its like they increased the difficulty on fishing without matching the reward/usefulness from it. Now we got this uber complicated system with much more difficulty to do exactly what we were able to do before by nearly afking 6 minutes with a rod. If there was something useful to do with fish, then I could understand it. But right now fish are pretty damn worthless: you can't use them for butchering skill because they give f-all for skill. You can't use them for cooking because there really isn't anything you could make with fish that you couldn't get with meals or pizzas. You can't mount/trophy big fishes for bragging rights, and you can't really sell them because people rather buy meat than fish. I think if they maybe gave fishing a purpose, it'd be more an attractive system.
  16. 4 likes
  17. 4 likes
    Libila watches - Samool Greetings Wurmians! We’re back with another Valrei International, showing you all what’s been going on behind the scenes of the world of Wurm, so let’s get into it, ya ken? spec(tac)ular metals One thing coming in today's update is the addition of specular and normal maps to metal weapons, tools, and parts of transport and furniture! It adds further depth and realism to these surfaces, just check it out! I personally can't wait to see these after the update, I'm so keen! Journal Tweaks We’ve been making some tweaks to some journal goals and clearing up some others in today's update. We’re also introducing a progress percentage display, so you can keep track of those big ones! Tapdance deconstruction Tapdance is a horrible mess of construction, whats happened? Team Shark has happened, with the tapdance redesign firmly under way. VEN member Fabricant will be streaming this process as he goes, expect disaster of hilarious proportions. WU Beta That’s right, after 180+ days of waiting, Wurm Unlimited is getting brought up to speed with Wurm Online! It’s a big beta with a ton of behind the scenes changes, so the beta will be fairly long, between 2-4 weeks. We’ll also be pushing an update to the beta some time during this with some WU specific fixes as well as including the update due out today. Ongoing AWS work Keenan is still hard at work with the foundations of shifting to AWS, looking at dockers and uh, honestly, half of it goes over my head, but you can catch it all here as he keeps updating it! Whether you can follow it, or like me you smile and nod as Keenan excitedly tells you what big things it means, I hope you enjoy these type of devblogs, and I certainly will be encouraging more in the future! Crusaders artwork Last week we posted an announcement regarding the copyright issues we unfortunately faced regarding The Crusaders PMK designs. I’m super thrilled to say that they not only have replacements, but they have opened it up to public voting! There’s some amazing designs on offer, and they want to know your opinion. Not only that, but one lucky voter will win a set of the winning design! Hota rework We’re gearing up for the HotA rework to go live in a coming update (not today's) . For the initial release it will run alongside the existing HotA system. From there we’ll work with feedback and tweak if necessary to ensure it’s engaging and achievable. That’s it from us today, there will be an update in the next few hours with lots of goodies so you better not be too sleepy! Until then though, keep on Wurming! Retrograde & the Wurm team
  18. 4 likes
    I hope one day we can have carts and wagons that follow the terrain back as well...so perhaps you may have to touch movement code again... Also, horses never unhitching in building walls and corners, and perhaps having a shorter rope so we can lead and breed horses into one tile areas. Thanks for the hard work Wurm is a great game and despite relying on multiple errors to work most of the time, it is all part of the charm.
  19. 4 likes
    Keep the ideas coming lads, but drop that "veterans doesnt like anything" crap to yourselfs. You have to sell the idea to the public and actually have to think about the game mechanics in place and what that change would require for it to work. I know, learning the mechanics takes time and pretty sure none will ever master those, but the basics at least. If no understanding about coding, mechanics etc, i wouldn't be shouting at the "veterans" at the start of your suggestion or at all. I would just post the idea as it is and hope for some explanation of why it wont work or isn't wanted. -1 to this idea, but keep them flowing
  20. 4 likes
    Lol the recent obsession with prefacing all suggestions with "I know the veterans will shoot me down" as if it's something people do by force of habit rather than because the suggestions is bad. -1 (because I actually think the suggestions is bad) Edit: I won't spam up the thread with pointless nonsense, but posting "-1 with no actual reason given" isn't an obsession: It's a valid way of responding to a suggestion where there isn't much to say that hasn't already been said. Tpikol had already summarized why it is a bad idea, and not every suggestion needs to be debunked in detail since the intended audience will understand the reasoning without further explanation.
  21. 3 likes
    During my time in Wurm I have seen all kinds of sillyness surounding uniques. People lay their claims, fight over them, argue with each other and even throw tantrums when they don't get their way. I am sure this causes division between players unecesarily, and surely headaches to staff. So here's my suggestion how to fix it. In regards to hatched uniques from eggs, nothing here applies and they work as normal. Make unique spawns similar to Rifts Unique spawns should create an area of influence at their spawn location which prevents terraforming and deed dropping in the affected area. Any off deed buildings present are not able to be repaired during the duration, and no fencing or new construction can be started until the event ends. This would effectively prevent the "penning" of uniques. Furthermore, make it so players have to be inside the area of influence to be able to attack, so archery from complete safety will not be a thing. Participation would be required. Tether uniques to the spawn area of influence Uniques would not be able to be kited outside this area or to a deed. Besides preventing uniques from being penned by skirting the system, this would prevent uniques from wandering and exiting the area of influence, or coming across player deeds where they could cause damage. Allow an unlimited amount of players to attack the unique and increase its total health (but not their health regen) This allows for more participation and time to show up before the unique is killed. It will also make small numbers of players trying to fight it have to stay there a longer time, without requiring an increase to the minimun of players present to kill it. It would also allow for more people to participate, without the unique "melting" to a barrage of damage from a large number of players, yet not increasing the difficulty or danger posed by them. Add a bar to the Mission Progress viewable to the server, similar to rifts The bar should reflect the unique's health. This allows everyone to know an unique has spawned in the server, if its being fought, and how much longer they have to get there. Make rewards automatically go to fighter's inventory Unique rewards such as bone, hats, and tomes should be randomly distributed to those present who participated significantly in the fight similar to how rifts reward players. Bloods, leather and scale should be rewarded to everyone who succesfully dealt damage to the unique. Amounts rewarded from these global rewards should be proportionate to how much damage the player does to the unique or how much healing was done. Larger participation should reward bigger amounts of scale/drake. Skull, meat and animal parts should be obtained from butchering as normal. Add a general location to the Mission Progress bar Similar to the location of avatars, there should be a general location of where the unique is. Given players won't be rewarded for finding and penning uniques any longer, it should be made clearer where they are so they can be found. --- The idea with this suggestion is to make uniques more available to more people and eliminate the arguments surrounding them. Giving everyone a chance at them and their rewards instead of a selected few of players would help accomplish this. Discuss!
  22. 3 likes
    Update! It always happens like this. You think you're ready for something and then you have a think. Suddenly you realize you missed something very important. For me, I missed the ability to establish DNS records for each instance. This lead me to a solution for a problem I inaccurately said was impossible, however. I figured out what I was doing wrong when trying to assign multiple public IPs to a single network adapter. This basically means we can have a DNS record and IP address for each server, no matter how we're hosting it at a given time. It also means we'll be using a new domain name and we'll have fewer DNS resolution issues. I'm currently troubleshooting some connectivity issues, but I hope to have this resolved today. Then it's back on getting the server starting up and working on the database updates needed to populate the IP addresses. The good news there is the update only ever has to happen if I need to delete and recreate the network stack. That stack is so simple though that I should never have to do that. Either way, I'll have a command that does the update in the event it is needed. As for the game server, I was working on getting Spotify's maven-dockerfile plugin working. This way I can generate and push a versioned docker instance of the server on build. The way I'm going about this should see a separate repository for Wurm Live and Wurm Test. I'm aiming to have everything separate down the line. Right now we use a single maven repository which makes things a little more complicated. We can use RELEASE and LATEST, but those are deprecated. I'd also prefer to be a little more specific with what version we're pushing to the live servers. Finally, I'd like this process to be something we can kick off from a web interface - such as jenkins. These are the challenges I'm working to overcome. I'll give more updates as I make more progress. I know this is dragging on longer than I had hoped as I made some quick progress out the gate.
  23. 3 likes
    Per the new update/changes, we BL can cast it on freedom now. Let's meet Saturday at Tap Dance Market to get this done for people's jorunals. *Max Links a 100 channeling priest can have is 11, will be going with the highest channeling person availible to maximize participation. [14:44:47] <Nomadikhan> [14:44:39] You explain how Libila is in the waning crescent and needs you to do a lot more for her so that she may manifest her powers. It seems we BLer's must work harder to fully manifest Libila's powers. It is not able to be casted at this time. Praying and preaching is our duty. I'm sorry if I got anyone's hopes up, but it looks like this will be postponed!
  24. 3 likes
    Great work on designs and smart approach to get our vote ! Well, being pro designer, I can see few imperfections here and can give some advice ( if I may to add my few cents of course ... errr coppers) : I personaly like # 3 but rose under red cross need to be gone completely ! #2 is almost perfect but horizontal line on tall banner need to be same width as vertical just like on regular banner and on wagon make vertical black line visible and same width . #4 is good but change dots on top half part to white and extend folliage on both parts of tall banner, also make red cross bigger to keep symmetry balance and to give it more yin/yang look. #1 is very pretty but suitable perhaps for Cinderella on mission to get her point across , replace cross with huge axe and you get the message BTW where is cross on tall banner ? So my choice so far is # 3 but if you make changes I will pick #4 ! Just because I am Ciderella on mission to restore balance LOL ( well it is personal ) Good luck everyone ! Can't wait to see esults !
  25. 3 likes
    1. Rugs that can be dyed. 2. The ability to dye canopy beds 3. Option to relocate deed token (Freedom only, long cooldown, must be within bounds of existing deed) 4. More slots/capacity on bookshelves (You can't fit very many books on them as it is now) 5. New statues of the gods, craftable with stonecutting (smaller than the arch statues, can substitute as an altar over QL 30) 6. More flower types. (And fuller-looking flowers in pots and planters, they look like sad dying stems.) 7. Better options for dye storage (The alchemist's cabinet is okay, but very limited and the decor on top is repetitive if you have several) 8. Dresses. (Not just for female toons. Let the guys rock a dress and let that chest hair really get it's moment in the spotlight!) 9. Wall decor - tapestries are cool, but there's not enough of them. This is where taxidermy would be awesome. 10. Tall kingdom banners that can be dyed (base freedom model) 11. Glass-making: Windows, glass bottles, wall mirrors 12. New healing cover made from honey+square of cloth (honey is antimicrobial, and these dressing are used in hospitals even now) 13. Recall to tower: Interaction with guard tower that teleports guards not active in combat back to the guard tower. This would remove guards from caves and bridges where they get stuck. 14. Diagonal fences for those less boxy edges. 15. Wagons with plain white cover that can be dyed.