Creator of while True: learn() on programming in game development, VR issues and machine learning simulation

в 13:05, , рубрики: AR и VR, C#, game development, machine learning, unity, VR, Дизайн игр, интервью, машинное обучение, разработка игр

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 1

A few years ago I had a feeling that Oleg Chumakov (then working at the game studio Nival) was the most famous programmer in the game development industry. He was giving speeches, hosted Gamesjams and frequently showed up on the podcast How games are made.

When VR hit the market, Oleg was chosen to lead the company’s new department — NivalVR. But, as you probably know, VR didn’t quite take off as much as people expected.

I kind of moved to other to other things in life and stopped keeping up with game development for a while, but after getting into it again I noticed that things were looking up for Oleg’s team. Now it’s called Luden.io, and their machine learning expert simulator, while True: learn() became a huge hit in its admittedly small niche. Lots of cool stories are happening around the game and the team.

We decided to do an interview with Oleg, but I couldn’t stick to one topic — his life up to this moment has been, for the lack of a better word, “interesting”. He’s seen it all. And, to ensure that a programmer could talk about programming without fear of looking too “nerdy”, the interview was conducted by my friend, colleague and an experienced developer of its own fillpackart.

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 2
Oleg Chumakov himself

I’ve checked out while True: learn(). A great game, by the way, I just couldn’t stop playing it.

How far have you gone?

Not far at all. I started playing at night and immediately got stuck on a side quest. Couldn’t go to sleep until I solved it. How are things going with the game, by the way?

Pretty well. We couldn’t even imagine it would grow this big. We only planned for a small project. Look at it this way: take all gamers, then take those who only play puzzle games and nothing else. Then from there take those who are ready to dabble into programming. And then from those, take people who’re into machine learning specifically. That was our target audience. But of course, it didn’t quite turn out that way.

During the first night alone, we got more players than we were hoping to attract in half a year. So, obviously, the following weeks have been pretty fun. We try to add support for different languages and in general keep the game afloat while talking to thousands of people at once on Discord.

I have a feeling that your Discord chat is very engaged, since everyone in there is really into machine learning. Do you have some cool stories about your players?

We have a player, called Mr.Floppy (no idea what his name is in real life). He joined the project during closed alpha, when we distributed the game to a limited number of people to gather feedback.
In the game, you (the programmer) have a cat, it sits on the monitor and meows all the time. But initially, it was supposed to actively distract you from the process. It would come a very inopportune moment and demand that you played with him, sit before the monitor, that kind of stuff. It was Mr.Floppy’s idea: when he was playing, his actual cat was always distracting him, so he took a photo, posted it on Discord, and everyone immediately knew what next feature we were going to add.

He got really involved in the community. He started 3D-printing these in-game cats in different clothes and sent them to the best players. Essentially, he handled our merchandise for free. He was just getting a kick out of it. It’s a very warm memory about how our community essentially came about on its own — we haven’t had that in our projects ever until this point. We had people doing cosplays, fan arts, but 3D-printing objects from the game to gift to each other — that was a first.

There were some players that were hoping to dive into machine learning and the game smoothed the notoriously high barrier of entry for them. After playing it they went to Coursera, searched for competitions of various levels… And we’re keeping a close eye on them, taking bets on who would be the first to get a real job in machine learning. When that day comes, we’ll probably celebrate.

So, that means no one has done it yet?

They’re halfway through their courses at the moment. The game came out in March, there hasn’t been enough time yet. But generally, a lot of cool things happened with the game. YouTubers used it to teach machine learning, for example. The game’s actually used in schools now — in Russia, UK, US, Australia, all over the place. So I can’t exactly name the coolest story that happened to us — we have a couple contenders every week.

Stanislav Semenov — a data scientist and one of the top Kaggle users — plays WTL

OK, we’ll come back to machine learning later. Tell me what exactly do you do within the project, describe your typical day at work.

My responsibility right now is to talk with the core team, talk about their plans (what are going to do for the next 2-3 months), and keep that plan in mind for everyone we work with. Integrating the game in various activities, help sell it to that school or this school. In short, being the bridge between the developers and the outside world.

Sometimes I contribute something from my deep interest — customer development. For example, while integrating the game into a school course we encountered a problem: children go to programming courses, then come home, parents ask them “what did you do in those classes”, and they answer “nothing, really”. And parents wonder — do they just not want to tell them or they genuinely don’t do anything. So we made progress reports automated: for example, parents can get messages “your kid learned the perceptron today” or “your kid programmed an rnn” and so on. These features happen thanks to interactions between the game and the world — mostly through me.

