Below is most of what ArenaNet programmers had to say during the Reddit IAMA today. We covered all of the major topics and responses as well as some of the more interesting off topic posts. For a complete albeit hard earned read of every post, the Q&A can be found here

Hi everyone,

We’re doing a group AMAA and we have most of the programming team behind Guild Wars 2 here to answer your questions. This isn’t a marketing exercise, we’re looking for technical questions and we’ll give you technical answers! You’re welcome to ask about anything, although we reserve the right to clam up about anything we consider to be our secret game development sauce. Guild Wars 2 is a big game and its development touched basically every area of game programming – ask us about engines, servers, web, tools, gameplay, you name it.

It’s worth pointing out upfront that we’re programmers, not designers! So if you want to know why your favorite skill was changed or when you should sell all of your hoarded butter to maximize gold return, we probably won’t be able to help.

Our programmers are here to answer as many answers as they can in the couple of few hours, so ask away!

Here’s who will be participating, their names, titles, and Reddit usernames:

Cameron Dunn – Technical Director- cameronjdunn

Chad Taylor – Engine Programming Team Lead – ArenaNetChad

Stephen Clarke-Willson – Server Programming Team Lead – StephenClarkeWillson

Braeden Shosa – Gameplay Programming Team Lead – ArenaNetBraeden

Josh Petrie – ArenaNet Programmer -  jpetrie

Mike Lewis – Security Coordinator – ApochPiQ

James Wright – Senior Game Engine Programmer – ArenaNetJamesW

Habib Loew – Gameplay Programmer – ArenaNetHabib

Ryan Diederich – Gameplay Programmer – ArenaNetRyanD

Evan Lesh – Gameplay Programmer – ArenaNetEvanL

Eric Rane – Gameplay Programmer – ericrane

Kat Dugan – Gameplay Programmer – Kat Dugan

Caleb McCombs   Gameplay Programmer – ArenaNetCaleb

Branimir Karadzic – Engine Programmer – bkaradzic

Felipe Romero – ArenaNet Programmer – ArenaNetFelipe

Patrick Laukaitis – ArenaNet Programmer – ArenaNetPatrickL

Patrick Mera – Engine Programmer – meranator

Mike Popoloski – Engine Programmer – ArenaNetMike

Francis Crick – Content Pipeline Programmer – fcrick

Stanlo Slasinski – ArenaNet Programmer – ArenaNetStanlo

Garett Bass – Content Pipeline Programmer – ArenaNetGarett

Jordan Massey – Gameplay Programmer – ArenaNetJordan

Steve Bikun – Server Programmer – ArenaNetSteveB

On Culling

[–]tadziobadzio 20 points21 points22 points ago

Is the culling issue in WvW (making other players invisible for sake of server/client issues) going to get better? Do you like the state that it is currently in?

[–]cameronjdunnArenaNet Programmer 11 points12 points13 points ago

Actually we have plans to improve this a lot. The biggest problem is making sure that we don’t send too much data down to the client and make people on slower connections lag out. But we think this is solvable, we’re on it.

Cam

[–]ArenaNetHabib ArenaNet Programmer 7 points 4 minutes ago

The issues with invisible players in WvW comes down to a couple of factors. One is to do with when the servers notify any given client about other characters in the game (I’ll call this reporting/culling) and the other deals with the time it takes the client to present the character on the screen after it has received that notification (I’ll call this asset load).

The asset load issue is all about how quickly the client can show you something it knows it should show you. We’re looking in to ways that we can make that process faster, but it’s always going to take non-zero time. However, that’s not where the bulk of the invisible players come from. For that we have to look at the reporting/culling side of things.

In the situation where the local population density is relatively low, when another character comes in reporting range of your character the server sends a notification to your client with all of the data that it will need to track and render that character. That includes appearance data, race, gender, profession, weapon sets, etc. etc. It’s an easy model to think about and works well, until the local population density goes up. When there are a lot of characters in reporting range we start to get into a situation where, under the current system, there’s an overwhelming amount of data to send to the client (hello n-squared problem!) – after all, resources like client CPU/Memory/etc. and bandwidth are finite. In order to deal with this situation we elected to change the criteria for reporting characters slightly. Rather than just using a fixed range we instead also limit reporting to the closest N characters. By doing this we help to ensure that we’re not overwhelming the available bandwidth and, since clients clearly can’t draw or process characters they don’t know about, we get some savings on client performance “for free”. This works out pretty well in PvE and doesn’t seem, at least as far as I can tell, to have a detrimental impact on gameplay.

Unfortunately in WvW, where large battles are quite common, we find that players are bumping into these limits quite often and the effect has a real, and unfortunate, impact on the gameplay experience. Do I like the state that it’s currently in? No, honestly I don’t. WvW has been my baby (though not mine alone!) for quite a while now and I really want to see EPIC battles play out in all of their glory. If there was a switch I could flip to just make this work then I would have flipped the hell out of it by now, believe me. However, when you’re dealing with resource utilization issues like this there are rarely any easy answers. I’m currently, actively looking into what exactly our options are in this regard. The fix is likely to be large-ish in scope, with changes on both the client and server, but we have some ideas that look like they may work out. So, will it get better? I can’t make any promises because we’re still experimenting and building new tech, but as a person who works on this every day I certainly believe that it can and will do everything in my power to make that happen

 Programming Methodologies

[–]hysteriamk2 37 points38 points39 points ago

  1. What programming methodologies does your team use? ie. agile, scrum, etc.
  2. What do you use for source control and how do you handle refactoring code for optimization? Or do you try for best optimization on the first pass?
  3. What standards and practices do you use?
  4. How does someone that is a new graduate get into the game programming job market when most jobs require being part of a published title already?
  5. What is your engine written in?
  6. How often to you dive down to the bit level of data manipulation?
  7. Ever have to write Assembly code?

