What's Your Line?

Josh Markiewicz

Josh Markiewicz, programmer

Coding, creativity, and meeting the public’s insatiable demand for more hats.

By Jason Reich • September 27, 2012

We often use vague catchall words to describe careers in gaming: developer, designer, producer. But those words don’t tell much of a story. What’s Your Line? is an interview series designed to demystify the people who make their living in games.

Most gamers are happy to disembowel monsters or murder enemy combatants by the truckload without giving a second thought to the millions of lines of code quietly operating behind the scenes. Epic Games Senior Programmer Josh Markiewicz actually writes the mysterious code that makes such gleeful on-screen violence possible. After beginning his career in flight simulator graphics, Markiewicz moved up the ranks at Acclaim and Namco Bandai before landing at Epic, where he’s worked on AAA titles including Bulletstorm and the Gears Of War series. He spoke to The Gameological Society about his role in the development process and how the push for online content is changing that role.

Gears Of War 3

Gears Of War 3

The Gameological Society: What does a programmer do in the gaming world?

Josh Markiewicz: There are gameplay programmers who get the design on to the screen and make the game you actually see. There are engine programmers who are responsible for making the most of the technology. There are tools programmers, the guys that write the tools that help artists do their job. For Gears Of War 3, I was mostly in the online realm as an engine technology programmer. I made sure that multiple versions of the game could talk to each other, so that people could connect to the servers and play together with good bandwidth, a good online experience without any lag or hitching.

Gameological: What tools do you use to program? When you sit down to work, what are you actually looking at?

It’s not like The Matrix, where you see dropping lines of code everywhere. But there’s a certain amount of getting it.

Markiewicz: Code, code and more code. The day to day is mostly staring at text, doing math, doing physics.

Gameological: Can you look at lines of code on a screen and translate that in your head to how it would behave in a game, the way a musician might look at sheet music and be able to hear the music?

Markiewicz: It’s not like The Matrix, where you see dropping lines of code everywhere. But there’s a certain amount of just getting it. You can look at things and make decisions, like, “Is this going to run fast? Is this something that will take a lot of time for the computer to chew through?” There are a lot of algorithms in your toolbox. It can be a top-down approach. Like, say a piece of code is going to tell me the number of bullets I have in the shotgun. First, you just want to draw a number on the screen. Then come back and say, “Okay, now that part works, how do I get the shotgun to tell me how many bullets it has?” Or you can work bottom-up. I have a shotgun. What kinds of things can a shotgun do? It can tell me how many bullets it has, it can fire, it can drop on the ground, it can morph into the chain lightning gun. We have some latitude to get creative.



Gameological: So programming is not simply a matter of executing someone else’s vision?

Markiewicz: If you want to riff a little bit, that’s okay. At Epic, we have daily playtests, and then we talk about the game—what we liked, what we didn’t like. Things like, “I feel this map is not balanced right,” or “This weapon is too powerful, but what if we had this weapon to counter it?” That kind of feedback is welcome and encouraged. Obviously, there are designers whose job it is to create, but programmers love games, too. That’s why they’re in the industry.

Gameological: Where does programming fit into the development process?

Markiewicz: First, there’s pre-production, where you’re figuring out the two-line statement. You know, “It’s Pirates Of The Caribbean but with tanks!”…You start to nail some things down. We’re going to have three kinds of pirates, we’ll have four kinds of tanks, we have to have a ranged shooter character. In mid-cycle we’re striving for “content complete,” which is when every character’s been modeled, all the animation is done. It might not be in the game yet, but it’s finished. After that we’re striving for ZBR: zero bug release. That’s the push to ship the game, to finish up the polish and make the best possible experience for the consumer. The new thing is post-production. Until recently, you ship a game and it goes on the disc and you’re done. But iPhone games put out free releases, you know, rate us five stars and we’ll produce more content. We’re experimenting with that. You’re not just going to release a free-to-play game and say you’re done. You’re going to add more hats, add more weapons, more zones to play in.

Infinity Blade

Infinity Blade

Gameological: The free-to-play model is increasingly popular, but there must be plenty of players who simply find microtransactions or in-game ads annoying.