Also, as the CEO, my job is to inspire everyone with a common, all-encompassing goal, to make everyone’s work comfortable, to eliminate any complications and make people just work and not worry about basic needs.

All right. So you’re not programming yourself now?

I do, but only occasionally. I currently work on reworking in-game startups. I’ve had an idea on how to do it for a long time, though for our next project dedicated to Internet marketing, but just didn’t have time for it. I used to do these things in a week, now I take a month and it’s still not done.

On programming in game development

Let’s reminisce on the good old times. Could you tell me about your life as a programmer?

Well, the biggest project I was a part in, the one that shaped my future career, was the game Prime World. It was a huge project back at Nival, a MOBA with a social element (called Castle I believe). I was on the Castle team and it had more than 20 people — for one, tiny part of the game! And, well, it had all the problems of synchronized multiplayer that exist in this world.

When did you join the project, what it was like by that point?

When I joined, “Castle” pretty much didn’t exist.

But, just to inform readers who didn’t play — the game had two parts: the one with actual MOBA-style battles and the Castle, where the player levels up, hires heroes, develops them, then chooses a hero and goes into battle. The battle part was nearly feature-complete at that point, but the social part was in the very early stages of development.

And what Nival hire you as?

I came as a regular programmer. I remember creating a brand new Unity project — we started from complete scratch, and we had to both create the Castle and integrate it with the battle portion, then under active development.

OK, so it was Unity. What programming language, then? C++, C#?

The session part was on C++, our part was on Unity and the main logic was on C#. But since it was a, let’s say, complex project with a lot of technologies intersecting, we also put the entire thing through Thrift to translate it into Python, because that’s what the server was written on.

Wow, talk about overhead for C# development.

And that’s to put it mildly. But we still found an elegant way out of it. Our elder coworkers were very experienced guys, so we tailored the code specifically for these translators and it was all quite pretty — virtually no manual filing required.

I believe it was back during the time technologies like Thrift, Protobuf and such were just taking off. We considered it a technological miracle — they just took your code, in multiple languages, and solved the problem of putting it all together.

I can only imagine. When you joined the project, were you already familiar with C# and the world of .NET in general?

Yes, I was quite familiar. I also knew Unity 2.6 (if I remember correctly), but that was a strange product in and of itself. I could write on .NET, but on Mono at some early stage. It was the time when Xamarin wasn’t even under development yet.

I remember Mono being a rather wild animal people have rarely seen, but it was built into Unity, which was the biggest project to include Mono. So it had every single little problem VMs had in their infancies. Insanely high memory leaks on all platforms, unpredictable differences from .NET in the most mundane things, unnecessary allocations all over the place…

So before that you worked with normal .NET, and there you were given a different, poorly-documented (at the time) runtime.

I’ve worked on Unity before, but this, for the lack of a better term, “transitional period” — when you worked on Unity and now have to work in Mono — was tough. I can’t say I was a particularly experienced .NET developer. I had a rough understanding of it and even a couple of finished projects, but I didn’t care about performance at all, so I probably made a lot of optimization mistakes in my projects. All the performance-demanding parts were in C++, .NET had nothing to do with them.

Tell me about your first week on the job. You passed the interview, got an offer and boom — you’re a developer. What’s next?

Well, it bears mentioning that we didn’t start with Prime World. There was another project before that, but it didn’t make it to release and one day we were switched to Prime World to work on the Castle. It happened so quickly — our designers outlined a very rough idea of what they wanted: “There should be a castle of sorts, and there’s a player inside it, he builds it, levels it up etc.”.

I remember, in the first week we built the basic outline of a castle with some basic blocks, just to show the designers what it could be. And then, after the basic interactivity was finished, we had to figure out how it should work on the server side — how to visit a friend’s castle to check it out, how to motivate the player to transition into battle. So the player hired heroes, leveled them up, bought the right talents, how he needs to go to battle with that hero. But to go to battle, we need to transfer him from the castle part to the session part. And the parts are based on different languages and technologies — it wasn’t a quick bridge to build. But it was a very long time ago.