[–]JediSange 4 points5 points6 points ago

I’m really hoping they answer this question.  I have been following their engine development (or trying) since the first Guild Wars.  They have always had one of the smoothest engines and I would love to know more about how you maintain it, handle code, etc.

I do know from prior experience that it is an in-house engine that you can not license.

[–]cameronjdunn ArenaNet Programmer 0 points1 point2 points ago

  1. This depends on the phase of the project which we’re in – during “normal” development (like now!) we use a customized scrum-based project. When we’re finalling we tend to go back to a traditional team-based just-fix-the-bugs process.
  2. We use perforce for source control. We have a few branches which we can work in to do refactoring (for optimization or any reason) so we can roll things out when they’re ready.
  3. Game development is actually pretty normal software development – we use technical design documents, coding standards, code reviews, etc, etc.
  4. Write games in your spare time! They don’t have to be massive, just small polished games. People who are passionate about game development can’t help themselves – they write games no matter what. That’s how I got into the industry – I wrote a Game Boy emulator.
  5. It’s mostly in C++
  6. Very often :-)
  7. Sometimes, although these days it’s fairly rare

–]Akkuma 5 points 47 minutes ago

Are you guys looking to eventually move to git/mercurial, since Perforce appears to now have Git integration?

When you “scrum” what tools do you use to help with the process (ex. Pivotal)? Are you tasking with hours, story points, sprints, stories, epics, business value, etc.?

[–]ArenaNetCaleb ArenaNet Programmer 6 points 10 minutes ago

As a company, no we won’t be moving away from perforce. Git doesn’t handle large, binary assets well and that’s a problem for us. However, I personally use Git constantly on top of Perforce on my local machine for code. I find having a personal source control solution to manage my many different concurrent tasks and projects an indispensable part of my work process.

[–]CaptainVulva 3 points 36 minutes ago

Any especially salient reason for settling on C++?

[–]cameronjdunn ArenaNet Programmer 6 points 20 minutes ago

Mostly performance.

[–]fenduru 5 points 1 hour ago

Is your emulator widely used? Or just your personal one.

[–]cameronjdunn ArenaNet Programmer 11 points 29 minutes ago

I never released it, sadly – it was really a personal project to see whether I could do it. There were much better ones out at the time :-)

Most Important Thing In Game Development 

[–]ramones13 17 points 16 minutes ago

As a computer science student at a small university that doesn’t offer many classes, what would you say the most important things I learn(in and out of classes) to get into game development?

[–]ArenaNetBraeden ArenaNet Programmer 19 points 9 minutes ago

Just take as much math and computer science as you can and apply it to actually making a game or modding an existing game. Nothing will prepare you more for making games than actually making games.

[–]ArenaNetBraeden ArenaNet Programmer 4 points 24 minutes ago

Yes, as well as compiler theory, software design/engineering, network programming, databases, multithreading, linear algebra, calculus, discrete math, combinatorics, physics. As much CS and math (and physics) as you can get exposure to. =)

Getting Started in the Field 

[–]Cylank 2 points 8 minutes ago

Hello! thank you so much for doing this. My dream is to become a game developer (and hopefully work with you guys :P ). I’m from Chile, in South America, and I’m studying Computer Engineering. The objective is to travel to the US and work there as a game developer, which is my dream from childhood!

So I guess the questions are: What advices can you give me on how to get started on the field?

How did you guys started?

Why are the asuras so awesome?!

Thank you in advance :) Loving GW2!

[–]fcrick ArenaNet Programmer 1 point 1 minute ago

Start making games! There are now many online communities where you can be part of a team, like Kongregate, or you can just work on your own project on your own. The most valuable experience you can only get by just working on projects and solving the real problems those projects face. Also, there is a difference between wanting to do something you’ve never done, and knowing it’s what you want to do after doing it for a while – prove to yourself and others that it’s actually what you want to do by putting in the time.

[–]ArenaNetFelipe ArenaNet Programmer 4 points 23 minutes ago

Hey, I’m actually from Colombia. Same as you, I had the dream to move to the US and make games for a living. Had a lot of failures and setbacks in the process, but I tried and tried until I made it!

I started to program a lot on my own. Back then, I used to order tons of books online (which would take up to three months to get to Colombia) and tried to learn as much as I could.

Now days there are a lot of great online resources and tools to get started.

Don’t give up! Good luck!

What Languages Should You Learn

–]xerwin 9 points 22 minutes ago*

Hi, I want to be game programmer in the future. My graduation project in high school (things are different here than in US) was to create a 2D game using C# and XNA framework. I had 5 months to finish it. After those 5 months I was done with my project. Result? 6000 lines of code. I know, 6000 lines of code in 5 months is laughable (I assume GW2 has hundreds of thousands lines), but I also did art, sound, game design etc. and it was my first experience with game programming and it was something that made me go for software engineering.

