Posted on Leave a comment

Pokémon Go’s difficult 2020 was full of ups and downs

This year, Pokémon Go’s players had a rather taxing time keeping up. In an age where going outside and interacting with others was not just frowned upon, but downright dangerous, there have been a lot of new events to tide players over, and some essential new features that had to be developed in a very short space of time.

Pokémon Go in 2020 began in much the same way the previous year ended. Shadow Pokémon boss fights, including battles against Giovanni with the legendary dogs, were still a relatively new idea, while events were skewed towards celebrating the dawn of a new year. It seems like a sick and twisted joke now, but yes, there was a time when we looked at 2020 with fresh optimism.

Events weren’t all that spectacular in the first few weeks, though a small wave of Unovan Pokémon were introduced as the months continued. However, soon the world was plunged into lockdown, looming real-life events were cancelled, and the style of in-game events taking place took a while to catch up with the new normal.

For some inexplicable reason, Niantic is still making Pokémon regional exclusive with few ways to make them more widely available. Sure, some people decided to take holidays abroad (why?), but most people were largely confined to their homes. The good news was that lockdown also coincided with the introduction of PVP battles and these have mostly been free to participate in. For a short time, accumulating winning streaks was how you could get legendary Pokémon such as Landorus, but thanks to rampant cheating it was not consistently robust enough for most players. Soon it became apparent that this was a temporary solution.

Pokemon Go's remote raids in 2020 allowed for players to connect with each other via invites. Here we see six phones connecting to a raid.

It wasn’t long before Remote Raid passes debuted, but it was a while before necessary improvements were made (namely to only use the pass when battles begin). The system is still not perfect though, as the countdown timer for raids is too short for most people to comfortably join, and it would be better to get an idea of how many trainers are looking at jumping into a raid.

On the whole though, Niantic did make one or two big mistakes, but it’s largely kept the ship running in the new normal.

What Remote Raid passes did allow for the first time was international raiding. The significance of this was not realised until just the Lake Trio event. Uxie, Mesprit, and Azelf returned to raids. This time around, thanks to Remote Raid passes, players from around the world could invite players to raids that would be impossible for them to participate in otherwise. The response on social media has been a flooded of people inviting others to raid exclusives with them.

There were costs to raids in the Covid era, namely EX Raids. These haven’t returned since the beginning of the pandemic. It’s not the biggest loss though, as there have been plenty of events for those wanting to catch legendary Pokémon. By far the biggest was Go Fest 2020, which was a worldwide event for the first time in history. There were a few teething problems and it was nowhere near as intimate as a real-life event would have been, but by and large it was a successful event (it brought us Rotom for the first time too, which was nice). We also saw the Today View, which shows off all of the current events and bonuses in the app, which is very handy for those wondering if an event was still on.

The announcement image for Pokémon Go Fest 2020. It includes Pikachu, Jigglypuff, Oddish, and Cherrim playing in a back garden.

There was also a time when getting Pokéballs was challenging for rural players, who were no longer commuting to work. Initially Niantic put out bundles costing one PokéCoin, but eventually free gift boxes were introduced to solve this problem. Changes to the buddy system also allow Pokémon to bring you items such as Gifts to send to friends, and Pokéballs to catch Pokémon. Increased Pokéballs from opening Gifts also encouraged friends to interact with each other, seemingly resolving an immediate problem.

It’s highly likely that the new seasonal approach will bring good things and stuff we’ll find frustrating.

What was less successful out of the gate was the debut of Mega Evolution. Lots of people complained about having very few ways to accumulate Mega Energy, a problem that persists in important ways even now. Since Mega Evolution is temporary, some felt its duration was too short, so Niantic extended the duration a bit. Another more recent controversy was with the much anticipated Pokémon Home integration, as it has its own annoyances with how infrequently you can transfer a shiny legendary Pokémon.

On the whole, Niantic did make one or two big mistakes, but it’s largely kept the ship running in the new normal. Looking to the future, it is somewhat brighter in Pokémon Go thanks to the upcoming ‘Go Beyond’ update. Events will soon be dictated by the seasons, meaning those in the southern hemisphere actually get relevant Pokémon for the weather they have. Increasing the cap to level 50 gives players new challenges, while the debut of Kalos Pokémon, like all new generations, is very exciting indeed.

