UKR Lider Interview with a Game Artist

October 8, 2016

Learn programming Generally It Involves Setting Up Elaborate State Machines That Guide Npc Behavior

The majority of the extra overhead that will be necessary to emulate this game instead of run it natively once compiled was not so much of a big problem, remember they are also developing the game on extremely advanced PCs compared to the target market for the game, yeah something like that. Therefore this work is mostly outsourced to hundreds of cheap QA entry level game industry folks, haha, So there’s a later stage of QA that will happen on a fully compiled alpha version of the game. Quite a few of these include the Unreal Development Kit, Unity3D, GameMaker, Source Engine, and tons of other proprietary engines. Actually, the majority of great answers here. The engineers basically design the systems, and the game designers design the game using those systems. I’m sure that the game designers can implement their game, The engineers build the tools.

Pretty much all modern games are built around toolsets designed for game developers to directly create the game without the need for much coding.

Am an artist at a game studio, I’m not a programmer.

It’s an interesting fact that the game developer will go into the 3D engine package if a player walks into a door or activates a door,, import the town model into a scene, import the player, place all the NPCs, add collision trigger writees, the player going to be taken into the interior set that’s also created in identical way. All of the internals of how the actual transition takes place, what gets loaded into memory, how previous scenes are removed from memory and so on are handled by the engineers. In addition to the interior of the house in a separate file, In the case of your example. Did you know that a modeler and texture artist will build the 3D model for the town, including the house that the player can go into. Let me tell you something. Inside the computer’s memory, bullets are represented by a couple of different numbers Let’s say a bullet has an X and Y position integer.

This basically boils down to doing some geometry logic.

Y value of the top edge, the X value of the left edge, and the width and the height.

We really need to say a person is represented by a rectangle, that is itself 4 integers. Of course your computer program creates data structure representations of real world objects and later performs some logic that makes sense. This was a pretty interesting poser. Consequently, A game engine is typically a program that serves as a base for running a game. You use a game editor that will produce files that your game engine recognizes. So here’s the question. Is that about the gist of it?


I assume there’s some code that populates nearby areas and after that depopulates them once the character leaves. One thing I’ve noticed in GTA is that if you are up very high and peer through a sniper scope, the AI cars and AI people do not exist at very far distances. Whats the first step to begin coding? I actually understand what your saying but how do you start something as big as a GTA? Also, when you have those sorted out where do you go from there, Not pseudo code or conceptual stuff? If, let’s say, Know what guys, I wanted to test the final boss fight, do I click debug in the IDE, insert some command, and hereupon play through the boss fight to see if my changes worked? When you’re debugging your code, how do you get to a certain part of the game? The predecessor to overgrowth, lugaru, has had the source code released. Did you hear about something like this before? The predecessor to Amnesia, penumbra, so had the source code released.

Thing I will code would’ve been a window to put the game in, consequently some sort of an object, thence you look for to try to make that object move around in the window responding to keyboard or mouse input.

You from there you can add a background for the object to move through, and later you could put other objects inside similar window that can interact with the first one you made.

You’ll have a game loop that’s always running. Notice, work towards that goal starting from the very beginning of it, and you’ll learn all the stuff you need on the way. What you’d better do is define a game type that you really look for to make. It is I personally found it difficult to get started with abstract stuff like make a thing that moves stuff around. Perhaps a Final Fantasy esque turn based RPG, or a text adventure, or a roguelike? Some individuals also think its cool to just hate things.

Appear to give you a blow job and players complain that they’re feeling a 5ms delay. Certainly far slower, and wouldn’t be accurate, it must be easier to code. Ok, and now one of the most important parts. Alternatively, you could do a few checks of the path of the bullet search for collisions using code similar to what you posted. Those are the major languages used. We use C++ for engine and game code with C# for tools and a little of Actionscript 0 for a tad of the UI area. Also, For me its usually always C++, especially since we try to avoid using AS for anything complex. Now pay attention please. Try googling the development of Doom, the few games that actually was built from scratch instead of with an existing engine. Did you hear of something like this before? You start by writing code that enables you to create entities players, monsters, walls and displays them to the screen.

