EDIT 4PM PDT - Our AMA has completed. Thank you so much to all of you who asked us questions! If you are at all interested in applying for an engineering position on our tools team, please do check out the jobs here. Also feel free to reach out directly to our recruiter, Mike Nassar, at [email protected]. (As an FYI - we will most likely not be checking the inbox of this reddit account, so please do direct your contact to Mike above!)


Hey everyone!

We’re Paulo, Yuval, Jonny, Brenden, and Brett, and we’re the software engineers who make up the StarCraft and Heroes of the Storm Tools team at Blizzard Entertainment. We’re here today:

  • To answer your questions about the tools and technologies we use.
  • To answer your questions about what it’s like to be a software engineer at Blizzard.
  • To spread the word about open positions on our team.

Everything you see in both StarCraft II and Heroes of the Storm has passed through our code. Here’s a taste of some of the things we work on:

  • Editor - all the content of WarCraft III, StarCraft II and Heroes was made with this tool
    • Map Editor - used to build the levels
    • Cinematic Cutscene Editor
    • Data Editor - it controls much more than the fireball damage
    • Trigger Editor - lets designers directly create the gameplay
  • Automation systems that control our build cluster to build and test a few million lines of code 20 times a day
  • Art tools used to make the art and eventually export into the game
  • Localization pipeline to author and maintain 13 distinct locales of text, audio, video and images
  • Content Delivery

Every day we have programmers, artists, producers and designers walk in to our room with their problems and our number one priority is helping them make the greatest games in the world.

What we use to make them:

  • C++
  • C#
  • Perl
  • Python
  • Erlang
  • node.js
  • Microsoft Visual Studio
  • 3D Studio MAX
  • MySQL

If you think this stuff is as cool as we do - send us your resume or email Mike [email protected], our recruiter!

We’ll be here for the next three hours, ask us almost anything!

Comments: 250 • Responses: 63  • Date: 

Excalibear57 karma

Convince me that video game development isn't the most abusive and worst industry for an engineer. I'm sure you guys know that video game development has one of the worst public images for engineering. No recognition, unrealistic high hours, consistent lay offs, etc.

Why do you guys stay in it? What's true? What's not true?

blzt1tools86 karma

We certainly can't speak for the entire industry but we can try to give you a good idea of what it's like to work at Blizzard.

Paulo: My wife calls it "work" (in quotes) as she doesn't actually believe I do any. This is because she thinks I have way too much fun at work and therefore I'm not allowed to call it work.

Anecdotes aside, we have a lot of people that have been at Blizzard for many years. Brett has been with the company for some 14 years and he is not even the most tenured employee within the StarCraft/Heroes team. We have several people with 15+ years at Blizzard.

Replying to your specific questions:

Why do we stay in it?

Working on products that you actually believe in has to be one of the most rewarding things you can do. Doing it in an environment where everyone else is as passionate as you, makes it even better.

