Status Update

Hello Hunters,

Welcome to this week’s Status Update brought to you from the EW Studio in Stockholm. For us in Sweden it’s a short work week as we will be off for an extended Easter weekend soon and back in the office next Tuesday. In Sweden it’s a tradition to go on an Easter egg hunt (chocolate and real ones) during the Easter time and so it’s no surprise that this year’s competitions, Mission and rewards are inspired by it.

‘Eggciting’ Easter Competitions and Mission 2017

splashscreen_easter2017_announce

Our team around game designer Patrick has worked on a bunch of fun Easter competitions for us to play through during the Easter time. The competitions will run for a total of 7 days, starting today and ending on the 19th of April, with a new competition being released on a daily basis.

Johan, one of our artists, apparently had a secret meeting with the Easter bunny. He scored some nice rewards and beautiful Easter trophies for the winners of all individual daily competitions.

  • 1st Place: Trophy + 150 em$
  • 2nd Place: Trophy + 100 em$
  • 3rd Place: Trophy + 50 em$
  • 4th-10th Place: Trophy + 25 em$

easter_2017_goldeaster_2017_silvereaster_2017_bronzeeaster_2017_hematite

 

 

During the Easter Event you can also go on an egg hunt yourself, in your favorite Reserves. Activate the ‘Easter Mission 2017: Gotta collect ’em all!’ in the Mission section and use your HunterMate to collect a total of:

  • 20 Bronze Easter Eggs
  • 10 Silver Easter Eggs
  • 5 Gold Easter Eggs

Here is the unique trophy you will get after completing the mission:

easter_2017_missionAlong with all this you will find a great selection of limited time offers and bundles tailored to the daily competitions in our shop, so make sure to check it out.

For more information follow us on Twitter where we will announce the new competitions and sales on a daily basis.

Best of luck to all hunters!

About feeders

As mentioned in yesterday’s game update we have performed some changes on the feeder system, after having worked a lot with the feedback from our community. If you shoot an animal in baiting state within feeder range the range will be reduced to minimum and then slowly expand again over time until it hits its full range again after 30 minutes, while still attracting animals. After receiving questions about the concrete ranges for the penalty we will look into this further and see if we can share this information.

Adding to this the amount of feeders that can be placed in a hunting reserve has been raised from 3 to 4. We hope you’ll enjoy these changes and find them helpful!

Is it a bush or a dog?

splashscreen_dogbackpacks1

Fresh in from the Doggy fashion week are the latest backpack variations for our furry friends in Summer Swamp, Fall Forest & Arctic Winter camouflage. Get the right camo for every environment!

All bundled up

splashscreen_crossbundlepromo1

If you haven’t yet purchased theHunter: Call of the Wild or have a friend or family member you’d like to take with you on a hunt with you here’s the perfect opportunity for you to get the best out of both games. We bundled Call of the Wild together with a 3 months membership and a Scent Hound for theHunter: Classic, with a 20% discount. Make sure to check it out here.

Customer Support during Easter Holidays

Due to the Easter Holidays, theHunter Support Team will be unavailable from cease work on Thursday 13 April 2017 until the start of work on Tuesday 18 April 2017. We will reply to any support requests on our return to work.

Operation ‘Mystery Doodle’

You may have read that Alena hinted something about a new species being worked on in last weeks Status update. I got curious, went to have a look and found this doodle flying around in the design area. Although I tried to bribe them with sweets and coffee the Devs refuse to share the answer with me (apparently they’re afraid I can’t keep a secret…), so I’ll need your help to find out what species exactly we’re dealing with! I think the shape of the horns is the key here!

Sheep

Let us know what you think about this week’s Status update and of course your theories for the mystery doodle in the Discussion thread in our Forum. We wish you, your families and friends a happy Easter, a good weekend and see you all again on Tuesday. 😀

Happy Hunting!

Discussion

Share this
Facebooktwitterredditmail

Game Update

The penalty system for feeders has been changed.

  • How it worked previously: If you shot an animal in baiting state within feeder range the feeder would not attract new animals for 30 minutes.
  • How it works now: If you shoot an animal in baiting state within feeder range the range will be reduced to minimum and then slowly expand again over time until it hits its full range again after 30 minutes, while still attracting animals.
  • The amount of feeders that can be placed in a hunting reserve has been raised from 3 to 4.
  • The Big Horn Sheep animation for hits has been fixed.