YouTube Thumbnail

Niantic can do a bit more though, so we’re asking our Delibird to pass on the message to Niantic for our wishes for next year:

  • Kecleon’s introduction is long overdue. That should be fixed immediately! (If it’s not introduced in the Hoenn celebration week)
  • Global trade distance, while much better than it was initially, still needs to be extended beyond 50km
  • Extend the countdown timers for raids so that people have a chance to join them
  • Allow players to express interest in-app to join raids, so that those nervous about joining a raid can feel more comfortable participating in them. There are third-party apps that can do similar things
  • Redesign of the Friends list so that you can easily filter ones you don’t have contact with any longer (similarly to tags with Pokémon)
  • Make the monthly Community Day events last a weekend rather than one day. You could have a break in-between, but two days is better than one
  • More chances for regionals to appear outside their native region worldwide in events, especially elusive ones like Maractus, Relicanth, and Sigilyph
  • Events for international players to catch Pokémon like Kangaskhan and Heracross, which are regional Pokémon with Mega Evolutions
  • Reduce the number of costumed Pokémon that are introduced next year (except for Cowboy Hat Caterpie, because that one person replying to every official tweet has asked for it for so long)

Tough days are still ahead for all of us, and it’s important that Niantic realises the decisions it makes are key to the survival of Pokémon Go into the next year. It’s highly likely that the new seasonal approach will bring good things and stuff we’ll find frustrating.

As it approaches its fifth birthday, Pokémon Go’s position as the top grossing game on Google Play and third most grossing game on the iOS app store is something Niantic will want to celebrate, so here’s hoping for even bigger things next year.

Posted on Leave a comment

The biggest new Switch games coming in 2021

2020 has been another terrific year for Nintendo Switch fans, with tons of quality titles having hit the beloved handheld system over the last 12 months. However, next year is poised to be the Switch’s biggest since its 2017 launch, serving up no shortage of hotly anticipated games to play on the couch or while out and about.

What’s so impressive about the Switch is just how varied its catalogue of games has become. There’s genuinely something to suit all tastes, from quality indie titles to the biggest of AAA blockbusters. We’ve also continued to see a number of miracle ports launch on Switch, which will no doubt continue into next year, as well as the arrival of cloud gaming on Nintendo’s platform.

There’s so much to look forward to that it can be hard to separate the wheat from the chaff – which is exactly what we’ve done for you with this list. Now all you need to do is check back here to see what’s worth getting excited about. So, without further ado, here are the biggest new Switch games coming in 2021.

The biggest new Switch games coming in 2021

Persona 5 characters looking towards you

Persona 5 Strikers (Feb 23)

Persona 5 Strikers is a very different game than what fans have come to expect from the series. This Dynasty Warriors-esque musou game combines hack-and-slash combat with a dash of Persona’s signature social link system. Though the social system is now called ‘band’ and is much more focused on team upgrades than relationship building.

With the lack of Persona titles on the Nintendo Switch, Strikers is a welcome addition to the console, and we hope this is the beginning of many more Persona games, whether they’re remasters or new additions to the series, on Switch.

A Monster Hunter character and a dog

Monster Hunter Rise (Mar 26)

Fans of the series will be pleased to hear that Monster Hunter Rise is one of two Monster Hunter titles coming to the Switch in 2021. Rise is a role-playing action game that includes some beloved Monster Hunter mechanics with even more added goodies. It builds upon Monster Hunter: World in the best ways, with fresh, fast-paced combat and a much more focused story.

Related: here’s every Monster Hunter Rise weapon class

Along with the return of the adorable fan-favourite Palico cats, Monster Hunter Rise introduces some precious doggos called Palamutes, and these good boys alone are enough to entice new and old fans of the series alike. But if you need more convincing, take a look at our Monster Hunter Rise first impressions piece for more juicy details.

A Neo: The World Ends With You character running through the streets

Neo: The World Ends With You (summer 2021)

It’s been over ten years since cult classic The World Ends With You released on Nintendo DS. Much like the original, Neo: The World Ends With You takes place in an over-the-top rendition of Shibuya, Tokyo, but introduces a brand new cast of characters to the mix for players to get to know.

