Note: This issue is archived from a previous version of the V&H website. It may be missing images or content.
The Headline
Coming in Mid-November: The Secret of the Coille!
What cubed maze of woodsy wonder is this? Just one of many intriguing new areas within the zone known as Bevyn’s Coille!
‘The Secret of the Coille,’ the first installment in our series, ‘The Voyage Through The Blighted Isles,’ will task the abilities of players in a variety of different ways – difficult foes to battle, a mystery to be solved, a civil war in need of being diffused, and much more! Get ready for all new quests, bosses, achievements, items, recipes, music, monsters, and the list goes on!
Stay tuned for more reveals next week….
WHAT’S NEW
Legendary Crafting
While ‘The Secret of the Coille’ will at long last satisfy anxious players who have been itching for new content, the overall patch also comes with a great many other new improvements and features which we believe all players, especially craft-loving ones, will surely be excited about.
With this patch, for example, comes the introduction of what we are calling, ‘Legendary Crafting.’ The premise is simple, but the effort and perseverance required, not to mention the inherent skill involved in mastering certain recipes, will prove to be refreshingly complex, and ultimately quite rewarding.
Crafters at Level 70 or higher will now have the opportunity to advance their proficiencies and create the ultimate gear by rising in newly assigned ranks specified to designated recipes for weapons and armor, the highest rank being five. As a player levels up in a recipe, the chances of getting better gear increases in that these crafted items will have basic stat boosts – armor and health, elemental damage, etc. Once a crafter has achieved a rank of five in a given recipe (which is by no means an easy accomplishment), they will have the opportunity to create a ‘legendary item.’ And here’s where things get especially interesting, a bit like spinning a wheel of fortune!
The legendary item will randomly be one of nine versions for weapons, and one of four versions for garb (including hat, gloves, boots, belt, and outfit), and each item will differ from the other in terms of stat boosts. While some versions will be uniquely superior, all of the legendary items will have all of their feats, spells, and proficiencies boosted by an entire rank.
There is certainly an element of luck involved, which will add a little spice to crafting now. There is no guarantee that a crafter at Rank Five in a recipe will receive the best gear or armor, and consequently might have to craft it several more times to obtain the most desirable stats. And all of this of course has the added benefit of energizing the in-game economy in that there will likely be an influx of buying and selling seen in the Auction House.
But most of all, Legendary Crafting now provides our craft-loving
players with stimulating new challenges, which will yield exciting
rewards!
(And there’s another exciting new feature coming with The Secret of the
Coille which goes hand in hand with Legendary Crafting…..)
Interview
V&H Player: Karen Souldancer
Player: Karen Souldancer
Server: US 2
Class: Hunter
Villagers & Heroes has often been referred to as being a “niche game.” What are your thoughts on this? (Do you believe this to be true? Why or why not?) I don’t think it is a niche game. Is being family-friendly what makes it niche? If that’s the case, there really is something wrong with the game industry! I don’t always want to play a game where the girl toon’s armour just doesn’t look like it’ll do the job!
If you could pick one Elder Boss in the game to be in your guild, and help on Village Projects, and go on bounty runs with, who would it be and why? Probably Undadar in the Rift. He’s a Leafwad and seems to really like me. Village projects always need beams. I hope he doesn’t mind donating limbs to craft into beams.
As a Hunter, what are some of your favorite aspects about the class? And least favorite? My least favourite aspect of being a hunter is that being ranged dps, the event boss fights just aren’t that interesting when there is a decent sized group. You could mash keys, or go AFK most of the time and probably no one would notice.
My favourite part is solo play or with partner. Whether you use sneak or retreat, you have to be aware of the monsters around you, and what happens when you come out of retreat to fight, or how retreat affects how monsters aggro your partner. How you attack is important too, since the order of attacks can change whether my character wins the fight or dies. Hunter also has several buffs that can be put on yourself or your partner.
How would you describe yourself in five words or less? Ugh! I really don’t know how to answer it. If you have to put something down: “Crazy, lateral, analytical.”
What aspects about Villagers & Heroes first drew you to the game, and keep you playing today? I have friends on both US1 and US2. A bunch of us separately found this game after the game we used to play shutdown. It took me a long time to get into it, as it is a bigger challenge and not as fast paced as other games out there, but eventually I enjoyed the challenge.
If there were to be a movie about your life, who would you cast to play yourself? Is there a female equivalent to Seth Green? Ha, I have no idea why that popped into my head but it seems so appropriate. If not, then Natalie Portman…hey this is a movie right? doesn’t have to be a realistic portrayal!
If you could select and organize a future live stream for V&H, what would it be of? (Specifically, is there anything you would like watch within the game, and possibly learn more about?) I’d love to see someone who understands all the spell fusion combos demonstrate them, and show how much more powerful they can make a party of mixed classes, if that’s the case.
What are some of your all-time favorite board games, and why? Ooh, most of them don’t have an actual board. Are those allowed? I like Munchkin, Chez Geek, and Pictionary. I also love Boggle, if only because I can win by pure brute force – I’ll get more 3 letter words than anyone – it’s not elegantly played at all so no one wants to play against me.
If you could create a new village project of any kind, what would it be? With the training grounds, the empyrean machine, and the improved crafting stations, I already got most of what I wanted in village projects, but I’d love to have a board that gives you a small buff for all villagers. You’d have to complete a task that earns you a buff for the week, such as hero or villager XP bonus, extra loot, or extra supplies.
Do you enjoy PVP games? In your opinion, what are the pros and cons of PVP? I play another game where I play a lot of server vs server. I really enjoy that, as the options are really endless. Once you finish all the fixed content, PvP let’s you keep enjoying a fresh challenge. You aren’t fighting an AI which once you figure out, is the same each time. The con is that there are always people so much better than you that you’re dead before you hit 2 keys – that’s frustrating!
If you could live in any zone in V&H, which would it be and why? Lake Kiwa. With the mountains, forests and water, it really reminds me of where I live. And it’s peaceful, so I could go for a hike in the mountains and forests, or go kayaking in the lakes and streams…. Of course I’d have to visit Shiverspine and hike up to Villar Summit to go skiing.
Which author, living or dead, would you most like to have dinner with? Roald Dahl was my favourite author as a child. He wrote fantastic stories about children who were very poor (poorer than my family had been when I was very young), but they were rich in family, and went on fantastic adventures. Charlie and the Chocolate Factory, and Danny, the Champion of the World were my favourites.
I’m currently reading Bill Bryson’s A Walk in the Woods. He has a very humorous way of making social and political commentary combining anecdotes and statistics. I’d love to talk to him to hear what else he has to say. As crazy as some of his stories sound, being a hiker, I can really seem them happening.
The Sneaky Scribbler
Tragedy in Briny Caverns this weekend: this young toon died while wandering in circles attempting to find her way out. Her faithful skitter stayed by her side until the end, and then it ate her.
One Eye (US2) was happy to feed his sheep cabbage and apples, but drew the line when they asked for a human hand!
You Said It:
Chivalry = Dead
“Every time I sit here my female screams. Gone to clean shower room and give her a shower and let her out.” — Sequeira (US1)
Rift run or…
“Maybe I’ll go drink some cyanide in moderation.” — AngelinaCopperscale (US2)
On master craftsmanship:
“I am tailoring and each time I level up I pass gas.” — Laudia (US2)
Maybe this will help:
“I had a dog one time, a chihuahua that didn’t have teeth, and her lil tongue stook out. So I felt bad and went to a craft store and bought her these lil glasses to wear.” — PINKYPOO (US2)
Royal Guardians
Read it first in The Ledger! We are very pleased to announce The Royal Guardians of the Realm for the month of October! Thank you to these four exceptional players for their outstanding contributions to the game, to the community, and for consistently going above and beyond in all of their efforts for Villagers & Heroes!
- Bless/Selia (EU1)
- Temp512 (US1)
- Grrrh/Mackiai (EU2)
- Curb Stomp Justice (US2)
Behind The Scenes
Damon’s Bug Fixing
‘Bugs’ – a word all of you are much familiar with, and have undoubtedly experienced at one time or another in your game playing adventures. We thought then that you might enjoy getting a behind the scenes look at the bug-squashing process, or more specifically, we’d like to give you a better idea of how exactly certain problems are solved in game development.
Damon needed no coaxing for this! In general, he has little time to indulge in his love of coding, but last week, he decided there was a certain bug that he’d had enough with, and, so, threw himself into the task of personally solving it. Here is Damon himself, to talk with you all about it.
Damon:
We received complaints from some new players about getting stuck on fences and walls. Since Liam is busy on a secret project (shhh), I decided to make the fix. I don’t program often, so it’s fun when I have a chance to do it a little.
The idea for the fix was pretty simple: when a player runs into a wall at an angle, they should slide along the wall instead of just stopping. This way if they just graze a fence, or corner of building, they will slide on past it without having to re-adjust their direction.
Programming simple things is harder than describing them in English. All the small details matter. For example, when the player grazes a surface, what speed should they move along the surface? I am going to use a little math here, but really the ideas can be understood just by looking at the pictures. I think I need a diagram.
The arrow shows where the player would move to if there were no wall. You can see that the arrow intersects the wall at the point of collision. So the first part of the movement should move the player to that point. But what happens after that? My idea is they should slide along the wall, parallel to it. That seems best. But how far and how fast? I figured it should be that part of their movement in the direction of the wall. I am using the word “arrow.” (If this were more formal, I’d use the word vector instead.) We can solve this problem by deciding how these arrows should be set up.
See the arrow labeled “slide”. How long should slide be? Using a branch of math called linear algebra, it’s easy to compute. It’s the projection of remainder along the wall. There’s a really simple formula for that: slide = wall’s unit arrow * ( wall’s unit arrow . remainder arrow) The period in the middle represents the dot product, which sounds fancy, but is really just a simple multiply and add.
The final movement for the player is just this:
final movement arrow = arrow to point of collision + slide arrow
(Aside: Vector math and linear algebra is actually easy stuff compared
to other branches of math. By the way, it forms the basis of 3d graphics
programming.)
The problem gets more complicated when you realize that it’s possible that the slide arrow might *also* collide with another wall. For example, in a corner, or along a cave with a curved wall. So, to handle this, we just process the slide arrow like we processed the initial arrow. That’s what is called an iteration in programming. Iterations like this can be done on computers with loops. A loop is just a piece of code that runs in a circle until a certain condition is met and then it stops. A silly metaphor for this might be an “eat dinner loop”, which would look something like this:
- Take a bite of food
- Chew food and swallow
- If I am still hungry AND there is still food on my plate, go back to step 1.
- Take my plate to the kitchen sink.
Steps 1 through 3 are just a loop.
Here’s a code snippet that shows the solution in C++. I added some comments in it for those readers who are interested in coding. Nothing in this is particularly spectacular or fancy. It’s just bread-and-butter game coding that is done to provide a better user experience.
Point3F v = *adjustedVelocity;
*adjustedVelocity = Point3F( 0.0f, 0.0f, 0.0f);
int iterations = 4;
// This is how many times we process the slide arrow past the initial collision.
// If we did not have this, the loop would potentially be unbounded. A “pathological”
// case could lead to an infinite loop. When this happens, the game will have appeared
// to hang.
bool hitStatic;
// note: the do...while() loop is fairly rare in c++. for() and while() loops are
// more common. It’s actually fun when you have a case where the do...while() loop
// is preferred.
do
{
iterations--;
hitStatic = false;
F32 vLength = v.len();
Point3F vNormal = v; // Create vNormal (unit velocity)
vNormal.normalizeSafe();
// Now we are going to check for a collision between the player and the world
// in 4 different places. If we only checked at one place, a player might be
// be able to run half his body through the wall, or run through a fence that is
// lower than the player’s chest, etc. Even 4 checks is not sufficient for all
// cases - you will notice in V&H *sometimes* you can run through some waist high
// fences. We could do 12 checks or so, and this would eliminate all these problems
// but this would slow the game down more than necessary.
// #1) check chest height
Point3F extendedV = vNormal * (vLength + objRadius + 0.05f);
Point3F end = start + extendedV;
F32 tNearest = 1.0f;
Point3F normalNearest;
// Note: Here comes the magic function - castRay()! This is a so-called “ray cast”
// these check a segment of a line to see if they intersect anything in the world
// like a building, or a rock, etc. Ray casts are very powerful, but they are still
// a little bit slow even on today’s very powerful computers. 20 years ago games
// rarely would use ray casts. Now they are commonplace, but should always be
// used prudently.
if ( obj->getContainer()->castRay( start, end, isStationaryCallback, &rinfo ) )
{
tNearest = rinfo.t;
normalNearest = rinfo.normal;
// setting this flag tells the rest of the function a collision has occurred.
hitStatic = true;
}
// #2) check waist high (belly button!)
Point3F newStart = start;
newStart.z -= obj->getAdjustedObjLen_Z() * 0.15f;
end = newStart + extendedV;
if ( obj->getContainer()->castRay( newStart, end, isStationaryCallback, &rinfo ) )
{
hitStatic = true;
if ( rinfo.t < tNearest )
{
tNearest = rinfo.t;
normalNearest = rinfo.normal;
}
}
// #3) check left shoulder
// create a 2d vector of length objRadius in direction of v
Point3F shoulder = vNormal;
shoulder.normalizeSafe();
shoulder *= objRadius;
newStart = start;
newStart.x = start.x + shoulder.y;
newStart.y = start.y - shoulder.x;
end = newStart + extendedV;
if ( obj->getContainer()->castRay( newStart, end, isStationaryCallback, &rinfo ) )
{
hitStatic = true;
if ( rinfo.t < tNearest )
{
tNearest = rinfo.t;
normalNearest = rinfo.normal;
}
}
// #4) check right shoulder
newStart.x = start.x - shoulder.y;
newStart.y = start.y + shoulder.x;
end = newStart + extendedV;
if ( obj->getContainer()->castRay( newStart, end, isStationaryCallback, &rinfo ) )
{
hitStatic = true;
if ( rinfo.t < tNearest )
{
tNearest = rinfo.t;
normalNearest = rinfo.normal;
}
}
Point3F vLast = v;
// hitStatic means a collision occurred!
// that means we need to compute the “slide vector” that runs parallel
// to the surface of the wall
if ( hitStatic )
{
didHitStatic = true;
// Calculate the delta to the point of collision
F32 colDist = tNearest * extendedV.len();
vLast = getMin( vLength, getMax( colDist - objRadius - 0.05f , 0.0f) ) * vNormal;
Point3F vNext = v - vLast;
normalNearest.z = getMax( normalNearest.z, 0.0f );
normalNearest.normalizeSafe();
vNext -= ( normalNearest * mDot( normalNearest, vNext ) );
// Update for the next iteration
v = vNext;
start += vLast;
}
*adjustedVelocity += vLast;
} while ( iterations && hitStatic );
// Bam! And suddenly the function is done. That’s the power of a loop.