1. Ylands
  2. News

Ylands News

Dev Diary #306 Projecting Projectiles to Snowballs

[h3]Ahoy Ylanders![/h3]

As you might have gathered from the previous programming dev diary, changes always carry the risk of introducing bugs – and this goes double for last minute changes. Programmers are conditioned to avoid risks where possible; after all, it’s our job to make sure that this huge machine of a game works as expected. But in some situations – such as when a winter festival is to be held for the first time and the game lacks throwable snowballs – you just have to pick up the gauntlet and roll with it despite the short timeframe, because you feel that the fun potential is worth the risk.



We already had throwing controls complete for grenades, but wanted the snowballs to behave more like an arrow does, just hitting a target and disappearing instead of exploding violently. Sometimes, programming new features is just like LEGO, you take existing pieces and creatively combine them in new ways, and that’s it. There’s also another way programming is like LEGO – sometimes to get what you want, the only way is to tear the current construction down and rebuild from scratch. Fortunately, for snowballs it was the first case, because we have already invested time into making projectiles work well beforehand.

So let's have a quick look at how projectiles actually work in Ylands! There are two main approaches to simulating motion – kinematics and dynamics. Kinematics is where we directly describe the motion via an equation based on position, velocity, and acceleration. Dynamics behaves more closely to how the actual physics works, by applying various forces to an object, which can then generate motion based on its physical properties – mass, inertia, shape, etc.

Looks like dynamics must be the way to go, being the more accurate option, right? Well, there's a catch. Due to its complexity, dynamic motion is much harder to predict, analyze, and make deterministic – key properties for a multiplayer game, since they allow us to have exactly the same projectile trajectory for all players. In fact, most motion in Ylands is kinematic, except for vehicles and ragdolls, which are too complex for kinematics. Choosing a simpler but a more controllable approach where possible is actually very common in game development! So we opt to simulate projectiles via kinematics, but we need an equation for projectile motion. Very fast projectiles such as bullets can be thought of as having a constant velocity, and thus moving on a line. Having an initial position P₀ and velocity v, their position at time t after firing can be easily calculated as P = P₀ + v ⋅ t. In fact, we can take bullets even further, thinking of their movement as instantaneous – their velocity is so large that they can reach any point we shoot at immediately after they are fired. This simplifies the simulation to checking whether any object lies in the line of fire between the origin point and the target point, which the physics engine can conveniently calculate for us via a raycast query.

The simplified equation can only take us so far however, because it excludes the effects of a very common force - gravity. With bullets, we could ignore it because the initial velocity was so large that we hit the target before gravity has a significant impact on the trajectory. But that won't work for slower moving objects such as arrows, grenades, and, you've guessed it, snowballs. What gravity does is it applies uniform downward acceleration (gravitational acceleration) to the object, building up velocity over time. The equation for uniformly accelerated motion is P = P₀ + (a ⋅ t²) / 2 where a is the acceleration, in our case the gravitational acceleration g. If we combine this with the effect of initial velocity as seen on the bullets, we get the final equation P = P₀ + v ⋅ t + (g ⋅ t²) / 2. This is a quadratic equation, meaning that the final trajectory will be a parabolic curve – which is what we expect from snowballs and arrows.

Once we have the equation for calculating projectile position at time t, it becomes a simple problem of tracking how much time has elapsed since the shot was fired and moving the projectile to the calculated position based on current time. Except now we are ignoring all the obstacles along the way! First thing that comes to mind would be checking for collisions at the current position – if we overlap with some object, we have just hit it and can deal damage to it.

Unfortunately, this won’t work for fast projectiles and thin obstacles – the way the game simulation works, we can only update the projectile position after a fixed amount of time passes from the previous update. If we just check the previous and current positions there might be no collisions, but only because we have already fully passed through the obstacle – a phenomenon known as “tunneling”. But hey, we’ve already solved this for bullets! We can again look at the previous and current position and check if anything lies between these two points via a physics engine raycast. If we hit something, we determine whether the obstacle stops the projectile movement – in which case we stick the projectile into it and apply damage – or if the projectile should pass through the obstacle unhindered.

And that’s the gist of it! This small bit of kinematics allows you to throw a snowball (or a grenade if you’re not feeling particularly festive) in the face of your fellow Ylanders. It also allowed us to implement gun and bow aim assist for mobile and gamepad controls in 2.2, so stay tuned for that – and stay classy!

