Showing posts with label Frameworks. Show all posts
Showing posts with label Frameworks. Show all posts

Tuesday, August 18, 2009

WATCHING THE SUN BURN – PART 1

I’ve just got the opportunity to download and test one of the greatest add-on solutions for XNA GS-based projects that one may find these days:

Sunburn Lighting and Rendering Engine.

This product, from Synapse Gaming, saves lots of time for us, XNA Game Creators, when we have to cope with both, the design and implementation of a 3D rendering pipeline for our PC and XBOX 360 games; in particular:

  • Dynamic lights and shadows,
  • Forward and deferred rendering, and
  • Post-processing.

As a matter of fact, Sunburn integrates flawlessly with XNA GS by extending its Application Model, where needed.

But, how come? … ok, before moving onto some tech words (in part 2), just watch the following two videos that really blew my head off:

1. PowerStation Demo (deferred rendering):

Nice, hu?! The source code that produces those great realtime renders serves as a kick off for a pro-like FPS project with little to almost none modifications (btw, the demo project is available in the company’s download page).

Now let’s watch the second video …

2. Reflection-Refraction Demo (forward rendering):

As you can guess and see, this example demands more GPU power. Yeap, the calculations are more intensive here as you approach to three floating orbs, but it does well.

Despite the fact that the app used to record this videos on my desktop PC pushed down the FPS count more than in a normal situation, you can see that the action flows smoothly.

An we’re talking here of a ‘Release’ full-screen compilation targeting the PC and using a high-definition back-buffer of 1280x720.

On my Core 2 Duo desktop PC with a GeForce 8600 gfx -as you can see a standard desktop nowadays- results were indeed promising. For the first demo, the average frames per second count was above 30, and for the second one, above 25.

Accompanied by a set of sample projects, articles and full VS integration, this add-on, in the “flavor” that meets your business’ needs, is a “must have”.

Now, what editions can we find? And, which are the differences among them? This comparison chart answers both questions plus indicates the usual price for each:

“Wait! Why did you say ‘usual’ price?” Glad you ask and here’s the best part … since Synapse Gaming is now a Creators’ partner, all premium members can get the following discounts:

  • SunBurn Community: $100 discount, or
  • SunBurn Pro: $50 discount.

Nice …

Ok, this is it for today. On part two, will be getting a bit into the code side of one of these samples.

‘till then,
~Pete

> Link to Spanish version.

Wednesday, June 03, 2009

KARVONITE: AGILE PERSISTENCE FRAMEWORK

For those who don't know it yet, Karvonite is a project hosted in the MSDN Code Gallery, available under the term and conditions of the Microsoft Public License.

But, what is Karvonite? From the homepage's overview:

Karvonite is an object persistence framework for the .NET platform. Karvonite's goal is to relieve the developer from all serialization related programming tasks in a non-invasive way. It can save you from writing a lot of boring and thus error-prone code for moving the in-memory objects to and from the data storage. The Karvonite API is very simple and provides a gradual learning curve with a very low entry point.

Despite the fact that .NET serialization and XML files are ideal for storing data easily and effectively, in several cases they are not a viable replacement for a data engine. In contrast, not all applications require the horsepower and the excessive functionality and optimization of an enterprise database or a SQL engine; databases are a skill unto themselves and the learning curve is not as fast as expected.

Benefits? Read on ...

  • Transparently save/load .NET objects,
  • Non-invasive (no interfaces, base classes or special attributes required.),
  • Automatically handles object graphs and references (shared and circular),
  • Easy to use and deploy, and
  • Supports .NET Framework 3.5, XNA 3.0 (Windows, XBox360, Zune) and .NET Compact Framework 3.5.

To use this solution you will need two main components: a tool called "Persistence Model Designer" and the framework assembly named "Karvonite.dll", having both a relatively fast learning curve.

The authors of Karvonite are open to comments and suggestions, and really want to refine the solution to meet all XNA requirements. So, if your are an XNA'er go ahead and let them know the features you'd want to see in future versions of Karvonite.