Discussion

Share this
Facebooktwitterredditmail

Status Update

Howdy hunters,

Welcome to another, slightly belated, status update from us at theHunter Classic team.

Baiting overhaul – review
Last week we released a baiting overhaul together with brand new mineral feeders for Feral Goats. We’ve been closely watching the conversations and metrics around this big update and are happy to see that the baiting has been reinstated in its realms again. Awesome. You can see a video from HooCairs comparing hog baiting after the update to the old days here.

As always, we filtered all the feedback we received through the internal sieve of game design, technical and resource limitations and what not, and there will be some minor changes to the system: for one, we will be increasing the amount of feeders / barrels per reserve, after the next patch you will be able to place four of those. We think that this will be especially beneficial in Bushrangers Run, but also in Settlers Creek.

Secondly, we are currently testing a slightly different penalty system, which has probably been the most discussed aspect. While we won’t get rid of it completely in order to balance the benefits that baiting offers, we’ve decided to try to find a compromise and make the penalty a tiny bit more forgiving and dynamic. More details about this in the next game update.

We saw that some people complained about the goat mineral feeders not yielding enough goats. The attraction radius of those is smaller than that of bear barrels and pig feeders by game design, which means you have to be very careful about the location of your mineral feeder to find that perfect spot yielding you tons of different-horned trophies.

16 GA Shotgun & Comp 16 Gauge Lockdown

SplashScreen_weapon_16gashotgun
This week we saw the release of our new unique shotgun. The 16 GA side-by-side. It’s a gorgeous piece of weaponry which the team has poured a lot of love into, starting from the design by Patrick, followed by the 3D model by Mattias (who you should have seen in our Lock&Learn yesterday), excellent animations by Moe, sound by Greg and client code by Patrik. Oh, and there are two multispecies competitions running right now, in case you want to level up your new shotgun AND compete for some fame and glory.

New species? Again?
Yes! Our animal team has been on a creative streak lately and we’ve been working on yet another new species. It’s been one of the most requested animals for Whiterime Ridge and we’re now certain that we are bringing this guy (or gal) to your arctic landscapes hopefully very soon. Now, who shall that be? 😉

Hunt-a-thon Winners
Last week we ran a competition Hunta-a-thon to win theHunter Call of the Wild. 646 players have gotten their scores on the leaderboard and, as promised, we raffled 5 copied of theHunter: Call of the Wild and 5 theHunter: Call of the Wild T-Shirts amongst them. And the winners are:
*Free games:*
seagull653
sleepycarp
OldMM1966
Nimrodfuchs
Ande644m

*T-Shirts:*
MaxJorma
abstandshalter
m0nngis
LongBowDano
Velja1234

We will be in touch with the winners to discuss the logistics. Congratulations and thank you everyone who took part!

Goodbye to David and Dick
David_NAOutdoorsFinally, we are sad to announce that our support manager and long-term veteran David Lucas aka NAOutdoors, has left the team and will not work with theHunter anymore. David has been with the game since the very beginning, he is an absolute veteran of theHunter and we can truly say that it won’t be the same without him. Thank you David, for everything, and happy hunting wherever life leads you!

Today is the last day of another long-term team veteran, animator Dick Sjöström. He Dick_Sjöströmhas shared with us his first and last commit on theHunter:

*First Submit (Rangefinder):*
Changelist: 324121
Date Submitted: 2010-06-09 16:38:12

*Last Submit (XXX – something exciting yet secret):*
Changelist: 1189820
Date Submitted: 2017-04-07 09:49:24

Thank you Dick, for your wonderful scent hound animations, among others, and the bottomless well of honesty and one-of-a-kindness.

On a final short note, as yours truly will be away for vacations in the next week and around Easter, our community manager Stefan will take over the status update for next week and let you know what’s cooking.

Happy hunting!

Discussion

Share this
Facebooktwitterredditmail

Baiting System Overhaul

Background