Dev Diary #305 Ylands 2023 in numbers

[h3]Ahoy Ylanders![/h3]

Patrik from marketing here! 2023 was a wild one for Ylands. Just consider the craziest thing, instead of the awaited 1.12 version we released the biggest update in Ylands history: the 2.0. Even though this was the bomb, there were so many other important numbers throughout last year. Let's see some marketing and game data!



[h2]Marketing data[/h2]

You sent 101 691 messages and spoke for 76 243 minutes on the Ylands Discord server. What can I say, you just love to chat and admire each other's work. If you want to find some friends to play with, our Discord server is the best place for you. Now, we know, that you were not bored, and here is proof that the Ylands Marketing team also had a lot of fun this year.

4 Ylands Streams were held, 1 of those was quite a revolution as it took place on Discord, being closer to you all as we were playing games together, competing, chatting, and chilling. We posted over 300 Posts on Facebook, Instagram and Twitter X, and within traditional weekly community screenshots, we shared 156 of your in-game screenshots and amazing builds. From the video perspective, we presented the world with 2 trailers and 61 short videos for our TikTok and YouTube. If you are not following us on some of these social media you should definitely give it a shot!

We held 18 competitions and contests, and delivered at least triple the amount of prizes and giveaway items! We simply don't know the precise number here as sometimes, we just have to reward you randomly for being so awesome and helpful to each other. Last but not least we released 50 Dev Diaries and 21 maintenances were run.

But let's get back to you, Ylanders!

[h2]Game data[/h2]

5 617 blueprints, yes that many amazing creations were uploaded to the blueprint shop by you, Ylanders! And what about all the wonders you accomplished directly in the world of Ylands? Oh boy! You picked up and cut down 1 245 456 plants, tamed 11 227 animals out of which there were 1 777 horses, and crafted 26 705 134 items. Surprisingly enough, among these 26 milion, there was only a single cultist skirt crafted. Those are all amazing numbers and we couldn't be happier.

Thank you so much for all the time that you spent with us, whether it was chatting with other Ylanders on Discord, creating blueprints and sending us your screenshots, watching our videos and liking our social media posts, and most importantly for the time you've spent in the world of Ylands.

We wish you to Stay Classy in 2024!

Dev Diary #304 Handbook Rewards Enhancing your Journey

Hello Ylanders,

We’re back with an exciting blend of news about our latest feature: Handbook Rewards. This addition is all about enriching your entire journey in Ylands, with a special focus on those initial, crucial hours of gameplay.




A Rewarding Start

We understand that the first few hours in Ylands can be decisive. Players who overcome the initial learning curve tend to find deeper enjoyment and stay longer. With this in mind, Handbook Rewards are designed to make the early stages more engaging and less daunting. By offering meaningful rewards for early tasks, we aim to help new players find their footing and uncover the true potential of Ylands.

Rewards Across Your Journey

But it’s not just about the start. Handbook Rewards bring value at every stage of your adventure. Whether you’re gathering essential resources, unlocking unique and powerful weapons, or acquiring special collectibles, these rewards are tailored to enhance your experience.

Streamlining Progression

A key goal of Handbook Rewards is to offer a smoother progression path. These rewards come in at just the right time to help you unlock new regions and tackle the challenges ahead. It’s about reducing the grind and increasing the enjoyment of each milestone you reach. While also giving you a long term goal to aim for in the case of Story Chapters or some more difficult Region conquering Diary Events.

Looking Forward

Handbook Rewards represent just one step in our ongoing effort to make Ylands more engaging. We see great potential in integrating this system with future features, like daily quests or login bonuses, to continually enhance your gaming experience.

Your Feedback, Our Compass

As you delve into this new feature, we’re eager to hear from you. Your experiences, especially during the early stages of the game, are invaluable in helping us refine and evolve the Handbook Rewards system.

Thank you for being part of the Ylands community. Your adventures, challenges, and achievements are what inspire us to keep improving and expanding the world of Ylands.

Happy exploring, and here’s to many more rewarding adventures ahead!



Stay Classy!

Dev Diary #303 The Journey of a Feature

Ahoy Ylanders!

Updates are consistently geared toward enhancing your gaming experience. Each update brings a combination of significant features and behind-the-scenes improvements to ensure smoother and more enjoyable gameplay. Let's delve into the journey of these features.