Service Pack 2 for the April CTP has been released today, thus if you want to try this persistence framework go and get it here.

For further news and notifications of future releases, you can also subscribe to Karvonite's blog.

Enjoy!
~Pete

> Link to Spanish version.

Monday, April 27, 2009

INVARIANCE, COVARIANCE & CONTRAVARIANCE

Lately, the world of C# developers is wondering about the the meaning of two unusual words: covariance and contravariance.

There is a bunch of articles out there right now attempting to explain the concepts behind those words mainly by example, and why they matter more for the upcoming version 4.0 of C#.

To mention just a few articles on this topic:

Since this subject is new for many, plus, and let’s be honest here, it is NOT THAT easy to understand at first sight, I have decided to add my two cents by writing yet another article -explaining the way I understand it- with the hope it will eventually help others to also dig it once and for all.

Ok, enough introduction! Let’s jut begin …

From a design point of view, whenever we want to refer to inheritance, we would have to use words like “generalizations” and “specifications”. But in practice or in terms of implementation, we do use the word “inheritance” itself, plus the following two words: “based types” and “derived types”.

In what follows, I'll use the latter group of terms for the sake of easier understanding. So let’s start with some basic concepts, shall we?

(I) Basic Grounds

In theory, when talking about reference types, it is stated that a base type is bigger than a derived type because it can hold either an instance of its own type or an instance of all its derived types.

Therefore, a derived type is smaller than its base type because the former cannot hold an instance of the latter.

This is usually referred as T >= S, being T the base type and S its derived type. For instance,

Object >= String

Now, we are dealing with covariance when the reference to an object is declared as its real type or to one of its base types (and by “real” I mean the type used to create an instance of it, for example: “new Foo()”).

In other words, a derived type is covariant with its based type since the direction of attribution –and in what follows I will refer to this as “movement”, going from a derived type to a base type is thus allowed to happen.

Following this rationale, we are therefore dealing with contravariance when the “movement” goes along the opposite way.

And this is probably the most difficult concept to picture. Let’s hope this example clarifies it: if you have a delegate that, say, takes a string as an input parameter and returns a bool, then you can pass a method that takes an object as an input parameter and returns the same type, in this example: a bool. Why? Because if you can deal with a derived type within the expected method then you can also deal specifically with one of its base types (we will see an example of this later).

Finally, there’s a third concept: if “no movement” is allowed to happen, then we are dealing with invariance.

For instance, to prevent conflicting variance, mutable arrays “should” be always invariant on the base type. If you are creating an array of objects then you shouldn’t be able to insert, say, a string in that array (covariance). And thus, contrary, if you’re creating an array of strings you shouldn’t be able to remove an instance of an object from it (contravariance).

Thus, from object >= string, we could then infer that object[] >= string[], ONLY IF both arrays were immutable.

All the above-mentioned explanation is in line with Liskov’s Substitution Principle, specially in the sense that the way an object is referenced in a program must never alter any of its (“desirable”) properties.

(II) The Problem

In a static language like C#, “type-safety” implies that the compiler is capable of catching “casting” errors in the code at compile time.

As explained above, mutable arrays should be invariant to enforce type-safety. But this is not the case for arrays in C#, which are covariant on the base type. Puzzled? Then read the next paragraphs.

This means that “an error” in the source code that should be always caught by the C# compiler has been turned into an exception that can only be detected at runtime by the CLR!

Why? To answer this question and from now on let’s define three classes, which many seems to like to use in code samples on the subject, lately: Animal, Cat and Dog, being Cat and Dog both derived types of the same base class: Animal.

Well? You can always allow to store a Cat in an array of Animals, but with array covariance the real type to store could be an array of Dogs.

Take for instance the following code:

   1: Animal[] animals = new Dog[10];
   2: animal[1] = new Cat();

What do you expect it will happen in the above code? Possibly the compiler will detect an error here, right? Right?!

Wrong! Believe it or not, this code only throws a runtime exception instead of an error at compile time, on any version of C#!