What's true?

  • Phat Loot! (have you seen our employee rewards?)
  • Awesome parties! (Vegas baby)
  • Get treated like a rock star when you wear a Blizzard shirt. (how's that for recognition?) At Blizzard everyone works on the game. We all have a say on how we make our games.

What's not true?

  • Unrealistic hours - most of us have growing families, so unrealistic hours wouldn't work at all.
  • Constant stress and pressure - we certainly have stressful moments, especially when a big release is looming but we're not under constant stress and pressure. This would go against us having fun at work and we can't have that.
  • Ramp up, Ramp down - Blizzard does not follow this pattern of ramping up projects and then ramping them down. We don't live and die by each game. We're in it for the long term success of our games and we plan accordingly.

cooljeanius24 karma

Some separate programming related questions:

What we use to make them:

  • C++

What standard is your C++ code targeting? Also what are your thoughts on how C++ standards are now on what seems like a 3-year release cycle?

  • C#

Do you make sure your C# code works with the Mono runtime as well as the Microsoft one?

  • Perl

Is this more just for simple scripts thrown into your build process, or do you build actual applications out of it?

  • Python

2 or 3?

  • Erlang

Really? It seems like I rarely ever come across any software written in Erlang, why do you think that is?

  • node.js

For your web stuff, I take it? Actually this reminds me, could you match up your list of tools with the items from your list of things you work on? Generally I can tell which one goes with which one, but it would be nice to get some confirmation...

  • Microsoft Visual Studio

Even for the Mac versions of the games? Also, have you tried using clang's cl.exe emulator as a replacement for MSVCC, and if so, how has it worked? I know that MSVC-compatibility is something that the clang devs have been focusing on a lot lately...

  • 3D Studio MAX

Has the high price of 3ds Max ever lead your team to try to develop your own replacement for it? I mean, you are the tools team after all...

  • MySQL

What are your thoughts on Oracle's ownership of MySQL, and the mariadb/percona forks that it has led to?

blzt1tools24 karma

Yuval:
C++: We have a 30page, 7500 word coding standard for C++. Obviously that's hard to learn and follow. That's why I'm a big believer in automated-only coding standards moving forward. We're on VS2010 and can't use all of the new C++11 stuff but if it works, and makes sense, we do.

C#: No. It's only internal tools that will run on Windows right now.

Perl: Simple scripts and no actual apps, some of them have grown out of hand though.

Python: Most of our code is Python2 and 3DS Max Tools only work with 2.7.3 so we're pretty much locked for a bit. Though we try to write all our new code in a Python 2 and 3 compatible way.

node.js: This answer's already too long so I'll just mention in node we have a dashboard that monitors all of our other tools are working well and another SPA that inspects the contents of builds which is mostly client side code to make a usable UI and some translation of data on our network server-side. It has proven extremely useful in many cases.

Mac: We use Clang, but that's the mac team's thing. Most of our workstations are windows based and we love MSVS so we're not in a rush to change that at all.

3DSMax: We love it and we don't develop tools when there are such great tools on the market.

MySQL: As we don't modify MySQL code, I believe this doesn't affect us. If anything dramatic ever happens we have a backup plan as you said.

ponchedeburro3 karma

C++11 has delivered some very nice tools in terms of readability and ease-of-use. What are your thoughts on not being able to use a 3-year old standard just because your choice of tools (VS2010) are limiting you?

blzt1tools4 karma

Yuval: We're also limited by the fact we need Clang to work on the mac side. So, you take the intersection of the good stuff that works on VS and Clang. You're actually left with quite a few great additions. But I can't say I feel bad about any of the limitations. It's just such a huge codebase, that's already limited, because you want everything to be as crystal clear and reliable as possible.

CyaSteve21 karma

It was a pretty contested thing putting in the forced delay in SC2 and when that carrier over to Heroes I was wary to say the least. It seems like you guys were able to remove that bit fairly quickly when requested, how come it stayed in SC2 for so long?

What challenges have you faced transitioning the replay tool to Heroes from SC2?

Any word on a map editor incoming for Heroes?

What's up with custom games in Heroes, any word on when we can see those again?

Thank you for all of your work!

Some less direct questions, if someone is looking to get into this field where should they start?

How much of your work has varied from what you thought you would be doing when you first started working? Are you guys always forced into learning new things or is there a pretty established way to do things at the moment?

Edit: I know you probably can't answer some of these, but thanks anyways!

blzt1tools10 karma

A few of your questions are slightly outside of the scope for this AMA, so apologies for not being able to answer everything! To provide some additional context, game responsiveness, replays, and custom games are handled by a different team of engineers on the StarCraft and Heroes teams.

When it comes to the Heroes editor, we're currently focused on preparing the game for release, so we don't have any details to provide at this time. We definitely know that this is on the community's wish list, and if one thing's for certain, our community team won't let us forget. :)

To answer your other questions

Jonny - If you're new to computer science then I would recommend trying a free online computer science course. Coursera have lots of excellent courses. If you already have experience as a developer and you want to move into the game development field looking into something like Unity would be a good starting point.

I didn't have a lot of preconceived ideas when I first started as an engineer. I've been working as a software engineer for 14 years and it's an area of work that is constantly evolving. I expect things to be different again in the years to come. One example that comes to mind is the shift from single core consoles like the Xbox to multi-core consoles like the Xbox 360. That's a big paradigm shift.

Computer science is a very broad field. There's always more to learn than is humanly possible. I've certainly never been forced to learn anything! Here on T1 we have a fairly well established set of technologies that we use but we're always looking to embrace new ideas if we're convinced that our software will improve as a result. You can't get too comfortable in a field as progressive as computing.

PalePirate18 karma

Are there many female programmers working at blizzard?

blzt1tools16 karma

Yes!

Mighty_Ack18 karma

Hi guys! Would you guys say there has been a "most challenging" tool that you've guys have created? Have you guys been surprised by unusual ways people have been using the SC2 editor?

blzt1tools29 karma

Brett: First and foremost - Rampart. Secondly, definitely the editor. This tool has evolved with the game for over ten years now, and the biggest challenge is always keeping a balance between power and flexibility on one hand, and usability on the other.

greythepirate14 karma

Hey guys, long time SC2 modder here. First off, thanks for making such a robust editor. Given the amount of time I've spent making things with, I can't imagine the colossal effort to code and maintain the thing :P

1) How split apart are the HotS and SC2 editor at this point? Will we be getting more HotS features in the SC2 editor any time soon?

2) How did you guys accomplish the reduced/nonexistant input delay in the latest HotS patch? We've been trying to figure it out on sc2mapster.

3) 1v1 me, arthas, dragonshire?

blzt1tools12 karma

1.) We're focusing on the game right now, so we don't have a lot to say about what a Heroes editor would look like.

2.) That's a question better suited for our Game team. I know they are working on some communication to explain this a bit so stay tuned!

3.) Bring it! See you in the Nexus!

PalePirate12 karma

What are some examples of good things to have in a portfolio for someone who wants to be a tools programmer?

blzt1tools13 karma

Yuval: I'd recommend a good github/bitbucket profile. That doubles for us to see what you're interested in and how you code. Good stuff to have on the profile: game code looks good, automation systems, web development and scripting also work. There's such a breadth of languages that we have to deal with on a day-to-day so a good variety of experiences in various technologies, industries or workflows is good too. You need to appear like a swiss-army knife of a programmer that can handle a variety of tasks. Make sure you don't just namedrop a huge amount of things that don't support that you're any good with any of them though.