Wish List
Our wish list is a culmination of various sources, including community suggestions, insights from focus tests, brainstorming sessions with our designers, and feedback from our team members. We also take into account thoughts gathered from QA feedback sessions, creating a comprehensive pool of ideas.

Priorities
Every update is driven by specific goals, such as improving recipes for new players or transforming sailing into a thrilling adventure. We compile a list of approximately 40 objectives for each update, aiming for a balance between fun and functionality.

Design
The Feature Owner plays a crucial role in crafting a design document with mockups to visualize ideas. Some features are even prototyped using our Editor, adding a tangible dimension to the creative process.

Design Review
A creative huddle takes place involving the Project Lead, Producer, and Designers. Their focused brainstorming session ensures alignment with our overall vision and addresses any potential challenges.

Implementation
With a detailed plan in place, we share our ideas with the implementation team. Each feature follows a specific timeline, accompanied by status meetings and vigilant oversight to ensure a smooth transition from concept to reality.

Feature Review
We did it! Upon completion, the Project Lead and Producer evaluate the feature's integration into the game, considering its overall enjoyment factor. Other developers also provide feedback during this phase.

Feature is Ready
The moment of truth arrives as QA takes center stage. Rigorous testing is conducted to identify and address any bugs, ensuring the feature is polished and ready for release.

As our team eagerly tackles the next project, they remain committed to resolving any issues promptly. We're excited for you to experience the new feature and have a fantastic time with it! 🚀🎮

And that is a feature's journey from the point of view of Production. Do you have any questions about this process? Let us know in the comments!

Stay Classy!

Dev Diary #302 The Nature of Testing

[h3]Ahoy Adventurers![/h3]

In this week's dev diary, us in the QA department have been asked to talk about game dev experience from our point of view. We've been scratching our heads how to convey the Tester Experience TM and after some thought and pondering, we've decided to focus on the life cycle of an update and put forth the following description of events. As you read this account of ours, try to immerse yourself in the spirit of good-natured humor sprinkled with just a tiny bit of desperation. We do love game dev in general and our game in particular after all, but perhaps being tasked with finding the mistakes and shortcomings in everything we touch reflects in the mentality and jokes we make. But all we do, we do to help make Ylands as amazing as possible.

[h2]Ground Zero - An earthquake update hits the floor[/h2]

The culmination of several months' worth of pressure effort and preparations. At long last, an update is released, however the work isn't done here by any means. For us at QA headquarters, the ride continues and the show goes on.

During the release maintenance window, we scramble to double check that crucial systems and infrastructure work. Some things we can reasonably expect to work once live, but things like logging into the app, the workshop, servers, exploration and similar cornerstones of the game can hide issues we only discover last minute. Usually things are fine, though sometimes the maintenance window needs to be prolonged for us to be able to deliver. And in the absolute worst case scenario, if a blocker is only uncovered now, we have the option to break the glass and hit the Big Red Button to roll back the update, restore the previous versions and dive deep into what went wrong. Needless to say, nobody likes to even consider this option, least of all us at QA HQ.

Let's assume things went more or less well, losses are within parameters and move on to the next stage. Our wonderful community manager announces that the maintenance is over and an update is live and we start dealing with the fallout.



[h2]First responders & Damage control[/h2]

It's close to assured that there will be issues to iron out after an update. Nobody is perfect after all, and while all of us in the dev team give it our best to achieve that state, it's ultimately impossible. So, in the first days or possibly weeks after an update, we spend much of our time investigating any issues that eluded attention until now and roll out hotfixes and patches to control the fallout. The tempo is rapid and while we all long for relief in this time, we know it's important to keep the pressure up. Rapid QA response to fixes and other commits, attention to detail and in some cases, figuring out why a critical issue flew under the radar are the items on the agenda in this period. Forecast: crunches with a chance of meatballs. Eventually, the most burning issues are wrangled and we can finally let out a tired sigh of relief. For a short while, it's done.

[h2]Humanitarian relief[/h2]

A thick line between the previous update and the next has been drawn and we finally start looking to the future. We regain our strength, we refocus, we learn. The length of this window heavily depends on how many patches were pushed for the last update and there always exists the possibility that relief never comes - the sheer amount of necessary work takes so long that we can find ourselves deep into the next update's life cycle even before the previous one is over. Speaking of the next update...