What I want to ask is, if I want to do game programming, what languages should I learn? Right now at college we use ANSI C (we’ll be using C++ in 2nd semester though). I’m familiar with every language from the C family (C, C++,C#…), but neither of which I have deep knowledge (well, maybe C#, but I don’t like that language).

Ok, that’s general programming, how about graphics? OpenGL or DirectX? I read a lot of discussion about this topic and found lot of opinions. “Don’t learn openGL or DirectX, start with libraries like SDL or Allegro5″,”Don’t start with libraries, go for DirectX, it’ll be hard at first, but easy later on” “DX sucks, openGL rules!”

Thank you and congratulations for job well done with GW2.

edit: grammar

[–]ArenaNetMike ArenaNet Programmer 4 points 8 minutes ago

What’s really important is learning the core concepts behind programming and graphics. The actual APIs change all the time, and you have to be adaptable. Lots of beginners get hung up on choosing the “perfect” starter language/API, when really they just need to get making things with whatever they happen to know.

That said, C# and XNA are a great way to get into game development; we use C# for our biggest content tool.

[–]jpetrie ArenaNet Programmer 3 points 4 minutes ago

Realistically, lines of code is not a great metric for software quality or complexity, so I wouldn’t sweat that at all. The fact that you finished a game on your own, including doing all that code and asset creation yourself, is a real achievement so you should be proud of that.

Languages and APIs are just tools; a good programmer will know many languages and be able to learn more. The same goes for APIs like Direct3D or OpenGL — and in the case of D3D and GL specifically, it’s the underlying concepts about the 3D graphics pipeline and the math involved that matter more than knowing the specifics of the function calls in each API.

If you want to be a game programmer, the most important advice I can give you is to just make games. Learning and experimenting with new technologies is certainly important, but at the end of the day, a game programmer will be making games, and I think you’ll learn the most from the experience of completing projects.

[–]ArenaNetFelipe ArenaNet Programmer 3 points 13 minutes ago

When it comes to graphics, It’s more important to have a good knowledge of the concepts, hardware architecture and have solid linear algebra skills. Möller’s “RealTime Rendering” book is a great resource to get started.

 PHDs, Interviews and Working at Anet

[–]gyrosash 10 points 28 minutes ago*

Hey, thanks for doing this! I’m a grad student less than a year away from completion. As such I had a few questions..  •Do you think a Master’s or PhD help or hurt an applicant’s chances of being hired as a programmer?  •What was the interview process like?  •What’s it like to work at ArenaNet?   Thanks!

[–]cameronjdunn ArenaNet Programmer 3 points 5 minutes ago

 •It certainly doesn’t hurt! Especially if you have a game-related thesis topic.  
 •Mostly it’s in-person interviews. We have a few technical tests which we ask people to do depending on where they are and on their background.  
 •I’ve worked at a few games companies, and for me this is the best place I’ve ever worked. I honestly think that we have one of the best teams in the world (not just the programming team, everyone).

 Favorite Language, Big Game/Small Game and Tips

[–]BipodBaronen 4 points 31 minutes ago

Okay, I got a few questions  1.How did you learn to code?  2.What programming language is your favorite and why?  3.How was it to work on Guild Wars 2?  4.Do you prefer working on a small game or a big game? Why?  5.Do you have any tips for a “youngling”?

[–]cameronjdunn ArenaNet Programmer 3 points 3 minutes ago

1.I’ve been writing code my whole life. At first I was self-taught and wrote terrible self-taught code. Then I did a Computer Systems Engineering degree and learnt how to do it properly. But in general you get good at coding by writing code.

2.We mostly use C++ – so I guess that’s officially my favorite language for writing a game like GW2. But from a pure language perspective, C# is probably my current favorite. I used to use Delphi (ObjectPascal) a lot, so that’s probably why.

3.Working on it was fun. Shipping it was amazing.

4.When I started in the industry I worked on a bunch of smaller “boutique” titles, so I feel like I’ve done that, and now I love the challenge of big games.

5.Write games! Seriously, just write lots of code and put something together in your spare time. Or anything technically challenging – I wrote a Game Boy emulator, that’s how I got into the industry.

 Scaling For Large Games

[–]fenduru 30 points 37 minutes ago

I am currently studying as a software engineer. Any large game or software is amazing, but how do you scale it up to handle so many things happening at once and synchronize this among all players? I can imagine how you might handle player movements, but once you start having 50 players, each moving and using skills multiple times per second, all while there are other mobs… I start to lose sight how this is even possible (without using way too much bandwidth).

tl;dr Could you shed light on how you scale these server transactions up to handle so many players and environment objects at once?

[–]ArenaNetBraeden ArenaNet Programmer 5 points 6 minutes ago

Of course messages are trimmed down as much as possible, but the best way to save bandwidth is to not send messages in the first place. At any given time, there are a lot of characters not using skills and not changing their movement and not even visible to you. We report to you precisely what you need for your view of the world where you are standing.

 What  You Wish You Would Have Known

[–]TheDislikeGuy 16 points 42 minutes ago

Hello and thank you for doing this.

I’m a recent graduate from Full Sail University and had a few questions on how to get into the industry and new technologies. 1. Obviously aim high in whatever you do, but for someone like me who has little to no side projects that amount to anything would you suggest that I continue to work on these to set myself apart from everyone else getting into the industry or should I throw my resume out to everyone I can? I wanted to apply for the internship you guys offered but I don’t feel confident with my current skill set which happens to be the reason why I’m doing side projects.  1. Guild Wars 2 started development in 2007-08 I believe? Over the years I imagine new technologies that were discovered may have outperformed old technologies. What would you suggest that others start to learn today that you would have like to have known in ’07 –’08.

 2. I don’t know how well the programming team delved into the design portion of the game but I imagined everyone had a “Wouldn’t it be cool if…” What was the best “Wouldn’t it be cool if…” that never made it into the release?

 3. Finally I would like to thank you guys for working on such a wonderful game. It has truly blown my expectation out of the water.

  p.s. What’s with all the trench coat armor for medium armor?

[–]jpetrie ArenaNet Programmer 4 points 6 minutes ago

(1) Technologies change all the time; in terms of advising somebody what to learn now … to be successful as a programmer you’ll want to be able to adapt to the the fact that technology does change so often. Experimenting with new technology is a great way to broaden your horizons as a programmer (especially if that means learning a functional language when all you’ve previously known are other paradigms, for example) as well as a good way to teach you how to learn new things.

Although, that said, concurrency and concurrent programming techniques have become even more important in recent years than they already were.

(2) Asuran paratroopers.

(3) Thanks! The feedback we’ve gotten from the players has been wonderful and inspiring.

[–]ArenaNetMike ArenaNet Programmer 4 points 17 minutes ago

You totally just need to keep plugging away at your own stuff. Having things to show off is the best way to impress in an interview, and the experience you gain from doing a “real world” project (as opposed to some sort of contrived demo) can be invaluable.  1. Certainly technology always changes. It would have been nice if things like Direct3D 11 were available and ubiquitous back in 2007, but unfortunately hardware takes time and iteration to develop.

 2. We definitely get to say “wouldn’t it be cool if…”. I think we still have a list on our internal company wiki, but it’s stuff that might theoretically show up in the future, so you’ll just have to wait :)

 3. No problem. We love to play games as much you guys, so being able to make one with our own ideas is an amazing experience.

 Source Control & DirectX