Luden.io development timeline

  • In 2014 Nival forms a separate team to work on educational VR games — NivalVR.
  • In January 2015 their first project was released: InMind — a game about traveling into a person’s brain on a microscopic level to find neurons that cause psychological problems.

  • Same year InCell was released. It expanded on the same idea, but sounded like a chatbot gone mad — an educational game with racing and strategy elements, with procedural generation, for VR devices. The game was about traveling into a person’s cell world.
  • At Epic Games MegaJam 2016 Luden.io made VRobot — “a useless but fun game” where you crushed a city with a giant robot. In 2017 it released on SteamVR, and in 2018 on Playstation VR.

  • In 2016 NivalVR separated from the company and was renamed to Luden.io.
  • In 2017 ARrived released — a god simulator in augmented reality based on various technologies: Google ARCore, Apple ARkit and CoreML.

  • In March 2018 while True: learn() — a machine learning expect simulator, but without VR and AR — went into early access.

On leading a tech company

So, now you’re the head of Luden.io. What’s more difficult: to purely code or to do all this management stuff, being a bridge between the world and the developers?

I believe it depends on what sort of people you work with. I was very lucky to have the people I do, and I’m very excited both to manage and to code.

But, if we compare the jobs of a programmer and CEO theoretically, then programming is a much slower job. You come up with an idea, you plan it, you do it. External distractions are rare and small. Essentially, in coding you always have a “right” decision and strict, quantifiable metrics of success: a right decision means you execute that function in under 2ms and parallelized into N threads. You know your goalposts, if you hit them — it’s all good.

CEO doesn’t have anything similar. In this world, there isn’t a formal metric of success, even though you constantly set these yourself for your business. You should always think about what you can do better or differently. There’s no rules, either. But it certainly has its charm.

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 3

Do you think your experience as a developer helps you with your CEO responsibilities?

I believe so, yes. I don’t think there will be a lot of tech companies in the future that don’t have a leader with a clear understanding of development routines in mind. I can just hardly imagine how that would work. But I’m sure that leader should, at minimum, have a STEM degree to allow the company to move forward like a runaway train — which is the minimal acceptable speed for a tech company to survive these days. I can’t say it’s the only way, but I feel it’s the most correct evolution-wise.

Do you do code review yourself?

Not really. When we worked on Prime World, a huge project, I did, but we had very different processes back then. There we reviewed the entire code base so it adheres to a common standard. Prime World was so big we could simply forget that a part of the code base was being used in another section of the game. We even struggled to test the project locally it was so big. So we had very strict code review standards.

But there, even though programmers borrow code from each other, it’s mostly for integration, when we collect all the features into a single branch. I haven’t seen small game development studios, where you have 5-6 programmers at most, do a giant code review process. It’s usually not needed — the product comes first and we don’t intend to support it for decades to come.

Is there a consolidated approach to development? Do you force it upon everyone?

There’s a standard codestyle and some basic guidelines on what to combine with what, some architectural rules. There’s a project skeleton we work within. It’s tried and tested, so we know it wouldn’t allow us to shoot ourselves in the foot (at least not from a shotgun). There’s a basic set of modules that are used throughout multiple projects. Some of them are written years ago, some only recently. That — reusing architecture, adhering to a codestyle — doesn’t allow us to slide all the way into the abyss.

Do you personally participate in the hiring process?
Of course.
All of them?
All of them.

Your company must not be very big, is it?

Well, not thousands of people, so I have an opportunity to talk to every interviewee for at least 10 minutes — just to find out what he sees in the gaming industry, what games does he play personally.

But you don’t interview developers as, well, developers?

You know, I’m somewhat lucky. I think the guys doing, say, banking software don’t have it as easy as we do. Our Russian-speaking industry is very small, and when you work there for a couple of years, you get to know a lot of people. Essentially every candidate, if it’s not a student fresh out of college, has a recommendation from someone and a rough understanding of what he can do.
But if I had to hire 100 people in a week, I obviously couldn’t be as involved. But I don’t need to hire that quickly, and most of the time, if I hire people, I’m already somewhat familiar with them.

Game development vs business development

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 4

Do you have people coming over from other industries?

There are some, but not often. People come into game development for a very simple reason — they liked making games when they were kids and just continued doing that.

We had a couple of landmark interviews with people from the banking industry. We had a good interview, verbally agreed to something, they seemed to like it, and they say: “I work in a bank, get paid a lot, but I don’t really like it. I’d like to pursue my passion, and that’s gaming”.

