Home General Discussion

Programming Windows

polycounter lvl 14
Offline / Send Message
DrunkShaman polycounter lvl 14
Hello everyone;

I did search the topics for this in General discussion but was unable to find it, so I created this thread with a question.

As the title states. This book had been considered a bible for programmers.

Programming Windows By Charles Petzold. 5th edition.

I have been meaning to buy this book for a while along with Game Engine Architecture which refers to Ogre3d. What I dont know is if this book is outdated and when the next edition is going to be released.

Also there are 2 types of Visual Studio.NET 08. Professional and Standard.

Pro costs over $900.00 where as, Standard costs just under $500.00. I am using Visual C++.NET 08 (express) Which is free and gets the job done for now.

So my questions are the following:

1) Should I buy Programming Windows By Charles Petzold 5th edition even if the book version is going to be outdated soon? (I have a firm grip of C++ programming and still learning)

2) Should I buy standard or Professional Visual Studio.Net for my work. Express is doing the job, but eventually I will have to buy one of either versions (full) in order to continue my work. What do you people use for your game programming?

3) So far I've seen people using CryEngines and UDKs which is not what exactly I want. However; there is a game engine Called Ogre3d which is used by few Good and Populer games. It is said on their website that one can always modify their open source for further use, only thing the developers want in return is Copy paste their MIT License in to your agreement of product to give them a credit also. It is an open source engine and is free to use for your production. The book that follows its studies is called Game Engine Architecture. Is that worth buying? Or should I just start with Ogre3d studies.