Brenden - I think any tool you write that makes the people working on the game’s life easier is great to show in your portfolio. One of the big parts of our jobs is talking with both technical and non-technical users about what’s hard about their jobs, so it’s really good to show that you worked with people to do that. On one school project, I found out that some designers were editing game data in text files, which was tedious and error prone. My job as a tools focused engineer was to then improve their process by giving them a GUI, and basic functions like copy and paste. Anything that shows you know what a tools engineer does, and in turn why you love making those things, would be awesome for a tools portfolio. Additionally, I think it’s really important to show that you are empathetic to the people around you and passionate about making them better and more productive in their day to day activities. This might not necessarily come through in code, but will come through in your personality and interactions with others.

Spektorius11 karma

Can we expect Sc2 : LotV to use 4 cores instead of 2?

blzt1tools7 karma

There is a different group on the dev team that works on those matters. We should probably leave that to them.

RawrJar10 karma

Any chance we'll be able to directly edit the data in the Data Editor through triggers as the game is in progress in LotV? It would reduce the amount of work to create, say, scaling abilities by quite a bit.

blzt1tools14 karma

Great idea! We can look into it.

Trasko8 karma

How much has the engine changed in Heroes of the Storm and can we expect some of these changes to be moved onto StarCraft when LotV hits?

blzt1tools7 karma

We have an Engine team who would honestly be better suited to answering that question.

That being said, there is a common engineering team and code base between the two games, and though we can't comment much on specifics at this time we are always looking to build synergies between the two games.

-Squid-7 karma

Hello There!
I can't code and don't have the drive to learn. But i very much appreciate the work you guys put in to push out entertainment for people like myself who contribute nothing towards it.
I cant wait to get my hands on Heroes of the Storm, it looks fantastic, well done.
My question to you guys is, do you actually enjoy playing your games after you've coded them or do you experience burnout?
For example, i cook a mean paella, but by the time it is ready for dinner, i've experienced so much of it that i no longer want it. Everyone else loves it though.
Thanks Guys, Best of luck in future releases.

blzt1tools5 karma

Paulo - By your analogy we are all very fat cooks!

amazon_6 karma

What are the minimum requirements to apply ? :D

blzt1tools20 karma

Paul Haban: Software Engineer career levels at Blizzard:

Assistant Software Engineer
Assistant engineers are expected to be passionate about their work. They should be model employees by showing up on time, and generally being reliable. They should remember their commitments and own up to mistakes. They should try to learn from those mistakes, and to grow their individual skills. They should be willing and able to learn the ways of the team if those ways are different from how the engineer may have been taught. Actual code needs to meet the requirements presented by the Lead, and should be compiled and at least quickly tested before checking into the code repository. Assistant Engineers should actively and enthusiastically seek out help, reviews, and advice from their peers, lead, and mentor.

Associate Software Engineer
Associate Engineers exhibit all the traits of an Assistant, but also have a greater understanding of the work they need to do, and the work being done by their team. They better understand the quality standards, and attempt to meet or exceed those standards regularly. An Associate should know when to approach their Lead for training and direction, and when to try working alone. They should be finding the line between too little and too much information, and delivering the most important details about tasks to their team and Lead. An Associate will be asked to do a variety of new tasks and needs to show flexibility to change, as well as focus and determination when trying to power through previously uncharted waters. An Associate should care about the project and getting the job done right, and not about who caused a bug.

Software Engineer
Mid-level Engineers should be well rounded engineers, albeit possibly still relatively inexperienced when considering the number of major projects they have participated in. They are growing as engineers and more often than not seek to discover the solution to their problems before escalating. At the same time, they have enough experience to recognize the point of diminishing returns as well as issues that encompass more risk. Software Engineers are gaining mastery of their primary language and environment while always being open to learning about other technologies. In some cases, they should be expected to provide mentoring to Associates and Assistants as well as architecting parts of projects while under the watchful eye of their Lead. They are in a phase of extreme growth and should be learning what aspects of development they are good/bad at as well as determining what increases their job satisfaction. This will help in the decision on what career path to focus on in the future.

Senior I Software Engineer
Senior Engineers are completely capable of working alone and require little oversight. They have enough experience to be able to anticipate problem in design, implementation and deployment. A Senior Engineer is expected to be knowledgeable in all areas within their field. In addition, a Senior Engineer should be vocal member of the team ensuring that everyone around them is aware of potential problems, the current state of projects/APIs and emerging technologies and methodologies that could be useful to the team. Some Senior Engineers may decide to pursue a more non-technical path in Engineering Management or a technical path toward Lead/Principal by seeking eventual promotion to Senior II.

Senior II Software Engineer
Senior IIs are veteran developers and often have a wide range of experience. They can be trusted to architect and own large systems with minimal oversight, and are able to deliver high quality features with maintainable and understandable code. In addition, a Senior II, especially those on the track to become a Lead, are often capable of leading development on an entire project including overseeing other engineers on the project. A Senior II who wishes to increase their impact and influence at Blizzard can either work towards becoming a Lead, or leading the company's technical advancement as a Principal.

Lead Software Engineer
A lead should be able to build consensus, and be an effective decision-maker while leading a team of engineers to accomplish great things. Lead engineers are expected to be part diplomat, part architect and part coder. They must be excellent communicators and cultivate healthy relationships all around them. Leads implement the Technical Director's vision while also providing critical input on risks, technologies and areas for improved efficiency. In addition, a Lead should act as an example to lower level engineers and provide mentoring to engineers, as they progress through their careers.