You get to a Black Triangle Moment and people can start developing in earnest.

It’s a no, Therefore if a company is working for an external publisher.

There are some general trends that I will definitely avoid. This turns out to be less important with Steam becoming a great deal more viable, however, in console games, usually a publisher is the one who’s fronting the money for development. This is usually really bad. You’ll have very ‘non technical’ people that work on the other side of the continent dictating the design designs of your game. Studios that also function as their own publisher are usually quite good as long as they can dictate their own schedules. They generally have no concept of the consequences in making late design designs, nor do they care if everyone at the studio has to work 60+ hour weeks with intention to produce a halfassed version of what they asked for. Usually, Starting at the bottom for the most part there’re drivers to handle communicating with the hardware, after that, there is a standard API for communicating with the drivers, thence you have a game engine which defines the 3d world and a bit of its physics, after that, you have game logic which deals with the rules for the game.

This is kind of over simplified, I must admit I’ve only skimmed over it all to answer the question your asking for myself.

You write code that works with these data structures in a generic way.


The ‘set of pieces’ object can call a function on all the pieces and figure out which can capture an opponent, and after that decide to move that piece. Say every piece, That’s a fact, it’s, has a function that can determine if it can capture an opposing piece. Essentially, I find that pong is a great one to use. It can’t always catch the ball, AI can be as simple as move towards the ball just give the paddle some max speed. Sounds familiarright? No matter how much you plan, there’re almost an infinite number of ways the code paths can run, and it only takes one to fuck each thing up. Anyways, The paradoxical thing is, you don’t ever have the game completely sorted out. It’s 100percentage guaranteed there might be bugs, and when you go to fix them, you will indeed find even more things that hadn’t been considered in the plan.

I can’t remember his name, I followed the development of that game pretty well when it was first coming out -heard the president of Silicon Knights on a EGM podcast.

I have to say that I was pretty disappointed in the final product.

Was there a feeling on the team of going through the motions, or did they think it was could be a huge success? As far as I’m aware the game has to be open source to do this? It’s awrite. We use machines to make tools and use those tools and similar machines to make even more complex tools and machines.

This sort of analogy really helps me wrap my head around this. Like photoshop or excel, We use code to write programs that a brand new program, that receives our commands and does additional programming for us. At the core, yes it’s a bunch of if else statements. However, generally the ‘logic’ of gameplay events are coded such that it gives the level designers tools to create events without having to write code. That’s interesting right? You must know how most of the things fit together, that is an entirely different beast knowing how to sit down and design something like GTA ain’t something that just happens, it will take years and years of practice. Although, Object oriented design leads that you’d only recompile that one particular object’s code at most. In the event you are actually compiling something and not runnign scripts. Notice that You shouldn’t be recompiling the entire program. Anyway, You should be compiling a very small fragment of it.

This is the hardest part.

Part of the logic is knowing when it’s safe to put a AI into stasis, and when a AI needs to be awake since it could potentially interact with a player.

Amidst the states mentioned above is something called stasis. It’s really just an illusion. It basically says ignore me, I’m not doing anything. Then, Scripting support could easily be a year, and for a game the size of GTA, it’s probably multiple years. Main window showing is less than a day’s worth of work. Keep in mind that, the further this goes, the more complicated the features are. Studios that pump out games on a yearly schedule are generally bad. Those games HAVE to be released by a certain date. Sports games are somewhat notorious for this. Their either preparing to suck, change very little from last year,, or the team is planning to have to work its balls off to get it done.

It’s basically guaranteeing that you’ll be working non stop crunch to complete the projects.

What exactly should be the very first thing they code?

I’m more interested in the specific steps taken to begin coding. I’m not planning on creating my own GTA I’m just looking to understand where people who do create these games begin. Also, Yeah, I should have clarified. It’s a well The last game studio I worked at carried on closing down. To be honest I haven’t looked back. With that said, I had initially looked to get another games job but continued getting an offer I couldn’t refuse from a company outside the industry. That is why most games you see are either or environment or the user.

That is among the biggest things to look for on your first game, make the user fight himself or the environment, look at angry birds, your against the environment and your personal score, same with super meat boy.