For quite some time many players have been reporting issues with the baiting system in theHunter, chief among the symptoms being a lack of activity at bait sites. Although not an opinion shared by everyone, it seems the general consensus among the active community is that the system was altered and “broken” at some point. Some players still enjoy acceptable and in some cases generous yields at their bait sites, while others have no such luck. This inconsistency, especially for those adversely affected, has cast a shadow over the value bait sites add to the game.

Overhaul

The good news is we have spent a great deal of time reworking the system and are pleased to introduce brand new, simplified baiting mechanics. We consulted a small panel of trusted advisors from within the community during the game design review process and we feel that the new system offers a balanced and reasonable compromise. Please read this document carefully as it contains important information about how the new baiting system works, how it compares to the old system, and what players should expect in terms of results. It is important to emphasise at this stage that the old system generated far more baited animals at bait sites than Expansive Worlds ever intended from a game balance perspective in the original game design. For that reason, players should not expect the new system to be comparable.

brown_bears_1

The “Good” Old Days

The activity at a bait site in the old system was determined by a lot of variables, most of which the player had no knowledge of, or control over. For example when a feeder was placed in a reserve, the client determined how much of the attraction zone (imagine an invisible circle around the feeder) overlapped the spawn map (imagine invisible patches on the map where species can spawn) for the species in question. The result was a figure from zero to 100, based on the percentage overlap. So if approximately 75% of the feeder overlapped the spawn map for that species, the maximum attraction level that feeder could ever reach would be 75. That is just one example, there were many other variables involved, making the system utterly complicated.

Simplify

One of the objectives when setting out to rework the baiting system was to simplify it. Not only to make the experience for the players more consistent and hopefully more enjoyable, but to make the system easier to debug, maintain, and further develop in the future. To simplify the system, some important decisions were made which have changed how baiting works now. We understand that some players may have preferred a more complex system which had a lot of unknown variables resulting in unpredictable behaviour, but it is our hope that the new system will offer better value without removing all of the challenge from baiting.

Attraction

The new system no longer has any concept of attraction, formerly a number between zero and 100. A feeder now has a status, and this can either be “active”, “inactive”, or “penalty”.

  • Active: The feeder contains bait and is capable of baiting species.
  • Inactive: The feeder may or may not contain bait but is incapable of baiting species.
  • Penalty: The feeder is currently disabled because a baited animal was shot at the site.

info_popup

When you place a new feeder in a reserve and add some bait to it, the initial status of the feeder will be inactive, for a period of 4 hours (real time). During that four hour period, the feeder will not bait any animals. After the 4 hour “warm-up” period, the status of the feeder will change to active and two things will happen; the bait will start to deplete and the feeder will be capable of baiting animals.

If you let a feeder run out of bait, the next time you add bait the 4 hour “warm-up” period will start again. This can be avoided by keeping feeders topped up with bait at all times. Topping up a feeder which already contains bait does not restart the “warm-up” period. A feeder that is kept topped up with bait will always remain active and capable of baiting animals.

If you shoot a baited animal near a feeder, a 30 minute (real time) penalty is applied to that feeder. During this time the status of the feeder will change to penalty, and the feeder will no longer bait any animals. After the 30 minute penalty period, the feeder will return to active status and will start baiting animals again. The penalty cannot be circumvented by ending the current hunt and starting a new one. In a multiplayer game, only the host can invoke the penalty by shooting a baited animal at a feeder.

feral_hogs_2

Bait Consumption

This aspect of baiting has also been simplified. Bait is now consumed in a constant linear rate, whereas before it was determined by the attraction level of the feeder. The bait consumption rate is 10 units every 24 hours (real time). That means a full feeder will run out of bait exactly 5 days after being topped up.

Location, Location, Location

The location of your feeders still matters, and for that reason we have simplified this process too. Now, if you attempt to place a feeder in a location where the corresponding animal does not spawn, you will not be able to and will receive a message to this effect. This is to avoid a situation where a feeder generates no activity. This does not mean location becomes irrelevant. Some locations will still generate better results than others. This is when it becomes important to discuss locations with hunting buddies and fellow community members.

feral_goats_2

Expected Numbers