Principal Software Engineer
Principal engineers are the technical visionaries of the organization. A principal is a master coder with the ability to influence others via documentation and presentation. Principals are expected to always be thinking in terms of load, scale, maintenance and support. In addition, a Principal should be following the latest industry trends as well as experimenting with different technologies that may help the organization advance. It is expected that roughly 20% of a Principal’s time be dedicated towards helping Blizzard's technology, as opposed to just the technology on the team they’re embedded on. The activities Principals are expected to do during this "20% time" are defined at the time of their promotion, with input from their Lead, their Technical Director and the Engineering Council. Examples of Blizzard-wide responsibilities may include things like contributing to shared code, giving talks at GDC, mentoring engineers across the company and/or representing Blizzard on standards committees.

ChiefRabbids6 karma

Thanks for doing AMA session! I love the blizzard franchise. You guys have done a great job developing it. Especially with the Heroes of the Storm coming out. I think it will be epic! My question to you guys is that, how hard it is for a recent computer science graduate to join the team? Any tips that you can share? Thanks!

blzt1tools11 karma

Brenden: Hi ChiefRabbids!

I just graduated from university last year ('13) with a degree in Computer Science so hopefully I can provide some insight. I found that it can be difficult to find a company to break into, but much easier when you can show that you have done projects or work in your spare time. As for me, I had been a part of my school’s Video Game Development Club and worked on numerous projects with my peers. This allowed me to show code, engineering patterns, etc. to the company I was applying to. Of course, all of the content you learn in you comp. sci. degree will help as well! Just keep going full steam ahead and show your passion. One thing I would also point out that often goes unmentioned is how important networking was to my career. I made it a big point to talk to engineers and people in the industry. This didn’t mean going around and asking for a job, but getting to know people on a human level. Thankfully by the time I had applied to Blizzard, I already knew some people on Team 1 and other teams that might be able to vouch for me in some way.

ChiefRabbids1 karma

Hi guys, thanks for the insight! I am currently working as a C# developer, it is my first career out of college since last year. I would love to make a transition into a game developer. I always wanted to get into the gaming industry since I was 13 and that's why I am in this field. Unfortunately, I have a little to no experience in the game development industry. However I have also been doing a few Android dev projects in my spare time (a couple of apps and a game). I am trying hard to gain as much experience as I can here. :D

blzt1tools6 karma

Brenden - That's awesome! We do a fair amount of C# programming as it can be very productive and easy to iterate with. Check for Jonny’s post about C++/C# because he hits the nail on the head. I think that breaking into the industry can be hard, but we are always looking for the best engineers, so apply and you never know!

ChiefRabbids3 karma

Thanks for the reply Brenden. I'll go ahead and contact the recruiter and apply to the most relevant position for me. Danke!

blzt1tools2 karma

Awesome! Best wishes!

amiyuy1 karma

For networking: How did you go about that? Where did you meet these people? I know a couple of friends who work there, but no one in the departments I apply to who can vouch for me.

It's not just about working there of course, I would love to meet more people who also enjoy the games and things I enjoy.

blzt1tools3 karma

Brenden - Luckily, Orange County is a huge hub for Game Development and I went to school in the middle of OC. I think that GDC is a great place to meet people. Additionally, every Wednesday night in my hometown there was a weekly Game Dev meet up that people would frequent and enjoy hanging out after a day of work.

SchAmToo6 karma

Hi all, love the work you guys do!

In the Heroes of the Storm tech-alpha we saw the same 200ms delayed-input system from SC2 implemented. How big of a change was this to modify, and do you think, after implementing in Heroes, that you may do the same for SC2 in a patch or possibly for LotV?

blzt1tools3 karma

This one is better suited for the Engine team, but this is something we're definitely looking at.

N0V0w3ls5 karma

Hi! Thanks for doing this AMA.

What I want to know is what is it like working at Blizzard? Have you ever worked at other software companies before?

I applied for a few game companies before and those that were hiring seemed to like applicants who have had some experience in game programming before. Is it possible for an experienced software engineer with a dabbling in game programming in college to be able to break into the game industry? Would you have any tips for someone in my position looking to do so? Thanks!

blzt1tools7 karma

Yuval: I worked at a security software company and a biomedical diagnostic company (8 years total) before joining the t1 tools team last year. Tools positons are an excellent entrypoint. It's run of the mill software engineering, but interacting with a lot of process and fun that goes into game development

N0V0w3ls2 karma

Thanks for the reply! So it sounds a lot like waiting for the right position to open up! Doesn't sound too bad to me. I looked at a few of the positions available on the jobs page and it seems like there would be a few open. I don't mean to take up too much of your attention, but is the interview process like a typical software company?

blzt1tools12 karma

Paul Haban, engineering manager on team 1: Our process starts with a resume and cover letter. In the cover letter, we look for passion and relevant experience. If a candidate's resume and cover letter review well, we schedule a phone interview to gate for technical expertise and cultural team fit. After the phone screen, we assign a take home test. Upon positive review, we bring a potential engineer onsite for a code test and review; a leadership interview; team interview; and production interview. We try to immediately reconvene and provide feedback to a candidate through the recruiting team.

Vypster5 karma

As someone who has some experience with PHP, MySQL, and Lua, how would you suggest gaining the skills and experience to be able to work at your level for a company as epic as Blizzard?

blzt1tools5 karma

Yuval: The most important parts are being a person that's fun to work with and having the right skillset. I've noticed in the games industry it's also important to be passionate about gaming.

Regarding the skillset - it depends on which part of the team you'd want entry into and which product. Lua's very popular for mobile games and I personally enjoyed making a game with MOAI. We have lua on our automation team, and php-mysql for certain parts of our build system. So send us your resume. We don't do these trick questions at Blizzard but I've enjoyed practicing the ones on https://projecteuler.net/ before interviews. But if you're looking for another skillset - definitely C++ and then maybe Python.

Mytherian5 karma

As a build engineer, some questions of interest:

Is there a designated build guy, or is it a rotation where someone gets the short straw :)

