XNA in AAA games

Started by
28 comments, last by Ravyne 16 years, 10 months ago
Quote:
just out of curiousity why did choose C instead of going with C++ and taking advantage of classes - something i would think would make more sense for a game like Halo. also if Halo 2 was in C++ how much was it to change code around for the OOP stuff? again just curious.


I'm fairly certain that zedz's original post was supposed to be a quote, although I'm not sure from where, because it conflicts with implications made by Mat Noguchi that the underlying code was at least compiled as C++ (or they faked a vtable implementation for manual dynamic dispatch).

[Edited by - jpetrie on June 5, 2007 2:28:52 PM]
Advertisement
Quote:I'm fairly certain that zedz's original post was supposed to be a quote, although I'm not sure from where, because it conflicts with implications made by Mat Noguchi that the underlying code was at least compiled as C++ (or they faked a vtable implementation for manual dynamic dispatch).

yes it was a quote, gdalgorithms list ( amazingly i remembered the conversation cause it was 5 years ago )

heres a reply from mat noguchi
Quote:
Given the target
platform (Xbox), there was no need to include a binary/text parser to
load and save game data.
....
Working on a code base developed and augmented over 10 years in
C was a lot more rewarding in terms of quality and style than any
project based in C++ I have worked on.

note im absolutely not advocating C in any way, i just wanted to correct the misinformation that halo was written in c++
Quote:Original post by DaBookshah
Quote:Original post by NickGravelyn
All managed code is compiled into the CLR code which can be de-compiled. However I've read there are numerous obfuscators that take care of this problem for when you wish to ship the game.


You should either do things properly or not at all. There do exist decent protection packages/encrypters for .net programs (an obsfucator doesn't count).


Then go for not-at-all. Any code that ships in a format that can ultimately be executed can be decoded/decrypted. Unless the encryption keys are held by the processor, the binary can be opened in a debugger or disassembled. Once you have the ability to disassemble the loader, you can either decode or decrypt the package that the loader will process. Once you have the package in the clear, you can proceed with normal reverse engineering.

Beyond that, obfuscators will be enough of a PITA to stop someone who doesn't have the right tools, and if they do have the right tools, it will be moments (or occasionally hours) of aggravation. If you do have something innovative enough to present a challenge, you will only attract the more competent attackers as they pick your 'protection' system apart for the fun of it.

If you are that worried about protecting your intellectual property, save the money you would spend on technology, and spend it on good lawyers instead. Sue (or at least C&D) anyone who uses your IP, and if they are in the US, file a charge under the DMCA.

Thanks for you input. I think I'll lay off XNA, c#, managed c++ until there is clear info on this stuff. By the way I think the term cross platform shouldn't be confidently used to refer to moving from windows to xbox360 because obviously these are not the only platforms(Maybe Microsoft-Cross Platform).
Thanks.
Quote:
I think I'll lay off XNA, c#, managed c++ until there is clear info on this stuff.

There's plenty of "clear info" on those technologies. What are you confused about? It is certainly possible to use them to make games like the ones you've listed; just because the games you listed were not made with those technologies doesn't mean much.

Quote:
By the way I think the term cross platform shouldn't be confidently used to refer to moving from windows to xbox360

You can't just redefine terms, though, so that's not going to fly. Cross platform refers to something that can be made to work on more than one platform. Not necessarily all platforms, and not necessarily without any effort.
Quote:just out of curiousity why did choose C instead of going with C++ and taking advantage of classes


Don't work at Bungie myself but do work at another Microsoft Game Studio, and I think I can field this one... if your company has been around for 25 years, you've probably got a lot of old C code (maybe millions of lines) that you still use, and a lot of C programmers who aren't that hot at C++. So any change to C++ will be gradual and very much one step at a time.

I know of at least three companies for absolute certainty who are still using a lot of C code for exactly this reason, though in all three cases the move to C++ is well underway.
On the topic of Halo, also remember that it was originally a Mac game (and even before that it was an RTS, but I assume the FPS engine is largely different), so the code-base for the original halo is several years older than even the XBox.

On the Mac platform, C++ was much less of a clear leader, as the platform had laregely embraced Objective-C at the time. Objective-C, as far as I know, was not linkable to C++, and being less popular elsewhere, C was likely the only real choice for the core of the game if they wanted any chance to port it to other platforms.

I assume that the later installments have largely migrated to C++, but there could well be some C remaining. The original Quake, IIRC, was largely (entirely?) C-based, and iD didn't fully embrace C++ until Quake 3 or so.

---

My take on XNA is that a reasonably competant team ought to be able to make titles that approach the quality of titles for the original XBox. A team of particularly talented individuals should be able to push well beyond that, with most of the system's power exposed.

throw table_exception("(? ???)? ? ???");

from memory, quake3 was also C (not c++)
im not to sure about doom3 though
ok this is gonna sound really noob but what exactly is XNA? is it its own language or is it just a framework?? like an SDK or something? ive heard of it but always assumed it was just a joke they used in elementary school for kids to make learnign games i didnt know you could make "real" games with it...
XNA is a game framework which allows you to create games for PC and XBox 360 using managed code, primarily C# -- C# is the official language for now, but the assemblies can be linked against any .net language.

I call it a framework because it's more than an SDK, but less than a game engine. Those less inclinded toward my terminology might call it a high-level SDK or a low-level engine. Its basically an SDK plus platform abstraction between the Xbox and PC platforms, and a few other nice helpers thrown in.

It seems to be plenty powerful, though some may not like the API it provides. If you look at the Racing sample project it provides, you can definately see that XBox-quality games are achievable and likely even surpassable.


There are a few things it could use, IMO, primarily:
- Optimized math primitives or intrinsics making use of SIMD instructions.
- Networking support on the 360.
- Emit functionality on the 360.

throw table_exception("(? ???)? ? ???");

This topic is closed to new replies.

Advertisement