If this is wrong, why is it allowed, then? Because the compiler knows that both derived-types are Animals, and therefore implicit casting is allowed for an array declared to expect Animals, even though the actual instance of the array is declared to contain a whole different derived type with a common base type (in the above code: Dog[10]).

Remember that in C# there is implicit casting from a derived type to its base type because it’s a type-safe operation, but the same does not apply the other way around. And thus, you must always use an explicit cast to convert a based type back to a derived type.

Unfortunately, this problem exists in C# since version 1 and will remain for version 4 (shhhhh! … don’t say it loud, but it’s a Java-related thing).

But let’s move further to what will do change …

In the previous section I talked about delegates. Well, in C#, delegates are covariant for return reference types and also contravariant for reference-type parameters. Puzzled again? Just read on …

Continuing with this animal thing, let’s take a look at the following example for covariance:

   1: public delegate Animal MyDelegate(int i);
   2:  
   3: MyDelegate myDelegate = new MyDelegate(MyMethod);
   4:  
   5: public Cat MyMethod(int i) { … }

If the declared delegate prompts for a method waiting for an Animal as a return type, the compiler knows that a Cat is an Animal and due to implicit casting from a derived type to its base class, you can pass a method that receives an Animal.

However, the opposite is not true. If the return type is a Cat, you cannot pass an Animal instead without an explicit cast to a Cat type. Why? Due to the fact that an Animal object could have really been created as a Dog!

Now, let’s move onto an example for delegate’s contravariance for parameters:

   1: public delegate int MyDelegate(Cat myCat);
   2:  
   3: MyDelegate myDelegate = new MyDelegate(MyMethod);
   4:  
   5: public int MyMethod(Animal myAnimal) { … }

If a declared delegate prompts for a method that expects a Cat as a parameter, then you can deal with its base class. Why? Because a Cat is an Animal and by inheritance you know how to deal with it as an Animal. So anything that can be assigned like a Cat can be passed and treated specifically as an Animal with type-safety, as long as the declared delegate and the passed method, both return the same type (in the example above, an integer).

Understood. But why is this contravariance? We are in fact reversing the direction of attribution since we are passing a method that takes an Animal as a parameter to a function pointer (or delegate) that expects a Cat as an argument.

Remember the definition for contravariance? We are passing a bigger type to a smaller type, here. So we are reversing the direction of attribution.

As with the example for covariance, the opposite is not true. If the delegate expects an Animal as a parameter, you cannot treat it as a Cat in the passed method, since again there is no guarantee at all that the passed Animal parameter is a Cat. It could be a Dog, instead.

A great example to fully understand this is related to two delegates expecting methods with the MouseEventArgs and KeyEventArgs parameters; they could refer instead to one method expecting a parameter of the type EventArgs. Meaning? In that situation, in both cases the same behavior is expected. So, as you wouldn’t care about the added functionality on the two “derived” classes, you could just deal with both arguments equally using the base type in common.

Ok, if this does work for delegates in current versions of C#, where’s the problem to solve then? Well, the above-mentioned rule is not applicable when storing generic delegates, which are always invariant in C# 3.0, for both the parameter and return types (and the same applies to interfaces).

Two examples:

  • You cannot return a IEnumerable<string> if the method returns IEnumerable<object> (that would be covariance), and
  • You cannot use an Action<object> delegate to replace an Action<string> delegate (that would be contravariance). Please bear in mind that I’m referring here to assigning, say:
   1: Action<Cat> myDelegate = new Action<Animal>
   2: ( myAnimal => myAnimal.DoSomethingWithTheAnimal() );

And not to something like- which of course does work just fine:

   1: Action<Cat> myDelegate = MyMethod;
   2:  
   3: public void MyMethod(Animal myAnimal) { … }

And yes, please! Try it with C# 3.0 if you are in doubt of my words.

(III) The Solution

So, what's all this fuzz with the new added use to the existing reserved words "in" and "out" in the upcoming C# 4.0?

For reference types:

  • in = contravariance (only passing arguments),
  • out = covariance (only returning types).