How many platforms/flavors do you build, and how often?

How long does your build process take?

What kind of hardware are you using to build?

blzt1tools8 karma

Jonny: Naturally some people have more experience with some parts of the build system than others, but we all work on it. It's one of the most important services that we provide the rest of the team.

We currently turn out around 25 builds a day and a typical build takes around 20 minutes.

We have two machines that cooridante builds, which run Windows Server 2012. All of the machines that take part in a build are Windows machines. Due to the distributed nature of some parts of the process, as many as 25 machines take part in each build.

hspsychoza4 karma

Do you all use Test Driven Development (TDD) at Blizzard? Not the creating a tests document and letting QA follow it. I mean write code test with something like NCrunch and then write the code that makes the test pass.

blzt1tools3 karma

Yuval: When I find a bug in our SVN merger (Python2) I always write a test first and code a fix later. It's a perfect fit because it's a very deterministic IO process. We have regression tests for the game, but in general when you have a such a huge build-step with a live product that needs to ship now, and an infinite way for things to go wrong that a machine can't fathom - writing the best test is a luxury you can't afford. Not to mention the possibility of paying the price of later refactoring the test when it just doesn't fit anymore. So - I'm a big believer in having the right test strategy for the project at hand.

escusado3 karma

I've come to realize that, final tech (code) is the result of many different decisions. Do you use an standarized process?, maybe old school SCRUM or do you have your own thing?

blzt1tools2 karma

We use a variety of processes depending on the needs of the specific team. In general we use a version of Agile that has been modified to better fit the needs of the development team.

8bagels3 karma

are you the guys in charge of maintaining s2protocol github project for reading SC2 replays? that is is great piece of the SC2 community. do you have plans to provide the Heroes replay protocol? and can you speak as to when that might appear?

the s2protocol does get us A LOT of data out of a heroes reply but there is still more hidden in there :-)

thanks

blzt1tools1 karma

Yuval: That s2protocol repo is maintained by our Tech Director, I think. I have no idea when Heroes support will appear there but it's definitely a good idea. We don't yet support replays for Heroes, I believe official support in the game will come before official parsing support.

EDIT - I was just informed it's maintained by our Tech Director and we'll probably take it from his plate. It's still unclear when the Heroes update will occur.

Ahli3 karma

How important is experience with your editor tools to join Blizzard? Btw, thanks for creating these powerful editors.

blzt1tools2 karma

Brenden - It depends on the position! As a Technical Designer, I would say YES. As a Tools Engineer, I think it would be bad if you never opened our own editor, but we are looking for people who have worked on all types of tools, which range from web tools, game editors, build systems, etc.

Semmo_3 karma

Hello. Did you know that it is very difficult to create a lag-free custom game for the Arcade in SC2? Literally every map that have attempted an FPS or a mario-like game have lagged because of how SC2 handles it, unlike FPSs where they just sync with the server (I'm not expert in this). Is there a plan to change this so that games that require less delay are possible for the Arcade?

blzt1tools5 karma

Yuval - The SC2 communications engine is built for a p2p low-bandwidth lock-step simulation. That's perfect for a real time game of chess you want to be fair and fast. A good networking paradigm for an FPS, racer or platformer won't be that. That's not going to change in the forseeable future. But if you want to make a game that'll make sure every client is synched exactly with minimal latency, depending on your ping, you're on the right platform.

I enjoyed this read.

ImaginarySC3 karma

What's your favorite non-Blizzard game?

blzt1tools2 karma

Jonny - Football Manager/Civilization

Brett - Kingdom Hearts is still one of my all time favorites. More recently, I'm something of a pinball nut, and am a huge fan of Pinball FX2.

Paulo - The original Dungeon Keeper was one of my favorites. Also Theme Hospital and Syndicate ... do I see a pattern here?

Glendor3 karma

Who is the biggest tool on the team?

blzt1tools3 karma

Brenden - Whats your definition of big? :)

Charlemagne_III3 karma

What was the hardest merge to do ever?

blzt1tools11 karma

ZKtheMAN3 karma

Is it hard making all this stuff?

blzt1tools4 karma

Yes :)

8bagels3 karma

i love the power provided to us in the editor. WC was the world editor. SC was the galaxy editor. what is the Heroes editor called? universe editor or nexus editor? and can you speak to when the community might be able to get their hands on it?

blzt1tools1 karma

We don't really have a ton to say on the idea of a Heroes editor at the moment. Right now our focus is on getting the game out, but it is something we want to look at in the future.

sflancer063 karma

This might be uninteresting to a lot of people, but here goes:

What are your favorite pros / cons when you compare C++ to C#?

I'm a huge fan of the latter and would love to know what you guys in the gaming industry think.

blzt1tools6 karma