[–]Teiresius 3 points 27 minutes ago

What kind of source control do you use?

Why did you use DirectX instead of OpenGL for easier portability to iOS or Linux?

Did you build your own in-house AI system or did you use something like Havok AI?

Do you have your own in-house coding style and if so, is it available somewhere to the public?

[–]ArenaNetMike ArenaNet Programmer 3 points 7 minutes ago

We use Perforce for source control. Our engine is in DirectX because it originally spawned out of the GW1 engine, and back around that time iOS wasn’t even a thing and the Linux desktop was even less popular than it is today.

We have our own coding style, but I don’t think it’s available to the public anywhere. It’s not for any particular reason, just that coding styles are mostly subjective and everyone has their own already.

[–]Teiresius 3 points 35 minutes ago

Thanks for answering! =] I just had one more question if you have the chance to answer.

Did you actually end up incorporating very much of the GW1 Engine in GW2 or did you end up scraping most of it except for maybe things like simple collision, audio or simple camera controls?

[–]ArenaNetMike ArenaNet Programmer 6 points 31 minutes ago

It was more like a slow evolution. At the beginning the GW2 engine was mostly just GW1, but over the years it has slowly changed and changed and now it’s mostly a completely different thing.

[–]bkaradzic ArenaNet Programmer 4 points 29 minutes ago

Our code base is very consistent in code style. Probably most uniform code base I’ve seen my career.

One of ex-ArenaNet people has open source project at GitHub, and code style there is identical to ours: https://github.com/webcoyote/coho

About A Linux Client 

[–]jjptphoto 10 points 39 minutes ago

Now that the Mac client is available, any chance of a linux client?

[–]cameronjdunn ArenaNet Programmer 4 points 8 minutes ago

We have no official plans to launch a linux client. Having said that, I personally use linux a lot (starting with Slackware on those sweet A/D/etc floppy disks) and would love a native client. It’s also really healthy for your code to support different platforms and compilers.

And as stuzart mentions, GW2 does actually run pretty well in Wine

[–]Gentlezach 3 points 31 minutes ago

thanks for the answer :)

now that you mention it, it would be awesome to know that someone – maybe you – checked from time to time if updates break wine. I understand that wine compatibility can’t be a show-stopper, but some of your fans really depend on it :)

[–]cameronjdunn ArenaNet Programmer 9 points 28 minutes ago

We do actually check this – in fact, we’ve made a couple of changes specifically for Wine compatibility.

 How Events Are Scripted

[–]that_shaman 3 points 47 minutes ago

I was wondering how events are scripted, do the people who create event have to script it all by hand, or do you use some sort of WYSIWYG tool that writes the scripts for them?

And if so: What kind of language do you use? and how much flexibility does it provide?

[–]jpetrie ArenaNet Programmer 4 points 13 minutes ago

Events and other content in our game are created with a proprietary in-house tool called Duo, which uses a custom scripting language (it’s more-or-less a visual tool, but reads like text and not a graph of “nodes”).

During the development of the tool we worked very closely with the designers who would be using it on a day-to-day basis to make sure that it they’d be able to use it efficiently and effectively for all the content they need to build.

 Bots, City Clothes and Races

[–]nkuvu 28 points 1 hour ago

A few questions.  1. Is there a point to reporting bots any more? Not “hey you aren’t doing anything about them,” but more along the lines of the activities I recognize as botting (identical pathing, attacking thin air, identical (default) appearance, and so forth) seems like it should be able to be recognized via an automated system.

 2. If I see twelve bots running an identical path killing ALL the things, and only report ten of those (hard to remember if I’ve already reported xzxcczccx as well as vbcvvbcxxxvb), do those other two get to keep on going? Or can I report only a handful to have them all looked at?

 3. Is bug reporting in game more effective than on the forum? Or the reverse? Or are they about the same?

 4. Are there more town clothes on the way? More additions to the gem store?

 5. For issues like the broken skill point in Metrica Province (with the dead Hylek NPC), is it really much more complicated than “if dead, resurrect”? Surface level it seems so trivial to correct, wondering if there’s more to it that players aren’t seeing.

 6. We’ve seen some information on the breakdown of the number of players choosing races. Will we be seeing more of that type of information? (side question — closing in on two months after release, did any of the player demographics surprise the team?)

 7. Looking back, if you could change one thing about the game at release, what would you have changed?

[–]fcrick ArenaNet Programmer 5 points 10 minutes ago

 1.Yes.  

2.We ban bots in waves. Those two aren’t getting a pass.  

3.There are several advantages of using the forums for both developers and players – we can ask for additional specific information, and also we can respond to threads on the forums. Both bug reporting and the forums are very useful for us.  

4.Yes and yes.  

5.We’re focused on addressing the root causes of these issues, as both existing and future content will benefit. If we fix the cause, it won’t happen again.  