From the examples above:

  • Covariance: IEnumerable<T> will become IEnumerable<out T>, so a delegate declared to return a IEnumerable<object> will in fact be able to return an IEnumerable<string>, and
  • Contravariance: with Action<in T>, you will be able to assign an Action<object> delegate whenever you expect an Action<string> one.

I advice you to check the articles listed at the very beginning of this post for complete code samples on the subject.

Phew, this is it! As you can see, the theory behind these concepts is not that easy to understand but it’s neither that difficult, so I really hope you have found this explanation useful to finally accomplish that task.

‘till next time,
~Pete

> Link to Spanish version.

Tuesday, October 14, 2008

IT'S OFFICIAL!

We have an official release date!

The XNA Team has announced that the final version of XNA GS 3 will be out this October, 30th. Read the announcement here.

The wait is almost over.

Cheers!
~Pete

Tuesday, May 13, 2008

VS 2008 & .NET 3.5 SP 1 BETA RELEASES

I was reading Scott Guthried's blog this morning so I found a great surprise: the first Service Pack beta release for both, Visual Studio 2008 and .NET Framework 3.5 is out.

One of the things that amazed me while reading through the new features we'll find in the final release has the following title: "WPF Interoperability with Direct3D".

But why does this means a lot to me -or should mean a lot to us XNA-based game developers?

If you ever attempted to integrate a D3D-based game/application into a WPF-based project, you may know that one of the hard burdens to surpass to get that job done is called "Airspace", a strict rule that prevents both type of applications to co-exist in the same region of the screen, at least without a simple solution.

And I say simple here because to "bend" this rule a little bit to make the user believe that a real integration exists -meaning, as if there was not Airspace at all in the first place- either you had to use a decorator-pattern-based implementation or a solution where you intercept all windows messages in order to "bake" all pixels rendered by D3D into an image that can be later used by any WPF control ... if you want to know more about this rule and or get one of these solutions or both of them just do a simple Internet search with the words "DirectX WPF Airspace" :)

Well, as this is becoming a built-in feature now, it means that we can stop worrying about finding or choosing the optimum way to integrate D3D and WPF, what in turn means that we don't have to constraint our D3D-based projects to WinForms controls anymore and thus we can let our imagination fly to create a rock-solid kicking @$$ game-level editor using WPF and XNA -specially now that GS 3 integrates into VS2008.

Really great news ... although we have to wait a bit more to get our hands on this feature until the final SP is released ... :)

Cheers!
Pete

Thursday, February 21, 2008

XNA GS 3: THE LUCKY NUMBER!

Being an old timer, it's incredible to see how fascinating the world of XNA is moving ahead. Since Managed DX first appeared, there also appeared the first steps of a big company to introduce C#, and managed code in general, into the game-development industry.

After all the uncertainty around the future of managed code in games when the doom of MDX 2 was unveiled -specially for all us who had embraced c# and MDX for our game projects, a new word started to being rumored with higher and higher strength: XNA.

Since the first beta of XNA GS was released, this baby has been growing up at a steady and solid pace. In fact, with this recent great announcement, MS has confirmed that is betting a hugh stake on the project and if you ask me, it's a winner bet. Other big companies are trying to copycat the idea, but they aren't moving that fast and that well, plus they're still attached to C++ ... and I love C#!

Being an indie, knowing that in a few months I'll have the possibility to sell my games for the XBox 360 as well as produce games for Zune is really exciting. It's very difficult and expensive to make a game project to reach the "going gold" phase, and MS way may prove to be an affordable means to show off our creations, get a contract with a publisher and why not, directly sell our games with an interesting profit, why not?

I don't know about you, but I was waiting to hear (or read) something like this all these years. Thumbs up for the XNA Team! Way to go ...

Cheers!

Wednesday, December 12, 2007

FINALLY! GS 2.0 IS AROUND THE CORNER

Yes, at last! The final version of Game Studio v2.0 will be released this December, 13th, that is to say, tomorrow.

