3rd party libs for VS2013?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • 3rd party libs for VS2013?

      Is there a copy of the 3rd party libraries compiled for VS2013?

      As instructed in the readme file, I installed the latest version of the code and the 3rd party libraries. It's more than that though, there are also a few code changes required as discussed in this post:
      mcshaffry.com/GameCode/thread.…hilight=&hilightuser=2059

      > From there I just had to rebuild the 3rd party libraries

      That's the stumbling block. The 3rd party libraries are not trivial and neither is compiling them. In particular, the Bullet SDK is large and requires CMAKE which, at least in my experience, never works quite as advertised and produces annoyingly cryptic errors. I don't really have the time or interest to bother with the Bullet SDK. I'd prefer to avoid rebuilding Bullet but I can't because:

      > error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1800' in Editor.obj

      That linker error, unless I'm wrong, is because I'm using Visual Studio 2013 Pro but Editor.obj was compiled with VS2012. I really don't want to install 2012 Express (or worse, 2010) just for this book. I also really don't want to wrestle with a bunch of 3rd party code that I'll probably never use again (Bullet 2.79, DXUT).

      The introduction of the book states that a CD is not included because that would preclude fixes. This is a great theory as long as fixes are actually made. Mike and Rez, are you really still using VS2010? If so, VS2013 finally has some decent C++11 support so it might be time to consider upgrading. With DX12 coming soon, dropping support for DX9 and the deprecated DX9 SDKs is probably also justified. As I'm sure you're aware, there's no need to upgrade to Windows 8 because the 8.1 SDK works fine on Windows 7.

      Forgive me if I sound snotty, I am simply frustrated after spending far too long on this and still not having the code compiling. Getting Bullet to compile is not trivial, at least not for my impatient little brain. If this has been discussed in a previous forum post, I can't find it and sure would appreciate a link.

      On a side note, thank you for getting rid of the Boost dependency. While it may be a fine library for some needs, avoiding that behemoth certainly keeps things much simpler.

      Also, having been a game developer even longer than Mike, let me say that overall I'm happy with the book. No matter how experienced a coder is, there's always more to learn and this books has already given me some insights beyond just seeing how "the other guys" do things.

      If I sound snotty maybe it's because I still hold a bit of a grudge. It was years ago but I still don't like UO because its release was the final straw that caused a game I was particularly excited about to get canceled. Although to be fair, that project was having problems anyways so I can't really blame it on Mike.
    • I ran into the same problem and just use VS2012 for GCC and VS2013 for my personal game. Rez put out a patch of the 3rd party libs a while ago for VS2012.

      I've replaced some things in my game with C++11 stuff, such as std::thread instead of the api these guys use and std::function instead of the fast delegate library. There's essentially no difference to the architecture, which is what the book is about. I'm honestly not quite sure what DX12 would do to change the source code.

      So, in my opinion, there's not much to be gained by updating the source. If you want to run the game you can find a way through previous versions of VS or by figuring out how to compile the 3rd party libs. Otherwise, just look at the code.

      Unless of course Mike and Rez have more content to add. In that case, update away!

      But for the actual question - I don't know how to compile the libraries either. Mholley seemed pretty good at compiling with cmake and whatnot. Maybe he can get the 2013 libraries?
    • Introduction, page xxxiv:
      "The book has never included a CD because the source code will get fixed and tweaked even as this book goes to press and long thereafter."

      Contrary to popular belief, book authors don't make much money. The author of a mildly successful technical book can expect profits in the range of 10^4 spread out over multiple years. For an experienced programmer, such meager profits only barely justify the effort required. So I definitely understand not wanting to constantly update an old code base, especially after most of the profits have already been made.

      Now imagine that you were shopping for books on Amazon and saw that this book uses Visual Studio 2010, deprecated DirectX code and outdated third-party libraries. Once a book gets to that point, the profits drop off dramatically.

      Whether or not the authors update the code is their decision. I was simply pointing out that if they are still interested in keeping the code alive, as they state in the book, it may be time for some revisions. As time goes on, fewer and fewer people will be willing to install an old compiler just for this book.
    • I wouldn't say 2010 is an old compiler, we use this at work across several dozen studios worldwide, the cost of upgrading for a studio needs to be justified, as far as I know Rez has mentioned that Maxis JUST upgraded to 2013 after using 2010 for quite some time (I know people who still use 2008).

      The problem with new Microsoft products is that it is generally unwise to jump into their new software as soon as it releases, instead you should generally wait until several service packs are released to stabilize the software.

      Now it could be said that in order to cater to new individuals looking to learn game dev that they should put full support into newer compilers, the book is focused on showing people how things are done in the industry, where 2010 is practically the most popular IDE for MS systems (we even use it to develop our applications with while our target platform is iOS under XCode).

      Another thing, starting with VS2012, projects are 100% forward compatible, you can load your VS2010 project in VS2012, and use the same compiler set without any differences.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • > I wouldn't say 2010 is an old compiler

      I would. Four years is a long time in computer years. More importantly, the 2010 compiler does not include adequate C++11 support. That by itself could be ample justification for an upgrade. Large companies are always slow to adopt new technology but book authors should not be.

      > ...in order to cater to new individuals looking to learn game dev

      This is the whole point. If you were a new individual looking to learn game dev, would you buy a book that requires an old compiler and uses deprecated DX Effects? Sure, much of it is still relevant, just not as relevant as the other guy's book that has already been updated. It's a game of leap frog, a never ending cycle. What your studio decided to use four years ago might be an interesting historical note but is not particularly relevant to projects starting today.

      Since I am currently at the start of the product cycle, now is the time for me to embrace the latest upgrades. That's why I've been surveying potential replacements for DX Effects. Unfortunately, GCC does not offer the answers I am looking for.

      By comparison, Luna, who has horrible reader support, has at least posted some brief sample code to help readers switching to Metro:
      d3dcoder.net/Data/Resources/d3d11Metro.pdf

      So let me reiterate, thumbs up for dropping the Boost library. Thumbs down for sticking with VS2010, DX Effects and old third party libraries. I was hoping the book's companion website would have some updated answers but it appears that it does not.
    • When we originally wrote GCC 4th edition, Visual Studio 2010 was the industry standard. We were using the same tech used by most of the other game companies out there.

      Updating the code to run with Visual Studio 2013 has been on my todo list for a while. Mike and I both work full time so we simply haven't had the time. For example, I'm in heavy crunch on The Sims 4, averaging about 80+ hours a week. I know Mike is in a similar place. Once it all calms down, we'll probably take a stab at it.

      I generally agree with your statement about third party libraries. In the end, I think going with Bullet and other open source solutions has caused us more problems then they solved. In fact, most of the VS2013 issues are due to 3rd party libs being unhappy with the new compiler.

      Regarding your comment about us not providing satisfactory post-ship support to our readers, I'm afraid I have to respectfully disagree with you there. Since the publication of Game Coding Complete, there have been a number of updates. There are new versions of the 3rd party libs for VS2012, there have been numerous bug fixes and tweaks to the code base, and we've spent countless hours here on the forums answering questions. We've spent more time than any other authors I've seen trying to help out our readers.

      Finally, GCC is fundamentally about game architecture. If your goal is to look for a replacement for DX Effects, then this book probably isn't for you. There are a whole pile of great books on 3D graphics engines that are perfect for this sort of thing. Same with AI, or sound programming, or networking. The key value of GCC is in how it all fits together in a scalable, reusable architecture.

      -Rez
    • Thanks for the reply Rez. I apologize if it sounds like I am unhappy with your support but I don't believe I ever said your post-ship support is unsatisfactory. I did point out some flaws but the reader support on this website, while not the best I've ever seen, is still far better than average. Even though you don't yet have the specific information I was looking, I'm only one reader out of many and I'm currently a bit ahead of the crowd with VS2013. I understand the issues with supporting such a wide reader base and never expected you to cater to a single individual. My only critique, which I'd like to think of more as a friendly suggestion, is that it might soon be time for VS2013 support. But as you stated, you are already well aware of that.

      Concerning DX Effects, I think GCC is the perfect place for such a discussion because proper shader management, as with all asset management, really depends on the overall engine architecture. I'm sure Sims 4 uses different asset management than Unreal which is different than Mario Carts or Starcraft. Books that focus on 3D graphics engines, such as "Practical Rendering & Computation with Direct 3D 11" cover shaders but from a low-level perspective. By their nature, such texts can not cover how all the various 3D assets need to be handled by the parent application. That is the job of a text such as GCC.

      Indeed, GCC4 does cover the subject, just from a perspective before Microsoft deprecated the entire Effects library with no replacement. I certainly don't expect an instant update. In fact, from what I've managed to find so far, nobody yet covers the subject. So who knows, maybe GCC5 will be the first.
    • No worries. Sorry if I seemed defensive in my post, it wasn't intentional at all. :)

      Like I said, Visual Studio 2010 was the industry standard back when we wrote GCC (which was in 2011). Things have changed and 2013 is much more prevalent. If we were to write it again today, we would use 2013.

      I see what you're saying about shader & asset management. I misunderstood you and thought you were talking about including more shader/DX techniques rather than asset management.

      Anyway, I agree with you. Talking more about how to handle shader files would be a good thing. It's nearly impossible to keep up with all the changes to keep the text fresh and up to date.

      -Rez
    • > It's nearly impossible to keep up with all the changes to keep the text fresh and up to date.

      No doubt. Few people realize how much work it is to publish and maintain a book for relatively little pay. Someone that is qualified enough to write a good technical book is also qualified enough to make more money elsewhere. And there are only so many hours in the day. You definitely deserve kudos for continuing to support GCC, even if you haven't had a chance to wrangle VS2013 yet.

      Concerning DX Effects, there seems to be a lot of frustration out there. It's a relatively obscure topic, only really needed by those coding more complex games. Simple demos don't need effects support but anything else can quickly end up with hundreds of shaders and it's unrealistic to handle them all manually. The big engines (Unreal, Ogre, etc) have their own custom solution but that doesn't help the amateur developer that was using DX Effects or the professional developer that can't or won't license third party rendering engines.

      Who knows, maybe I should put my money where my mouth is and publish whatever solution I end up using. It wouldn't be enough for a book but I bet it would make a popular series of blog posts.
    • Originally posted by gee6
      Concerning DX Effects, there seems to be a lot of frustration out there. It's a relatively obscure topic, only really needed by those coding more complex games. Simple demos don't need effects support but anything else can quickly end up with hundreds of shaders and it's unrealistic to handle them all manually. The big engines (Unreal, Ogre, etc) have their own custom solution but that doesn't help the amateur developer that was using DX Effects or the professional developer that can't or won't license third party rendering engines.


      Hey there.
      I've ran exactly into this problem last year! Researching current state of affairs I found that Effects framework was dumped by MS and no replacement has been actually made! But I needed something in my toy renderer project. After a lot of consideration I ended up with my simple version of the effect framework (it's not that hard actually, just some annoying googling for shader reflection). BTW, you can also look at DirectXTK project which contains many useful things that can save your time!
      Looking for a job!
      My LinkedIn Profile
    • rezination wrote:

      When we originally wrote GCC 4th edition, Visual Studio 2010 was the industry standard. We were using the same tech used by most of the other game companies out there.

      Updating the code to run with Visual Studio 2013 has been on my todo list for a while. Mike and I both work full time so we simply haven't had the time. For example, I'm in heavy crunch on The Sims 4, averaging about 80+ hours a week. I know Mike is in a similar place. Once it all calms down, we'll probably take a stab at it.

      I generally agree with your statement about third party libraries. In the end, I think going with Bullet and other open source solutions has caused us more problems then they solved. In fact, most of the VS2013 issues are due to 3rd party libs being unhappy with the new compiler.

      Regarding your comment about us not providing satisfactory post-ship support to our readers, I'm afraid I have to respectfully disagree with you there. Since the publication of Game Coding Complete, there have been a number of updates. There are new versions of the 3rd party libs for VS2012, there have been numerous bug fixes and tweaks to the code base, and we've spent countless hours here on the forums answering questions. We've spent more time than any other authors I've seen trying to help out our readers.

      Finally, GCC is fundamentally about game architecture. If your goal is to look for a replacement for DX Effects, then this book probably isn't for you. There are a whole pile of great books on 3D graphics engines that are perfect for this sort of thing. Same with AI, or sound programming, or networking. The key value of GCC is in how it all fits together in a scalable, reusable architecture.

      -Rez


      When 3rd party libs for VS2013 will release? Thanks.
    • Ok - I'm doing it - downloading Visual Studio 2013 right now. I'm already using it at work anyway, so I might as well get to upgrading GCC to use it.

      <crosses fingers>
      Mr.Mike
      Author, Programmer, Brewer, Patriot
    • And the game is compiling now....
      Now to tackle the libraries. First is Bullet - I've grabbed the latest version 2.82, but it doesn't have the msvc files, so I'll need to make them with CMAKE. Wait, now I have to grab the latest version of CMAKE.

      This is going to be something of a slog!
      Mr.Mike
      Author, Programmer, Brewer, Patriot
    • Hope we can get a working source code, looking forward to being able to follow along with everything. : ) I was able to compile Bullet just fine, but I still get that error mentioned on another thread..'Error loading teapot wars' (thread) I believe.
    • mrmike wrote:

      And the game is compiling now....
      Now to tackle the libraries. First is Bullet - I've grabbed the latest version 2.82, but it doesn't have the msvc files, so I'll need to make them with CMAKE. Wait, now I have to grab the latest version of CMAKE.

      This is going to be something of a slog!


      I would suggest using premake with the latest bullet (assuming you are using the Git repository), they are switching over to premake but still keep around the CMAKE stuff.
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz
    • Alright, If Rez or Mike don't see this soon I'll let them know, hopefully they decide to go with Git :D .
      PC - Custom Built
      CPU: 3rd Gen. Intel i7 3770 3.4Ghz
      GPU: ATI Radeon HD 7959 3GB
      RAM: 16GB

      Laptop - Alienware M17x
      CPU: 3rd Gen. Intel i7 - Ivy Bridge
      GPU: NVIDIA GeForce GTX 660M - 2GB GDDR5
      RAM: 8GB Dual Channel DDR3 @ 1600mhz