6.I’d assume so – I think John Smith is always working on finding interesting things to share.  

7.Personally, I wish we’d been better prepared with the Trading Post, and that we’d been better prepared with content problems with things like events and skill points.

 Botting Strategies

[–]DreNeir 25 points26 points27 points ago

With the rampant botting in GW2, what is the current status of fighting the botters and hackers? These same botters are using slots in WvW and is a part of the reason there are queues there. I’ll also add the hackers that cheat on WvW(fly-hack to orb, speedhacks). You can read these things in the official forums and other forums.

Is the stealth mechanic how ANet thought it would be used? (Mainly WvW)

(WvW) Dead players(Not downed) have a huge advantage of being scouts, are there any plans to give dead players a black screen(a la Counter-strike) or force them to waypoint?

Also, there was information that buying from Gold Sellers is cheaper than buying gold from GW2′s cash shop. What is ANet’s response to this?

Will we be able to see improvement to player culling in large scale fights in WvW? What is the current status of this problem mentioned in the official forums? (Seems like this has been answered already)

Server balancing is a major problem in WvW right now, people think that the free transfers are one of the major reasons this is happening. When will free transfers stop and when will guesting start?

In dungeons, are there any plans to lower the HP of trash mobs? Or are there any plans to make fighting the trash mobs rewarding?

I won’t ask any of the mystic forge or legendary issues. It’ll just open a lot of rage.

Also, more skins for weapons that are NOT GREATSWORDS. Show more love to the other weapons.

[–]ApochPiQ ArenaNet Programmer 4 points5 points6 points ago

Apologies in advance for only hitting one of your questions, but I’m not certain of the answers to the rest of them, so ;-)

As for bots: we’re very reluctant in general to discuss our strategy publicly because we don’t want to tip our hand; however, I can say that we have a lot of great progress in detection and prevention in the pipeline, and we should start seeing a noticeable decrease in botting over the next few weeks.

 Multiple Trait Sets?

[–]chutch1122 162 points 1 hour ago*

Any plan to implement multiple trait set? Because we need to use different traits for PvE, Dungeons and WvWvW.

Also, what is the airspeed velocity of an unladen swallow?

[–]cameronjdunn ArenaNet Programmer 7 points 12 minutes ago   Any plan to implement multiple trait set?   That would be cool. I’d use that! We have a lot of things on the “cool to do” list though – we’re working through it!

  Also, what is the airspeed velocity of an unladen swallow?   Branded or unbranded?

 Witchcraft & Server Downtime

[–]Kanaxai 43 points 1 hour ago

What kind of witchcraft you use that makes both Guild Wars and Guild Wars 2 not need hours and hours of downtime for server maintenance and game updates?

[–]cameronjdunn ArenaNet Programmer 3 points 4 minutes ago

Ok, so this is kinda secret, but I’ll tell you anyway. I can tell you because it’s easy to say and really hard to do.

We have a system which lets us run the old build and the new build at the same time. So we don’t need to take the old build down when there’s a new one, we just also host the new build.

That’s it, it’s that simple in concept. But complicated to implement

[–]trakata 6 points 41 minutes ago

Do people on the “old build” still interact with people on the “new build” ? or are they segregated until they get on the same build?

[–]StephenClarkeWillson ArenaNet Programmer 9 points 25 minutes ago

They are segregated, except for some things like party and guild chat.

 Programming Roles In PreProduction

–]mousseng 11 points 1 hour ago*

Hey guys, huge thanks for this. I’m actually doing a report on programming right now, so this is really well-timed. I’ve got some questions that deal more with the broad aspects of being a game programmer than actual programming:  • What particular role do programmers play in the pre-production or design phase of game development, if any?

 • How is the coding workload typically divided up among a team of programmers, if at all, at Anet?

 • About how much time, on average, would you estimate one spends on code per day during the production phase?

 • What duties do game programmers have beyond simply writing game code?

  Edit: I realize these questions are pretty vague, but that’s because I’ve got very little understanding of how the whole development process works. All the questions are important to me, but the second question is of the greatest interest to me.

[–]ArenaNetHabib ArenaNet Programmer 5 points 14 minutes ago

While programmers are minimally involved in early pre-production (except to chat with the designs involved, which the whole company does) we work very, very iteratively so we get brought in fairly early to help with prototyping efforts, etc. and then ramp up from there over the course of the project. Gw2 is HUGE so a lot of the game gets designed (and/or refined) as we go and everybody working on a feature gets a lot of input into the design.

We generally work on cross-disciple feature teams and so will work on whatever code is needed to support the feature in question. That said, we also have a strong sense of code ownership (e.g. I own the conversation system, among others) so we’ll usually spend time consulting with folks who are making changes to systems we own. If you’re asking about how we decide who gets to do what stuff: generally the leads ask what you’re interested in and try to pair you with those tasks. Passionate, invested programmers are happy programmers!

During production I probably spent 80%-90% of most days working on code. Of course there were some days that had more meetings, but in generally ANet does a great job of just letting coders code.

<Boromir Voice>One does not simply write game code. </Boromir Voice) Ok, sorry, had to be done. We are involved in, and often own, technical design of systems, we collaborate with designers during the design phases to arrive at (we hope) the best possible and most feasible designs, now that we’ve shipped we sometimes post on our forums, we play the heck out of the game regularly (and have for years), and every once in a while we do an AMA on Reddit :)