You like each other, you place an offer and… the person disappears. Sometimes you ask him why, and he goes: “I came to file a resignation letter, the boss asked where, I answered, and he offered to up my salary to retain me”. Very often people took the salary increase and remained in their industries.
But there were other cases as well. A lot of very competent people came from other industries, including banking.

Yes, I remember hearing that story in a podcast — a bank programmer says “I want to create something”, then he receives a piece of paper with a number on it and he stays. Did you have these pieces of paper in your life?

Like everyone, I had job offers from all over the place. I don’t even look that much into them, honestly. It’s nice that I’m in demand, but I want to dedicate myself to this company.

People say banking, business code is a lot better than game code.

I would like to sit down with someone who worked both in banking and game development. But theoretically, in game development there’s a lot of cases where the project took off unexpectedly.

For example, there’s a company, Kefir, and they have a project, The Last Day on Earth. It’s probably very well done. And it took off instantly, gained more popularity than they could’ve ever imagined. I think in that situation the last thing you think of is code quality.

The process of keeping the code base clean rests mostly upon the consciousness of developers. Especially senior developers that are used to write well-mannered code and keep everything under control. Because the “let’s get this over with and then go over the code” stage doesn’t happen. Ever.

I dabbled in business development myself — our company had a cult of quality code. We didn’t really solve tasks, we wrote good code — that was our entire task. We, as the development department, couldn’t give a toss about how the product works or whether it even exists. I see you have a completely opposite approach: your job is to get things done.

We, obviously, put the product and its success first. Though sometimes there are situations similar to what you described. Let’s imagine we’re making a product on an existing, famous IP, and we know what its future will look like. Say, we know that it’s going to be supported for 15 years. Obviously, there’s business value in ensuring that support shouldn’t get more expensive every year. But there are very few game projects that are supported for 15 years — that’s just how the industry works. How old is World of Warcraft? Just around 15 years old, so Blizzard might have issues with that. But I believe, even 15 years ago Blizzard wanted to get the project done and cut some corners along the way.

It looks more like that in a game project, you can’t predict how long it’ll last, unlike business projects.

Without a doubt.

In business, people are used to creating a code base that lasts 15 years, but you don’t do that, correct?

Programmers generally don’t focus on creating code that’s easy to support for 15 years. But I’ve seen some very clean projects where clearly a lot of time was devoted to code quality, the people were very responsible and they liked it.

If everyone likes to keep things clean, that translates into an easily-maintainable product, but our business doesn’t always require that — we’re focused on making the product work.

Though I can hardly imagine a situation when we making a banking software and have no idea whether it will take off. The industries are too different to compare.

How to make games both for yourself and for the people

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 5

I look at Luden.io’s games and I feel like they’re created by developers for themselves as much as for their audience. Not taking into account any business practices and such, not targeting anything for the specific audience.

It’s a twofold question, as always. Let’s imagine you make software that solves a particular problem for the user. We go the user and ask “What’s your problem?”. We go deep into his industry, run the numbers — is the user ready to pay for solving this problem or not. And then we create a product that solves that problem.

Games can also be considered as software that solves a gamer’s problem. He wants to entertain himself — in our case, learn something. But it’s not like “my back hurts, I take that medicine and it doesn’t anymore”. The gamer wants to play something pretty, something with a soul. We need to develop chemistry between a user and the game. He wants to “befriend” the game. If there was a foolproof way to develop that chemistry, the same as with solving issues in the business industry, then maybe creating games for ourselves wouldn’t be that important.

If we say that we can’t conduct detailed research on the issue, then the only way to find out if the game establishes that rapport with the player is to be that player. If we like the game, if we find it beautiful, interesting — then we can deduce that there’s probably more than one of us, that other people that like this game also exist.

But there’s a very fine edge there. We need to look at the product like we do it for ourselves, but sort of from third person. How would a person who hasn’t gamed for 5 years look at the game? How about a person that only plays Destiny? Or someone who has a thousand hours in Dota? So we need to look at it from different perspectives, but also with the added business motivation of playing it for your own pleasure.

The mental motivation is simple — games are hard to make and it takes very long, so by the end you’ll invariably develop something similar to hatred for it. You’ve seen it so many times you grow tired of it. But if, among all that, you don’t like the game at all, then you’ll inevitably slack off toward the end of development. There’s no other way to develop games than to make it for themselves, or otherwise you won’t make it to release at all.

But at the same time, you agree that your games are rather niche?