Follow this link to Ziggyware to get the links to the press release and the related forum thread. Or also visit Dave Weller's blog to find out more ...

Is it tomorrow? ... And now? .... How about now? ... Are you sure this watch is working? ... that's it! "8 hours to the future (enter)" ... ahhh downloading it now ... pheewww ... that's better!

Yeah, I know, no more coffe for me :)

See you all tomorrow.

Monday, December 10, 2007

MAPZONE EDITOR V2.6

With version 2.6 of ProFX comes along the respective version of MaPZone editor. For those of you who never heard about these two:
  • MaPZone is an quite handy editor that builds procedural textures, and
  • ProFX is a middleware solution that helps handling those procedural textures.

V2.6 of the editor isn't yet available for download but you can get it via 3DWorld magazine.

Now, what about ProFX? If you're using XNA you may have read this announcement: "ProFX to be part of Microsoft's XNA Tool Suite (2007, March 26)" and perhaps got excited. If so, hold your horses. No news, ETA, beta or even alpha whatsoever, just this thread.

Procedural texturing brings a lot of advantages over traditional texturing techniques. To mention a few:

  • you save deployment space, and depending on how and when you generate the final textures, disk space,
  • like in procedural shaders, the textures are generated at any given resolution, and
  • 4D textures (real-time recomputing of textures).

Thus, let's hope the guys from Allegorithmic and the XNA Team meet this week in Seattle to make the above-mentioned announcement become a soon reality.

Fingers crossed!

Sunday, December 09, 2007

PHYSX FOR (XNA) PHYSICS

Checking connect entries for XNA I found this one: Physics API.

Following one of the links provided by Mike555, I found a page where the guys behind MS Robotic Studio claim to have a managed wrapper for Ageia's PhysX.

I don't know whether this wrapper is a lite version or not (and by "lite" I mean if it doesn't implement all the functionality available in the original API), but it would be quite handy if the XNA Team could talk to these guys in order to integrate that managed API into XNA.

Possibilities could be endless for our games if that happens.

Let's hope someday we'll see an AAA physics API like Ageia's being integrated into XNA.

BTW, and switching topics to the warm-up challenge, let's thank Mykres for listing links to interesting sites that cover AI for games. Check the list out and do some reading.

Cheers!

Tuesday, November 20, 2007

XNA GAME STUDIO 2.0 (BETA) IS NOW AVAILABLE

As announced by the XNA Team, the beta version of the awaited XNA GS 2.0 has been released!!!

So go and visit the following:

  1. The official announcement :)
  2. The "What's new" page, and
  3. The beta home page.

Don't forget to check the new "Project Upgrade Wizard", the newly updated demo sample projects, and the "Net Rumble Starter Kit".

Enjoy!

Tuesday, August 14, 2007

SECOND DAY WEBCAST?

I don't know about you guys but the sessions of the first day were really great! So many info shared, previews, experiences, images, demos, videos, and so on. And the webcast itself was loud and clear ... I eperienced only one glitch and it was on my side (too many webpages opened).

I know it was announced that only the first day would be webcasted but, given the importance of the sessions and the fact that many of us couldn't attend the gamefest this year, let's hope the XNA Team decides -of course, if within possibilities- to webcast today's XNA sessions.

Fingers crossed!

Monday, August 13, 2007

XNA GS: FORGET THE FUN JUST SHOW ME THE MONEY!

Finally! The last webcast of the day has ended.

Frank Savage reminded us what's the current state and features of XNA GSE, what XNA "GS" 2 will bring, and what to expect for the first half of 2008.

I'm tired so I won't comment on the current status of GSE. What will come on v2 was already covered. So the juice is on 2008. Why? Because even though there are not further details on how they will implement it yet -meaning it's still under discussion- these guys are working on a way to help us reach the XBox Live Arcade market more easily (and then the Xbox360 retail disk distribution).

The final round of questions seemed pretty exhausting since everybody start asking and asking, even questions that had nothing to do with what this guys were supposed to talk about!