For most players an important question now will be “how many bears or hogs can I expect to see at my feeders now that the system has been overhauled?”, and the answer is, it still depends on location. The new system has been written in such a way that results should be more consistent. If you place a bear feeder in the same location as your hunting buddy, you should see pretty similar results in most hunts. There will always be variations in activity due to the random nature of the spawning system which theHunter uses, but in general results should be more predictable.

feral_hogs_1

Existing Feeders

If you have an existing feeder and want to start using it again, all you have to do is add some bait. Depending on the current location, you may want to consider moving it if you feel the area is not optimal. Once you add bait to an empty feeder, remember the 4 hour “warm-up” period will start and during this phase the status of the feeder will be inactive.

If you already have feeders with bait in them, please remember that the new system is now in place and consequently, you may notice differences in the rate of bait consumption. This is particularly true if you have a feeder in a bad area which previously resulted in a low bait consumption rate. The result is a possible drop in bait in some feeders. This is not a bug and is to be expected in some cases. Unfortunately this is unavoidable but should balance out in the long run.

Technical Overview

Roberto (our lead client programmer) and I were tasked with the baiting system overhaul, and neither of us had any idea how the previous system worked, or what would be involved in beating it into shape for the new design. As is the case with many things in theHunter, it was far more complicated than it perhaps needed to be, and everyone who had ever touched the system before had either left the company, or left the team to work on other projects and probably forgot the words “baiting system” forever.

Björn Öjlert, the original game designer now working on theHunter: Call of the Wild, kindly gave us valuable feedback on how the original system was supposed to work, which helped us understand the reasoning behind some of the existing code. Needless to say though, it was still akin to wading through porridge, at least in the beginning.

The baiting system, from a technical perspective, is essentially a combination of interactions between client and backend. When you start a hunting session, the client requests information from the backend. Included in this data is information for each feeder on that reserve, including a series of timestamps (when the feeder was placed, when bait was last added, and so on), information about how much bait is in the feeder now, how much bait was in the feeder after the last fill, and more. During the hunt, any interactions with a feeder by the player (e.g. moving a feeder, placing a new feeder, filling a feeder, shooting a baited animal at a feeder) result in calls to the backend API to update the data for that feeder.

When you open the launcher and view a reserve map on which you have a feeder, a similar API call is made to the backend to obtain information for that feeder, which drives the mouse-over pop-up box containing the feeder’s status and bait level.

code

Final Thoughts

As with any change to a system which has been in place for a considerable amount of time, we acknowledge that these changes will evoke various reactions. Some might find the new system too simple; others might welcome the change and consistency. We endeavoured to find a compromise and we are happy with the results.

From a development point of view, we have made good progress and taken a big step forward in terms of understanding how the baiting system works. Very little of the original backend code remains, and what exists now has been optimised. We now have a solid platform upon which we can build in the future, and one which made adding the goat mineral feeders far easier than it would have been with the old system.

We can now, without any shadow of a doubt, say “the baiting system works exactly as designed”. We hope you enjoy the new system.

Discussion

Share this
Facebooktwitterredditmail

Status Update

Hey all you good hunters,

Have we got good news for you? I think we do!

Overhauled gameplay for feeders and bait barrels

baitupdate1

After some weeks of blood, sweat and tears, we are finally ready to introduce the simplified and improved baiting system. From its initial implementation, the system has been a complicated interplay of client and server code which made it not only prone to breakage, but also difficult to troubleshoot. Our primary goal was to simplify it to make it easier for players to understand and for us to maintain, all while keeping the hunting fun in check and not throwing game balance out of the window. Not the easiest task but hopefully we succeeded. We are curious to hear you feedback! Please make sure to read this detailed developer blog from David (caledonianblues) who worked closely with Roberto, our lead client programmer. Together they have been responsible for the server and client-side sorcery of this project.

It’s time to bait dem goats!

splashscreen_mineralblock

On that note, today we are also adding a new player in the baiting gallery of theHunter. Meet the Mineral Feeder for Feral Goats! It works in the same way as bear barrels and hog feeders, you place the feeder in a location where the goats are likely to roam, put a special mineral block in it (you can buy it for both em$ and gm$), put up a tripod or a tower and wait for billies and nannies to come by to lick the delicious salt. Have fun with new feeders!