Replies

  • Keg
    Offline / Send Message
    Keg polycounter lvl 18
    1) I wouldn't recommend buying that windows programming book. Had to get it for win32 programming and it was not much use. It deals with creating applications in windows and not any real programming other than stuff to deal with windows.

    2) Look into visual studio express editions: http://www.microsoft.com/exPress/ Edit: missed the part about already using express. Continue using express and then get standard when you actually need that version. Pro I would get if you absolutely needed something only available in the professional version.

    3) Engine really depends on the type of game and what you're wanting to do with the engine. UDK now has c++ dll binding support so you can create new code if desired.
  • arrangemonk
    Offline / Send Message
    arrangemonk polycounter lvl 17
    if you want to stick with visual studio, i would recomend using visual c# express and xna
    its a pretty nifty framework for making 2d and 3d games and works for xbox too (also there are alot of tutorials out there for xna)
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    @Keg: The core goal of that book is you give you a firm knowledge of Windows programming in C++. So that you will know more than just creating a hello world screen in D3D when you start a game programming.

    I already use Express edition, but eventually I will have to start making the executable files and setup for the game projects. For that I would require either a professional or standard edition. I just wanna know which one should I save up for.

    I wouldnt prefer using UDK even if it has C++ DLL binding support because of that big price they want upfront before you release your game product. Mimimum is $50k. :)

    @arrangemonk: I wouldnt also prefer using C# with xna game sudio framework for 2d and 3d games. Reason being:

    - If you create a game with xna framework you will have to release the xna framework with your game product.
    - It is mostly for 360 because you can just upload your game there and charge people for it.
    - Unless I am a complete noob and wanting to learn the game programming, that xna with C# would just do the thing because it is easy and fun to learn. Since thats not the case I would just stick to C++ with directx
  • notman
    Offline / Send Message
    notman polycounter lvl 18
    Personally, I like having a book for reference. The 'net has plenty of examples and all the info you need, but sometimes, opening a book, gives me an answer faster than google results. Plus, I hate switching between my IDE and my browser.

    Don't bother buying Visual Studio. The express edition offers everything you'll probably venture into. It's one of those programs that charges a lot of money, because they expect businesses to purchase it. I develop using C#, and my company paid for the license, but when I'm offsite, and I need Visual Studio in a pinch, I download express, and in all honesty, it offers everything that I usually use in the full version. Maybe it's missing the deployment package? I haven't tried that part yet, but you can make EXEs on it (just copy it out of your project's bin/debug folder).

    If you plan to go to school for programming, you'll usually get a copy of Visual Studio for free. You should also be able to find a student license for much less than you mentioned.
  • Keg
    Offline / Send Message
    Keg polycounter lvl 18
    That windows programming book has very little that's actually required for directx programming. I can say this with certainty since I am coding a program in win32 and directx. All that book will teach you is how to create a win32 application. If your application is not a game engine and an actual application, then there's some use to this book, otherwise it's a waste of money since every piece of information in that book I have been able to find elsewhere on the internet. Also, that book was written if I recall for windows 95/98.

    Also, have a proper look at the udk licensing. UDK is free for non-commercial use, for commercial use they list the pricing as:
    f you are creating a game or commercial application using UDK for sale or distribution to an end-user or client, or if you are providing services in connection with a game or application, the per-seat option does not apply. Instead the license terms for this arrangement are US $99 (Ninety Nine US Dollars) up-front, and a 0% royalty on you or your company's first $5,000 (US) in UDK related revenue, and a 25% royalty on UDK related revenue above $5,000 (US). UDK related revenue includes, but is not limited to, monies earned from: sales, services, training, advertisements, sponsorships, endorsements, memberships, subscription fees, rentals and pay-to-play.
    http://udk.com/licensing.html

    Also, have a look here: http://www.microsoft.com/express/gamedevelopment/ might be helpful.

    It should be noted, that a site like gamedev.net would probably be a better place to ask this, There are programmers here, but we're more in the minority here from what I have noticed.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    The reason I posted here, is because it is highly related to Game Development. So I should...not buy the book....ok...really wanted to learn the handlers in C++ but oh well :D I do know the basic of it since every game programming book comes with a ref of Windows programming at the back of it.

    -DarkGDK: Is still not what exactly I asked nor I am looking forward to use it again. They should change DarkGDK + XNA Game club names to "Game Programming for Absolute beginners."

    Thanks for the advice though.

    @Notman: I am not planning to go to School for this, and if you are a student you can just go and download the student license of VS08 Pro from Campus pipeline (for free). That is if you are a student. Reason for me to decide to buy the product is, if I decide to create a game product and release it on my own using the express, what the chances of Microsoft chasing me for doing so without paying them? Or you can make products in express entirely and sell them?

    @Keg: This is another reason I've posted here. In reviews I've seen drawings, models, UDK discussion and so on. No one actually discussed this here before, yet this part is major in Game Development aside from the Modeling.

    For now I'll stick to the Ogre3d studies, Game engine studies along with Game Programming.

    If I completely give up on the Open Source Game Engines, then I'll consider UDK. Even though the showcase seems really intense and their annual fees is affordable.
  • vcool
    You can get Visual Studio (nor sure it it's pro or standard) by getting student MSDN subscription. I paid 20 bucks for it, pretty much.
  • PeterK
    Offline / Send Message
    PeterK greentooth
    Mate, if you want to learn, buy a subscription to this site instead of buying that book:

    http://www.directxtutorial.com/

    The site has many tutorials, and is full of useful code with associated explanations.
  • arrangemonk
    Offline / Send Message
    arrangemonk polycounter lvl 17
    Nitewalkr wrote: »
    The reason I posted here, is because it is highly related to Game Development. So I should...not buy the book....ok...really wanted to learn the handlers in C++ but oh well :D I do know the basic of it since every game programming book comes with a ref of Windows programming at the back of it.

    -DarkGDK: Is still not what exactly I asked nor I am looking forward to use it again. They should change DarkGDK + XNA Game club names to "Game Programming for Absolute beginners."

    Thanks for the advice though.

    @Notman: I am not planning to go to School for this, and if you are a student you can just go and download the student license of VS08 Pro from Campus pipeline (for free). That is if you are a student. Reason for me to decide to buy the product is, if I decide to create a game product and release it on my own using the express, what the chances of Microsoft chasing me for doing so without paying them? Or you can make products in express entirely and sell them?

    @Keg: This is another reason I've posted here. In reviews I've seen drawings, models, UDK discussion and so on. No one actually discussed this here before, yet this part is major in Game Development aside from the Modeling.

    For now I'll stick to the Ogre3d studies, Game engine studies along with Game Programming.

    If I completely give up on the Open Source Game Engines, then I'll consider UDK. Even though the showcase seems really intense and their annual fees is affordable.
    gtk and xna is not for beginners, only because its easy to use
    if you want to put your nerves to that strain coding dx unmanaged then well file, go ahead and do it, managed code is to make it easyer for people like you too, so they can focus on game developpernment and not struggling with how to implement your crap to make it work somehow
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    gtk and xna is not for beginners, only because its easy to use
    if you want to put your nerves to that strain coding dx unmanaged then well file, go ahead and do it, managed code is to make it easyer for people like you too, so they can focus on game developpernment and not struggling with how to implement your crap to make it work somehow

    Define unmanaged code?
  • arrangemonk
    Offline / Send Message
    arrangemonk polycounter lvl 17
  • notman
    Offline / Send Message
    notman polycounter lvl 18
    If you're looking for something to sell, develop on the express version, then when you reach a point to sell it, buy the license at that time. In all honesty, many people start projects, then never complete them. It's better to pay at the end, if you complete it, then pay at that start and maybe not complete it. There's nothing lost by taking that approach at it.

    Like some others have said though, if you're doing a game, and you want to do the MS route, then get the XNA development package.

    And just to clarify, there is usually a student edition of most MS products, that you can buy and not actually be a student. Sometimes, it just takes saying what school you attend, so just tell them you attend one of the local universities. They don't check.
  • DarthNater
    Offline / Send Message
    DarthNater polycounter lvl 10
    https://www.dreamspark.com/default.aspx

    Go there, enter your school (you have to use your school email address) and get a student edition of most of their software for free...
  • Taylor Hood
    Matrix runs on windows.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    native c++

    @Arrangemonk: I dont mean to offend you, but un-managed code comes from the programmer, not from the complier. In other words, if you do not know how to manage your code or read syntax, know its functionality and how to manage it, you are not a programmer.

    The Traditional C++ came out after C language, and C Language was the most managable programming language Dannis Richard of Bell company ever invented. It really turned the entire software industry soo modern that developers would know how to manage their program in easier way. C++ was just a subset of C, and more manageable than C.

    Coming to the MS GDK, XNA. Reason I would want to stay away from these 2 programs is because it is indeed too easy to use. In detailed explaination its more like saying "why the hell would you read all the books and know everything about game programming, where as, you can just use XNA or GDK" what if someone would asks to create a macro for your character in RPG, what will you do?

    This is just a simple class defining macros but you will not know it if you do not study from the back to front of where the Game industry is at the moment.

    This is just a simple example, there are many other complicated tasks in RPG or RTS in general that GDK or XNA does not teach. It is better to know than to NOT know everything about The Game Programming / Game Development.

    So Thank you for your suggustion; but I prefer the old fashion way.

    @notman:- !! I'll definately check that out. Thanks.
  • Harito
    Nitewalkr wrote: »
    @Arrangemonk: I dont mean to offend you, but un-managed code comes from the programmer, not from the complier. In other words, if you do not know how to manage your code or read syntax, know its functionality and how to manage it, you are not a programmer.

    The Traditional C++ came out after C language, and C Language was the most managable language Dannis Richard of Bell company ever invented. It really turned the entire software industry soo modern that developers would know how to manage their program in easier way. C++ was just a subset of C, and more manageable than C.

    Coming to the MS GDK, XNA. Reason I would want to stay away from these 2 programs is because it is indeed too easy to use. In detailed explaination its more like saying "why the hell would you read all the books and know everything about game programming, you can just use XNA or GDK" what if someone would asks to create a macro for your character in RPG, what will you do?

    This is just a simple class defining macros but you will not know it if you do not study from the back to front of where the Game industry is at the moment.

    This is just a simple example, there are many other complicated tasks in RPG or RTS in general that GDK or XNA does not teach. It is better to know than to NOT know everything about The Game Programming / Game Development.

    So Thank you for your suggustion; but I prefer the old fashion way.

    @notman:- !! I'll definately check that out. Thanks.

    No, no. You got your parties mangled up, that is not what unmanaged code is. Arrangemonk is in the right, unmanaged code is basically a term form M$ meaning code that doesn't run on the CLR (on the .NET framework). Managed code on the other hand does rely on the .NET framework, like C#, C++/CLI and so on.

    Go here:
    http://en.wikipedia.org/wiki/Managed_code

    or go to MSDN to learn more.

    Let's put our pride aside and listen to what helps us learn and grow.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    Harito wrote: »
    No, no. You got your parties mangled up, that is not what unmanaged code is. Arrangemonk is in the right, unmanaged code is basically a term form M$ meaning code that doesn't run on the CLR (on the .NET framework). Managed code on the other hand does rely on the .NET framework, like C#, C++/CLI and so on.

    Go here:
    http://en.wikipedia.org/wiki/Managed_code

    or go to MSDN to learn more.

    Let's put our pride aside and listen to what helps us learn and grow.

    Well Traditional C++ runs on the .NET Framework (a.k.a: Common Language Runtime) along with other common programming languages. Not just the managed C++. I use Visual C++. NET compiler myself.

    He is talking about XNA and GDK .NET Framework which makes the game programming in C++ and C# soo easy that even a child can do it. He is right though, however; there are many other instences of C++ windows programming that GDK and XNA does not teach, and claiming that without using them, the game programming is unmanagable while still working in .NET Framework is a bit too harsh for core programming lovers.

    it is certainly not for people who have been through them in just one day and willing to move on to actual game programming.

    Correct me if I am wrong. Not many game studios use GDK programming and XNA is used in MS game programming only. If you create a game in XNA you either must have 360 with live account, and/or release the xna game studio with your product.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    DarthNater wrote: »
    https://www.dreamspark.com/default.aspx

    Go there, enter your school (you have to use your school email address) and get a student edition of most of their software for free...

    Notman and darthNater: Love you guys. Thanks alot!!!!
  • Harito
    Nitewalkr wrote: »
    Well Traditional C++ runs on the .NET Framework (a.k.a: Common Language Runtime) along with other common programming languages. Not just the managed C++. I use Visual C++. NET compiler myself.

    He is talking about XNA and GDK .NET Framework which makes the game programming in C++ and C# soo easy that even a child can do it. He is right though, however; there are many other instences of C++ windows programming that GDK and XNA does not teach, and claiming that without using them, the game programming is unmanagable while still working in .NET Framework is a bit too harsh for core programming lovers.

    it is certainly not for people who have been through them in just one day and willing to move on to actual game programming.

    Correct me if I am wrong. Not many game studios use GDK programming and XNA is used in MS game programming only. If you create a game in XNA you either must have 360 with live account, and/or release the xna game studio with your product.

    Yes, C++ can run on .NET, and when it does ( now usually with C++/CLI syntax), that is when it is called "Managed", get it now? It has nothing to do with what you said earlier about the programmer being the one who manages, and nothing to do with " and claiming that without using them, the game programming is unmanagable" - you are not getting it, Managed and Unmanaged (code) are terms, not an adjectives.


    I wasn't gonna get into the whole XNA thing etc, but alas: I agree completely with arrangemonk on this, "xna is not for beginners, only because its easy to use" . He's completely right, XNA is an API designed to facilitate development, to do most of the dirty work for you so you don't have to. You claim its too easy , bla bla, and yet you say you will stick with Ogre3D, which is an engine, meaning it already has pretty much done all of the work for you short of game rules, actors and such. XNA it not engine, you would have to design your own engine from scratch short of the useful libraries they have provided for you, so you are defeating your own statement.

    Just FYI, when it comes to distributing XNA applications, you only distribute the redistributable package, not the xna game studio.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    So...you actually created a different nick to prove your point?

    I completely understand point, you do not have to become angry and convert this thread in to a major debate. Though I was taking both "managed and unmanaged code" as Adjectives and finally after reading on Wiki I understand what the managed and unmanaged code in programming is really about. We always use .NET framework in college or at home so I didnt know this thing even existed anymore. But I understand this. Please be at peace.

    Everyone have different point of view in terms of game programming. Doesnt mean that everyone will have to agree with you when you say "xna and gdk is better approach to game programming becuase they are easy to use". I am pretty sure that many people will not agree to this. And many of them will.

    Game Engine programming is completely different topic, why I am willing to use the Ogre3d, Because I want to understand how game engine works and it is on the basic level. Even than you will have to modify that engine for your own work. I wasnt even asking your opinion on this but thank you.

    If you want to debate this further this isnt the right place to do so. We can get on msn and discuss this out so you will have a better understanding of what I intend to do.
  • Harito
    I'm not the one turning it into a debate ;). My first post was to clarify, my second was address your misinformation.
    So...you actually created a different nick to prove your point?
    What? As you can see I've been a member since 2006... and a lurker for longer :P. I just observe and never post. Thought I'd finally join in.

    Anyway, don't get me the wrong way, I'm not telling you which to chose, that's on you. Just have fun and good luck with your project.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    What? As you can see I've been a member since 2006... and a lurker for longer :P. I just observe and never post. Thought I'd finally join in.

    ahh!! I am glad my thread triggered you to start posting on the Polycount.

    I have'nt fully disagree with you and arrangemonk. I mean if anyone wish to learn the classes windows programming thoroughly or read the code and learn the basic of windows API from it along with other basic game codes, xna and gdk ref would be helpful.

    Anyways Thanks for the suggustions.
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    notman wrote: »
    If you're looking for something to sell, develop on the express version, then when you reach a point to sell it, buy the license at that time. In all honesty, many people start projects, then never complete them. It's better to pay at the end, if you complete it, then pay at that start and maybe not complete it. There's nothing lost by taking that approach at it.

    Like some others have said though, if you're doing a game, and you want to do the MS route, then get the XNA development package.

    And just to clarify, there is usually a student edition of most MS products, that you can buy and not actually be a student. Sometimes, it just takes saying what school you attend, so just tell them you attend one of the local universities. They don't check.

    Actually, the college that I have attended and still looking forward to attend does not appear there. on the sparkdreams that is.

    You are probebly right, I should just stick to Visual C++ express. Or go to my own campus pipeline to get the student version of Visual Studio.NET 08. XNA game development uses C# and that is one of the major reasons "along with the easy part" I would not use. I am strickly trying to stay and learn futher stuff in C++. I have studied C# throughout my entire software engineering and I have learned XNA in just one day (through the XNA Game Fest that happens once annually) And I have looked in to XNA game studio and so on. It is kind of easy and most of the classes have been made for you. I am self-studying Game Programming that starts from C++. Like I said, it is better to study from back to front and know everything than to NOT know.
  • Fish
    Offline / Send Message
    Fish polycounter lvl 18
    petzold's book is entirely useless for game programming. The only win32 based programming you will do in a native c/c++ environment is setting up a window and handling input events and a few others, which is not a lot, and petzold's book does not cover the many weird obscurities when working from scratch in win32 that you will need to deal with for a game.
    it's still a pretty classic text however, pretty much anyone who's done some win32 coding will have it, I own it myself. I really doubt it will get updated again, and no one really uses win32 for old-fashioned application development anymore.

    you seem to be afixed on using c++. I would not recommend it, even with ogre you still have to put a lot of work into it to get a game engine. The language itself is also less friendly then c#, and if you compare it to using xna, the important concepts of game engine design are still the same. The only difference is you're gonna spend a lot more time writing lower level code in a more dangerous environment.

    if your end goal is to make a functional game, use a complete game engine like unreal, torque, unity or many others (there are plenty of open source ones too). If your goal is to learn game engine design and more "techy" stuff then really start with xna, make something simple and functional, and if you really want to, move onto c++ with dx or ogl. win32 and dx or ogl will leave a really bad taste in your mouth if you are a beginner.

    if you want a book on game engine design, I own "3D Game Engine Architecture: Engineering Real-Time Applications with Wild Magic" and it actually has lots of code examples and outlines the design and implementations of major components in a game engine. It's c++ based

    [ame]http://www.amazon.ca/Game-Engine-Architecture-Engineering-Applications/dp/012229064X/ref=sr_1_3?ie=UTF8&s=books&qid=1262843303&sr=8-3[/ame]
  • arrangemonk
    Offline / Send Message
    arrangemonk polycounter lvl 17
    im outta here, its like teaching a monkey using fork and knive

    also i dont understand th topic of this discussion,
    first op wanted help if he should buy a book, and he obviously shouldnd because he claims to be a badass programmer

    and the rest are suggestions to make life easyer witch are rejected hence being badass, so i think this tread makes no sence anymore
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    @Fish: Alas; finally a reasonable reply from someone who understood my original post. The reason I asked to learning C++ win32 basics with event handlers. In Software engineering using C# and Java (eclipse) we started from coding raw programming in dos output (console template in visualstudio.NET) than moved on to Windows application which tought us how to create a basic window and impliment event handlers, including creating apps E.G: from drawing to form app. They never tought us anything about C++ where as both programming language (infact all) coming from the C++ (C actually but there arent many books out there who teaches you C win32 programming) So I started learning C++ on my own. I started with C++ A beginner's Guide Second Edition by Harbert Schildt, which brought me from a beginner to intermediate and the learning was fast since I knew pretty much most of the stuff from C#.

    After that I have read the "Introduction to 3d Game Programming with Directx 9 by Frank D Luna." And that book's Appendix suggusted Petzold's book if I wish to learn event driven apps and Win32, after giving the entire hello world code example using the basic window. (Now you should know where that "I want that book" is coming from) :D.

    Now as soon as I posted here I got many replies stating that use C# with XNA or GDK because C++ is dangerous, where as most of the books I've read related to game programming suggust that one should be aware of C++ win32 programming. (I've been reading those books for 1 year now)

    If you suggust that I should move back to C# language, and learn every instence of game programming using C# and XNA .NET framework or C# with directx in general. That is one of the options I have thought of thoroughly, and will have to re-think it over again.

    my end goal is to create a modified Game Engine according to my game style, and create a game.

    your suggustion is really worth thinking over. That I should move back to C# review XNA programming, learn more from it and than move back to C++ and continue.

    EDIT:
    im outta here, its like teaching a monkey using fork and knive

    Dont get offended Arrangemonk, I understood you in the first post what you intended to suggust. I just found it easy.

    Actually its like teaching a monkey how to liquify his food and inject it in his stomach, where as he wants to learn how to use fork and knife.

    My apologies.
  • notman
    Offline / Send Message
    notman polycounter lvl 18
    Nitewalkr wrote: »
    Actually, the college that I have attended and still looking forward to attend does not appear there. on the sparkdreams that is.

    Actually, mine wasn't on there either. I think they required me to send a photocopy of my school ID to them, which I did, and they gave me access. My school is listed now too (but only my campus).
  • DrunkShaman
    Offline / Send Message
    DrunkShaman polycounter lvl 14
    hmm...My school have a website for microsoft programs. Now its either that or I'll just keep on working on Visual C++ express.
  • arrangemonk
    Offline / Send Message
    arrangemonk polycounter lvl 17
    isnt your school in the msdnaa, you should get visual studio standard for free
Sign In or Register to comment.