Not much is known about Neo: The World Ends With You as of right now, but the announcement trailer has shown that many of the action RPG elements fans of the series know and love feature, and also confirms the composer for the original game will return to make sure the tunes you hear while traversing Tokyo are reminiscent of the original.

A girl and a monster conversing

Monster Hunter Stories 2 (summer 2021)

The original Monster Hunter Stories was a cutesy 3DS and mobile RPG that offered a more stripped-back and welcoming take on the Monster Hunter formula. This upcoming sequel looks to build upon that vision by serving up a charming cast of characters and a friendly, upbeat tone – all brought together with a gorgeous presentation on Nintendo Switch.

Its strong aesthetic and heavier focus on narrative should set Monster Hunter Stories 2 apart from the equally promising Monster Hunter Rise, and it’s currently set to follow in summer 2021.

A No More Heroes character smiling

No More Heroes 3 (TBC)

There’s nothing else quite like No More Heroes, which is why it was cause for celebration when the first two games hit Switch earlier this year. These ultra-violent, tongue-in-cheek action titles cast you as assassin Travis Touchdown as he attempts to defeat his colourful rivals and cement himself as the best in the business.

Not a great deal of info is known about this hyped third entry, but it is currently expected to launch sometime in 2021. For Suda51 fans, this one can’t come soon enough.

Bayonetta shooting towards the camera

Bayonetta 3 (TBC)

The Bayonetta series received a new lease of life when the first two games were remastered for Nintendo Switch. While Platinum’s cheeky, lightning-fast action titles are almost infinitely replayable, the wait for Bayonetta 3 has still felt like a long one – and that’s because it was first announced all the way back in 2017.

Little is currently known about Bayonetta 3, though series creator Hideki Kamiya insisted that development is “going fine” back in August. Despite the fact that we haven’t seen a lick of gameplay footage, the promise of another wild adventure with everyone’s favourite gun-toting, angel-slaying Umbra Witch is enough to set any action fan’s heart aflutter.

Agent 47 looking out over a balcony

Hitman 3 (TBC)

The Hitman series has a long and storied past with many highs and few lows. The most recent trilogy, however, has been nothing short of exceptional, with the upcoming Hitman 3 looking to end Agent 47’s World of Assassination arc on a high.

IO Interactive’s latest is a real looker, boasting sprawling locations, giant crowds, and a stunning attention to detail. In fact, it might be just a bit too much for the dear ol’ Switch to handle, which is why it’s being made available on Nintendo’s system as a cloud title.

Provided you have a decent internet connection, this means that Hitman 3 on Switch should require minimal concessions, meaning we’ll get to experience the game’s Dubai, Dartmoor, and more as they were intended to be seen.

Link and Zelda walking through a cave

The Legend of Zelda: Breath of the Wild 2 (TBC)

The Legend of Zelda: Breath of the Wild remains the high bar by which all other open-world games are judged. Nintendo’s modern classic is packed full of novel ideas and creative systems that allow for endless experimentation. Several years after launch, its impact is still felt in recent releases, from Genshin Impact to Immortals Fenyx Rising.

Breath of the Wild 2 has therefore skyrocketed its way towards being one of the most hotly-anticipated games of all time. So far, all we’ve got to go on is an eerie teaser trailer that sees Link and Zelda venture deep below Hyrule Castle, where they seemingly uncover the reanimated corpse of Ganon. It sets a much darker tone than its predecessor, one that we can’t wait to see explored when BOTW 2 eventually rolls around.

Someone taking a picture of Blastoise

New Pokémon Snap (TBC)

The original Pokémon Snap came out on Nintendo 64 over 20 years ago, meaning New Pokémon Snap will be released to a brand new audience of Pokémon fans while still appealing to those who have stuck around since the original’s launch.

Pokémon Snap is an on-rails, first-person photography game that sees players drift around different locales in a minecart-like device to take pictures of adorable Pokémon. If New Pokémon Snap is anything like the original, a Pokémon professor will grade your photographs and provide you with fun bonuses to help you become even better.

A battle in Digimon Survive

Digimon Survive (TBC)