Platformers, physics games, bejeweled clones, all have you face off against the environment, those are a decent place to look to start.

Yep, people do not realize that good AI is just about the hardest thing you can do, that is why AI in games tends to be so stupid and predicable. So, That’s a single way I can think of how you would do it. Just tons of if statements accounting for anything the player can do. I mean for say something like in Skyrim if you walk past a house, is it sort of like ‘if else’ statements for if he enters the house, do this, if not, do this and so on. I actually would assume they are not will be successful unless they make it through with at least 1 very popular game.

Thanks for the reply, do you know anything about Indie game developers?

Newer versions of Unreal will automatically generate this data for you.

AI is a tad of alternative beast and is hand coded. The idea was that pathfinding gonna be somewhat precomputed so it’s cheaper in real time. That being said, in older versions of the Unreal engine, it was up to the level designers to place these things called Path nodes that would allow NPC’s to determine where they could and couldn’t travel. Generally it involves setting up elaborate state machines that guide NPC behavior. Usually, The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically take damage event is triggered, if the sword trigger volume encounters a defined volume like an enemy torso.

To be honest I suppose only one must be the trigger and the rest should just be defined volumes.

For instance the sword in my hand, the bullets from my gun, the enemies’ head are all trigger volumes?

Speaking of combat, is that done basically identical so that’s, imagine that you are making a chess game. A well-known fact that is. Instead, we write code where the board is represented by a data structure. Oftentimes There’s must do.

The next step is making use of data structures, and writing code that acts on that data structure.

The pieces are also represented by a data structure.

The set of almost white pieces or grey pieces is represented by a data structure. Whenever you fire the gun you will simply do a line check along the line of the sight, if a bullet is considered to move infinitely fast. Fact, you will immediately inflict damage to whatever it hit, Therefore if it hit anything. As soon as you have those sorted out where do you go from there, Not pseudo code or conceptual stuff? I understand what your saying but how do you start something as big as a GTA? So, Whats the first step to begin coding? I believe that those things will always be visually lagging behind traditional games, just because of the need to render double the quantity of stuff, To be honest I could be completely misunderstanding the technology. I hooked up input I could move it here and there, whenever I had that quad with the MeatBoy image on it.

I worked on stopping him when he landed on a platform, Know what, I worked on stopping him when it he a wall, By the way I made him stick to walls when I pressed a button my eat Boy quad would jump since, when he stuck to a wall and I hit a button he would wall jump, I’d say if he hit a greensquare he died and on and on until the last line of gameplay code was written and Super Meat Boy was complete, after I played with that slightly I made it. For a more detailed example, let me go through how SMB started. The most important things to ‘learn’ is how to be a really good problem solver and how to work well in large groups with varying degrees of expertise.

So language doesn’t really matter that much, to be honest though. You can learn whatever language you should, I’d say in case you have a solid understanding of algorithms and a decent computer science background. You do have a point there. Notice that Everyone else doesn’t really know about it due to it’s age and a select few hate it. This is where it starts getting very entertaining. Granted I don’t think it’s as polarized as say COD/BF, plus plenty of younger gamers don’t even know about Half Life, let alone have played it. The people that liked it before still like it, the people late to the party mostly like it.

That’s like saying hey look these cars were built using an automated assembly line, why was not a human bolting on nearly any single piece by hand.

Short answer, its a single way to do it efficiently.

We use the tools we have. Normally, The values that are fed into that script end up coming from your controller and the hardcoded state of the game. That said, you could say their action is colliding, when you run into them you collide, blocking motion, they stay still. I’m sure it sounds familiar. Consider this a sketch might look like. These concepts can be distilled into a language that gets interpreted just like a python script.

What about houses/buildings?

Whenever ranging from widely used languages for common domains, just like HTML for web pages, down to languages used by only a single piece of software, There are a wide kinds of DSLs.

DSLs can be further subdivided by the kind of language, and include domain specific markup languages, ‘domainspecific’ modeling languages, and domain specific programming languages. Basically the term domainspecific language has become more popular as long as the rise of domain specific modeling, special purpose computer languages have always existed in the computer age. This is in contrast to a ‘general purpose’ language, that is broadly applicable across domains, and lacks specialized features for a particular domain.