Jonny - I've worked as a tools engineer for the last 11 years. During that time I have seen a shift from C++ to C# for video games tools development. I started as a C++ engineer and am fluent in both C++ and C#. These days C# is my go-to language. It's a language that I feel that I can be very, very productive with and it improves year on year. At all the companies I've worked at the game engine was written in C++, so sometimes tools that are closely associated with the game are written in C++ to prevent code duplication, among other reasons.

sflancer061 karma

I have seen a shift from C++ to C# for video games tools development.

Really? My hopes have been raised and I'll have to keep my eye out now.

I've been holding off on applying to gaming companies because I've yet to see a job description in my area list C# as a primary language.

Thanks!

blzt1tools5 karma

Jonny - C# is listed as a requirement for the Heroes of the Storm tools position on jobs.blizzard.com. From my personal experience it is the most popular language for tools development in the games industry.

artemisbot3 karma

How did you get into programming?

blzt1tools7 karma

Yuval: In fourth grade I modified the QBasic program nibbles.bas with a friend. It was a snake game, we added a few levels and Chopin's death march when your snake died.

Paulo: My father got me a ZX Spectrum when I was about 10 and from the moment I got it I wanted to know how these things appeared on the screen and what made them tick.

Brenden: I had never touched programming, nor knew what I wanted to do in life until college. At the time I had chosen to take a CompSci class because I was playing a ton of WoW, and why not? I worked hard in my courses and filled up my free time with programming games that I loved to make.

Jonny - Being a gamer got me into programming. As a young kid I was really into games and that made me curious about how they're put together. I wrote my first program when I was 6 and I've never looked back.

Brett: I got started in college by making my own map editor for Warcraft 2.

ExtremeGeorge3 karma

Hey thanks for the AMA,

Did you all studied software engineering? or are there other careers for that field? computer science and electrical engineering for example

blzt1tools6 karma

Brenden - CompSci UC Irvine
Jonny - Accounting and Computing
Paulo - Mathematics and Computing
Brett - Aerospace Engineering
Yuval - Physics major, mathematics minor

S2Kros2 karma

Hey guys, love the work Blizzard does! Few questions.

How modern of C++ do you guys work with? Enjoying C++11/14 or not quite there yet? What would you say is the neatest not outward facing tool you've each worked on? I recall reading one engineer's linked in who worked on a seed analyzer for Diablo 3, that would show loot dropped for any given seed. Interesting stuff!

blzt1tools1 karma

Jonny - Some C++11 features have been adopted. Our lead gameplay engineer gave a couple of one hour internal lectures on the parts of C++11 that our games can most benefit from. We're always looking at ways to improve our codebase.

PalePirate2 karma

Hi , Thanks for the answers!

I was wondering what the culture was like at blizzard? Do you do socialise outside of work much? How much do you have to crunch?

also, best thing about working at Blizzard?

blzt1tools3 karma

Brenden - The Blizzard Culture is definitely unique! Everyone here is extremely talented and passionate about what they do. The artist and design bullpens have tons of posters, printed out memes, and statues everywhere. I try and socialize as much out of work as I can as coming home from a long day of coding can be taxing. Recharging such that you can come back and work hard the next day is key. I particularly love going to raves, hang out with friends, and going to the beach. With regards to crunch, there are times before big releases that it is all hands on deck. We need to be very focused, and work longer than usual. However, with those times come periods where we get to develop and look into the future with our code base (rather than getting the release out the door). Favorite part about Blizzard: I get to work on my favorite games, while working with some insanely smart and seasoned veterans of the games industry!

xlnqeniuz2 karma

How is it like working at Blizzard? Any cool things you can share about the office? :3

blzt1tools2 karma

We have a mandatory play test on Friday evenings. Those are hilarious fun.

There's character art all over the walls. Christmas gifts are unique and awesome! Plus, we all receive killer service awards.

Junho_C2 karma

How big of a priority is faster reconnection for Heroes? When I occasionally lose connection or my computer crashes, it usually takes 5+ minutes for the game to catch up and reconnect, which is very frustrating for both me and my teammates.

blzt1tools5 karma

That's not in our direct area, but we can say that is a request that has come to our team from the highest levels of the company. :)

Tassadar4Aiur2 karma

Hello!! Thanks for doing this AMA, but my question it's not so related to the tool's team.. Do you know if there could be an AMA with the Game designers too?? I don't know how to code, but i'm really pasionate about making videogames and i prefer to create game mechanics, puzzles, and.. well the game than programming it xD. Thank youuuu

blzt1tools3 karma

Not a bad idea. We can definitely pass the request along.

TheEscapeGuy2 karma

What is one piece of advice that you feel is crucial for anyone thinking of going in to computer/games programming as a career?

blzt1tools2 karma

Brenden - The best thing that I ever did was join the Video Game Development Club at UC Irvine. I got to work with people who enjoyed programming as much as me, and make some pretty cool and awesome games along the way. Another thing that was pivotal in my career, was never saying no to experience. My first job was an Unpaid QA Internship, but after a month of working there and making tools on my own time with no code access, I joined the tools team and got paid to do what I love.

ryachart2 karma

Tabs or Spaces?

blzt1tools6 karma

Spaces are the preferred indentation method.

Tabs should be used solely to remain consistent with code that is already indented with tabs.