Some interesting Q&A:

  • Will we worthwhile building a game for the 360 in 2008 given the advances in technology which could make the 360 an obsolete console? Yes.
  • How can one convince any publisher that managed code & XNA can create a "blockbuster" game? The answer is simple, just convince them that your game is fun and sellable. they don't even care what technology you use to create the proof of concept, prototype or even the game itself.
  • How much does it cost to get a certificate? I think the first time you get in is free and after that you pay by submittion.

Well, that's all folks! I hope my comments on the webcasts help those unable to watch them because of bandwith restriction, bad connections, and so on.

Cheers!

NETWORKING COMMING UP NEXT!

The one we all were probably waiting for ... and is comming along nicely!

Some features we will find:

  • Reliable UDP, ordering, etc.
    Packages can be sent to a specific player and to all players on the session.
    360 players can join Windows sessions and viceversa.
    Player-to-player voice.
    "Lobby" management so as to sync games (isReady and isEveryoneReady properties).
    and much more.

Some we don't by now: Game invites, Leaderboards, etc.

Some we probably won't (or at least in the middle run):

  • Ranked matchmaking.
  • Achievements.
  • Raw sockets.

A couple of great questions:

  • ¿Dead Reckoning? Nope. This version will provide basic functionality, so you should build upon it by yourself.
  • ¿Beta Public Release? Maybe in a couple of months (more good news!).
  • Didn't get the answer about the kind of suscription to play networked games (silver or gold), maybe gold? Sorry about htis one.

Btw, if after building the game you try to host/join a session but get an unhandled exception, just recompile your code and try again ... :)

GAINING SOME PERFORMANCE ON XNA GSE

Man! I really need to get Shawn' slides ... very useful info and tips to program game using XNA GSE, both for Windows and the 360. He covered many areas, like graphics, math, threading and profilin tools.

Hereunder you will find some bullets:

  • Graphics: Shawn mentioned things like the spritebatch, then shaders, materials and effects, and finally renderstates. Some conclusions: use the GPU the most you can, don't forget to set SpriteSetMode, undesrtand the 360 system's calls and avoid the use of states blocks.
  • Math: is incredible how one can gain some performance by passing structs by reference and inline some computation. About the latter, constructs can be manually inlined (an example was provided). Those of us who have experienced .NET Framework 3 and 3.5 do know that the way this is handled in those versions of the .NET framework is quite handy.
  • Threading: a must! To take advantage of this feature on the 360 one have to understand how the cores and threads per core are organized as well as the fact that one must manually assign threads to the 360's cores (this is not done automatically for you). Also take due note that the Content Manager is not thread-safe and input handling is not threadable on windows (meaning, it has to run on the main thread, always).
  • Profiling Tools: there is not much help on the 360 to identify bottlenecks, thus, profile on windows and do some inference (of course, remember the way the compact framework deals with the GC and generations).

There were more points to mention about Shawn's presentation plus plenty of smart questions, but you'll have to watch the webcast later to get all of them ... ;)

Phew! ... a 30 minutes brake. Thanks so much! I need some rest ...

THE 10 RULES TO AVOID UNWANTED PERFORMANCE COSTS

"... measure, measure, ... , and measure". Yeap, that was what Rico Mariani said during the fourth webcast. The sooner you diagnose, the better.

The spirit associated to the above-mentioned "axiom" is driving your application to pay the costs of using managed code at the proper time, where and when you can afford those costs.

All the slides where quite interesting, and many relevant things were stated like:

  • "not all the dots are created equal" (this is related to "inlining").
  • structs are not as weel handled as reference types (although structs are sometimes preferable).
  • exception handling constrains optimization, and
  • many more.

Finally, there was a great comment, the proof for non-believers that managed code is suitable for game design are all the games that were created for the 360 using managed code (through XNA GSE, of course).

Well, now is Shawn's turn, so gotta go again.

XNA GAME STUDIO 2.0

The second presentation has finished and many interesting things came out. You can find some of the upcomingfeatures on the XNA Team Blog. Again, what happened to the "Express" word? Simpe. Everything lays now on a common ground!