Of course! That’s the main benefit of what we do. We want to be niche. We’re not trying to entertain all 20-to-40 males — the entire world does that already.

We want games to tell people something useful, to be the player’s companion in life. It’s certainly not as big of a niche as, say, sports simulators, where the audience is huge and diverse, but we don’t even pretend to try to capture this many people.

Is working by these principles profitable?

I think it can be profitable (well, we manage to), but you need to, for the lack of a better word, “prepare” a market first. We’ve been working for 4 years and we’ve discovered what genres and formats should we work in to make money. We can do it, but no one says our mark is the maximum money you could ever make from that industry.

Only now did we develop an understanding on how to work that market, how to create it. It’s not very well-developed. The next 10-15 years will be spent on making that market more welcoming to third-party developers that share our goals — that games need to be useful.

Our goal is to ensure that in 20 years games would help people learn and do something that they want to do. Something that’s also in demand in that future world, something that they’re most effective at. Then, universities and schools would only exist for research purposes.

Overall, I see a common theme between your interests — games, Gamesjam, lectures, I believe you even teach…

Very rarely. 10 academic hours a year at most.

When did that interest in education originate?

There’s something beautiful in helping young experts to be better and happier than us. Experience helps with that. But there’s also a less “visionary” motivation. What’s your favorite game? Let’s determine who you are by the games you play.

Favorite of all of them?
All of them. Any genre. Just first thing that comes to kind.
Let’s say Mass Effect.
OK, that’s a good choice, I like it as well. And the second one?
Gothic, probably.
Hell, Gothic is excellent as well. I’m wondering if our interests align. I like both of these too, but I’m a huge fan of simulators and tycoons. Mini Metro, for example, I consider an ingenious achievement of modern game design. Have you played it?

Sure, I know it.

If we draw parallels with art, then it’s the same “null form” as Malevich liked to imagine — where some huge material, hidden in a deep system, is presented with minimal effort.

Tycoons and simulators are the kind of games designed so we do something and immediately see the consequences. Games, if we look deeper, is a risk-free way to gain experience, meaning that games are the purest form of education. Our company is named Luden.io. If we look at it, “Ludus” translates from Latin in two ways — game and school. There are remains of a place named Ludus Magnus near the Coliseum in Rome. It was a place where gladiators played and prepared for fights in the arena.

So, simulators are tycoons are designed to give players experience in areas where it’s very hard to get it naturally — too expensive, or downright impossible within the limits of planet Earth. They prepare people for situations that might come in the future, they allow them to “rehearse” it.

Education that we have now and that’s been there 20-30 years ago has become very ineffective. Children have phones, they have access to YouTube, Twitch — all of that is way more interesting than to read a book that’s way too full it itself and not even that well-written. If we combine these forms — education and games — then everyone wins.

What happened to VR

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 6

Were these ideas the driving force that led your company to focus on VR?

VR is an interesting topic. When we separated from Nival, VR has just first launched. VR certainly scales the strongest part of games — risk-free experience, since it adds a very strong immersion effect. The brain more easily believe it’s happening for real, though it’s just another optical illusion. But the market is struggling at the moment. No one has quite came up with a VR application everyone would like to have at home.

So we decided to move forward with our end goal, but VR… We have projects on all platforms. Beyond that, we have some VR projects in development that we intend to integrate in schools. If one platform really “moves” the market and becomes the VR platform that makes it big, we’ll obviously work on our presence there, but for now we have tons of happy VR players, and while True: learn() is a traditional, non-VR game.

After E3 there was that graphic going around the Internet that there’s less mentions of VR in the press than even a year ago.

Unfortunately, that’s true.

What do you think happened?

Do you personally want to buy a VR helmet?

No.

Well, that’s your answer. People don’t want that. Once you — yes, you — wake up and decide you want a VR helmet, then something’s shifted in the right direction.

Why why don’t people want it? When it first came out, people were ecstatic, they were saying that in 5-10 years VR would be everywhere, Ready Player One-style.

First thing: don’t listen to business evaluations, only to consumer reports. A customer, unlike a businessman, could answer your question simply and concisely. So, guys, if you don’t want a VR helmet, then your motivation would describe the situation far better than my business thoughts.
It’s always like this — when the game isn’t selling well, just go to a Gamestop and ask a person that didn’t buy it. He would explain it far better than all salesmen combined.