[–]meranator ArenaNet Programmer 3 points 23 minutes ago

 •During pre-production programmers may be working on general engine-level features or supporting prototyping efforts of design ideas.

 •Workload is usually divided up per-feature. For example, I’m mainly responsible for animation-related code in the game client. However, while we do emphasize code-ownership, we also value flexibility and shared knowledge of the code base, which allows us to shift the focus of programmers as different problems arise.

 •This is a tricky question, as it really depends on whats being worked on. If you’ve got a large feature or problem already worked out in your head or on paper, you may spend the majority of the day writing the code. However you may instead be working on a tricky bug, which means you’ll be spending a good amount of time reproducing the problem, reading debug info, hypothesizing, testing fixes etc. So… anywhere from 0-8 hours, assuming you’re not working overtime.

 •Fixing bugs and coordinating with designers, artists, and/or QA teams.

[–]ApochPiQ ArenaNet Programmer 4 points 38 minutes ago

  What particular role do programmers play in the pre-production or design phase of game development, if any?   This varies a lot by studio. In some places, preprod and design are almost entirely separate from implementation. Those are the less fortunate shops, IMHO. In more pleasant studios like ArenaNet, we do what we can to involve all disciplines in the entire production process. This means that programmers typically have input into what is technically feasible and interesting from day one of design and preproduction.

  How is the coding workload typically divided up among a team of programmers, if at all, at Anet?   At the moment, we’re organized by major groups of features. For instance, my team is focused on security in the game; anything pertaining to that generally lands on our plate. Different individuals always have their own strengths and specialties as well, so they tend to get assigned things that (A) they will enjoy working on and (B) they’ll do a great job with.

  About how much time, on average, would you estimate one spends on code per day during the production phase?   This is really tough. How do you define time spent on code? Does that include reading code to find a bug? Does that include time spent talking about code with other developers? Does that include planning meetings that ultimately result in creating code?

  What duties do game programmers have beyond simply writing game code?   Troubleshooting problems is probably the second biggest thing we do, especially post-ship. We also spend a lot of time assisting in the design of new features, as I outlined earlier, to help ensure that everything we tackle is technically solid.

[–]cameronjdunn ArenaNet Programmer 3 points 36 minutes ago

 •Programmers are super important during the design phase – it’s really easy for designers to come up with cool ideas which could never be implemented. And (surprisingly commonly) designers sometimes self-limit their ideas because they think they’d be too hard to do – when actually there’s an easy way of doing them. It’s a collaboration.

 •We have lots of programmers and lots of work to do – we use a task tracking system to keep track of it all. In general our feature teams break down their high level goals into tasks and it’ll be picked up by one of the programmers on that feature team.

 •During production, I’d say that a normal programmer would spend about 6 hours a day writing code.

 •Programmers tend to do activities related to writing code – brainstorming design ideas with other programmers, writing up technical proposals, buddy checking other programmer’s commits, and so on.

Performance on AMDs 

[–]kurzo 8 points 1 hour ago

Are there any plans to improve the performance on AMD systems?

[–]ArenaNetMike ArenaNet Programmer 6 points 28 minutes ago

No.

Just kidding :) Of course we’re always working to improve performance; it’s basically a never-ending battle. I don’t know of anything vendor-specific at the moment, but that doesn’t mean general improvements won’t have a noticeable impact for you.

 Most Interesting Technical Issue

[–]thristhart 5 points 1 hour ago

What technical issue was the most interesting for you to solve with Guild Wars 2? Making an MMO of this scale couldn’t have been easy!

[–]ArenaNetHabib ArenaNet Programmer 3 points 35 minutes ago

For me the most interesting set of issues (there’s always more than one) have been associated with WvW. It’s a very different game type from our PvE game in many ways and required us to build systems to support a new kind of server-to-server communication (which is how we get 4 maps that behave a bit like 1 map in terms of markers, etc.), game state serialization, world interconnection (so the different worlds can fight), etc.

 DX11 Features

[–]ramblingnonsense 9 points 1 hour ago

It was announced that the company would be reevaluating DX11 support after release. What would be involved in supporting new DX11 features? What would new tricks would you like to add to the engine that only DX11 can support?

[–]bkaradzic ArenaNet Programmer 3 points 20 minutes ago

Initial support for DX11 in GW2 would be have to be limited to features that don’t require massive art changes and effects that are not affecting game play, but going forward adoption of real DX11 hardware, will dictate how fast we move into that direction.

 Most Difficult Feature To Implement/ Most Fun Feature

–]RisKQuay 4 points 1 hour ago

Why are you guys doing an AMA when you should be bug fixing?

I jest, I jest. I don’t really have an actual question, I just wanted to say ‘kudos’ and well-done for a great game. :]

EDIT: • What, in your opinion, has been the most difficult feature/element of the game to program in?

• Which feature/element’s coding are you most proud/pleased with?

[–]ArenaNetHabib ArenaNet Programmer 6 points 35 minutes ago

Well, I’m actually off today as I prepare to have surgery later this afternoon, so I wouldn’t be fixing bugs right now anyway :P

I think one of the most difficult things about working on a game like Gw2 is just the sheer scale of the thing. It is a massive undertaking, and the more code that has already been written and the more systems that have already been designed, the harder it becomes to take things in a completely new direction. But, of course, new directions are generally where all the new cool stuff happens, so we end up doing that a lot and it’s quite a challenge at times. Which is probably why I love it so much :)

I’m proud of a lot of my work on Gw2, but I’ll pick two relatively specific things:

1) Trebuchets! This wasn’t a huge amount of code or anything. We already had projectiles, etc., but making the change that let them have such a super long range was really, really satisfying. My screensaver at work is actually a bunch of screenshots that I took in a row of one of our first trebuchet tests. It’s like a flip-book of awesome!

2) I’m pretty damn proud of the conversation system. It’s flexible, stable, clean, and relatively easy for designers to use. It’s also a fairly complete state-machine based scripting language which puts a lot of power into the hands of designers who then make amazing things with it. So that’s pretty cool

