.NET Version of Quake II 59
MSwanson writes "It seems that Vertigo Software has ported the Quake II source code to Microsoft's .NET platform. Not only did they add a heads-up display in the .NET managed version, but they also say that the managed version initially ran faster than the native version. After changing some optimization settings, the native version now runs 15% faster than managed .NET code. Still pretty impressive. Download the ported version along with source code at the Vertigo site."
Using the term "ported" loosely (Score:5, Interesting)
Now, when they have a version written purely in managed code than can run on any
Re:Using the term "ported" loosely (Score:3, Informative)
Re:Using the term "ported" loosely (Score:4, Informative)
Nope, you're mistaken... Quake II is written in C.. which is why it had to be ported to C++ for this project - they use c++ reserved words as variables and what not. And I may be mistaken, but I thought QuakeC was introduced in Quake II.
Re:Using the term "ported" loosely (Score:2)
Re:Using the term "ported" loosely (Score:2, Informative)
Re:Using the term "ported" loosely (Score:3, Informative)
I'm sure at some point the overhead of scripting just got to be too much for iD to do scripting internally, so they just put all that functionality into the game itself through a DLL. Of course that meant all those people who learned QuakeC h
Re:Using the term "ported" loosely (Score:2)
Of course, now that I have actually downloaded the source and run `grep -r ++` in the source directory, I see my error... :-)
Re:Using the term "ported" loosely (Score:2, Troll)
looks like they ported the code to C++
Getting C code to compile with a C++ compiler is hardly a difficult task. QuakeII compiles with Visual C++ out of the box for starters.
Should make it pretty easy to add new features.
I'm sorry, but I don't see how getting this to compile under the bastardized piece of crud that is "managed C++" would make it easier to add new features.
All this does is show you can port a C app to C++ on .NET. Yay. What are their supposed advantages to having Quake II run unde
Re:Using the term "ported" loosely (Score:5, Informative)
that's right. and although we don't have quake3 engine source code, but it's safe to say that all id games so far are using C (or QuakeC for mod making of Q1). but not any more, here is a quote from JC about D3:
I did most of the early development work with a gutted version of Quake 3, which let me write a brand new renderer without having to rewrite file access code, console code, and all the other subsystems that make up a game. After the renderer was functional and the other programmers came off of TA and Wolf, the rest of the codebase got rewritten. Especially after our move to C++, there is very little code remaining from the Q3 codebase at this point
http://www.gamespy.com/e32002/pc/carmack/
Re:Using the term "ported" loosely (Score:5, Informative)
Not quite -- if you download it and run the code through a .net disassembler you'll see that it can be converted to msil or higher up to C#. I haven't done a detailed analysis of it, but on the surface it looks like a complete conversion. Of course that doesn't count calls to COM objects and any 3rd party DLL's that are called via platform invoke's. But it looks like the "heavy lifting" is being done inside the confines of the .NET Framework.
Re:Using the term "ported" loosely (Score:4, Informative)
it looks like a complete conversion
They converted the code to compile in Visual C++ .NET. If you run with managed extensions on, they hook in a class that does the radar using .NET APIs (Windows forms and such). By the way - look at their code for the radar - it is hideous. Everything in the .h file in true "lets make the users of our class import all sorts of useless dependencies" style. Ugh.
If you diff through the code, you'll notice about 800 lines in their radar implementation and only minor differences elsewhere (don't name variables after C++ reserved words, etc.).
It is a proof of concept, but a none too impressive one. It is made even less impressive by the MicroSoft cheerleading found all over their description of the port.
What is the port? (Score:5, Interesting)
Can someone fill me in here? What is the big deal? Id has always used the MS compilers for that platform. So they just updated it to work with the latest release of the compiler. Wow, fancy shit.
-molo
Re:What is the port? (Score:5, Informative)
The common language runtime manages memory, thread execution, code execution, code safety verification, compilation, and other system services. These features are intrinsic to the managed code that runs on the common language runtime.
The runtime also enforces code robustness by implementing a strict type-and-code-verification infrastructure called the common type system (CTS). The CTS ensures that all managed code is self-describing. The various Microsoft and third-party language compilers generate managed code that conforms to the CTS. This means that managed code can consume other managed types and instances, while strictly enforcing type fidelity and type safety.
In addition, the managed environment of the runtime eliminates many common software issues. For example, the runtime automatically handles object layout and manages references to objects, releasing them when they are no longer being used. This automatic memory management resolves the two most common application errors, memory leaks and invalid memory references.
That last one means your program no longer crashes or takes over all memory resources because of bad resource management.
Re:What is the port? (Score:2)
He was right (Score:4, Informative)
VC++.Net is just the same as VC++ 6 with a different IDE as long as you're not using managed code. If you are using managed code you might as well program in VB or C#, it all compiles to the same shit.
Re:What is the port? (Score:5, Insightful)
A C framebuffer (that means 2D, and yes quake II is an app that doesn't use any 3D api, it's all in the engine itself the magic happens) app can be ported to everything with minimal effort ( download a few demos and port them to QT, Allegro, SDL, and DirectX), it won't take you very long.
Also, as the fill rate is the limiting factor, there will not be a very big performance difference in any of the versions.
Re:What is the port? (Score:2)
Quake2.NET is a C++ project. Not C. That invalidates your point and thus revalidates the original point, that this is a project that can be pointed to as proof that
A C framebuffer (that means 2D, and yes quake II is an app that doesn't use any 3D api, it's all in the engine itself the magic happens) app can be ported to everything with minimal effort
Re:What is the port? (Score:2)
Re:What is the port? (Score:2)
Which of these is missing from C itself ? Okay maybe code safety is not "intrinsic" to the code itself (ie, you'll need a debugging tool like valgrind).
... what exactly is the differ
For the other points
Re:What is the port? (Score:1)
Re:What is the port? (Score:2)
Re:What is so amazing about .Net? (Score:1)
SNORK
Re:What is so amazing about .Net? (Score:2)
Re:What is so amazing about .Net? (Score:2)
Re:What is so amazing about .Net? (Score:2)
now that's optimization.... (Score:3, Funny)
Anyone else misread that at first to mean they changed optimization settings on the managed code, and now it runs slower than the native version....
damn /. (Score:2)
ftp://ftp.idsoftware.com/idstuff/quake2/q2-314-de
arg.
A New Cheat (Score:1)
If you play halflife and you have played against wall hackers then this would be the equivalent done in a different manner but with the same end result.
re: A New Cheat (Score:1)
Re: A New Cheat (Score:1)
Re: A New Cheat (Score:1)
I think Valve was waiting to release his Steam [steampowered.com] platform before stopping cheaters. We will
Re: A New Cheat (Score:2)
punkbuster. Without it, I wouldn't bother playing
online at all. It's so pleasing when some moron
shows up with an ogc bot and gets kicked off.
It just makes me giddy. Granted, not all of us are
as good as Haku and can DESTROY A BOT [dangpow.com]
with nothing more than talent and skill. You'll need
the a recent quake3 to view that demo. It's some
of the slickest playing I've ever seen.
Re: A New Cheat (Score:1)
Hey man! I'm not protesting! ^__^;
I was only saying that I don't like some spyware-like software being installed on my computer only because there are the usual morons ruining the game for all the others...
Maybe I am just lucky to have many friends that can bring the PCs to my house and that the Italian community
Re: A New Cheat (Score:2)
connect to midwest, or any of the other punkbuster
enabled UrT servers with no problems means it's a
problem with me, ID and evenbalance and not your
setup? Grow up. We didn't want to play with someone
like you anyway. Looks like we lucked out.
Re:A New Cheat (Score:2)
least, they should make sure that this 15 percent
slower version of quake2 that everyone will be
RUSHING to install, is only compatible with itself
and not prior clients.
Re:A New Cheat (Score:2)
Yes, but consider this: How can you keep the 2% of people that can recompile the beast to play with the prior client/servers, since it is all GPLd code? And to share the compiled client with the others? :/
Interesting for three reasons: (Score:2, Interesting)
If really Managed C++ isn't too much slower than C given the standard optimizations Managed C++ may become a viable platform for development in the end. We will see what will happen as Microsoft's JIT compiler matures.
Re:Interesting for three reasons: (Score:2)
But the compiled MSIL should run on Mono -- at least if Mono has developed all the class libraries Quake II depends on. So while Mono may not be able to compile it, it should, some day, be able to run it.
Important Speed Point (Score:1)
My Question... (Score:2, Interesting)
.NET 1.1 Blues (Score:2)
I don't give a crap about that C/C++ conversion/rip, I just want it to run on the _compatable_ version of
LOL (Score:2)
I think not.
Dolemite
_________________