Xbox360 to support .NET
by Jason Swearingen · in General Discussion · 03/15/2006 (9:28 pm) · 35 replies
Something I've heard whispers of for a while now:
Xbox360.NET?
Of course I am totally unbiased in my opinion, but that kicks ass! ;)
(and its about freakin time)
The reason I'm excited about this more stems from XNA, which is Microsoft's next gen "Visual Studio for Game Developers"... An integrated dev studio for game development on all of Microsoft's platforms... using .NET... freakin sweet. Like the blog I linked mentions, I'll let you all think of the ramifications.
Xbox360.NET?
Of course I am totally unbiased in my opinion, but that kicks ass! ;)
(and its about freakin time)
The reason I'm excited about this more stems from XNA, which is Microsoft's next gen "Visual Studio for Game Developers"... An integrated dev studio for game development on all of Microsoft's platforms... using .NET... freakin sweet. Like the blog I linked mentions, I'll let you all think of the ramifications.
#2
I have seen some crazy, crazy stuff comming out of Microsoft Research that really helped me realize that .NET is the way of the future, Such as The Phoenix Compiler (To summarize: it will compile .NET to native code)
03/15/2006 (9:50 pm)
@Laser: Man, LOL. That thread ended about a month before I joined this community. I have seen some crazy, crazy stuff comming out of Microsoft Research that really helped me realize that .NET is the way of the future, Such as The Phoenix Compiler (To summarize: it will compile .NET to native code)
#3
03/15/2006 (11:11 pm)
If they tightened down, and optimized the runtime for the 360, this could be good. My concerns are mainly at math performance, but I think that could be offset by a good runtime as well as the use of the extended CPU instruction set for math ops. I think I will mark this as cautious anticipation.
#4
03/16/2006 (11:58 pm)
@Pat, yeah the .NET framework is good for a lot of things, but you are right that it's not that great for game engines, at least not at this point. "Real time performance" is the main weak point of it. I guess for me, leveraging things like Torque engines is a good way to circumvent that limitation :)
#5
my own personal bet is that xbox360 is going to be changed into msft's own version of the mac, meaning a $300 PC (able to run basically any .NET app) ... since if they port .NET to the xbox360, they get the ability to do that basically for free,
msft owning the hardware, free of all the back-compat baggage that's been stuck on them over the last 20 years..... it seems like a pretty strong story to me.
I guess if we start hearing rumors of Office being built on .NET (oops, we already have!) then it will be one step closer.....
-Jason
03/17/2006 (6:07 pm)
To add to "the prophecy",my own personal bet is that xbox360 is going to be changed into msft's own version of the mac, meaning a $300 PC (able to run basically any .NET app) ... since if they port .NET to the xbox360, they get the ability to do that basically for free,
msft owning the hardware, free of all the back-compat baggage that's been stuck on them over the last 20 years..... it seems like a pretty strong story to me.
I guess if we start hearing rumors of Office being built on .NET (oops, we already have!) then it will be one step closer.....
-Jason
#6
By "Real time performance", do you mean traditional hard real-time systems? They rely on having very predictable performance specifications rather than raw speed; I understand that .Net can't provide that yet.
03/17/2006 (6:38 pm)
Jason,By "Real time performance", do you mean traditional hard real-time systems? They rely on having very predictable performance specifications rather than raw speed; I understand that .Net can't provide that yet.
#7
JIT isnt as fast as native code (though theoretically it can be faster)
.NET inherently abstracts out a lot of low-level operations, meaning perf-hacks (such as inline assembly) are undoable. (again JIT could theoretically make this unnessicary)
GC suspends all threads of your app
.NET's built-in error handling (exceptions) add a perf overhead.
So while these things dont nessicarly make it impossible to build a real-time performant application (such as a game engine) it makes doing so a very specialized task (for example, recycling your objects (instead of deallocating) so they dont get GC'd)
Dont get me wrong.. I am one of the biggest advocates for .NET's technology on the planet (tho it would be nice if msft shared the love to linux and mac). It's just that .NET's main weakness (behind xplatform support) is it's real-time performance.
A great compromise of course, is to do the performance-bottlenecks in C++, and everything else in C#. At minimum, MDX would be a great example of this, though since scene-management is a rather tricky performant area, having the entire engine built in C++ with a managed layer of abstraction seems to be the best way to go at this point.
03/17/2006 (7:00 pm)
That, plus:JIT isnt as fast as native code (though theoretically it can be faster)
.NET inherently abstracts out a lot of low-level operations, meaning perf-hacks (such as inline assembly) are undoable. (again JIT could theoretically make this unnessicary)
GC suspends all threads of your app
.NET's built-in error handling (exceptions) add a perf overhead.
So while these things dont nessicarly make it impossible to build a real-time performant application (such as a game engine) it makes doing so a very specialized task (for example, recycling your objects (instead of deallocating) so they dont get GC'd)
Dont get me wrong.. I am one of the biggest advocates for .NET's technology on the planet (tho it would be nice if msft shared the love to linux and mac). It's just that .NET's main weakness (behind xplatform support) is it's real-time performance.
A great compromise of course, is to do the performance-bottlenecks in C++, and everything else in C#. At minimum, MDX would be a great example of this, though since scene-management is a rather tricky performant area, having the entire engine built in C++ with a managed layer of abstraction seems to be the best way to go at this point.
#8
03/17/2006 (8:09 pm)
This is very cool and very interesting news.
#9
c# supprot for xbox360 live.. can i hear a "sweet"
03/20/2006 (1:54 pm)
XBox360 Live open to indie developersc# supprot for xbox360 live.. can i hear a "sweet"
#10
03/20/2006 (2:00 pm)
It looks like my next job should be to get tgb.net working under xna studio. :)
#12
04/05/2006 (3:45 pm)
Sweet!
#13
I've been playing with IronPython which is a Python implementation written in C#... very, very cool stuff... it actually runs faster than compiled C Python!!!
04/05/2006 (3:49 pm)
Interesting.I've been playing with IronPython which is a Python implementation written in C#... very, very cool stuff... it actually runs faster than compiled C Python!!!
#14
04/05/2006 (4:03 pm)
Josh, what about MoM on X360? ;)
#15
and I found that Mono, in the long run, might be sweeter (as it is a Java VM too, so add Sun's Java to the list of compatabile languages)
a few details in my last plan
04/05/2006 (4:07 pm)
Yeah .net is pretty sweet.. and I found that Mono, in the long run, might be sweeter (as it is a Java VM too, so add Sun's Java to the list of compatabile languages)
a few details in my last plan
#16
If it's true - I have some projects to port! ;)
04/05/2006 (4:10 pm)
Jason, r u sure about Mono supporting Sun Java lang?If it's true - I have some projects to port! ;)
#17
though i *still* have not touched mono, so if you try it out, i'd like to know what you think.
04/05/2006 (5:07 pm)
@Alexander: the mono page says that Java works with mono (as in your java app can call Mono c# libraries)though i *still* have not touched mono, so if you try it out, i'd like to know what you think.
#18
btw, I'm holding MCAD cert from Microsoft.
04/05/2006 (5:31 pm)
Jason: I didn't touch it too, but the amount of development around it makes me try it; now, I want to benchmark Java under Mono for kicks... :) btw, I was thinking to add java or c# support to tge/tse itself... and it can be done under Mono for multi-platform development. if you are interested, we may work together on it (i know your work on t2d.net). btw, I'm holding MCAD cert from Microsoft.
#19
04/05/2006 (5:51 pm)
I found some benchmark results for java under JDK and Monofinal class perf {
public static void main(String[] args) {
perf p = new perf();
p.runTest();
}
private void runTest() {
long start = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
equals(null);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
Test results:
Time (ms)
IKVM 0.26 10806
IKVM 0.27 1883
JDK 1.1 4597
JDK 1.5 Client VM 12068
#20
It took me about 300 hours to write the t2d wrapper code... I suppose if you are fluent in lex/yak then you can probably cut down that time, but for me it wasnt an option.
i do have plans for tse/tge support... after proving the viability of t2d.net. There is a lot of work that can (and should) still be done to get t2d.net ready for a CTP2 release, the biggest being:
- remove inline-torquescript hacks needed to do things such as create objects (the recient additions to TDN about how to do t2d things in c++ is the solution that needs to be implemented for these hacks)
- t2d.net SDK work: help creating the abstraction layer (which sits on top of the wrapper, so dont get the two confused) If you are skilled in .NET Framework design guidelines, you could help out with this. (and if you arnt skilled in it, i would recomend picking up a copy of "Framework Design Guidelines by Brad Abrams and Krzysztof Cwalina" as this is extremely important for any sized SDK.
- someone very experienced in use of the Mono engine could work on embedding this within t2d.exe, (or write an interface library) or figure out the function-pointer method of mono / c++ interop.
That's a lot of work obviously, and I am planning on doing the first two items the last week of april, and either hire someone in thailand for the last item, or do it myself at a later date.
anyway... sorry for rambling.. I'm going to be busy over the next few weeks (getting married and quitting my job) so no time for t2d.net right now... if you are still interested in working on this project after April 25th, let me know and we can work something out.
04/05/2006 (5:58 pm)
@Alexander: Honestly, I dont recomend writing another c# wrapper of torque... I specifically designed the wrapper I wrote to be portable to the other torque products (the wrapper is generated dynamically, which makes porting it to new versions and other torque products much easier)It took me about 300 hours to write the t2d wrapper code... I suppose if you are fluent in lex/yak then you can probably cut down that time, but for me it wasnt an option.
i do have plans for tse/tge support... after proving the viability of t2d.net. There is a lot of work that can (and should) still be done to get t2d.net ready for a CTP2 release, the biggest being:
- remove inline-torquescript hacks needed to do things such as create objects (the recient additions to TDN about how to do t2d things in c++ is the solution that needs to be implemented for these hacks)
- t2d.net SDK work: help creating the abstraction layer (which sits on top of the wrapper, so dont get the two confused) If you are skilled in .NET Framework design guidelines, you could help out with this. (and if you arnt skilled in it, i would recomend picking up a copy of "Framework Design Guidelines by Brad Abrams and Krzysztof Cwalina" as this is extremely important for any sized SDK.
- someone very experienced in use of the Mono engine could work on embedding this within t2d.exe, (or write an interface library) or figure out the function-pointer method of mono / c++ interop.
That's a lot of work obviously, and I am planning on doing the first two items the last week of april, and either hire someone in thailand for the last item, or do it myself at a later date.
anyway... sorry for rambling.. I'm going to be busy over the next few weeks (getting married and quitting my job) so no time for t2d.net right now... if you are still interested in working on this project after April 25th, let me know and we can work something out.
Torque Owner Louis Dargin