[–]ArenaNetBraeden ArenaNet Programmer 3 points 36 minutes ago

For me it was the character animation system for both questions. We took a great leap forward from our previous tech in order to introduce transitions, upper body animation, IK, looping skills, etc. It was a total rewrite of the runtime animation systems and related tool chain and art pipeline on the part of the engine, gameplay, and tech art teams. Lots. Of. Work. But a high payoff. =)

Hiring?

[–]Kraxxis 2 points 1 hour ago

Hiring? :)

What is the most useful information someone can place in a bug report?

What was/has been your most challenging feature to implement as far as skills, character, or events go?

What feature (that you can talk about, obviously) on the horizon are you most looking forward to implementing?

[–]ArenaNetCaleb ArenaNet Programmer 3 points 36 minutes ago

 •Always hiring EXCELLENT programmers.  

•Thorough repro steps and specificity on what the symptoms of the problem are. Theories about what went wrong don’t really help us fix the issue.  

•Underwater pathing… So many interesting edge cases.  

•Asura paratroopers! (Sorry, just kidding… Unfortunately.)  

EDIT: Formatting

 Bugs, Bugs, Bugs

[–]EgoGoner 7 points 1 hour ago

1.What are the hardest bugs to fix? 2.When it comes to the priority of fixing bugs, do you fix the easiest ones, the most important ones (even if they are hard) or both? 3.How many people do you have working on fixing bugs? 4.When will my ranger’s opening strike function properly? =P

[–]ArenaNetHabib ArenaNet Programmer 3 points 28 minutes ago

 1.The ones that we can’t reproduce in house, or that happen only very, very rarely, and don’t result in an actual crash. From a player perspective crashes suck but they’re great when you’re trying to fix a bug because it’s often pretty clear what’s going on (and we get all kinds of good data from crash reports). If there’s a nasty, infrequent bug that doesn’t result in a crash it’s like hunting a ghost spy while wearing a blindfold.

 2.We always try to focus on the most important bugs (which are also generally some of the hardest) but it can be nice to take a break from a giant bug and spend an hour fixing something that’s relatively easy. It’s good for the game and programmer morale.

 3.All of them. Seriously, everybody is always responsible for fixing bugs in their code (or their content if they are designers). Of course we also have people working on new features, but since making a new feature generally includes making some new bugs they’re also fixing bugs as they go (ideally, and usually, well before those bugs go live). That’s just how programming works. Actually, that’s just how game development works. I’m pretty sure even the writers fix bugs.

  I’m skipping #4 (sorry) because I don’t know anything about it.

[–]ArenaNetMike ArenaNet Programmer 4 points 32 minutes ago

 1. The hardest bugs to fix, by far, are the ones we can’t reproduce in house. If a crash only affects 0.01% of players, that means we might never see it ourselves, but could still end up seeing thousands of players with the issue.

 2. Certainly the most visible and game-breaking bugs are worked on first, but we also look for low-hanging fruit that can improve the game for players without a lot of effort on our part.

 3. There’s no fixed number who only work on bugs. We work on fixing things, making new features, or improving other parts of the game.

 QA Coordination

[–]Sam_Kablam 3 points 1 hour ago

As QA person myself, I have to ask, how you guys coordinate with your QA team? Not just for bugs, but for usability feedback as well. Do you have your own small groups of dev members, or do you work as one big team?

[–]fcrick ArenaNet Programmer 5 points 1 hour ago

Right now we use FogBugz to track bugs internally. The development team is divided into Gameplay, Server, Engine, and Web – I’m on Gameplay, and I work on internal tools for designers, and other tools that are part of the build process that handle data. I feel like we’re one big team – most programmers actually sit among developers from many disciplines, working together to finish something specific.

For example, my team, which is focused on improving designer efficiency as we work on multiple subsequent releases of content simultaneously, has two programmers, a test engineer, and a designer. I write code, but also coordinate with our internal customers.

 Craziest Content Pipeline Request

[–]KTR_Ravious 3 points 1 hour ago

To the content pipeline programmers, what is the craziest request you had where the only proper response was “just no”? What was your favorite thing to program?

[–]fcrick ArenaNet Programmer 5 points 46 minutes ago

Often designers want us to validate content data in such a way that would require us to solve the halting problem. As you can imagine, our game content is incredibly complicated, and there are a lot of things that are computationally expensive to verify, especially every time you want to make a change.

I built a lot of the tools we used to do very large scale load testing in preparation for launch, which used Amazon EC2 instances to log nearly a hundred thousand game clients into the game in just a few minutes. It actually literally used hardware spun up all around the world, on three different continents. Pushing the button to start those tests was always pretty awesome.

 Programming Languages That GW2 Is Written In

[–]SamuelMasua 9 points 1 hour ago

Can you list all the programming languages used to develop the GW2 client? Is it 100% C++ or do you also incorporate scripting languages like Python or Ruby?

[–]jpetrie ArenaNet Programmer 5 points 26 minutes ago

The game is written in C++. We do use other languages for other aspects of development (our tools framework is in C# and is uses Python for scripting). Many of us engineers will also write scripts for our own personal use, to automate some daily tasks we may do frequently (I use a lot of Powershell and Ruby).

Spelling Mistakes 

[–]WillSmithian 7 points 1 hour ago

I’m loving the game and I’m happily playing it as a ranger but I have a few questions. 1. There’s quite a few spelling mistakes and abilities that are described to do one thing but does some other thing. Is there anything technical that are preventing this from being fixed or can we see a fix asap since it doesn’t seem to be that huge? The moas chilling screech, I think it’s called, is one of them.

[–]ArenaNetMike ArenaNet Programmer 4 points 49 minutes ago

Most of these are content / design issues, which are solved by completely different sets of people. One thing I would like to comment on though is #1: things that seems really stupid and trivial are often times way more complex behind the scenes. Even for something simple like a spelling mistake, not only does it have to be identified from within the huge volume of reported issues, but then it has to be verified, assigned a priority, and given to someone who may have many more important things to work on.

Even then, even a small change has a (maybe small) risk of breaking things, so someone has to verify the fix and make sure it doesn’t break something else entirely. It’s a complex process for a very big and complex game, and we have to be very careful to avoid breaking something important and getting egg on our faces :)

