View Full Version : How widespread is .NET by now?
Hello,
at the moment, I'm thinking about trying some C# to produce some tools. I know Java pretty well and I think jumping into C# shouldn't be a problem.
But I just won't use C# for games - since I've got the feeling that the .NET framework still isn't too widespread on the customers' machines.
Am I wrong? Are there any statistics on how many people have installed the .NET framework, even roughly? There are statistics on browsers, OSes, resolutions, but how about .NET?
When I'd develop a game in C#, I'd always fear that the customer might download the demo, try to install it, giving him some message about "nah nah you don't have the .NET framework installed", which he might not understand, leading him to not try the game and do something else instead.
In addition to current usage statistics, are there any future trend forecasts? Of course, Vista will do the job now, but only for buyers of a new computer, meaning that still not everyone will have .NET installed. Today, six years after the release of XP, there are still some happy Win98 or Win2000 users left, so I don't think it will be much different in a few years with Vista. Especially in the not-so-high-end-games-audience.
So, are there any information sources about .NET usage?
gosub
05-22-2007, 12:29 PM
Sadly, Microsoft didn't put .NET in XP SP2, which means lots of people don't have it. However, you can package it with your .EXE. I use Xenocode to do that. I also have Innosetup install the correct version of the .EXE depending on whether or not .NET is installed.
I can't say enough good things about C#. Here's the game I wrote with C# and MDX: http://zenix3d.com. Using MDX is a bit tricky, so I wrote a control, which you can use to get started: http://gosub.com/OpenSource/DirectXControl/DirectXControl.htm
If I were starting a project today, I'd seriously consider XNA instead of C# and MDX.
-Jeremy
P.S. I'll be happy to give you my Innosetup scripts if you e-mail me at the e-mail address on my web site.
MarkSide
05-22-2007, 12:39 PM
Depending on your target filesize, you may have a couple additional options.
One is that you could look into bundling the .NET Framework (or more likely a redistributable installer) with your game. I would imagine they have something akin to their DirectX redistributable web-setup program, but for .NET.
Another option is using a tool like Xenocode Postbuild 2007. This tool allows you to bind into your assembly the portions of the .NET Framework your app/game uses. Their website (http://www.xenocode.com/) says that this will typically bloat your filesize by somewhere 12MB for .NET 2.0 (depending on usage, of course), but your users wouldn't need to download/install anything else to get your game running. $500 for a single-developer license, but the tool also has some code-obfuscation functionality built-in, to make it at least a bit more difficult to decompile your code.
I haven't personally used either of these methods myself, so can't vouch for them . . . I've simply had them in my Notes for eventual research, thought I'd pass 'em along in case you find them helpful. And because I'm really Really Lazy, and if I can sucker - I mean, um, convince - you to look into them for me I won't have to later on! ;)
- Mark
Well I think the "include only what is needed" is even more the wrong way, since the .NET framework only should be installed once (completely) and then every other game installer should be as small as possible.
But when I use some tool that includes half of the .NET framework into my game, the download bloats. Your download is 30 MByte, which I think is very much for a small game... especially for lower-bandwidth-users...
Of course it's a cool idea for a single game, since everything is in one package and the user won't notice anything with .NET, but in the long run, it's not what .NET is intended for, and if Microsoft had included .NET earlier (as you said, in SP2), there would be no need for such bloated installers.
So it would be still interesting how many people have got it... (and the price of Xenocode (and similar products) is a little high for my taste :D )
Pyabo
05-22-2007, 01:47 PM
Here are some old, but fairly interesting stats:
http://blogs.msdn.com/scottwil/archive/2005/03/09/391199.aspx
gosub
05-22-2007, 03:24 PM
Yes, it bloats my setup .EXE by about 17Mb. But my game was already too big for many modem users, so I'm not sure it matters all that much. The Xenocode people say they are working on something that will drastically reduce the size, so that might help in the future.
-Jeremy
Backov
05-22-2007, 04:02 PM
I love C# and .Net.. The only problem in development I have encountered so far is in interfacing stuff like physics libraries to it. If you're not doing any of that, no problem. :)
gosub
05-24-2007, 06:10 PM
You should have your setup program pop up a .NET download window if .NET is not installed. Here's InnoSetup code I used before switching to Xenocode. Change the name and download link if you use it.
Put it in the section:
[Code]
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
NetFrameWorkInstalled : Boolean;
Result1 : Boolean;
begin
NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramewor k\policy\v2.0');
if NetFrameWorkInstalled =true then
begin
Result := true;
end;
if NetFrameWorkInstalled = false then
begin
Result1 := MsgBox('Zenix3D requires the .NET 2.0 Framework. Do you want to download the framwork now?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end
else
begin
Result:=false;
ShellExec('open', 'http://zenix3D.com/DownloadDotNet20.htm',
'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;
Hmmm okay, that's a good idea. Actually it's the only thing you can really do (without having to bloat your exe) :)
@ Pyabo:
I'm not too sure if those statistics are really true. I'm not a Microsoft-basher, but since it's on the Microsoft homepage, I don't really believe those numbers. Also, the last commentor has some very interesting points that also came to my mind. I really don't think it's as widespread as it is shown there.
They should really include it into the Windows-Update in my opinion. At least part-wise, so that after a week, everyone has got the framework...
princec
05-25-2007, 05:30 AM
Ignore Mac market at your financial peril... and no, Mono won't cut it.
Cas :)
raigan
05-25-2007, 07:58 AM
What's wrong with Mono? I've been eyeing it for a while now, and it's past v1.0..
princec
05-25-2007, 08:24 AM
Try it and see for yourself.
Cas :)
I've checked the web logs for our two sites in April, and according to Web Log Storming here are some statistics on our visitors:
- 40% had some kind of .NET version installed
- 6% had .NET 3.0 installed
- 21% had .NET 2.0 installed
- 31% had .NET 1.1 installed
- 5% had .NET 1.0 installed
Many users also have multiple .NET versions installed, and these statistics also depend on their firewall or browser not blocking sending of the Raw User Agents data., here's an example data:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
However, we don't have that many visitors etc. so have to take it with a grain of salt, but it's something :)
Hmm, the fact that your webhost logger is showing information about installed .NET frameworks is interesting enough, actually :D
Okay just kidding, but what's REALLY interesting is the fact that those numbers are very different from the Microsoft page. Of course, as you said, you can't be sure if it's representative, but I think Microsoft's numbers aren't either ;)
Yes, I also was surprised by that :D
But there's nothing special about our provider, Dewahost, it creates normal .gz log files. Maybe the Raw User Agent data might not be shown in Awstats etc. but are saved in the raw log files. I am not sure how much information web providers usually do log :rolleyes:
Anyways, makes one think why e.g. The Counter.com doesn't list such data as well as all the other information they have at the moment.
NathanR
05-25-2007, 05:18 PM
We use .NET for Skill City and I have been rather surprised by how many people already have it.
The main reason is that its been in the Windows Update channel for a while now, and if you look you'll see that .Net 3.0 is in there too.
We just tell everybody to make sure their machiens are up to date by running Windows Update and downloading optional downloads. If they dont, we detect that .net framework is missing and download it at install time.
A quick survey of some users online and they say that they didnt mind running Windows Update before installing, or being reminded that they should run it anyway.
With a big behemoth like Microsoft basically foisting .NET on to everybody with Vista and all of its future products and updaters requiring it or stealth installing it, its not a bad choice for your game. It may not be saturating the market yet, but it will soon enough.
Hello,
at the moment, I'm thinking about trying some C# to produce some tools. I know Java pretty well and I think jumping into C# shouldn't be a problem.
I would say, stick to Java, you can distribute JRE now with your tools if you want (it's GPL now), besides your tools will work on Linux and Mac ;)
Well actually I meant tools for myself, like a quick level-editor or resource-managers and stuff. And in that case, I wanted to use C# to learn it a little bit, since I think it might become popular in a few years. And then it would be also suitable for some games ;)
Pyabo
05-27-2007, 11:43 AM
I wanted to use C# to learn it a little bit, since I think it might become popular in a few years.
It's plenty popular now... And once you start, you won't want to go back. Seriously, it spoils you good.
Well actually I meant tools for myself, like a quick level-editor or resource-managers and stuff. And in that case, I wanted to use C# to learn it a little bit, since I think it might become popular in a few years. And then it would be also suitable for some games ;)
If your idea to learn C#, then go for it! :) Use it for your tools. I such case, I'm a bit confused, why are you asking about .NET popularity? :cool:
If you want to make money coding for big companies, I can tell you that Java developers earn more then .NET (in most areas). I'm a professional .NET developer, but looking to switch my gears into Java development, because the salaries are $20,000+ more, plus I like Linux as a web platform better then buggy Windows Server :D
It's plenty popular now... And once you start, you won't want to go back. Seriously, it spoils you good.
Here is completely opposite opinion from a 7+ year experienced and Microsoft Certified .NET developer (me): I want to code in Java more and more every day ;) I dont think C# spoils you, you will loose more hair with .NET framework if you start code something more bigger then one form application (memory issues mostly) :confused:
Anyway, I dont want to start a flame war here and explode this thread, I just shared my point of view and experience ;)
Use it for your tools. I such case, I'm a bit confused, why are you asking about .NET popularity?
Well what I meant is that I want to use it for my personal game creation tools just to get into the language, but by the way I also wanted to know how popular it is, so that I know if it's already reasonable to use it for more than just this, and when would it be no problem to use it for games.
And the thing about Java: I know Java, but I don't know C# yet, so I'm just curious and I think it's time to learn a bit C# so that I can judge for myself. At the moment I can only judge about Java ;) so I want to make some experiences with C# and .NET to get into it and gain some knowledge about the whole thing. Then after some years, maybe I will also think that Java is better ;) who knows. At my job it won't change to .NET, it will stay Java, so I'd just do it for personal reasons...
Bad Sector
05-28-2007, 12:00 AM
I worked a bit with C# (which btw was using MonoDevelop, not Visual C#) and i liked the language. It has some stuff that i would love if Java had - for example properties instead of setBlah and getBlah (this is something that Object Pascal and FreePascal had for years, but well...). Also the in-language delegate functionality seems good (i say "seems" because i haven't actually used it, only read about it in the language reference that comes with Mono).
When it comes to Mono, it doesn't really support Windows.Forms (dotGNU (http://www.gnu.org/software/dotgnu/) has better support for that i think - and unlike Mono, dotGNU's purpose is to make a .NET compatible runtime and development tools - but personally i have no experience with dotGNU). However there is GTK# (http://www.mono-project.com/GtkSharp) which is a C# wrapper to GTK+ 2.x which works under Windows, Linux and Mac OS X (among others). There is also a nice Win32 installer for installing GTK# (can be used by both Mono and .NET). Using GTK# you can design the interface in Glade and use it from C# using the Glade# libraries. MonoDevelop also includes Stetic (http://www.mono-project.com/Stetic), a GUI designer which gives better integration with a project when used from within MonoDevelop (it can also be used as a standalone tool like Glade).
Having said all that, personally i recommend to stick with Java. It's much more widespread than CLR (be it .NET, Mono or dotGNU - although the last two, and especially dotGNU, have been ported to every major and most minor systems), resources are easier to be found, and when it comes to the major three systems (Windows, Linux, Mac OS X) there is an official robust implementation (Mono albeit good, it has it's nuances - dotGNU might be better there, given it has been used in industrial manufacturing). Also the language isn't yet as bloated as C# :-P.
But of course, the best way to judge and decide is to learn the language and choose what you'll use when you know both. Personally, though, i would recommend to not develop something that you'll use in the production of your games because you may end having to support a program in a language that you decided against for :-).
@ Bad Sector
Recently Mono team improved the Windows.Forms support, I tested it and it's good enough if you dont have very complex UI.
@ ZeHa
You probably have noticed already that C# is very similar to Java, you wont have any problems to start coding in it. Good luck in C# coding :)
Hiro_Antagonist
05-29-2007, 12:49 PM
You should do a search -- this exact topic has been answered several times by me, not to mention all the other people.
The short of it is that you will not be able to rely on customers having .NET for the forseeable future, and you certainly can't expect it now.
Of course, you can do your own tools in .NET, and frankly that's a great idea. But if you plan on distributing a .NET app to your customers, you really need to just suck up the size requirements and build it into your installer. Your other options will bite you in the ass, and the size issue is becoming less and less of an issue these days. Trust me, it's the least of all evils.
The download-on-demand option will just piss people off, and you will lose a lot of customers. The built-in option is bigger, yeah, but otherwise the experience is very smooth, and .NET has a silent installer so that it doesn't create any visible speedbumps in the installation process. If you do use the built-in option, look up the NASA World Wind installation scripts which use NSIS. They handle the problem very gracefully, and that's the script we used (with some minor modifications) for Land of Legends.
Pyabo
05-29-2007, 05:53 PM
Hiro! Welcome back. :)
Hiro_Antagonist
05-30-2007, 12:32 PM
Hiro! Welcome back. :)
Heh, thanks. I'm not back, exactly, but I will probably try to real more often than I had. If I'm back as anything, it will likely be as a lurker. =)
By the way, there are some rumors about Java's Consumer JRE, which will allow to redistribute Java VM with the game and it will take only 1-2Mb...
Very useful for casual market. Compare to .NET of 11-30Mb :cool:
Hmmm... After reading the last progress of Mono team, the C# looks like a good alternative for scripting a game to me... The Mono runtime can be only 3.7Mb.
raigan
06-05-2007, 06:52 AM
that's what I thought, but for some reason people warn against mono..
that's what I thought, but for some reason people warn against mono..
Due to the patent concerns?
Mono is a community project and they avoid adding questionable code, the only patent questionable code would be in ASP.NET and Windows.Forms parts. I doubt that there are will be any conflicts with your game scripts in the next 2 years. And an indie game lifetime is about that time, so if you see that something smells bad in 2 years, you always can switch to Lua, Java, Python, etc.
sindisil
06-06-2007, 01:38 PM
Hmmm... After reading the last progress of Mono team, the C# looks like a good alternative for scripting a game to me... The Mono runtime can be only 3.7Mb.
Do you have any links to more information about packaging private mono installations? If it's true that enough of Mono to support a game can be packaged up in < 4MB, I'd really like to know it. I know about the static bundling, but that is untenable for a comercial app, since the runtime is LGPL.
Do you have any links to more information about packaging private mono installations? If it's true that enough of Mono to support a game can be packaged up in < 4MB, I'd really like to know it. I know about the static bundling, but that is untenable for a comercial app, since the runtime is LGPL.
Check this out: http://www.mono-project.com/Embedding_Mono
You dont need to link it statically, just load it as DLL/O
vBulletin v3.6.0, Copyright ©2000-2008, Jelsoft Enterprises Ltd.