Bandai Namco initially teased Digimon Survive back in 2018, and since then, fans have been patiently waiting for the survival strategy RPG to release. Well, 2021 is finally the year.

Digimon Survive sees a fresh set of characters being transported to a dark, strange new world, where they must fight their way home in some classic strategy RPG battles.

Survive is very different to most Digimon titles, offering a much darker storyline. Your choices made throughout the game will impact on how your partner Digimon digivolves, how the story progresses, and also lead to multiple endings, some of which will result in surprising deaths. Survive is a must-have title for fans who have grown up with Digimon and are looking for a more mature experience.

Genshin Impact characters being attacked in the snow

Genshin Impact (TBC)

Genshin Impact released to mobile, PC, and PS4 earlier this year and quickly become one of our games of the year. This free-to-play, open-world RPG has some gorgeous graphics, intense combat, and unintrusive gacha elements making it appeal to a huge audience.

Developer miHoYo revealed Genshin Impact will make its way to Switch sometime in 2021, but it’s still unclear exactly when it will drop.

Posted on Leave a comment

Blog: Torchlight 3 – Data fixup war stories

<!– –> Gamasutra: Jill Sullivan’s Blog – Torchlight 3: Data Fixup War Stories

Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC’s registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Gamasutra: The Art & Business of Making Gamesspacer

<!–

–>

If you enjoy reading this site, you might also want to check out these UBM Tech sites:




Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


During the ongoing development of Torchlight III, we want players to get up-to-the-moment information about what’s going on with the game & dev team. This month’s Developer Update comes from Guy Somberg, Lead Programmer of Echtra, with help from Jill Sullivan, Senior Community Manager.

Introduction

In game development, not every problem that you solve is performance, features, or functionality that the players get to see.  Sometimes, you have something messy that needs to be fixed, and you just need to dive in and fix it so that work can get done.

There is a phrase that we use to talk about this sort of work: “yak shaving”.  Originally from a reference to the TV program “Ren and Stimpy”, it now refers to work that appears to be completely unrelated to the end goal, but which you have to accomplish in order to reach it.  For example – “I am trying to build a stone bridge over this creek.  I am shaving this yak so that I can trade the fur to a yarn maker, who in exchange will let me borrow the cart so that I can take it to the quarry to pick up some stones.”  Shaving the yak isn’t necessarily an important part of building that bridge, but you won’t be able to make any progress while the yak still has its coat!

This is a collection of just some of the times that we’ve had yak-shaving problems that needed to be “just fixed”.

0D0D0A

Source control systems are one of the fundamental tools that game developers (and, in fact, pretty much all developers) use.  It is a database containing the entire history of every file that makes up our game – source code, assets, sounds, you name it.

About three years ago, we switched our source control from one system to another.  It doesn’t matter from what to what.  The system we were using was breaking down under our load, so we needed a new one.  We did our homework, examined the alternatives, and made a call.

Now, when you transition source control systems, there are broadly speaking two ways to go about it.  The simpler way is to lock everybody out of source control, take a snapshot of the latest stuff, import it into the new system, tweak it to conform to the new system’s idea of how the universe should work, and then turn the new system on for people.  This has the advantage that it “just works”, but it loses all of the source history from before the changeover.  In these environments there is often a single moment in source history that says “Imported everything.  If you want history before this, go look in the other source control system.”  That’s fine, so long as the other system stays around or you otherwise have access to it, but often the commits from earlier are lost forever.

The more complex way of doing this is to actually import the history from the old system into the new one.  Most source control systems allow you to do this, but it is time-consuming, error prone, and still requires some manual intervention to conform to the idiosyncrasies of the new system.  Although it is more work up-front, it is invaluable in the end to have your entire source history available.

We opted for the history import, which – at least on the surface – seemed to go just fine.  We saw the history, we saw the files, and we were able to poke around and verify that everything looked right.  Some files had weird spacing issues, which didn’t seem like that big a deal.

But then we tried to compile, and it all crumbled down.  The Visual Studio compiler complained about “Mac line endings” and refused to compile anything.

What?!  Why would that be?

A bit of background here: when a computer wants to represent a character, it has to select an encoding.  The most common encoding in use today is called UTF-8, which can encode all English-language characters, common punctuation, or a number of control codes into a single byte of data.  (Using multiple bytes, you can encode data in just about any language, but that’s another discussion.)