http://legacy.python.org/dev/peps/pep-0008/#tabs-or-spaces

cooljeanius2 karma

Editor - all the content of WarCraft III, StarCraft II and Heroes was made with this tool

I noticed you didn't mention the editor for the original StarCraft at all, were you not around yet when that one was made? Or is it just the case that not all of the content for that game was made with the editor like it was for WarCraft III and StarCraft II? I'm asking because the editor for the original StarCraft was my favorite, so I am wondering if the differences in the newer editors is due to different people making them, or if it is due to the added complexity that they have had to handle by being used to create all the content for the games, or if I am just being blinded by nostalgia...

blzt1tools3 karma

Brett: All of the above. I worked very briefly on StarCraft 1, but WarCraft 3 was my first full project. It was also our first 3D game, and the engine was designed to be much more moddable from the beginning. All of this meant that the editor was redesigned from scratch.

fiqar2 karma

Hi, I'm a huge Blizzard fan and would love to work there. However I'm definitely not a senior-level developer. Do you have any openings for someone with just 2 years of experience?

blzt1tools2 karma

Paul Haban - We don’t expect as much experience from our more junior roles which open up every so often.

http://www.reddit.com/r/IAmA/comments/2cmary/were_the_tools_engineers_behind_blizzards_heroes/cjgxijo

Sykan2 karma

[deleted]

blzt1tools3 karma

Brenden - I mentioned above some things that helped me when getting into Blizzard. As for how I got a job at Blizzard, it was kind of by luck. I studied at UC Irvine, a school about 5mins away from Blizzard campus. Because of that I had a lot of interactions with people at the company, and found out through recruiting that a job was posted, looking for Associate Engineers, for the SC2 team. I had been working at another local gaming company during my senior year, and found myself with some good experience for the exact job I was applying for. After I graduated, I got the honor of starting at Blizzard a week later!

Operator_Sc22 karma

After a long day of programming, what do you think is a good way to relax and clear your mind? As someone aspiring to get into the field, I am very curious.

blzt1tools2 karma

Jonny - This is a great question. Switching off can be a challenge and it's something I got better at as I got older. These days to relax and unwind I just do what I enjoy most. I play the guitar, play soccer, read, watch films, play video games and cook. Since moving to California I've even tried Yoga!

Brett - I agree with Jonny. I find that physical activities are a good balance to the hard thinking I do all day. I practice kung fu in the evenings.

lukwes12 karma

What is the easiest way to gain the required exp to work for blizzard? With no exp other than school and learning yourself (Computer Science degree)?

blzt1tools3 karma

Brenden - I think you hit the nail on the head. By having experience in school and learning on your own (Personal Projects, School Projects, School Clubs, etc.) you are showing you can do what we do everyday. Obviously, internships are a great way to show experience, but I think a big part of it is your passion for programming, as that will always come will always come through!

yfiftyfour2 karma

"web" shops talk a lot about version control systems and their code review process, but what goes on in game shops is a bit of a mystery (at least to me). Version control of binary files also poses very different challenges than a bunch of source files. What's the day to day flow of writing code look like?

Do you send a patch to an internal mailing list, git branches, some perforce magic, floppy disks over carrier pidgins?

blzt1tools1 karma

Brenden - All Blizzard teams chose to host their code and assets differently, as such I can only speak to what our team has gone with. On Team 1 specifically, we use SVN for all of our source code and data (C++ files, Python Scripts, TriggerLibs, MapArchives, etc.). For our assets (MaxFiles, Sounds, etc.) we use Perforce as it is able to handle binary files much better for us. Additionally, we have written some tools to help with Source Control for all our users. On Team 1 we branch quite a bit, and as such we have a code, data, and asset automated-merger that will integrate changes from branch to branch. As an example our Code/Data Merger is written in Python and our Asset Merger is written in C#. Additionally we have some tools that Artists, Designers, and Sound Engineers use that allow them to commit to our repositories, without the requirement of knowing version control software like Perforce. With regards to committing code, we have a review policy that requires all code commits to have a check from another engineer. Once this is done, the code goes straight into the repository and is immediately available to the rest of the team.

Plenor2 karma

What's an example of an interesting and/or memorable bug you were faced with?

blzt1tools7 karma

Brett - I once had an undo bug in the editor that took me two full days to track down. In the end the problem was a missing '&' in front of a local variable, causing the undo data to be copied rather than referenced. That was two days to find a bug that was fixed by adding a single character to the code.

Friweika2 karma

Hi guys :) I have two questions. Thanks for all your creativity we can experience every day.

What is your favorite part about coding? What motivates you?

blzt1tools3 karma

Brett: For me, it's all about finding an elegant way to express a complicated process or set of data. This could be an algorithm, a data structure, or a user interface. Our games are very complicated, and I love finding ways to make it easier for designers, artists, and end users to create content for it.

Yuval - I love tapping a thousand times with my fingers and having a billion bits flip over instantly - serving a hundred people that can use those flipped bits to make something awesome that entertains a million people. Even if it's just a fractal cat animation I won't show anyone but a good friend - the grand potential I have at my finger tips is what has me hooked.

Paulo - What got me hooked was the feeling that comes with understanding a complex problem and finding a solution for it. Today I'm in it for the groupies. :)

SolidJake2 karma

Thanks for the AMA guys!