Hunt-a-thon to win theHunter: Call of the Wild

We’ve teamed up with the theHunter: Call of the Wild team to bring you a special Hunt-a-thon competition in which you can get a piece of both games. Not only it will be our first Feral Goat challenge, but we are also going to raffle 5 copies of theHunter: Call of the Wild (and 5 special theHunter: Call of the Wild t-shirts) among all players who will get a score in it! The competition starts tomorrow, but you can already join it on the competition page.

Reserve load-out bundles

We’ve just put a couple of freshly baked load-out bundles from the winners of our community competition in the store. Here is the Rougarou Bayou one from Moohy55 and here is the one for Bushrangers Run from Takedown87. You can find the previously released bundles for Val-des-Bois from waiora, Hemmeldal from SloNeZ, Redfeather Falls from holliday50 (Hawkeye), Logger’s Point from WNorton.

That’s it from us for today.

Happy hunting!

Discussion

Share this
Facebooktwitterredditmail

Status Update

Hello hunters,

Here comes your weekly batch of news from the theHunter headquarters!

Here we goat again…

Earlier this week we released our awesome Feral Goats onto Bushrangers Run and, judging by your feedback, you’ve been enjoying hunting them a lot! We also think the goats bring a special touch to a reserve that has been lacking a fulfilling hunting experience for a long time.

feral_goat_lowby

Piebald Black Feral Goat harvested by community member lowby

The diversity of fur, colours and horns is something that makes this species unique and fun. Here is the thread for you to check all of them and how about post one of your own trophies? The “melanistic” ones that you could see in your hunt history post-release are actually the common black variation. Earlier today we released a patch fixing it and your hunting expeditions should now show the corrected info.

Right now there is also a pretty high ratio of piebalds and greys of different kinds, which are supposed to be slightly rarer than (think three times as rare) common ones. You can regard this as a release gift, we will tweak the ratio slightly in the next patch. 😉

Currently our goats can only be hunted using the good old spot-and-stalk method, but we are soon going to introduce mineral goat feeders (together with nifty salt blocks) to add an additional level to their hunting gameplay. Stay tuned!

Baiting System Review

Together with the new mineral goat feeders we will also be releasing the overhauled version of the baiting system for bear barrels and hog feeders. The new system features significantly simplified gameplay which we believe will offer players a more consistent experience. It also makes the system a lot easier to work with in the future. Upon release, David is planning to share background info about the changes to the system and technical specifications in a developer blog similar to the one Luna created for HS 2.0.

Deployable towers and scent hounds promotion

Today is the last day you can take advantage of our bonus gift promotion during which you can get a scent hound (female, light coat) and Deployable hunting towers Bare Wood when buying em$. There are a couple of hours left of the promotion, so hurry up while you still can. We’ve also added some heavy discounts to a lot of items in the store for you to spend your newly acquired em$ on.

SplashScreen_EmTops_2017_03

Last but not the least, say hello to our new team member. His name is Linus and he has recently joined us as a Client Programmer. Read his intro below and say hello in the forums. You know the drill.

Welcome Linus!

linusYo \o

My name is Linus Sköld, I recently joined theHunter Classic team as a programmer after having worked on theHunter: Call of the Wild. I started my internship at Avalanche Studios back in the end of August 2016, this is part of the last year of my education at The Game Assembly where I (obviously) studied programming.

Some of my favourite games are World of Warcraft (huge lore nerd), Star Wars Jedi Knight Jedi Academy & Outcast, most (not 13) of the Final Fantasy games, Bravely Default & Second, Fire Emblem . There simply are too many great games to count that I have as favourite, but if you need to have a strong defined ONE game it’s World of Warcraft, 10 years of my life has gone into that game and I ain’t stopping now.

Other than playing tons of games in my spare time I do a lot of programming on my own to learn more about how things work and how to come up with smarter solutions, I also read manga, watch anime, and go to the gym to not have my back destroyed.

I hope to get along with you all, see you in the wilds!

That’s it from us for today, happy hunting!

Discussion

Share this
Facebooktwitterredditmail

Game Update

  • New species – Feral Goats! You can find them all over Bushrangers Run.

splashscreen_feralgoat_release