Two of these control codes are the Carriage Return (CR) and the Line Feed (LF) characters, which hearken back to the days where computers were hooked up to automated typewriters rather than screens.  In those days, you would tell the printer carriage to go back to its home column by sending it a CR code, and you would have the paper roll to the next line by sending it an LF code.  Thus, if you wanted to start typing at the beginning of a new line, you would send the sequence CR LF.

When the switch to fancy graphical displays occurred, this CR LF convention remained for backward compatibility.  However, developers of new systems – like the sparkly new Apple Macintosh computer and the Unix system at Bell Labs – weren’t hindered by backward compatibility and were free to make different choices.

It turns out that the three most common systems in the world today all made different choices: DOS used CR LF, Macintosh used CR, and Unix used LF.  Windows inherited its line endings from DOS, and MacOS now uses LF (the same as Unix).

Over time, the differences sorted themselves out.  Software is generally able to operate in “text mode” and provide the user with whatever line endings they need for their system to render it correctly.  The details of these differences leak through every so often, but usually aren’t a big deal.

All of this background flashed through our minds when we saw the error about Mac line endings.  What was it talking about?  We develop on Windows, so all of the line endings should have been Windows (CR LF) line endings – or, at the very least a combination of Windows and Unix (LF) line endings.  Where were these lone CR characters coming from?

And then we remembered the weird spacing issues – all of our source code appeared to be double-spaced.  Where did those extra spaces come from?

This is where somebody had the idea to look at the file in a hex editor – a tool which allows us to see the binary representation of the text files by displaying each byte’s value in hexadecimal.  Ordinarily, on a file with Windows line endings, you expect to see a line of text, then a CR (13, or 0D in hexadecimal representation) and an LF (10, or 0A).  For some reason, on the broken lines, we saw a CR (0D), then another CR (0D), and then an LF (0A), giving us 0D0D0A.

Somehow, during the conversion process from one source control program to another, the conversion program decided that the file had Unix line endings, then went through and did a blind search/replace every LF with CR LF, even if it already had a CR!  That explained everything.  Our editor was perfectly happy to render the CR as a blank line, and knew how to convert the CRLF into a blank line, which was why our code appeared to be double-spaced.  Contrariwise, the Visual Studio compiler was happy to interpret the CR LF combo as a newline, but errored out on the preceding CR.

I fixed this by writing a little program in C++.  It would iterate over our source code directory, open every text file, find patterns of 0D0D0A and replace them with 0D0A.  We don’t expect to change source control systems again, so the code for this tool is lost to the sands of time.  (Ed. – Or, so we thought!  A drive containing the source for this program was discovered after this article was written, so we have uploaded the code to our repository for posterity.)

There were only two or three of us who worked on this particular issue, but you can get any of us to twitch a little just by saying “oh doh doa”.

Octothorpe Fixer

A couple of years ago our sound designer and our composer took a trip out to Bratislava, Slovakia to record a live orchestra for some of our music.  It was an awesome trip (so I’m told), and they got a lot done over the few days that they were there.

One of the outputs of this trip was a suite of content that we call “vzory” – Slovakian for “pattern”.  These are small orchestral chunks of music that can be combined in myriad ways to create new music, and are recorded in various combinations of keys and notes.  The end result is that we have a particular pattern in G, in G#, in F, in F#, etc.

Our composer did the natural thing – he spent a bunch of time cutting and organizing all of this content, doled it out into folders and files matching the note that they were recorded at, and then imported the whole suite into the audio tool that we use, FMOD Studio.  FMOD is hooked up to our source control system, and it happily added all of the new files and then checked them in.

So far so good.  Until people started to get mysterious warnings about filenames when they got the latest code and data through our source control system.  They were just warnings – they weren’t preventing anybody from working – but it was definitely something that we didn’t want to stick around.