I think it’s an extension of a chicken-and-egg problem. You could buy a VR helmet, sure, but then there’s a question of what to do with it. But people who create VR content ask themselves: why do I develop games for this kind of hardware when so few people have it? I won’t make my money back! And this vicious cycle hasn’t yet broken in the VR market.

But some segments have emerged and will continue to improve. Starting with smaller niches and then getting bigger and bigger. Like the emergence of game consoles in the 80s and 90s, VR’s finest hour will take some time. It certainly wouldn’t come in 3 years.

So you believe VR will take off, just a bit later?

Depends on the format. Would it be a universal VR-AR device or separate products is very hard to predict. My opinion is that VR will take a large, but a specialized niche, like tablets have today. A lot of people have them at home, but few buy new ones, and yet they still solve a defined problem. I believe VR would end up in the same vein. There’s a market segment for it to take, the question is — how big.

There’s another use for it, though. One of my friends told me that he bought a VR helmet to watch movies because he has 4 children. The use case is perfectly clear, I think.

Was it technically difficult to work with VR?

VR has giant performance issues and demands a lot out of platforms that support it. One of our old games — VRobot — has just come out on Playstation VR. It requires stable 60 FPS performance. The Oculus Rift (including the mobile version) needs 75 FPS. Even if drops 20-30 FPS during particular scenes — that’s unacceptable, you need to optimize the game better.

But we have a very strong low-level graphics optimization team. Nikita, for example, specializes in that.

So you have a dedicated optimization guy?

He’s not only doing that, but it’s his primary skill. He works in tandem with Dima, who can build any 3D-scene for any performance requirements. So we’re set in that regard.

On machine learning in game development

For people fascinated by game development and machine learning, Oleg shows a photo of Demis Hassabis for inspiration. A chess wunderkind, a neurobiologist and the founder of DeepMind, he also started his career in game development.

He programmed his own AI for Peter Moulineux’s game Black&White, and then, as head of his own company Elixir Studios he released a Bond super-villain simulator — Evil Genius.
And only then did he become one of the most famous AI researchers in the world.

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 7

Is while True: learn() based on your own experience?

Yes, the game is built primarily on that. How the game industry works is that if you start doing something, you need to have a reference point to look back on. We’re doing a simulation — there’s a lot of details that need to be taken care of, and for that we need a reference point, just to avoid going completely off the rails creatively.

In while True: learn() we took our own reality as a reference point. If you do something and don’t know what to do — look how it’s done in reality. The game economy is renting server farms. If you try to solve a task of processing a huge cluster of data, you rent some computing power, run your numbers, submit the task and stop your rent.

We wanted to showcase how machine learning have developed since the 1950s, from the first perceptron to driving carts, capsule networks and so on.

Vanya specifically kept a Google spreadsheet with all the reference points — major milestones of machine learning, how the industry changed over time and what new technologies have been developing. And that’s how it’s presented to the user — through quests.

Some game versions even mentioned a year. We removed it for a number of reasons, maybe we’ll come back to it sometime in the future. But the player travels along the same path — completes a couple of quests with the perceptron and earns a bit of money.

Every year something interesting happened that was either confirmed or rebuked by future development.

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 8

You can click on any block and find out how it works in-game and in reality, There are two links: one to a YouTube video that tells about it in a concise way, and the other to an in-depth article for those who want to really get into it.

Have the team worked in machine learning before?

Sure. while True: learn() was made along VRobot, so the VR team was focused on porting the game to Playstation, and the new smaller team consisted of machine learning specialists.

Tell me about them: what the team is like, what they worked on before?

Nothing special, really. When an idea of creating an ML simulator first came to mind, I picked a team from friends’ recommendations and students.

Specifically ML experts?

Yes, but they’re all pretty young, no one has, like, 20 years of experience in machine learning. Everyone played Kaggle at least a couple of times, solved some tasks. Most of them studied it at university.

And they made a game. But then again: game development isn’t really machine learning, right? Meaning they’re full stacks — data scientists and game developers in one?

These are people that, first and foremost, understand machine learning, they know how it works. And then they develop a game in Unity, write code, design interfaces and so on. It’s just that, to develop quests and lay them down along a timeline, you need to understand the context first. Obviously, they didn’t create an ipython notebook for every quest.

We have a specific library that runs convolutional networks and some basic things in Sharp that work in Unity. It was also used to create AIDraw — a drawing game: the player draws something, and then the AI has to guess what’s being drawn. This library does the bulk of the work on that, and the entire game is built around it.