Game Design notes: Our Feral Goats have a lot of different fur textures (three common ones and a bunch of rares, all of them are present in both short and long fur variations). Their horns also vary significantly, featuring four main horn types of various sizes, with different degrees of rarity which, together with the assorted fur, provides a wonderful variety.

The scoring is based on CIC scoring. However, we had to make some adjustments to make it work for our game, hence the scoring will not always be comparable to e.g. Alpine Ibex.

The horn score is based on the actual size of the models in the game. The Feral Goats we have in the game are a pretty small variant. In real life these animals have different body sizes depending on where in the world they live, along with other influencing factors. Ours are small, therefore we had to keep the horn size down a bit to fit the model. We adapted the score for the horns to fit the references we have, so head:horn ratio should look accurate.

As a result, the largest horns can reach a really high value while the smallest horns can have a smaller value than what CIC score calculation would suggest.

Please note that currently some lower scoring Feral Goats will have CSS 0. We are looking into this issue and it will be fixed in the next patch.

Discussion

Share this
Facebooktwitterredditmail

Status Update

Howdy hunters,

Time for a status update!

Hunter Score 2.0 and Dev Blog

In case you missed it, last week we released Hunter Score 2.0. You can check the game design notes here. In addition, Luna has written a technical overview document about working on the feature in which she shares some details about the whole backend infrastructure of theHunter. If you want a better understanding of how the infrastructure of theHunter is built and how your hunting data is being moved and stored, please do have a read (TL; DR It ain’t a piece of cake).

With Luna’s blog post we would like to start (or resume) our Dev Blog. We’ll try to share more details about the murky waters of game development and behind-the-scenes of the development of theHunter. You can expect similar write-ups from different crafts when we bring out bigger features, for example the upcoming changes to the baiting system.

In general, the release of Hunter Score 2.0 went smoothly from a tech perspective. There have been some minor issues which we fixed last week. We also released a small patch fixing the infinite download loop for our launcher and game opening with Steam at launch. Luna continues monitoring the forums and jumping on issues as soon as they arise. We’ve just fixed the display glitch in the achievements panels, when all achievements would appear as if they were earned today (we thought about you stancomputerhunter).

The feedback we received about the new Hunter Score so far has been various and the discussion thread infinite and very interesting. Your engagement and passion about this feature has been fascinating to observe. I’ve responded to some criticisms that were being brought up in the discussion, but would like to iterate some of my points here to reach more community members. This change was made because of the community feedback, this time about “reskins” that we have been receiving for years and that we believed was fair. Everything we do we try to base on your feedback, but of course the design went through many iterations, mostly because of the technical and game balance requirements.

Following the post-release feedback, we increased the Ranks cap to 1000 and kept it consistent regardless of species, weapons or collectibles. If we were to introduce more Ranks in the future to make the system more versatile, which ones do you think would make sense to have?

Very feral and very cute

Our lovely feral goats are already jumping and kicking on our beta server, sometimes kicking it over in the meantime, but all within the scope of the testing phase. We are happy with the progress and we like what we see. With Feral Goats we will be introducing a species variety that we have not seen in theHunter yet. Not only will they have different textures and fur, but also different types of horns with different scoring! Here are two sneak peek screenshots for you to catch a first glimpse of what is coming.

feralgoat_longfur

Bighorn Sheep Missions

Yesterday we released the first pack of missions from our last game design competitions. Bighorn Sheep missions by freck1es! We also put together a small but great bundle in the store with some stuff for your Timbergold Trails adventures. More missions and competitions for Timbergold Trails animals are coming soon.

St. Patrick’s Day Event

splashscreen_stpatricks2017

Tomorrow our traditional St. Patrick’s Day event is starting, don’t miss the announcement and make sure to join us for some shamrock-inspired hunting.

That’s it from us for today.

Happy hunting

Discussion

Share this
Facebooktwitterredditmail

Hunter Score 2.0: Technical perspective

splashcreen_hunterscore2

Last week we released Hunter Score 2.0. From a backend perspective, this was the biggest change we’ve had in quite a while, and it touched quite a few systems. For those that don’t know the details from a game design perspective, please refer to Alena’s post.