The news ... there's new content available on the creators site:

You can check it out all here.

Also, you can watch a video of the first Xbox Live Arcade created all the way with XNA GSE: Schizoid (presented on the first webcast by the producers/developers of the game -Torpex Games- and is the focus of the third webcast, which is going to start in a couple of minutes).

Well, in fact I see the guys preparing the third webcast -images and sound is being transmitted- so, again, gotta go ... stay tuned!

AND THE WINNERS ARE ...

Have you watched the first webcast? A great intro by Chris Satchell with plenty of info about the future of XNA v2.0 (first surprise: get to the part about the "pro" version), expected numbers on the XBox Live market (growing very fast), XBOX Live Arcade and ... drums please ... the winners of the Dream.Build.Play compo of this year:

  1. First Place: two games will share this place, both getting all the prizes: "Blazing Birds" and the "The Dishwasher: Dead Samurai" ... btw, Chris, how cruel of you! ... :)
  2. Second Place: my connection went bad at this time but I guess this place is also shared ... please correct me if I'm wrong, but the games getting the second place are "Gravitron Ultra" and "Yo Ho Kablammo!" (the sound went bad but the pictures shown a Live Arcade image among the prizes, so I guess they also getting the opportunity for a publishing/distribution deal? If so, more congrats!)
  3. Third Place: the remaining finalists ... I can bet and hope that many-to-all of you will also get some interest deals and offers from distributors/publishers/etc. in the split of a second ... ;)

Congrats to all of you!

Also, there were shown great demos, in particular, I was amazed with the one presented by the guy of XSI (in fact, the procedural-textured terrain looked awesome).

Ah, yes, before the second webcast begins, in sync with Chris' presentation, Michael Klucher was also announcing XNA GS 2.0 at the XNA Team Blog ... what no "Express" term inthere? Mmmm ... just watch what Chris says about the "pro" version ...

Opps! gotta go ... Michael's presentation has started ...

Tuesday, July 31, 2007

FX COMPOSER 2 OFFICIALLY RELEASED!!!

Hi, folks! Just a quick note: FX Composer 2 has been officially released today. Finally!!!

For those who may not know what FXC2 is -if there's someone out there who doesn't know about this great tool yet- browse to this website and read on and or watch this video:

BTW, guess which language was used to build this version of the tool ... yes, you can say it, don't be shy ... c# ... isn't it great?!

See ya.

Tuesday, May 15, 2007

BLADE3D BUILD 1817 IS OUT

Yes, the latest release of Blade3D beta1 (build 1817) is now available for donwload.

Hereunder is the list of changes:

  • New SimpleTerrain Height and Raycast Operators,
  • New audio system, with import, and preview,
  • New TriggerVolume, GraphTrigger, SoundTrigger and AnimationTrigger,
  • Opacity property now working on many MaterialsPlay Sound Operator,
  • Ability to modify bitmap fonts from gallery,
  • New Bounding Box ActionsBuilt-in support for Idle Animations,
  • Random sound containers,
  • New water normal texture,
  • RenderColorTarget Semantic Now Evaluated Per-Pass,
  • New Scene Level Bools For Enable/Disable Display Bounds, and
  • Fixed some floor plane draw issues.

Happy coding!

Thursday, May 10, 2007

"VISUAL3D.NET - XNA FOR THE MASSES, PART I"

Dan Maltes comments on Realmware's Visual3D.Net framework.

From the post: "... is a combination Game/Simulation engine and Game/Simulation building tool-set all built into one. This means it has much of what you need built right into it, saving you a tremendous amount of time and letting you, and your team, focus on the imaginative and creative part of your application. For instance, assigning keys and mouse clicks to control objects in your 3D world; normally you would have to write a whole bunch of code and event handling on your own to accomplish this. Visual3D has that built-in, so all you have to do is decide what keystroke or mouse-click does what. That is just the tip of the iceberg of what Visual3D has built into it ...".

Stay tuned.