How Many Lines of Code In GW2? 

[–]nekrosstratia 4 points 31 minutes ago

How many lines of code in GW2 in total (client or server or even web)

How many commits per build on average?

But most importantly! Could one of you just take 1-2 of your favorite commit messages written by someone else on your team. I know personally I’ll write things like “Fixed Bug with Stupid Ass System That Fred Designed” / “I’m not sure what I did, but it was productive”

[–]ArenaNetBraeden ArenaNet Programmer 4 points 13 minutes ago

I’ll answer your most important question, because I actually have that data right now. Jim Scott working on fog, right around the time the double rainbow video was going viral:

  “Whoa, that’s a full fog all the way. Double fog, oh my god. It’s a double fog, all the way. Whoa that’s so intense. Whoa man! Wow! Whoa! Whoa! Whoa ho ho oh my god! Oh my god! Oh my god! Woo! Oh wow! Woo! Yeah! Oh ho ho! Oh my god! Oh my god look at that! It’s starting even to look like a triple fog! Oh my god it’s full on! Double fog all the way across the sky! Oh my god. Oh my god. Oh god. What does this mean? Oh. Oh my god. Oh. Oh. God. It’s so bright, oh my god it’s so bright and vivid! Oh. Ah! Ah! It’s so beautiful! Oh my god. Oh my god. Oh my god! Oh my god, it’s a double complete fog! Oh right in my map. Oh my god. Oh my god, what does it mean? Tell me. Too much. I don’t know what it means. Oh my god it’s so intense. Oh. Oh. Oh my god.” – Change 533404 by jim on 2010/07/19 18:07:00

Things Anet Looks For In Programmers

–]Klong15 3 points 2 hours ago

Hello! I’m trying to be a part of the Programming Internship with ArenaNet. Are there any areas in particular that I should focus on? I assume I should know about data structures (as with any other internship I’ve interviewed for). I’m currently taking an Open GL class because I think I’d be interested in that aspect.

What are some other things I could study up on or you are looking for to increase my chances of working with an amazing team?

[–]ArenaNetRyanD ArenaNet Programmer 4 points 1 hour ago

We have a variety of types of programmers (engine, gameplay, server, web, etc) so focusing on one of these aspects can help make you stand out.  If you enjoy OpenGL, that is on the engine side of things, so you can try to focus on that.  I started as an intern and proved that I had a knack for game mechanics as well, so I now work closely with the designers as a gameplay programmer.

The best experience I had in college was actually making a game with a team of several programmers and artists.  Attempting to replicate what you would actually be doing at a job gives a great leg up and makes it much easier to adjust once you start. I made tools and did a lot of the gameplay programming for my senior project. When I started working here I was working on tools, and transitioned to gameplay programming.

 What Anet Offices Are Like

[–]onlyamonth 0 points1 point2 points ago

What’s the ArenaNet base like to work in, do you get cool facilities and swanky break out areas and sofas and statues and stuff? :D

[–]ApochPiQ ArenaNet Programmer 3 points4 points5 points ago

Absolutely!

We have a huge game room with ping-pong tables, foosball, quite a few gaming consoles, and so forth. Our kitchen area comes stocked to the gills with snacks and drinks. The common areas have nice seating and are great for informal meetings and just chilling out.

And of course there’s the special lounge area where you can lie down on a feather bed, put on noise-canceling headphones, and listen to a quiet stream of recordings where our fans endlessly praise everything we do.

I might have made the last bit up.

About Programming Crunch Time 

[–]Arterius_N7 2 points 1 hour ago*

Programming student here, just wondering about a few things.  1. How is it to work at a game company, is there a lot of “crunch”-time or “what goes on at work stays at work”. Or anything in generall about how the work usually is.

2. On a scale of 1- 10 how pleased are you with your job and working environment? (stressfull, working with deadlines, good working colleagues etc etc…)

 3. How did you get into the industry, programming and any advice to give to a student that want to work with games in the future?

 4. what is the avreage wage that a programmer makes? ( just curious of what to excpect, not to important question)

 5. considering you work with games and programm them I might assume you are gamers. So any games in perticular that you enjoy? (meaning something other than what you have made). (simple curiosity again)

  Well that was all that I could think of at the moment, thanks for doing the AMAA and good luck with your future games.

[–]ArenaNetRyanD ArenaNet Programmer 4 points 1 hour ago

1) ArenaNet has very little crunch time. We treat developing an MMO as a constant ongoing process, so we need to keep our work habits sustainable. Crunch time is more common for games that just release and are done.

2) ArenaNet is a great place to work. The environment is very relaxed and fun, the people are great, hours are flexible. I got spoiled with it being my first professional game dev job =)

3) I went to DigiPen and really put a lot of effort into making my game projects there as strong as I could. The experience from actually developing a game from start to finish before getting into the industry was hugely valuable. I started at ArenaNet as an intern and worked my way up =)

4) Game devs tend to make a bit less than normal programmers, but are compensated in fun.

5) I’ve played a huge variety of games. Some of my favorite games are Diablo 2, Kingdom Hearts, Bastion. I’ve played a lot of LoL and WoW up through Burning Crusade.