Markiewicz: Back in the day, arcade games were designed to take a quarter from you every two minutes. That pace was met, and you didn’t feel like you were getting bilked. We’re trying to get away from charging 60 dollars for the experience, and instead giving it away for free and hoping that 20 to 30 percent of people like it enough to want to spend money on it. At Epic, we’re trying to figure out what it means to bring a game like Gears Of War or Fortnite to that space. We don’t want, “pay to win”: We don’t want someone to pay 10 bucks and have a huge advantage over someone who just wants to play. But a lot of people like to be able to express themselves through their character or the furniture in their house.

Gameological: Is it challenging to work on games across different genres, or is programming always programming, no matter the project?

Even something like when you move the thumbstick to look around, there may be a lot of math going on there.

Markiewicz: Math and physics are always relevant. If you want to do a hardcore racing simulator, the physics of the game are going to be a lot more important, but if you want to do a platform jumper, [the character] doesn’t really fall under normal Newtonian gravity laws. Programming those aspects can be tricky, trying to ride that line between fun and real. As I said, it’s a toolbox.

Gameological: You’ve mentioned math and physics a few times. Does that mean you’re actually doing a lot of number crunching and blackboard-type calculations?

Markiewicz: Things like kinematics—gravity, velocity, acceleration—those are all very relevant. Even something like the controller, when you move the thumbstick to look around, there may be a lot of math going on there. If you jam the joystick to the right, do you want it to go really fast, or should it ramp up over time? It matters. That’s the stuff that shows up in reviews. People say the game doesn’t feel right, and often it comes down to the math. Rendering and graphics? Super heavy math. What does it mean for light to reflect off a surface? What does it mean for the physical material properties of the leather jacket you’re wearing? If the character jumps in the water, what does it look like for him to be wet and how fast does he dry?

Gameological: Does knowing what’s under the hood affect the way you play games, or can you take yourself out of the role of programmer and just have fun?

Markiewicz: When I’m really involved in the story of a game, I can put that aside and just focus on enjoying what I’m seeing. It’s when someone brings a game to work, and we’re talking about it, that we get hyper-critical of minor flaws. At least I can understand, like, if the character is not letting me do something and I’m frustrated by that, I can temper that. I can understand if there’s a game design reason that happened, or say wow, that’s a bug, but I’ve seen that bug before. So I can be like, “There, there, it’s okay, other game.”

Share this with your friends and enemies

Write a scintillating comment