Simpler DSLs, particularly ones used by a single application, are sometimes informally called minilanguages. A domainspecific language is a computer language specialized to a particular application domain. The entire article is pretty good, I’ll just quote the relevant part. There was an awesome article written by Tommy from Team Meat a while back about how to start making a game. I remember working with Valve Hammer Editor in Half Life. Needless to say, they’d be no clipped invisible brushes used to trigger events, never knew they have been called ‘triggervolumes’. Where it’s got similar tools to create, animate and color models, design objects/landscapes as well as gamespecific kinds of stuff like the trigger volumes. It’s more like buying say, when you buy a game engine. On top of this, whenever pulling all the strings behind the curtain, never really took the time to ask what a game engine was, you always hear about the game engine as this godlike Wizard of Oz. There are only a finite number of variables.

Thats what makes software design so hard, compared to say, civil engineering and bridge building.

You could easily exhaust pretty much almost any known configuration and be sure it’s planning to do what you need.

It only takes one to crash the program, in software. You can’t test them all. You know how many lanes there going to be, how much weight it can stand, and how to construct it that I can safely hold that weight, when you build a bridge. Nevertheless, A good fiend runs Compulsion Games, character models, and suchlike as Unreal using its own scripting language, much of the game specific source code is written in Unreal Script. This counts as content and can be changed. You could setup debug spawn points, to start you in the areas you need for the purpose of testing.

That testers and identical people can go instantly to a location or area to test something, thats why games like half life and many other games have built in ‘cheats’ in the debug console.

In that case, you’d have to imagine the bullet as a line instead of a single point, so check that line against the sides of the hitwrite to find if it collides.

It certainly wouldn’t work for a bullet that has instant travel in a straight line. This is overly simplified and wouldn’t work well unless bullets traveled very slowly relative to the hitwritees you’re comparing against. Know what guys, I have dreams of designing tower defense games that don’t suck like everything on net these days.

What’s working with it like?

How is the galaxy editor, as a novice programmer who is a huge RTS/SC fan.

I’ve heard it’s extremely complicated compared to the warcraft 3 editor, that is daunting. Of course, War 3 had way better ones. Of course, Which you can thence apply in other projects. You will get some basic knowledge. Also, Such as controllable characters, environments, collision, enemies, triggers, and stuff Yes yes it’s a 2D platformer rather than GTA, BUT! It helps you to get an idea on how to implement some basic concepts in game development, So it’s not a very indepth tutorial that delves deeply into what any little knob and switch does.

Start small and make it bigger.

Just a boss fight as an example, you just trigger the event, write down into first person mode from the development viewpoint and play it out.

Just as was shown in that trigger volume video up top, the game engine software could be able to emulate what’s happening without compiling that game. Health potions increase this number. The game knows when your dead since it can figure out whether or find out whether or not the HP number is 0 or less, just like a game can know a bullet has hit by performing some logic with the X and Y coordinate numbers. Damage subtracts this number.

RPGs solve this by abstracting all this away with hit points.

You take what you had before and improve a small part by replacing it.

Game engines are built in iterations. It has millions of hours of work put in to it. It’s a well GTA stands on the shoulders of it’s predecessors. That is interesting right? This trigger object has a level associated with it, such that if you trigger the object that level is loaded, if you do. You should take this seriously. Broadly, what likely happens is that So there’s an object placed globally whereby if you are inside its trigger write and are aiming at it you can press a button to enter. Think of health and damage in RPGs like Dungeons Dragons or Final Fantasy. In the real world, cuts from swords and arrows are dependent on a whole lot of things. Certainly, Trying to simulate the logic of all of this my be very complicated. A deeply punctured lung is bad, even a slightly punctured heart is worse, an entire hand cut off is bad but not lethal. This is totally normal, and don’t feel bad if your programs are like these. Usually, Many beginner programmers start writing programs that are huge collections of loops and if else statements.

Ludwik Grabowski

About the Author

Ludwik Grabowski