In this blog post, I will discuss what has been done from a technical perspective.

Preamble: theHunter’s server architecture pre-Hunter Score 2.0
Before I can explain how the new architecture looks, I would like to go over how the old (and current, mostly, see further) architecture works and is set up. We’ll do this back to front, meaning we’ll discuss the layer the furthest away from the player first.

– _Storage_: The SQL database: We use google Cloud SQL to store all the data related to the game, nothing special here, Google takes care of our database, it’s mostly stable.

– _Caching_: Google App Engine’s managed Memcache, with 10GB of dedicated memory.

– _Servers_: Google App Engine (PHP and Python): This is where it gets more challenging. We use Google App Engine to serve the website, as well as the API for the game. The website is a mix of PHP (inherited from the olden times before Expansive Worlds and Avalanche Studios owned theHunter) and html/css/javascript. The API servers meanwhile are written in Python 2.7, both the PHP and Python code are running on App Engine, and connect to the Cloud SQL database and memcache.

– _Cloudflare_: Cloudflare provides an additional layer of caching, it will cache static files such as images, html, css and javascript files, so our web server does not get swamped.

– _Website/Launcher_: The html/css/js served by the web server will be rendered by either your browser, or the game launcher. It is a single page app built using pretty old versions of marionette/backbone frameworks(the ones released back when the website was built).

Challenges
There are several pieces in this stack that are posing challenges for us in the dev team, the main one being the current server/web stack.

– These old versions of marionette and backbone are incredibly verbose and troublesome to work with, making any web changes slow and hard to test.

– The App Engine servers have no unit tests nor automated integration tests, this makes them prone to breakage, especially with the weakly typed languages that are being used.

– The servers have no sane error checking, making it impossible to tell the difference between a user sending an incorrect request and genuine server errors, this makes logs dramatically less useful than they should be.

– Database consistency was not considered during its development, meaning that errors can sometimes cause data corruption, which burdens both the players and our support team.

– Much of our static game data (such as which achievements are available to players, which animals spawn where, etc.) are stored in JSON files. While this is a practical format for developers, these files are most often changed by the game design team, this leads to occasional breakage whenever a single comma or quotation mark is forgotten.

What we’re moving towards
With the release of HS 2.0, we made the first steps towards improving on all this to move towards a more stable server architecture. The idea is that we will minimize the amount of changes made to the Python/PHP servers and instead start building on a new server stack, written in Go and hosted on Google GKE (Google Container Engine: A Managed Kubernetes cluster).

How does this improve on our problems, and why aren’t we just fixing the current servers instead? Well, I’m glad you asked, there are several reasons:

1) The main and most important reason is that, to fix the current servers, we’d need to rewrite them anyway, a lot of individual pieces are poorly designed (from a technical POV) and exhibit unexpected and undocumented behaviour in many cases. Writing new pieces and making sure they are well documented and don’t exhibit such undocumented behaviour solves this issue.

2) Weak typing and lack of unit tests: Python and PHP are both weakly typed languages, combined with the lack of unit tests, this makes any large refactoring or change extremely prone to breakage and passes the whole burden of ensuring correctness for any change onto the QA team, this is not sustainable. Rewriting piece by piece from scratch and making sure we have good unit tests coverage and use a strongly typed language for the new pieces solves this issue.

3) This allows us to move static game data to an administration panel, much easier to use by the game design team.

Upgrade approach
We are not going to be rewriting the whole server stack in one go, this would take months if not years, and would completely stop development of new features.

Our path forward consists in rewriting piece by piece as we make new features, the first step in this was made with the release of HS 2.0, we’ve moved the achievement system from JSON files to our administration panel, we’ve made an administration panel for ranks, and we’ve written an entirely new server for all of it that is now hosted on kubernetes. The new achievement and ranking system does API calls to our new servers written in Go, which are hosted in a kubernetes cluster on Google Cloud.

Compared the the Python servers, we’ve already noticed a huge increase in stability and performance compared to the old, the logging is also much better and they have full unit test coverage.

Hope this was of some interest to you. If you have any questions, please do not hesitate to ask! I am looking forward to working towards a more stable and faster theHunter experience.

Discussion

Share this
Facebooktwitterredditmail