These vzory tracks were tracked down as the culprit.  It turns out that our source control system doesn’t like it if you check in files with an octothorpe (‘#’, sometimes called a pound sign, hash mark, hash tag, number sign, or various other things) in the filename.  It will accept them, but complain loudly.  It turns out that our composer named the directory and matching files for the vzory tracks in the key of A sharp with the name “A#” – naturally!  (The other sharp keys were set up this way as well.)

The source control system was most displeased with this choice.

Renaming the files wasn’t enough, because FMOD keeps track of file and directory metadata in XML files – each one with a GUID (a sequence of letters, numbers, and dashes) as the filename.

Once again, code to the rescue.  This time it was a program written in C# (ironically) that would iterate over all of the files and subdirectories in the given path, find ones with an octothorpe in the name, and rename them to replace the ‘#’ with the word ‘sharp’.  So, ‘A#’ became ‘Asharp’.  Then it would iterate over the XML files in the path, find any that had an octothorpe in the file contents (which were therefore metadata about the files or directories that had been renamed), and replace the ‘#’ in that line with the word ‘sharp’.

Other than telling our folks “don’t do that”, there’s not much that we had to do to prevent this from happening again.  This time we kept the source code, so if we make that particular mistake again then the tool to fix it is ready at hand.

POFixer

Localization and internationalization are important parts of any game project.  We use the Unreal engine, which has a suite of localization tools built-in.  By using a particular data structure in our data files, Unreal can find all of the localized lines in the game.  We can then export them into a standardized format called a “portable object” (.po) file, used by the GNU gettext tools, among others.

This is a format that our translators have tools to deal with.  They grab the files, translate the lines, and send them back.  We can then import them to a particular locale and then Unreal will render the text.  All very neat, so long as you color within the lines and follow the way that Unreal expects you to work.

Naturally, we have built some of our own stuff which lives inside of Unreal’s systems and plays nicely with them, but is sufficiently “off to the side” that it is invisible to some of Unreal’s other systems.  One of those parts is the localized string system, which didn’t see any of our fancy assets.

We wrote a tool that makes them visible, and called it a day.  Our first big batch of localization went out to the translators.  We went to import it…only to find that none of our strings got imported!

What happened?

Unreal allows you to identify each localized string by a pair of text strings: a category and an entry within that category.  If you don’t provide either of those entries, it will generate them for you.  It turns out that the tool that we had written to make our assets visible to the translators generated a new category and entry for every localized text string every time it was run, which meant that every text line would get a different code every time we ran the import or the export.

Oh, dear.  We fixed the underlying problem and made the category/entry pairs be consistent across runs, but we had this massive drop of strings in all of the languages that was incompatible with the fixed-up data!  We had to figure out how to run a one-time fixup on these strings to make them match.

Fortunately, each string came with a lot of metadata about its context and provenance.  Much of this metadata did not change, or at least changed in a predictable fashion.  This metadata turned out to be enough that we could compare an imported line and a newly-exported line and match up the strings.

As before, writing some code was the answer here.  We wrote a program (C++ again) to read in the translated file (containing the old, incorrect category/entry pairs) and a newly-exported English-language file (containing the new, correct category/entry pairs), match up the metadata, and then write out a fixed version of the file containing the translated text with the corrected category/entry pairs.

Here is one situation where simply fixing up the data was insufficient.  We needed to solve the underlying problem first before we could write the tool to fix the data.

Conclusion

These problems all had a common theme: through some sequence of events – human error or machine error – a bunch of important files appeared that were all broken in some way.  Ultimately, to the people who are working with the data it doesn’t really matter why any of these things happened.  They just want to take their broken files and fix them.  It is always a worthwhile endeavour to figure out a root cause and prevent an issue from occurring again, but sometimes you just need to get to work.  All of the postmortem analysis and preventative work in the world won’t help people get their jobs done with the broken files that they already have.

The examples I have talked about here were all important work that needed to get done, but all three of those programs got run exactly once.  It turns out that many of the systems that we build are complex, and these sorts of issues crop up as a normal part or development as we discover some of the edge cases.

Sometimes, you need to write tools that you run exactly once, and that is not a problem – you just need to grit your teeth and shave that yak.

– Guy Somberg


Related Jobs

innogames

Gameloft Australia Pty Ltd
Gameloft Australia Pty Ltd — Brisbane, Queensland, Australia
[12.22.20]

UI Developer

innogames

Crate Entertainment



<!–

Extra Div –>