It hasn’t been long since machine learning and game development started to come together. Let’s say I have a game that utilizes machine learning. What kind of stack do I need?

I haven’t seen many projects that combined game development and machine learning, strictly speaking — where ML work is seen on the client side. Unity has its own “reinforcement learning” system that doesn’t do a lot of things necessarily, but it’s built into Unity, so the barrier of entry is quite low.

There are a lot of libraries for it, just as there is for other fields: C++ frameworks, neural networks…
Mobile devices often use Apple’s CoreML that can run its computations right on the device’s graphics chip. We take a model, “teach it” in TensorFlow or Yandex’s CatBoost, package it into a special archive and there we go — it can run straight on the smartphone’s GPU and return a resulting prediction to us. We used it, as an example, with our augmented reality game ARrived, where it needed to take an image from a camera and figure out what it was.

If we talk about backend usage, however, then it’s all very classic and straightforward. Servers run on very simple technologies used across all machine learning, but there it’s used for analytics or personalization — ad targeting, for example. A rather famous case was to predict when a World of Tanks player would disconnect from the server and what to do with it. Or to predict the time to give the player an offer — two horses for the price of one — when he’s most likely to purchase it and be happy about it. These are server application, and stack size isn’t really a problem.

But could building a data set be at the core of a game’s design?

Sounds like a concept straight out of Westworld. It might have its uses, but I don’t see how a data set of player actions could be beneficial to us.

For example, we make a game about driving in a city environment. We make a true-to-life model of Moscow roads. We can see that a lot of players crash in this location, or exceed the speed limit on this stretch. With a data set like this we can figure out where the problems are.

But if it’s just a game and not a simulator? Maybe the data set can solve the company’s problems rather than the players’. If the company makes games of a similar type, then datasets of player behaviour could be useful to them, but I haven’t seen projects build specifically for that purpose.

Wasn’t that the purpose of AIDraw?

Scale matters. If we had 300,000 times more players, then probably something could’ve come out of it. If Google made that game, then they could collect valuable data and do something with it, for research purposes. But not for us.

Let’s imagine you came up with a game that uses ML in some capacity, and during development you realize that you can’t create exactly what you imagined — you created something different. Have that ever happened to you?

For example, we knew that we wanted to release a big update to while True: learn() about self-driving cars. The player would teach a car to drive, overtake other cars, switch lanes, accelerate and brake.

Creator of while True: learn() on programming in game development, VR issues and machine learning simulation - 9

Usually the game designer writes a design document, then content is created based on that (like in other industries). But with cars we understood from the beginning that wouldn’t be like that. We had multiple stages to it, each with its own technology. The player would learn genetics; then understand that it’s not very good for his purposes. Then there would be reinforcement in many forms. The player would understand that a particular enforcement method is most effective for his task.

It’s not an experience that can be controlled. Knowing that something might go wrong, we first wrote a tech demo — a raw, technical version of the experience we wanted to create. Then we handed it off to game designers, who then played it, wrote a design document and we polished and finalized the game based on that.

And not only game designers, too — we have a community of the closest friends on Discord, we can give them a feature demo and they can give us feedback. Currently they’ve been playing the self driving cars demo for a couple of weeks and they’re constantly telling us about their experiences.

What did we end up with with, in the end? FIrst, we stated what kind of data input should be used to teach a car to drive, what parameters we can change (thresholds, losses; in genetics, generation size, mutations). And what came out was something not very interactive. The player logs in, sets some parameters and then stares at the screen while the car drives itself. It’s cool for the developers who know the concept, but not for the player who doesn’t.

The player doesn’t feel his contribution?

Exactly, there’s no feedback. So we changed the design a little. The player would drive the car himself, teach it. And then it would repeat after you based on how you trained it.
If the player only switches to the right lane, then the car wouldn’t know how to switch left, because you haven’t taught it how. It became interactive. So maybe we’re not far from the end product after all.

In essence, we understand that with machine learning, something can go wrong. It’s virtually impossible to account for everything at the design stage.

So you plan for making a prototype and then remaking something from scratch anyway?

Essentially, yes.

But it’s not the way game developers do things. It’s a machine learning-exclusive thing, right?

You can say so, yes. In other games and industries we can predict things. We’re not novices in this, so we can understand what the player will do, what emotion he’ll experience. Our “prediction database” we built over the years can handle that. Machine learning, though? Every convention goes out the window.

Автор: arttom

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js