🔒 Locked
. Net
Advertisement
Original Post
This is similar to a reciently posted topic.I just got into programming (c++), I have been using vb for a little bit. I use VC++ 6 and VB 6, what is all this .net stuff. I mean what exactly is the .net framework. I want to look in Microsofts site and found little help in actually saying what the difference is. Can anyone help me out? If there are alot of differences should I forget about sticking with learning what I am now if I will have to adapt to a new standard(at leadt a MS standard)?
Tim Sweeney seems to think .NET/C# is interesting for game programmers, while he has some doubts about the behavior of the garbage collector: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&th=9e460068ff5d4080&rnum=2
Theoretically...?
"Imagine the people who believe such things and who are not ashamed to ignore, totally, all the patient findings of thinking minds through all the centuries since the Bible was written. And it is these ignorant people, the most uneducated, the most unimaginative, the most unthinking among us, who would make themselves the guides and leaders of us all; who would force their feeble and childish beliefs on us; who would invade our schools and libraries and homes."
Isaac Asimov
quote:
theoretically you can program .asp pages in C#
Theoretically...?
"Imagine the people who believe such things and who are not ashamed to ignore, totally, all the patient findings of thinking minds through all the centuries since the Bible was written. And it is these ignorant people, the most uneducated, the most unimaginative, the most unthinking among us, who would make themselves the guides and leaders of us all; who would force their feeble and childish beliefs on us; who would invade our schools and libraries and homes."
Isaac Asimov
Actually that is pretty interesting, because his comment is a little of. First, I dongt think that the GC is that much of an issue within a game - usage of the GC can be GREATLY reduced by good programming. When no garbage is accumulated (reuse your objects), no collector kicks in. Dont forget that there is a continuous garbage collector - you just need to activate it by some config settings in your applications configuration file :-)
Second, we are just putting final touches on a C# application that is WAY more sensitive than any game to GC interruptions - basicaly a VIDEO CONFERENCE SYSTEM. And we dont have issues :-)
And then - wait for Dx 9. MS is making nice progress there, and you all will be surprised VERY positivley.
IMHO anyone that is still writing games in C++ only next year is totally out of his minds. Certain parts - yes. Maybe complete 3d engines (I am just discussing this with peers of the Dx 9 beta team, actually), but .NET has SO much to give for any game devloper. Just think of the integrated C# scripting engine (Visual Studio for Applications). Reduced development time and error count of "higher level languages" is making their use mandatory as long as the performance drop does not go higher than 10% or maybe 20% (everyone has to decide this level himself).
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
Second, we are just putting final touches on a C# application that is WAY more sensitive than any game to GC interruptions - basicaly a VIDEO CONFERENCE SYSTEM. And we dont have issues :-)
And then - wait for Dx 9. MS is making nice progress there, and you all will be surprised VERY positivley.
IMHO anyone that is still writing games in C++ only next year is totally out of his minds. Certain parts - yes. Maybe complete 3d engines (I am just discussing this with peers of the Dx 9 beta team, actually), but .NET has SO much to give for any game devloper. Just think of the integrated C# scripting engine (Visual Studio for Applications). Reduced development time and error count of "higher level languages" is making their use mandatory as long as the performance drop does not go higher than 10% or maybe 20% (everyone has to decide this level himself).
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
quote:
Asking us to explain .NET to you is a waste of both your time and ours. There are entire websites devoted to the technology, and they have detailed descriptions of what it is, what it does for you and how you can use it as a developer.
It is hard to know what .NET is even with all those websites since Microsoft have used the .NET trademark to market several different services and products (a practice that has drawn some criticism). I think we are really lucky to have people like Arild and Thomas here to give a perspective on .NET that is relevant to game developers.
quote:
First, I dongt think that the GC is that much of an issue within a game - usage of the GC can be GREATLY reduced by good programming.
This is very true, there are also new developments in runtime environments that allow short-lived objects to be allocated on the stack rather than the heap. I believe this is called escape analysis.
[edited by - HenryAPe on August 11, 2002 2:20:53 PM]
Well, .NET actually has stack allocated objects (structs) - very usefull IF you need them.
The main rason why I dont see GC as an iddue in games is different - by proper coding you can avoid the geneeration of a lot of garbage at every frame. Reuse objects.
Sure, if you start creating a particle engine where every particle is a class, preferably regenerated every frame - you call for problems.
I would say that a normal frame would NOT generate a lot of garbage per se. Same with world objects - games are pretty static in this sense, compared to some other application types I know.
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
The main rason why I dont see GC as an iddue in games is different - by proper coding you can avoid the geneeration of a lot of garbage at every frame. Reuse objects.
Sure, if you start creating a particle engine where every particle is a class, preferably regenerated every frame - you call for problems.
I would say that a normal frame would NOT generate a lot of garbage per se. Same with world objects - games are pretty static in this sense, compared to some other application types I know.
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
quote:
The main rason why I dont see GC as an iddue in games is different - by proper coding you can avoid the geneeration of a lot of garbage at every frame. Reuse objects.
Yes, but the ideal situation is when the runtime environment can make your clean object-oriented code efficient enough that you do not really have to make many optimizations that affect code clarity, such as reusing objects.
After all, code that reuses objects often features many methods that are declared as void and write their results to objects that are passed to the methods as input parameters, while the more intuitive solution is to have each method create and return a new object with its result.
quote:
IMHO anyone that is still writing games in C++ only next year is totally out of his minds.
Just wondering since I am still running Win98, will .NET apps work with Win98 or WinME?
quote:
Tim Sweeney seems to think .NET/C# is interesting for game programmers, while he has some doubts about the behavior of the garbage collector: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&th=9e460068ff5d4080&rnum=2
Lol looks like Microsoft actually listens to Tim Sweeney
[edited by - Lode on August 11, 2002 7:53:00 PM]
Have you tried?
Microsoft''s feedback page
You know, I never wanted to be a programmer...
Alexandre Moura
Microsoft''s feedback page
You know, I never wanted to be a programmer...
Alexandre Moura
quote:
Original post by thona
Second, we are just putting final touches on a C# application that is WAY more sensitive than any game to GC interruptions - basicaly a VIDEO CONFERENCE SYSTEM. And we dont have issues :-)
What steps did you take to ensure that gc wouldn''t be an issue?
Btw, in my experience, video conferencing systems nominally acheive 15fps, and it would be over-kill to exceed 30fps. I''m pissed if my Quake framerate falls below 60
From what i know about .Net is this......correct me if i'm wrong.
Untill today, programmers always had to adjust their programming to the OS(Windows, Linux, Unix, MacOS) and sort of system(PC, Mac etc.
Now this kinda sucked a bit, because when programmers wanted to write a programm for windows....it wouldn't run on Mac OS or on Linux.
So they had to rewrite the code for different OS's and systems.
Doing alot of work double or tripple.
Now if you wanted to be able to write a programm for all machines and OS's at the same time, you had to do it in Java.(from Sun)
Because...what does java, java is made in such a way that it represents a virtual machine.
A virtual computer, that doesn't really exist, it exists only in code-language.
This virtual machine(also known as Java Runtime Environment)could be installed on every OS/System, because it was written for all systems and OS's seperatly.
Now....in Java you can code in just java and it'll run on ANY computer/OS that has Java Runtime Environment installed.
This virtual machine translates the code to code specific to that system or OS.
And This is exactly what .Net does too.
Is it a ripoff of Java?
Yes and no...
The virtual machine thing is a ripoff.....but .Net has so much more to offer than Java.
Now i don't know the exact details of all those extra thingies.
To make a long story short... .Net was designed to intergrate everything into everything and at the same time into 1 thing.
With .Net Microsoft took all the programming languages, all the systems, all the OS's and the Internet together....squeezed it really hard and made it into 1.
it's created to make life easier, because with so much diversity in Languages/systems/OS's it is just hard to see the forest through the trees.
That's .Net integration at it's best.
Now i'm generally not a "lover" of Microsoft, but this is a damn good product.
And the idiots at M$ marketing still didn't manage to explain people what .Net is.
Pathetic...on tv i've seen CEO's of major companies running and screaming for .Net, but they don't know what it is/does.
Quite funny actually.
Bussiness people suck
[edited by - TheRademaker on August 12, 2002 3:50:25 AM]
Untill today, programmers always had to adjust their programming to the OS(Windows, Linux, Unix, MacOS) and sort of system(PC, Mac etc.
Now this kinda sucked a bit, because when programmers wanted to write a programm for windows....it wouldn't run on Mac OS or on Linux.
So they had to rewrite the code for different OS's and systems.
Doing alot of work double or tripple.
Now if you wanted to be able to write a programm for all machines and OS's at the same time, you had to do it in Java.(from Sun)
Because...what does java, java is made in such a way that it represents a virtual machine.
A virtual computer, that doesn't really exist, it exists only in code-language.
This virtual machine(also known as Java Runtime Environment)could be installed on every OS/System, because it was written for all systems and OS's seperatly.
Now....in Java you can code in just java and it'll run on ANY computer/OS that has Java Runtime Environment installed.
This virtual machine translates the code to code specific to that system or OS.
And This is exactly what .Net does too.
Is it a ripoff of Java?
Yes and no...
The virtual machine thing is a ripoff.....but .Net has so much more to offer than Java.
Now i don't know the exact details of all those extra thingies.
To make a long story short... .Net was designed to intergrate everything into everything and at the same time into 1 thing.
With .Net Microsoft took all the programming languages, all the systems, all the OS's and the Internet together....squeezed it really hard and made it into 1.
it's created to make life easier, because with so much diversity in Languages/systems/OS's it is just hard to see the forest through the trees.
That's .Net integration at it's best.
Now i'm generally not a "lover" of Microsoft, but this is a damn good product.
And the idiots at M$ marketing still didn't manage to explain people what .Net is.
Pathetic...on tv i've seen CEO's of major companies running and screaming for .Net, but they don't know what it is/does.
Quite funny actually.
Bussiness people suck
[edited by - TheRademaker on August 12, 2002 3:50:25 AM]
Well, .NET is actually based on the same principles like Java. A strong runtime, an abstracted bytecode. it is not exactly a ripoff of java - because ou cant steal from a thief,so to say. All the nice things of java were not invented there but taken over from other languages (Smalltalk, UCSD-Pascal etc.).
Where the differences lie is that JAva is platform independent (locking you into one langauge), while .NEt is currently platform dependent (giving you a choice of langauges) :-) C# is better than Java for a lot of reasons - MS basically learned fro mthe mistakes sun has done.
On the other side, MS has taken performance etc. EXTREMELY serious - with the Direct3D native wrappers you will be able to write games ina java like language with a speed comparable to the C++ version. Actually our company is consideruing developing a 3d engine in C# right now.
There are a lot of other differences, actually pretty well documented on various websites). The "starategical clue", though, is that .NET brings modern technology and concepts (such as pioneered in this combination through java) to the windows world.
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
Where the differences lie is that JAva is platform independent (locking you into one langauge), while .NEt is currently platform dependent (giving you a choice of langauges) :-) C# is better than Java for a lot of reasons - MS basically learned fro mthe mistakes sun has done.
On the other side, MS has taken performance etc. EXTREMELY serious - with the Direct3D native wrappers you will be able to write games ina java like language with a speed comparable to the C++ version. Actually our company is consideruing developing a 3d engine in C# right now.
There are a lot of other differences, actually pretty well documented on various websites). The "starategical clue", though, is that .NET brings modern technology and concepts (such as pioneered in this combination through java) to the windows world.
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
Ok, very simple.
PURE C++ (means "the old way", not relying on the .NE framework) is still possible. Besides the usual "dont wanna change" reasons this is basically not necessary anymore for most things. It still needs to be there - dont forget there are people out there writing graphics card drivers etc., but this is another level. For higher level programs (and this in cludes games), I dont see a reason for it.
Managed C++ (C++ running in the framework) is extremely usefull as an interim between the managed world and some API''s that can not be accessed too easily. Like writing extensded stored procedures for SQL Server accessing the .NET Framework (hint: the API requires a C style dll - no COM), or for accessing other malformed API''s :-) It might also be nice for extreme performance things - - after all, you CAN mix managed with unmanaged C++, then using native assembler etc. for some things. Dangerous, a hybrid, but when you need it - it is extremely usefull. I actually miss generic types (templatesd) in C# :-)
C# is actually IMHO the language of choice. It still has limitations (mostly missing generics/templates) that I have founded hope will be fixed with the 2.0 release next year. But it is way more efficient (in writing code) than C++. Actually you also get scripting engines etc. included :-)
I think with Managed Direct3d (DirectX 9.0) people can start switching. I am currently engaged into a hefty discussion whether to code a high performance 3d engine in either:
(a) C# using Managed Direct3d.
(b) Managed C++, using Managed Direct3d or
(c) Managed C++, using unmanaged COM based Direct3d.
THe engine shall be used from .NET languages only :-)
I had doubts against (a) for performance reasons, but I start to be convinced. (now, sadly, the discussion itself is confidential and takes place between DirectX 9.0 beta testers).
I would severely suggest you limit your C++ exposure and to over to C# :-)
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
PURE C++ (means "the old way", not relying on the .NE framework) is still possible. Besides the usual "dont wanna change" reasons this is basically not necessary anymore for most things. It still needs to be there - dont forget there are people out there writing graphics card drivers etc., but this is another level. For higher level programs (and this in cludes games), I dont see a reason for it.
Managed C++ (C++ running in the framework) is extremely usefull as an interim between the managed world and some API''s that can not be accessed too easily. Like writing extensded stored procedures for SQL Server accessing the .NET Framework (hint: the API requires a C style dll - no COM), or for accessing other malformed API''s :-) It might also be nice for extreme performance things - - after all, you CAN mix managed with unmanaged C++, then using native assembler etc. for some things. Dangerous, a hybrid, but when you need it - it is extremely usefull. I actually miss generic types (templatesd) in C# :-)
C# is actually IMHO the language of choice. It still has limitations (mostly missing generics/templates) that I have founded hope will be fixed with the 2.0 release next year. But it is way more efficient (in writing code) than C++. Actually you also get scripting engines etc. included :-)
I think with Managed Direct3d (DirectX 9.0) people can start switching. I am currently engaged into a hefty discussion whether to code a high performance 3d engine in either:
(a) C# using Managed Direct3d.
(b) Managed C++, using Managed Direct3d or
(c) Managed C++, using unmanaged COM based Direct3d.
THe engine shall be used from .NET languages only :-)
I had doubts against (a) for performance reasons, but I start to be convinced. (now, sadly, the discussion itself is confidential and takes place between DirectX 9.0 beta testers).
I would severely suggest you limit your C++ exposure and to over to C# :-)
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
OpenGL - yes, if you write the wrappers yourself or take some.
SDL - no idea. Why should I use it?
Free compiler? Sure. Go to the MS Website and download it.
Faster than Java - IMHO yes :-) But that s my personal experience.
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
SDL - no idea. Why should I use it?
Free compiler? Sure. Go to the MS Website and download it.
Faster than Java - IMHO yes :-) But that s my personal experience.
Regards
Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)
quote:
Original post by Lode
Is OpenGL possible in C#?
How about SDL?
Yes. See [1].
quote:
Does there exist a free compiler for it?
None of the available compilers cost any money. VS.NET isn''t exactly free, but you can get along just fine without it using the compilers from the commandline. See [2], [3] and [4].
quote:
Is it faster than Java?
Slightly faster, I''d say - but I dont really have anything to back that up with. Windows Forms is definitely a lot faster and more responsive than Swing.
[1]csgl.sourceforge.net
[2]
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml
[3]www.go-mono.org
[4] http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/901/msdncompositedoc.xml
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.
Sign in to reply to this topic.
Advertisement