24 May 2017

Nordic Game 2017 takeaways - part 2

(Read part 1 here)

The second day was even hotter, the talks as well!

Analytics

The first talk of the day was about an algorithm for fun and profit, turned out it wasn't really an algorithm but rather a (very) quick overview of analytics concepts. All in all it was just promoting their analytics platform.

The slide here illustrates the metrics that drive revenue and this was the algorithm. I missed the fun though.

Design patterns for distributed game servers

Say "design patterns" and you have my attention :). This was also a very quick and short talk about three aspects of game servers. Again it was a bit promotion for their own server software Nakama, which is freely available on Github.

It was about session management and JWT tokens, which is a en encoder format for session data that can detect tampering. If you put non-identifiable user data into tokens and after authentication, you cache the token on the device. That way you have some info about the user without having to authenticate again, saving on database queries.
Have a field to track when the token is expired.

About databases the tip was to understand the database engine you use and how it behaves for each kind of query you need. Postgres has the most options when it comes to indexing. In general, use key-value tables as much as possible.

The talk made the software look good, if I ever have the time, I would love to port Kweetet over to this software.

Mundaun

I had some time left so I started to check out some of the games on display. It was my intent to check as much of these games as possible, but I didn't get very far. Anyway, I started talking with Michel Ziegler, the developer of one of the Swiss games, "Mundaun".

The game was still a bit rough and needs some more visual love, but it already had a very beautiful aesthetic that made it look promising. What was really impressive is that he made this game all by himself and was now promoting it at this event! Good luck to him.

Soft launch

Next up was "How to soft launch successfully" by Paul Conway.

There are three phases to a soft launch:

  1. Planning (smart!)
  2. Retention soft launch, where you try to optimize your retention and daily active users (DAU)
  3. Monetization soft launch

Two to three months is enough for the retention soft launch, as long as you can update easily so you can perform a/b testing on all the important features. Good retention rates are 40% for day 1, 20% for day 7 and 10% for day 30 retention.

The slide on the right says it all to get these retention: "Cater for different skill sets", make sure your game doesn't get boring for skilled players and too hard for less skilled players, in other words: adapt.

Denmark, for some reason, is a land with high retention rates, so you can start there for the soft launch.

Consider returning players, when a player returns to your game, make sure he has a pleasant experience: make the game a bit easier for players who have been away for quite some time, make it challenging for players who return regularly.

And then follows the monetization soft launch, you can start experimenting with in app purchases. The conversion rate of your game will (or should) be around 2% of the total number of players, in other words: 2% of the players make an in-app purchase in your game. The best purchase that you can offer your players is the starter bundle. Make sure that the starter bundle has clear value.

In the end you must ensure that the LTV is greater than the CPI. (Life Time Value and Cost Per Install)

Quite some stats came from this blog and the gamesparks blog itself has also some interesting topics.

Hitman

Senses of the Hitman AI was a cool talk! They showed how the line of sight system works for the AI, how their current state influences the view, how they respond on what they see, and how they hear. I didn't write as much down as I should have, I think I was too busy looking at the visual candy :)

Some of the content was similar to this GDC '13 talk, but they've improved a lot since then.

Maybe trivial, but a very important idea is how they clearly differentiate between what the state of an AI object is and what other AI's know about that object. By seeing or hearing things, what they know about an object changes.

PBR on mobile

We're not there yet when it comes to high end graphics on mobile devices, but we're getting there. It's only a matter of time. In the meantime I had to put on my thinking cap because the session "Bringing physically based shading to mobile" was a very technical and deep session. It's a repeat from his session at GDC '16 and this one I think, but the topics differed somewhat.

Full PBR on mobile devices is not possible yet, but this talk explained in detail how they achieved triple-A visuals (not graphics) on a mobile in CSR2. They started with a full PBR rendered concept and given the game's characteristics skipped or optimized where possible.

For example they don't do dynamic shadows, since the game goes to fast to notice them. Also they made sure that light always remained static, from one direction, enabling to use pre baked image based lighting in cubemaps, or rather prefiltered mipmaped radiance environment maps. To generate these cubemaps they used this adapted version of AMD's cubemapgen tool. A detailed explanation can be found in that article.

These cubemaps can best be sampled with the texCUBElod shader instruction, however not many mobile devices support it, they had to use texCUBEbias instead. It's supported, but heavier on the shader.

For AAA visuals you need HDR, but mobile devices don't support these kind of textures. Therefor they changed the cubemaps to contain the low range values in the RGB channels and the high range values in the alpha channel and change the appropriate shader code accordingly.

For the cars they could get the albedo values from the manufacturers (obviously), but for all the other scenery they needed to get the values elsewhere. You can try and capture values yourselves, but it turns out that photographers often provide these values with their work and they were able to use these. I haven't been able to find a site like this, so if anyone knows such a link please do share in the comments!