[h2]Another crisis on the horizon
[/h2]
When an earthquake hits, a tsunami may follow. The development of features and new content doesn't halt just because things needed fixing. Eventually, we need to turn our eyes to what's on the horizon. There is a surge in workload as requests for testing start coming en masse and we give one last tearful wave to the short period of reprieve as it sails away. The quicker we dispatch these tests, the more time for adjustments, polish and feedback there is and, as it logically follows, the better the state these new features will be in. And as we send back bugs and feedback, retest, report newly found bugs, return whatever wasn't sufficiently improved, rinse and repeat.

[h2]Damage projections[/h2]

As the ongoing cycle matures, there comes a time when everyone needs to take a step back and look at the larger picture. Before the dev team fully commits to a given state of the game, feature states need to be re-evaluated and prioritized. Sometimes you can be enthusiastically crunching away at a feature but find out you didn't quite have the time to get it done, sometimes the core is done but during development you find out there are simply too many issues for you to be able to fix before it's too late and sometimes, a feature was just too large and took so long to finish that we at QA HQ simply don't have the time and people to properly make sure it's in the best possible state. This is the point where hard decisions have to be made. Will a feature be postponed? Will its scope be reduced? And will it still be viable after that? Sometimes it is better to postpone than to release something we're not happy with, after all.

[h2]A tsunami Data lock confirmed[/h2]

The data just came in from the boys in the lab and it's dire. The vague threat of another disaster has taken a more concrete shape, the dreaded data lock. From here on out, no new features get in and it's all about polish, fixes and making sure everything works together. And even then, every new merge needs to be considered carefully - is it important enough? Is it safe? Can it break something else? Is it a new issue or something we've been able to live with already? These and many more questions are behind every new ticket we throw at the rest of the dev team from now on.

[h2]Evacuation and infrastructure reinforcement[/h2]

After data lock, a new branch is built - Release Candidate. It is here that any merges deemed important and safe enough go and are tested in the name of stabilizing the build and making sure it comes out in it's best form. For us at QA HQ, that's not all however. It is at this moment that we start retesting any and all new things, be it new features or tweaks of existing ones. No ticket gets left behind as we have to make sure that nothing broke between us first seeing a ticket and now, after hundreds and hundreds of commits that could have potentially influenced whatever we're looking at. We also launch a large scale integrity test of the whole game around this time to ensure that there are no critical weak points in existing systems. It is a long and laborious process, but we couldn't proceed without it.

[h2]Simulations and drills[/h2]

Sometimes, when there is a reasonable need, it is prudent to prepare the public at large for the coming disaster. This is where an experimental build might be released for you all to romp around in once the RC build is in a reasonable enough state and there is need for community feedback on the changes the dev team has prepared. This spells another workload surge for us as we need to go through your reports and figure out what's already known, what's new, what needs to be fixed ASAP and to compile your feedback to figure out how to best utilize it. Often times balance changes are made based off of what we gather during this period, which then need to be tested once again.

[h2]The tide draws near[/h2]

As we're closing in, mobile and Windows Store submissions need to be covered as well. These can take anywhere between a few days up to weeks to resolve for each submission. The workflow changes somewhat during this time as we need to allocate more time to testing on these platforms before their respective submissions to ensure the builds are healthy, and once a submission has been dispatched we can then reallocate all of that time back onto the main game to run the same tests on the steam build.

[h2]The quiet before the storm[/h2]

It's almost here. The suspense is incredible. Tensions are high once again. Everything seems quiet, things look fine. Maybe it's the job, maybe it's just who we are as people, but whenever things go too well, all of us here at QA HQ start sweating bullets. Like any leadup to a big event, this is a very stressful time. After all, we could always find a last-minute blocker, which is a scenario nobody wants to see. In theory, should such a scenario occur, this is where QA can veto a build instead of giving it the coveted green light. This means an update could be postponed by a week or two to fix something absolutely crucial to the release, but schedule is often very tight and the release process is a complex matter, so unless it's something that renders the game or a large part of it unusable, we often need to proceed anyway. As a result, we might start getting first responders ready even before the disaster hits. During the last moments of this journey, an announcement about an upcoming maintenance is released to the public and soon after, the big moment is upon us all.

[h2]Ground Zero - A tsunami An update hits the shore[/h2]

This seems familiar, doesn't it? Almost like we've been here before, one might say.

As we close this entry here at QA HQ, we would like to add that there are many aspects of our work, additional intricacies and processes that might even differ between different parts of the game. Those are, however, stories for another time.

Stay QAssy!