How to Make Use of the Unreal Engine for Autonomous Driving Simulators

Can you please tell us a little bit about your career path.

Thanks to my father for his interest in technology and computers, I was able to study computer languages during my childhood.

He gave me my first computer, an Amstrad CPC 464 with a 2-color screen and a disk loader.

I wrote my first program using BASIC in the summer of 1988, at the age of 8.

I was always fascinated about programming and I knew that I wanted to do games since then.

Back in those days it was not so easy to specialize in video game coding, so I pursued a career in computer engineering when I attended college, and years after that I studied video games, computer graphics, and virtual reality at another university far from my home.

But the way I learned more was from my own projects.

I started doing jobs for clients while I was studying to pay the university bills along with internships in different companies for short periods.

After I spent a lot of years doing 3D, real-time, and networking software for customers, that taught me things about different fields, I also had my own software company for more than four years, and then I did around 15 years of freelance work.

After that I was hired for various companies, until now, 2+ years later at the moment of this interview.

From these projects I learned about various skills, technologies, and methodologies.

There was a moment that I choose to do only games, which is why my current projects are video games.

I also teach people to code.

I think you should always try to teach the same thing you want to learn, and right now I’m very interested in Unreal Engine and C++11, so that’s what I’m doing, aside from my current job where we are using the Unity Engine, C# ,Node.

js, and Mongo.

What is your current specialization?I’m in charge of different things regarding the game we are working on at Playstark — Agents Biohunters — it’s an online game that mixes different genres, which makes it so special and unique.

I’m doing networking, gameplay, HUDs, optimizations, animations, effects, shaders… thanks to all the games I did in the past (well, mini-story: I was obliged to purchase a license of Unity 4, so I was forced to recover the money by doing all kinds of games and it worked), well, my current position involves knowledge about all the things I learned.

Particularly, I have to design, implement, and test networking and gameplay mechanisms for real time and store the persistent massive data for different platforms -connected-.

I also have to optimize the level of bytes for the data being sent and received, protect against hacking attempts, gameplay optimization in FPS, and message bandwidth consumption, and more.

For instance, I could start the day writing a script for getting data from the persistent data server, when a signal of the realtime server triggers.

This involves three different programming languages and two connection protocols, and it is displayed in different parts of the game.

We had all kind of problems, but we are getting them solved with the help of the people we work with, we work with a large community of developers, which is the cool part of this industry.

Today the way we solve problems and share them with the community is outstanding, even more, we are going super fast to deliver better solutions thanks to all the information about game development that’s out there; for example, with game engines and plugins, I use share a lot of the things I do, because I’m sure it will help other people.

This industry is really hard and competitive, you just have to go to a couple of programming interviews for big companies like EA or Ubisoft for a senior or lead positions to see if you can pass the tests.

My work, and my profile in particular, in a way, is a very weird one because it combines very different things from different profiles, probably because I choose what I wanted to learn in my career, first as a freelancer and later in the game companies I worked for, but I think I could be an example of how to do things differently.

And I’m not the only one of course, a lot of other people inspire me with their skills and knowledge.

There is a lot of good talent nowadays and people are doing their best to impress.

I think that’s why I keep learning, studying, doing programming courses, and trying out new languages and engines.

Our continuous interactions makes us better in our specialization and having more options let us choose the things we want to do on our path.

I know that some solutions I have found and shared with various problems are being used by other people now.

For example, the Unreal Engine now uses code that I sent them.

What are the most important problems your customers are met with?The costs of the servers are one of the things to take in consideration, together with the game engine Normally, these two things are tied.

Owning a technology gives you more freedom, but at a cost; you pay those costs when you buy and rent third-party services, and then you are also tied by the problems that the software carries; for example, if Apple brings out a new iPhone and Unity fails to produce a game that works on it, you will be late in delivering a port of your best-selling game for the day that this new device is coming out.

Instead of your own engine, you can (if you have the skills or muscle power) code the changes, implement the new framework or rendering — that could be Metal 2 or Vulkan, or whatever -then you will be there on time.

Being the first is important in this industry; you get the sales and you get the people, but you have to keep them.

Unreal multiplayer VR casino I worked on.

I also noticed that a lot of my customers have no a real plan to follow for producing a game in a game store.

A game needs people like the game/economy designer, 2D/3D artists, producers, programmers, sound effects/tech artists, level designers, and so on.

If any of these people are missing, the game is going to lack in some aspects and the player is going to notice and not buy/play your game.

So you also need a plan for the maintenance of the game, which includes the server and other third-party services, marketing, new platforms, new game modes, new levels, etc.

The game is not done once you launch it, unless you are Capcom or Blizzard, and the final decision is the market and player experience and that’s something that is always changing and evolving.

Sometimes players find a game to be funny/interesting because their favorite YouTuber or Twitch streamer plays it, which is why Epic and other companies are putting money into gaining influencers, as they are the ones who move the masses.

This is another thing to consider; the source of your customers is changing all the time in this industry.

There is no right choice here, only testing and failure/success procedures.

Maybe one day you’ll invest or develop a game that the players didn’t know they needed.

So just go for it!What is the most remarkable experience you’ve had during your professional career in this field?After my first job as the lead game developer for an Unreal VR multiplayer casino (that’s another story), I was asked to help with a Computer Vision Center (at the Universitat Autònoma de Barcelona) project.

It was an open-source simulator for autonomous driving research made with Unreal and named CARLA (Car Learning to Act).

What was the problem?The simulator was performing very slowly.

I had to analyze the bottlenecks and bring a solution to optimize the renderer and get a stable performance in frames per second (actually, it is measured in milliseconds for rendering).

How did you approach the problem?.What was the hardest part?I used all the profiles in the Unreal Engine and measured the processes involved to boost performance.

The software was very advanced, as it uses a client-server architecture via a C++ plugin and a connection with a socket to receive images from the car’s cameras (screen captures), so if the scene is overloaded and not optimized, it will be worse when you have more than one camera rendering from each viewport.

What was the solution?Once I detected the flaws in the code and the origin of the bottlenecks, I added a new mode to disable parts of the rendering and lower the parameters of specific configurations with different levels of quality.

I made an optimization gems document for artists so they could add LODs in a proper way, and I changed some code for the AI ,spawning and loading assets, and generating roads.

The impact of gaining 1FPS with this software is gaining years of tests for the experiments that the deep-learning algorithms can eat to produce new and better results.

Other things I tried was to change the render API to OpenGL SM4,SM5, and Vulkan.

I had to write an algorithm to pass the scene capture renders to the deep-learning clients (each of the cars cameras with different post-fx and filters and information attached) and the surprise was that Vulkan is really good for both GNU/Linux and Windows as a renderer, because they indeed have optimizations related to this particular project.

What are the sources of knowledge you use to improve your skills?The best courses for me are the ones that encourage you to do fun stuff that go from very low to high levels.

Coding a game, but writing the code as the teacher speaks is one of the best ways you can learn to do it.

Books on patterns and language specifics are the best for me, also game design, as a game developer is also a designer.

“Do more games” is my current plan, but also “PLAY AND HAVE FUN!”Also, I use Hackerrank, Udemy, Stackoverflow, GitHub.

See my profile on Upwork.

Questions asked by Alex SavinkinFormer number cruncher in investment funds & strategy consulting.

One of Geekforge Founding Fathers.

Blockchain and technical singularity true believer.


. More details

Leave a Reply