More mobile graphics

Right after this heavy session, I went to "Optimizing our renderer for Metal on iOS" by Timo Heinäpurola. He shared his slides for this talk here.

The concept of triple buffering here is interesting and there are lots of good optimization tips in the slides. I for one will try what the effect is of using smaller texture types in Kweetet.

Unboxing Unreal 4

Last talk of the day, by a bearded lady. The team started a new project with Unreal and the talk was a collection of lessons learned.
  • Unreal is C+++blueprints, you can never have one without the other.
  • Always overload CharacterActor and MovementComponent
  • Use the store! The game they showed was almost completely made with store assets
  • But put them in a separate project and import only the content you need in your own game. This is actually a tip that is true for Unity too.
  • They gave the grass more depth with contact shadows.
  • They had a cool post process effect for their fog of war
  • The camera transition system was custom made and very cool

Awards

Then came the Nordic Game Awards, which was a very weird show. The host Niels Forsberg was great! Apparently he's a Danish geek/comedian bit like our own Lieven Scheire.

The award winners were just weird, it seemed as if they were not so happy about it, saying just "thank you" when they received a reward or nothing at all. One said: "Backup your files, eat your vegetables, visit your parents". Another one was very emotional and asked all the other nominees also on stage. Very weird, but good fun :). One winner didn't show up, so some random guy came up the stage and took the bottle of champagne :)

Booze

I couldn't afford to be tired in the weekend so I skipped the Nordic Party, nevertheless there was good food and good beer and good company!

21 May 2017

Nordic Game 2017 takeaways - part 1

It was hot in Malmö, which is weird for a country in the North. Nevertheless, these are the other interesting tidbits I saw at Nordic Game 2017.

The Huddle

The show began with a detailed overview of how "the Huddle" was made in Inside. This was a really inspiring talk, it was totally why I wanted to come to this event: to learn about the inner workings of cool things in games. The best insight about this blob is how the animation was done; the legs and arms don't drive the blob, although it looks that way. Instead there is an ingenious IK system that drive the animations.

Six

Another inspiring talk was about the implementation of Six, the character in Little Nightmares by Tarsier studios. An interesting idea was their "Locomotion Animation Overrides", they change specific animations in character animation setup in function of the state of Six.

Also worth noting is that the character interacts with objects in the world, but the objects also interact with the character. This two-way animation communication makes a very rich world.

The IK of Six was done with IKinema, which is a full body IK solution. This makes Six standing on stairs and other objects in a natural way, and makes her grabbing or climbing naturally. Because this can look sometimes weird they added something they called "Positional fixup": the player character will walk closer to the object that it wants to pickup or interact with, making the animation look smooth and natural.

"Things look better with audio" was a very inspiring quote from the talk. They discussed how sometimes when objects interacted with the player character you could notice intersecting meshes or other visual artifacts, but by adding sound somehow you don't notice these misses in the visuals, making it look good.

Mobile games

I attended a talk by Jonathan Jordan about the past, present and future of mobile games. Nothing much I didn't know there, but it was good to hear and see. Maybe the best bit was this:

  • 70% of the successful mobile games use portrait mode
  • They feature short play sessions

The full talk is on youtube, so check it out, definitely check out the part about "Where are we going"

Experiments and mobile games

The next talk was about how a/b testing was applied at King for their games. Not a really good talk for me, it was very general without much (if any) concrete examples.

Twitch

Then there was the session from Jamie Jackson of the slingshot cartel.

He said that there are three types of gamers nowadays:
  • Players, people who play your game
  • Viewers, people who watch games and want to learn - they're also players.
  • Broadcasters (on twitch and youtube), who also play

He then described how their game provides for these types of players in DRG Initiative. The idea resembled a bit what happens in the hunger games: viewers can vote and steer what happens to the players in the game, while the broadcaster is the game master who can set up the votes. Cool idea!

Social Media

The next talk by Natalie Griffith was about how to handle social networks to promote your game. The slides were the same as at Develop Conference 2016 and can be found here. I learned a lot from this talk; how important a plan is, what AIDA is and what social networks are best applied at each stage.

Then there were a few very useful Facebook tips:
  1. Post regularly
  2. Don't post too much (no more than 1 post per day average)
  3. Make sure you create enough reach by posting smaller news before posting something important.
  4. Choose good moments to post (not at night, for example, when everyone is asleep)
  5. Mix up media types
  6. Use native FB video, no links to youtube
  7. Use subtitles in your movies (58% of the audience whatches the movie without sound)

She provided this link to some resources at the end.

Booze

And then happy hour began!

And then a German Games Party!