In your introduction it doesn't state whether or not you guys work on the spectator tools for SC2 / Heroes. So for my first question, are the spectator tools in your department?

If so, are there any new big features we can expect to see that would be geared towards the eSports industry that you can tell us about?

blzt1tools2 karma

No - that would be on the Game team. We know they're working on it!

Vitto91 karma

I want to thank all of you for doing this AMA. I'm a huge fan of the Blizzard franchises and most of my gaming time is spent playing one of the games. I'm a software QA tester, so I doubt you could answer any of my questions, but I want you all to know that I love everything you do to make the games intuitive. As a tester, it's nice to see things evolve and become easier to use over time as the Heroes UI has.

My dream job would be to work with Blizzard, but my experience is limited to testing and from what I've been told by people inside the industry, testers are kind of bottom-of-the-barrel on the pay scale. I'll have to stick with my current gig and get my Blizzard testing fix on my free time, but that's not really so bad, is it?

Again, thank you all so much for everything.

blzt1tools2 karma

Brenden - We have a growing test automation team that may be of interest to you!

retroantic1 karma

Hey! Thanks for the AMA. I am in the process of designing and balancing a system design for a horizontal progression type spell system, basic mana / dmg. So each spell is treated like a hero basically...

what metrics can I use to measure balance in a horizontal system?

Also, how much of your data tools consists of vb scripts in excell?:)

Whats your iteration time between feature and tool implementation?

blzt1tools2 karma

what metrics can I use to measure balance in a horizontal system?

Yuval: This is more of a tech-designer, or a games programmer question. But I'll say that in a complicated enough game you're going to need a genetic algorithm strategizing and microing all unit/spell combinations for the best results. A poor man's automated balance tool is a heuristic function for how good something is (e.g. dps/cost). And of course you have a full range of nice solutions in between those two extremes.

Also, how much of your data tools consists of vb scripts in excell?:)

Yuval: Zero.

Jonny: We're always looking for great ideas though!

AntithesisD1 karma

(Commence complaints!) When SC2 came out, I was a bit disappointed in the editor, which seemed to me to be a bit TOO clunky and advanced with an intense learning curve compared to the fairly simple Warcraft 3 editor and the incredibly easy (but also not very advanced) Starcraft editor.

Also add to fact that maps aren't easily shared, but I have a feelings that's not your decision (End complaint. Commence question)

Do you have any plans to ease out the learning curve and provide a bit more feedback to make learning through trial and error in the editor possible? I would love getting into SC2 mapmaking, but as it is now, it's just... too much for my poor easily confused mind! (And I'm a Java/PHP programmer!!)

blzt1tools2 karma

Brett - Keeping the editor easy to use and understand while still allowing you access to the full capabilities of the game engine is one of the hardest challenges in creating the editor. We're constantly thinking about ways to improve this.

AgileLianne1 karma

How much knowledge do you guys have of 3Ds max. For example do you have some knowledge of 3D modelling or rigging?

blzt1tools3 karma

Yuval: We have "tech artists" that do the rigging and other art-programmery-type-modeling and things. We develop the 3DS Max plugin that exports, previews and does a few other things for our artists and tech artists.

feardragon641 karma

How often do you code up a feature/tool and feel like you have to wait months, or more to finally see it go live? Have there been a lot of "shelved" features that never got released but are effectively finished?

blzt1tools2 karma

Brett - This is rather common for me, as new editor features typically go in well ahead of the next patch, often by several months. Sometimes our designers use them internally, but otherwise nobody sees them until the patch is live. "Shelved" features are more rare, since we usually try to leave any implemented engine features in for end users even if the design team ultimately decided not to use them.

decentlyconfused1 karma

What are the deadlines like in Blizzard?

Also could you talk about some of the pressures of working in a company like Blizzard?

blzt1tools1 karma

Jonny - Most of my experience before Blizzard was on console games. The longest project I worked on ran for almost six years. The biggest downside to long projects with one release at the end is that it's very difficult to bring everything together at the end without lots of additional effort. On Heroes of the Storm we're using a different model. We're pushing out regular releases. Although this means we have a greater number of releases, it's easier to deliver them. This is a great way to relieve the pressure on the development team.

ticklemeozmo1 karma

  1. It seems that node.js is making it's way up the charts, what do you use it for? Any screenshots in action?

  2. As a stats junkie, I am EAGERLY anticipating API access to Heroes of the Storm. If you are the team collecting the data, how are you collecting it? Have your own graphite cluster or something of the sort?

blzt1tools2 karma

Brenden - I think that working on the game and playing it in the office for playtests does make it hard to play outside of the office (that cool new hero isn’t out yet!). Overall, I still love the games we work on and it’s always fun to play in our internal playtests. Yelling across the room while playing a pre-made group from the art team feels like an old school gaming session every time. :)

Yuval - about us using nodejs see

http://www.reddit.com/r/IAmA/comments/2cmary/were_the_tools_engineers_behind_blizzards_heroes/cjgwsy7

And about the API access to Heroes - that's my task after the next one. It remains to be decided what exactly the API will cover. So it's coming soonish. We'll have to do quite a bit of testing to make sure we got everything right.

About metrics - our business intelligence group does a lot of Hadoop. But that's pretty much all I know.

p0werh0use-2 karma

Are you considering redesigning protoss for LotV?

blzt1tools11 karma

We won't be addressing design questions in this AMA. We're just engineers. :)