116 Responses to “Josh Markiewicz, programmer”

  1. rvb1023 says:

    Gears of War is still the most fun I have had LANing with friends this entire generation (Rock Band is a close second) and their recent decision to make Fortnite PC exclusive made me happy for some reason.  Even though they have all but forgotten Unreal Tournament they are still some of the best at fun Multiplayer for me.

  2. caspiancomic says:

    I really dig this series. I’ve made no attempt to keep my game design aspirations secret, and I’ve been learning a lot about the specifics of game creation through these interviews. Although I’m not aiming for programming, I think it’s helpful to know a little bit about everything going on in a production. Honesly, to me? Coding looks like fucking magic. The extent of my coding experience has been a bit of HTML back in high school, and some CSS stuff to get my WordPress and Comicpress sites looking and performing the way I want. So the idea that someone could write code to do anything more complicated than bold text or change the width of a table tends to blow my mind.

    Also, I really love how when Mr. Markiewicz sees light hitting a leather jacket, his mind goes straight to “math.” For me, something like lighting sits very firmly in the realm of art and design, and the idea that lots of complicated math probably goes into getting it to look right while running in real time in-engine is pretty wild. I have a lot of admiration for programmers and the way they think.

    • HighlyFunctioningTimTebow says:

      Yeah, real coding is hard. Really really hard unless you’re mathematically gifted. It’s not impossible, even for an image/design kind of person like yourself to do, though. Pick a language more suited to what you already know – front end web design. I suggest javascript, with an eye on some of HTML5’s features. Find a tutorial site like Codecademy, and get the basics down. You might not be creating Mario right out the gate, but you’ll hopefully feel good about the new skills you’ve picked up.

      • Captain Internet says:

        Whoa, hang on a second. Programming is not really, really hard. You do not have to be able to recite pi to fourteen decimal places to write a computer program, and you almost certainly won’t need to calculate light / water interactions on different brands of leather jacket unless you really, really want to.

        The main thing you need to understand with programming is that computers can’t think for themselves. They’re more like sulking adolescents. You can’t say “Can you go to the shop and buy some bread?”, because here’s what you’ll get back:

        “WHICH shop should I go to? WHAT bread do you want? And I don’t have any money and you didn’t say please so why don’t YOU go and do it if you want your bread so fucking much!”.

        You need to be far more specific, and although any reasonable human could work all those questions out, the adolescent will always refuse to. So you specify the shop, and that you want wholemeal, and you say ‘please’, and you give him £20… and he duly comes back with forty loaves of cheap, nasty bread and no change. 

        Which is not what you wanted, but since you didn’t specify how much bread, entirely your fault.

        On the face of it this might seem more trouble that it’s worth, but you only need to write the instructions down once. You can then substitute ‘bread’ for whatever else you fancy, or even rewrite the instructions to involve a shopping list and the locations of other shops, and suddenly you have a general solution, and need never go shopping again.

        OK, the analogy sort of breaks down there, but you get the idea.

        The mathematics is usually pretty easy to pick up, but like all maths, if it’s new to you it can take a while to get your head around. Put it this way: most of the cool stuff you basically learnt at school, and if you were sleeping through those classes you might as well get it right this time.

        JavaScript is probably the most common language on earth right now, but I wouldn’t start with it- try Processing instead: http://processing.org/learning/

        It’s a more traditional language, and you can start making pretty things very quickly. Oh, and buy a book. Learning things off the internet is a bad idea.

        TL;DR: programming is not hard, apart from when it is.

        • Girard says:

          LIKE LIKE LIKE

          I’m actually presently researching the affinity between art and programming, and the pros of teaching kids programming, and of framing programming as a creative art rather than a mechanical science. Whenever I hear people say code seems like “magic,” or that it’s this opaque, gnostic mind-plowing process they’ll never understand, I find it dispiriting in a same way I do when someone (invariably an adult, as kids don’t limit themselves this way) asserts that “I’m no artist,” and treats art like it’s this daunting impossible thing they don’t have access to.

          They’re both largely skills that are easy to pick up but very difficult to master. As long as you don’t expect to be Sergei Brin or Inka Essenhigh right out of the gate, there’s no reason to feel intimidated or that you’re missing some divinely-granted talent that’s a prerequisite.

          I’ll second that Processing is a great tool, especially since it’s pitched at artists, so it’s a good bridge between those two flavors of creativity. Golan Levin, the programming-and-art teacher at my alma mater taught his classes using it, and if a bunch of sophomore undergrad art students can pick it up, it’s probably a safe bet you don’t need to be super technical to play with it.

          @caspiancomic:disqus If you’re interested in games specifically, something like flixel might be worth looking into. It’s based in Actionscript, which is broadly in the universe of Javaey languages, but maybe a little more forgiving/user-friendly, and on top of that, it has pre-set functions for most common game-type stuff, so it’s fairly trivial to knock together, say, a simple platformer. The main downside is that, being Actionscript, your end project in invariably a Flash game, which is a limiting and possibly “on-the-way-out” platform.

          I think people seeing the creative arts and programming as these utterly
          distinct zones with no overlap is detrimental to both. You get
          programmers with no poetic soul, who go on to shape the digital,
          mediated world we live in (and end up with a “social” network where some
          photos and a list of your favorite TV shows stands in for your
          personality). And you get art educators who either place their practice
          in opposition to what they see as creeping technocracy, and retreat to
          traditional manual artforms, or art teachers who are too intimidated to
          really engage with new media, and approach computers in a cursory way,
          mostly teaching old art forms in new media drag (digital painting,
          digital video editing, digital design). Which of course doesn’t prepare
          their future artists to respond to or interface meaningfully with the
          new, programmed landscape in which they find themselves – mainly is
          prepares them to provide content for the walled gardens created by the
          people who do know how to program, and can exploit
          their work for money.

          (This bloviating is what happens when you read too much Douglas “Program or be Programmed” Rushkoff and Jaron “You Are Not a Gadget” Lanier…

        • caspiancomic says:

           Bless you @Captain_Internet:disqus and @paraclete_pizza:disqus. I always greatly appreciate it when people are enthusiastic about this sort of thing, especially when that enthusiasm manifests itself as an insistence that anyone can do what they do. I think I’m going to check out the programs you guys recommended, since even though I’m years away from truly making my own games, I’d like to get a bit of hands-on experience in the mean time. Maybe I can write like a text bolding simulator or something.

          In all seriousness, even doing something as trivial as CSS editing, I’ve learned that programming is really more about problem solving than pure math, or certainly physics. In reality I’m sure all that’s really standing in my way is I don’t know the tools: I don’t know what thingies to type into the thing to do the thing I want to get done. But once I’ve done a bit of learning and research, and have access to a broader selection of the language of programming, I think I would actually be relatively well suited to the actual act of butting up against problems and inventing solutions.

        • lokimotive says:

          I like your analogy, except I would suggest that the teenager would not ask “WHICH shop should I go to?” &c. Instead they would either stare blankly at you, head off in a random direction and never return, or simply start yelling random nonsensical obscenities.

          This may be more suited to my situation though, as I’m generally only working with code from someone else. More importantly, I don’t know what the hell I’m doing the vast majority of the time. I’m working with Python and XSL scripts (I realize the latter isn’t really ‘programming necessarily’) that have been created by someone who no longer works where I work. So I try to decipher what’s going on, and extrapolate what I need it to do. I would say that this is an excellent way of learning, except for when it isn’t. What tends to happen, of course, is you think you know what’s going on when you really don’t. Then when you realize you’ve hit a wall you have to try to forget everything you’ve come to expect.

          Actually, can I expand that petulant teenager analogy? Since I’m working mostly with text, it works better if we say that you’ve written a note for your petulant teenager. You come home and see that they haven’t done anything you wrote in it. “What happened?” you say, “where’s the bread I asked you to get?” “Bread?” they say, “I don’t know what you’re talking about.” “Look, it’s right here on the list.” “I didn’t get to that part.” “What do you mean?” “Well, I got here”, they point at the ‘â’ in ‘pâté’, “and I stopped because it didn’t make any sense.” “‘Pâté’? You didn’t understand what that was? It’s like meat paste, it’s for the party tomorrow.” “That’s ‘pâté’? Well it looks like ‘pâté’ to me and I have no idea what that is.” “What? Oh… come on, look, the note is encoded in UTF-8!” “Oh, well why the hell didn’t you say so?”

        • I’ve been programming for [FLOATING POINT OVERFLOW] years now, and my comment is that there are many levels of programming, and many types of programming languages and tools. There are tools to deal with much of the grunt work in gaming so you don’t have to be Richard Stallman just to throw fireballs at a generic zombie. But I can tell you that Josh Markiewicz stares at some really low level, math grinding, number crunching stuff most of the time. As someone who also used to work on flight simulator graphics, here is something that always impressed me. We often had to do horrendous matrix mathematics (so horrendous, we had Electrical Engineers design a board just to pass these calculations to, similar to how your PC has a graphics card). The trick is, a few of our math guys sat down and worked the matrix mathematics into routines and formats such that the rest of us simply had to know how to fill in the x,y,z coordinates and what viewpoints were we translating from and to, and the matrix “magic” would be done for us. Markiewicz is doing the Epic’s version of the matrix magic.

        • Enkidum says:

          I agree with most of what @Captain_Internet:disqus and @paraclete_pizza:disqus have said, except I’d say that there’s nothing wrong with restricting yourself to online learning, especially in the early days. I’ve never owned any book about any language, but I’m a competent enough programmer in several. Physical reference books are heavy, and outdated the second they’re published.

          I’d recommend futzing around on an online course for a few months, understanding the basics of if-then and for/while. Doesn’t really matter all that much which language you use – at the early stages, they’re all basically the same. Try making a random insult generator or something stupid like that.  Then at some point, if you’re still interested, take a course at a community college.

          I read an interview with someone at Valve, I think (was it here?), where they were saying that the single most important thing a non-coder at their company could do to improve their working life was to learn some coding – not because they would be expected to code, but simply because they could then talk to the engineers and programmers in a language they all understand.

        • Fluka says:

          This is a beautiful response, and deserves all the likes it will inevitably get.

          Honestly, one of the most damaging modern ideas about coding is that it is something that is done by 1337 H4X0Rs which is somehow impenetrable to those who have not being writing games and hacking databases since the age of five.  This is certainly a concept that I had to get over when I first started doing physics research (“How can I possibly compete?  I wasted my high school years reading books!”).  In reality, it requires patience to learn the basic components and rules, and then it requires practice, mostly by doing an actual project.  Like learning any language, you won’t learn by just reading it out of a book.  And there *are* guys who fit the stereotype of the super-coder, but most of the time you’re just looking to efficiently and effectively translate your idea to something the computer can understand and execute.

          Also, I really liked this article.  (Damn it, Gameological, you’re really hitting it out of the park this week!)  As a person who spends every day of her working life writing software and macros to analyze data, it’s really interesting seeing how things are different but also not so different in the games industry.  Okay, two major differences I can see.  A) They test their code a lot better.  *Pounds keyboard angrily as she discovers another mis-read header resulting from last week’s switch to C++2011.* B) I think he uses more physics on a daily basis than I do.

        • lylebot says:

          As someone that teaches programming to undergraduates, I can say you absolutely do not have to be a genius to learn to program, graduate with a CS degree, and/or get a job as a programmer.

          The geniuses do stand out (I suspect Josh Markiewicz is one of them) but that’s true of most things that require both creativity and craft.

        • blue vodka lemonade says:

           @caspiancomic:disqus I’ve been having fun with Inform 7, an interactive-fiction-writing tool. It kind of straddles the line between programming and natural language, so it’s pretty accessible, and since there are no graphics or physics or anything involved, you can compile and test your game in about ten seconds. This is really satisfying, to me.

        • George_Liquor says:

          I agree, it’s more a matter of interest and motivation than raw talent. In my very limited programming experiences, the biggest problems I faced were usually conceptual in nature: What steps do I need the computer to perform in order to solve a problem like beating me at Tic-Tac-Toe or moving those Towers Of Hanoi disks around? Once you know how you want your program to work, and you gain a little experience in your language of choice, the coding just tends to naturally fall into place.

        • HighlyFunctioningTimTebow says:

          I’m not the bad guy here. 

          I was speaking out of my own past experiences struggling with programming; writers write, coders code. I’ve tried to do both, and currently do neither. I certainly did not have an Elites only opinion, as some have said. Jaded, yes, but with a reason. I’ve always found writing code exceedingly difficult, and envied those for whom it came easily, mainly people with very strong math backgrounds.I’ll reiterate my third sentence for those too put off by my second: “It’s not impossible, even for an image/design kind of person like yourself to do, though.”

        • caspiancomic says:

           Hey, don’t worry about it @HighlyFunctioningTimTebow:disqus, I hope you didn’t interpret the string of responses here as some sort of dogpile on you. I think I’ve gotten a lot out of the more optimistic responses because they’re telling me what I want to hear, but no matter what, I’ll always agree with you on point: coding is hard. That isn’t to say it’s inherently, impenetrably hard, just that for someone with a big-picture, conceptual, visual-learning style brain like me, it’s an unnatural process that’s going to take some adapting to.

          It’s the same way that a lot of math and engineering folks, if you asked them to write a ten page research paper they wouldn’t even know where to begin. I, on the other hand, have spent the better part of the last decade writing and know how to do it. It’s “hard” to them, because they haven’t developed the mental tools and the inventory of techniques that make writing possible. Same thing with coding: lots of hard work, but not impossibly difficult, and not impossible to learn.

        • frogandbanjo says:

          Addendum: coding’s never as hard as it could have been if you had been one of the guys building the tools instead of just one of the kiddies using them.

          And down the rabbit hole we go…

    • HobbesMkii says:

      He must do that a lot with the light thing. A lot of the games I’ve been playing since…oh, 2006 or so…have had an excess of shiny lights. For some reason, not only does leather seem to have been polished, but khaki, boots, hats, trees, houses, sheets of paper, etc. all seem to reflect light.

      • thelandofdoasyouplease says:

        Modeling light as it reflects and refracts of surfaces is a very difficult problem.  Most games, from my experience, do very little to model lights interaction with the world.

  3. Effigy_Power says:

    I guess every industry has, on the whole, jobs that will always be under-appreciated by the public that consumes the products, apart from a few either initiated enough to know or the very few empathic enough to care.
    Very few people care who the sound-mixer on an album was.
    Very few people care who the camera-man for a movie is.
    And I’d say in the same line that a lot of people either don’t care or don’t even consider the people who scribble lines of code just so they can gleefully cut a swath through underground mutant dudes.

    The focus will probably always be on the singer, the main actor and showboating game designers (for good or bad) such as Peter “Look-at-me-I-have-candy” Molyneux or Will Wright. Every project, be it comic or TV-series or whathaveyou, has its attention focused on a small aspect of the creative process and largely ignores the rest, apart from a small crowd of people who actually research this stuff of course.

    We live in a world where hardly anyone knows the name Richard Bluck ( http://www.imdb.com/name/nm0089459/ ), despite being the director of photography and camera operator in a pretty big amount of recent hit movies, yet somehow we all remember that there’s a “Billy” Baldwin.

    The people working on technical stuff in the background usually stay in the background, whereas someone who scribbled a few sketches for the game and came up with putting zombies in it is remembered for their creative input. It’s unfair, but that’s just how it is.

    • George_Liquor says:

       I think you’re giving Billy Baldwin a bit too much credit.

    • It is really unfair and I probably won’t ever understand exactly why everyone by a band focuses on the singer; the others for me are as interesting or more interesting. I mean not one person is responsible for the product they are delivering at the end to the consumer, it is always the whole group or company. That is why I say Minecraft is from Mojang and not as many say the game from “Notch”. Markus “Notch” Persson definitely was not the only one who has worked really hard. Most of the time the people get honored for things they have not done or have done way less then people in the background getting nothing of the fame and attention.

    • blue vodka lemonade says:

       With a lot of casual gamers–and I mean casual in the sense that they “just play” and don’t, say, read industry news or Gameological or what have you–it doesn’t even matter who the designer is, or anything. There’s just awareness of the publisher/brand/IP, as in “I like Nintendo games” or “Gears of War is shit” or “Gears of War is THE shit.”

      For most people, even most people who play games, the industry isn’t made up of auteurs a la Molyneux or talented coders like Sr. Markiewicz, but a bunch of magic warehouses that mysteriously deliver games by the truckload to the local emporium.

      When angry tweenz flock to message boards to complain about the relative coloring of Master Chief’s suit in the latest game (Halo is still cool, right?) they aren’t going to direct their complaints to the artist who made the texture or the programmer who decided how the light reflects off the metal; they’re going to direct it at Bungie, or at Microsoft, or at some other large, seemingly-omnipotent entity.

      • Effigy_Power says:

        That is true, but then even the broadest of people probably understands that companies are comprised of people and not “Dr Seuss’ Magicafristical Gameophagic Wondercollaborature”. When people hear Sony, Microsoft and Nintendo, they must be, at least subconsciously, aware that there are a lot of people who make up these entities.
        So you are very correct in your point about generalization, which after all is easy and used in just about every aspect of life, but it really only shows how people tick.

        When people said that EA crapped on Mass Effect, they also included every other company that EA owns.
        When people aimed a bit more closely at Bioware, they also included every sound-designer, concept-artist and voice actor in their scorn.
        When people said that the writers were to blame, they also crapped on writers who had nothing to do with the end and were in fact doing completely different stuff.

        The opposite is just as true. How many people have repeatedly blamed Bill Gates personally for every fault or complaint they had for anything even remotely related to Microsoft?
        “My headset has static on it. F**k Bill Gates!”
        Microsoft and its subsidiaries have thousands of employees and somehow it’s the CEO’s fault because he didn’t personally inspect that particular headset some boner bought at Best Buy.

        Humans just work that way. We marginalize the individual by propping them into groups and generalizing them into one homogenous blob for our discontent in order to feel terribly oppressed by a large entity and we pick out single faces, names or deeds to confront the works of thousands of people, because it’s easier to gang up on a single person in forums and such. Especially if they are rich and intelligent, successful or beautiful, extrovert or fat, or really have any singular aspect of character we can hammer around on.
        It’s part of our social interaction and it’s not great, but there we are.

    • frogandbanjo says:

      Vision and no tech team still leaves you with a novel or a tabletop RPG. A tech team with no vision leaves with you a bunch of games that are so lackluster and conceptually disorganized that simply playing them can actually depress the fuck out of you.

      Come to think of it, that’s basically my reaction to really well-produced songs that are utter shit, too. Not a coincidence.