Friday, June 26, 2009

ON JULY 2009 "CUMUY PRESENTS ..."

The "tech" day of CUMUY has already become a monthly Classic in Montevideo, Uruguay.

This time the following topics will be presented:

  1. Silverlight 3 (Ingacio Cativelli), and
  2. G.A.T. (Gonzalo Laguna).
Cumuy_Julio09

This is a free-pass event, so: "Don't say that we didn't let you know!".

See ya,
~Pete

> Link to Spanish version.

Thursday, June 25, 2009

WINDOWS 7X7

For those of you who do not know Windows 7 yet, those who doubt about its virtues and even those who have already installed the Release Candidate and want to find out more, I recommend a lot that you watch a series of videos (in Spanish) about its goodness:

Usually I'm not a developer that installs testing versions of a OS in a production environment, but, when Windows 7 RC version was out and having witnessed that the previous beta version worked with roominess in "aged" notebooks, I decided to walk away from Windows Vista and give Windows 7 a try.

I must confess that, after I took that decision, results have been quite comforting! Windows 7 RC behaves like a charm and performs superiorly to its ancestors.

I have installed its 64-bit version with only 2GB of memory on my PC desktop and it actually flies! (note: on Windows Vista, it is recommended that you have 4GB to achieve an acceptable output).

Not to mention the features of its own that make the UX indeed enjoyable.

Thus, as I said at the beginning, my advice is that you visit "Windows 7x7", watch the series of demo videos, and if you can, decide to finally install and try out Windows 7 RC.

Enjoy,
~Pete

> Link to Spanish version.

Wednesday, June 24, 2009

XBOX 360 & ZUNE BUZZ

This year, Microsoft has turned it-self into a box of nice surprises since it announced 2 new products that have recently generated some buzz: Zune HD and Project Natal.

Let's start with the Zune HD. This mobile wonder will have a larger screen with both, touch and OLED technology, point-to-zoom functionality, a built-in accelerometer, and touchscreen QWERTY keyboard.

I'm really excited with the news of OLED display: more vivid colors, higher contrast levels and less energy consumption But I'm more excited with the recent confirmation that it will also include a Tegra GPU, which means no more no less than: gfx hardware acceleration!!!

Now the question is: does this mean it will include a mobile version of D3D? No one outside Microsoft knows. Time will tell, but I'd love to see a built-in 3D support in this upcoming line of devices. Don't you?

So, let's hope MSFT hear our prayers and lets us create (and sell) some outstanding 3D XNA-based games for the Zune HD market.

Now, what's "Project Natal"?

Well, during E3 MSFT presented a new device as means of controlling 360's games without using a gamepad nor any other standard input controller. Just a stereoscopic camera, your body and your voice.

Don't you believe me? Then watch this video:



Fantastic! On the PC business, OS & touchable screens will accompany this trend and to some extent all standard controllers will tremble, in special the old mouse and the traditional keyboard hardware.

In a way, it's like taking the first steps to enter the tech-era of the film "Minority Report". Which is great! The challenge: as usual, learning-curve easiness vs. heavily-established users' customs.

This will indeed require a lot of fresh creativity to ease the transition in the UX towards a real gain in motion richness and more intuitive control.

Can you imagine playing an FPS game with just your body & voice? It won't be easy but eventually we all will, hard-core and casual gamers.

I guess at first it will be kinda blind search until developers find "a pattern" accepted by most gamers, not to mention the efforts and futuristic gadgets to bring back the always welcome force feedback in Natal'ed games. But I also guess it will be great to combine sports and games: "Do some fitness as you play".

Ok, enough small talk. Let's concentrate on the rumors around this incredible device.

As soon as the first images, videos and live demos of "Project Natal" were shown during Microsoft's conference on the past E3, many sites started to speculate on the release of a successor console from 2010 and on with an upgraded internal hardware.

This rumor was reinforced when a change in the hardware of the XBox 360 Arcade edition console was finally confirmed (an increase of the built-in memory module from 256 to 512MB).

Hold your horses! Some sites have been spreading the word that MSFT execs have confirmed mainly two things:

  1. First, "Project Natal" will work on existing 360 consoles, and
  2. Second, the 360 is half-way far from reaching the end of its lifecycle.

So, let's cut with this speculation trend and wait for it either in solo or bundled offers ... One thing to note though, this recent post on TeamXBox's twitter:

...in addition to built-in Natal tech, a key feature of the next Xbox would be full HD stereoscopic 3D visuals similar to 3D movie theatres.

HD stereoscopic 3D visuals ... Wow! But wait, "... of the next Xbox would be ...". Ok guys, please make up your minds ... humm ...

No release dates (nor prices) have been officially announced for both products, the Zune HD and the "Project Natal", but a few sites claim that Amazon is listing the Zune HD for September 2009.

Regarding Project Natal's release date, no word or hint, unless the latin word "Natal" not only was chosen because it means (related to) "Birth", but also taking into account its additional meaning: Christmas! Wouldn't be great to receive such a present this December'09? I'm really shooting at random here, but I really hope so ...

Cheers!
~Pete

> Link to Spanish version.

Sunday, June 21, 2009

NEW ARTICLE CONTEST AT ZIGGYWARE

Due to the success of the last donation drive, our good friend Ziggy is hosting a new XNA-based article compo at Ziggyware with quite amazing prizes: "Ziggyware Summer 2009 XNA Article Contest".

How about a 120 GB XBox 360 with Wireless Remote (USA NTSC) for the winner? Cool, uh? And this is just a one of the prizes!!!

As usual, check the rules and mark the deadline in your calendar: September 1st., 2009.

Happy writing!
~Pete

> Link to Spanish version.

Saturday, June 13, 2009

AVATARS 101

One of the cool new features included in the now available 3.1 version of the XNA Framework, is the support for "Avatars".

But what is an "avatar" anyway?

During the 4th quarter of 2008 the XBox 360 User eXperience (UX) was enhanced with an awesome change in the look'n'feel of the Dashboard.

As part of this "extreme make-over", quite really cool 3D-animated characters were added to the system to represent gamers.

How come? Well, once a user is logged in, she/he can customize how her/his avatar looks: body, cloths, apparels and so on. And if the user has a XBox Live account, that avatar description will be also available on the Xbox Live servers when sined-in, representing her/him with other friends.

You may wonder: "Ok, I got my avatar but, can I use it in a 360 game?" The answer is: "Yes, as long as the game supports the use of avatars".

The video below shows the use of avatars in the 360 game called "Uno Rush".


Now, going back to the XNA Framework 3.1, what is it supported, exactly? And how can we properly use these avatars in our XNA-based games?

  • To start with, avatars are only available on the XBox 360. Meaning that "Games For Windows - Live!" does not support it,
  • Read carefully the guidelines: "Avatars: What Can You Do?",
  • Visit Dean Johnson’s blog -developer in charge of implementing avatars support in 3.1- for more in-depth info about this feature,
  • The skeleton is not available for the public yet but it was mentioned that a Maya skeleton rig will be published sometime in the future (no dates posted though), and
  • Right now, there is only support for built-in animations, so once the skeleton gets released, and unless an official sample is provided when that happens, you will have to create your own "CustomAnimation" class to handle your own animations. Again, more information will be provided by the XNA Team in the future.

Any code snippets? Fortunately, there are great official and unofficial samples and articles out there explaining "How-To":

Next week I'm going to post an example showing how to create, render and process a transition out from one animation to the next one, as a slightly different approach to the method included in one of the samples of the XNA Team.

So, stay tuned!
~Pete

> Link to Spanish version.

Thursday, June 11, 2009

XNA GS 3.1 & XBOX LIVE "INDIE" GAMES

Excellent news! XNA Game Studio 3.1 is almost here! ... "almost" = the download link will be available any time soon :)

A few things to note regarding the release:

  • In order to test 3.1 games on the XBox360, the XNA GS Connect must be updated, as explained by Michael Klucher,
  • 3.1-based Games cannot be submitted for playtesting a/o peer review until 23rd, July,
  • And from that date on, 3.1-based games won't reach the market until the Marketplace gets updated, and
  • You can convert 3.0 projects to 3.1, following this walkthrough.

But this ain't all ... XBox Live Community Games is in the process of being renamed to XBox Live "Indie" Games!!! This is an additional nice surprise.

But wait! There is more ... during the week of the E3, the XNA Team announced that a new feature is comming to the Marketplace: User Ratings!

Wow! Interesting times will come for us XNA'ers, don't you think? Great news, indeed.

Enjoy,
~Pete

> Link to Spanish version.

Friday, June 05, 2009

ZIGGYWARE: CONTEST RESULTS & DONATIONS

You may already know this by now, but results are in for Ziggyware's "Spring 2009 XNA Article Contest":

Congratulations for the winners!

Ok, those are the results but why there's a "donations" word in the title of this post? Well ... Ziggyware needs you!

Once in a while, our friend Ziggy call for donations to support his site. In Ziggy's words:

It has been two years since I have had a donation drive to support Ziggyware. I would like to thank all who have donated in the past, helping to keep Ziggyware alive and well. I am currently looking into expanding the site's features and support future XNA contests with great prizes.

Question: how can we donate? Ziggy?

You can donate via Paypal as well as by purchasing by clicking an Amazon product link on this site and then purchasing the product you desire.

So c'mon! Do your good action for the day, be an outstanding XNA'er and support this great XNA Community site!

Watch this space,
~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.

RUN 09: TAKE A BREATH

After being very busy last month I can finally "take a breath" and write some posts again. Things are not back to normal yet to be honest, but I guess it's time to resume my usual blogging activities.

What is "run 09"? It's a one-day IT event to be held tomorrow in Uruguay, where three topics will be covered during the whole day in different talks and keynotes, focusing mainly on what awaits on 2010 and beyond.

The topics are:

  • Cloud Computing,
  • Model-Driven Dev, and
  • User eXperience.

To get a detail view of the event, the speakers and or register, click here.

See ya,
~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.

Monday, April 13, 2009

CUMUY PRESENTS: XNA GS

CUMUY, which stands for "Comunidad de Usuarios de Tecnología Microsoft del Uruguay", is a very well-known organization (in Uruguay) supported mainly by MSFT users passionate for spreading the word about the benefits of using Microsoft's technologies.

Although MSFT has no official participation in the organization, it allows us to use its local facilities to carry out a series of monthly presentations covering different technologies and areas.

This month, on April 22nd at 06:30pm (to be exact) it's the turn for the following three great presentations:

  • What's new in Visual Studio 2010,
  • What's new in Silverlight 3, and
  • An Introduction to XNA GS.

The talks will be presented in order by:

  • Fernando Machado: MVP for C#,
  • Ignacio Cativelli: MSFTie, and
  • Pedro Güida: MVP for DirectX/XNA (yeap! me).

The talk about XNA GS will not cover coding at all. Instead, it will present to all attendees the XNA GS architecture, the benefits of using it, available target platforms, current business models, some relevant references on the web and show off some cool and awesome XBox 360 games now available on both, the XBLCG and the XBLA channels.

The coding part will be introduced on a second talk on late June. So, basically this time I will comment on what's available now and about what's coming next on version 3.1 (complying with the NDA, of course).

Thus, if you happen to be near Montevideo at that time and want to attend the talks, just register here (event id: 1032413561).

See you there,
~Pete

> Link to Spanish version.

Wednesday, April 08, 2009

WIN VISTA GADGET FOR LATEST XBLCG

The latest Creators Club Comuniqué is out, and with it there's a link to a fantastic Windows Vista Desktop Gadget that ...

"... shows games as they become available on the Xbox LIVE Community Games Channel on Xbox LIVE Marketplace ...".

After you download the gadget, it will list the five latest games that have recently hit the XBLCG channel marketplace:

But wait! There's more ... as soon as you hover your mouse on top of any of the games listed, a pop-up window appears showing more detailed info about the game, like: creator, genre and a brief textual description.

What if you want to find more about any of the games listed? Well, you just click on the name of the game and a new page is opened in your web browser with all the information available for that particular game on the XBox LIVE marketplace!

The gadget allows you to configure the feed, by either market or creator, as well as to set its refresh rate in minutes.

With this great desktop gadget now you can get up-to-date information of all the recent content changes on the XBLCG channel, effortlessly!

Enjoy!
~Pete

> Link to Spanish version.

Thursday, April 02, 2009

ZIGGYWARE'S XNA ARTICLE CONTEST

The Spring '09 edition of XNA article contest at Ziggyware is here!

This year, among the usual prizes for the top-three articles, our friend Ziggy -thanks to the sponsors of the contest- is giving away licenses of the recently released Sunburn Lighting and Rendering Engine -from Synapse Gaming, a technology tailored for XNA Game Studio.

The contest has already started and the deadline is May 1st, 2009. So go ahead, start your engines, be creative and submit your articles!

Don't forget to read the rules of the contest.

Let's write on!
~Pete

> Link to Spanish version.

Thursday, March 26, 2009

XNA GS 3.1 IS COMING NEXT

The cat is out of the bag, finally!

A new version of XNA Game Studio (3.1) has been announced -along with other relevant info like the next DBP compo- during this year's GDC.

No date has been published yet for its release, but in the meantime you can read the first quick notes about the new features that will be included in 3.1.

I guess in the next few days/weeks we'll see more official words with details on each topic.

In this sense, Shawn has recently blogged about one of these features: automatic serialization of content binaries (XNB). So, check it out!

See ya!
~Pete

> Link to Spanish version.

Wednesday, March 25, 2009

IE8 & ADOBE FLASH PLAYER FIX

[ If you deem this article as helpful, please consider downloading my game "Just Survive XP" on the Appstore (free for a limited time):

=> http://itunes.apple.com/app/just-survive-xp/id461876025 ]

Yesterday, I wanted to watch a video on Youtube when suddenly, to my surprise, I just found the following message, instead:

Hello, you either have JavaScript turned off or an old version of Adobe's Flash Player. Get the latest Flash player.

Since Javascript was enabled, in order to check whether this was a problem of Youtube's site only, I browse to other sites that I know use flash tech to find that I was really unable to watch any Flash content. They all prompted me to download and install the latest version of Adobe Flash Player.

So I visited Adobe's site and tried to get the latest Flash Player online. The key thing is that after installing the add-on, the movie clip that always appear on the site saying that your installation was successful didn't appear at all. Strangely, by refreshing the page -by hitting the F5 key- it did appear. Weird.

So I said, maybe this was just a minor glitch, and opened the video page on Youtube. Unluckily, that nasty message appeared again.

This time, I opened the "Tools" menu of IE8, and selected the "Manage Add-Ons" section. There, I found that the "Shockwave Flash Object" add-on was in fact installed and the version was correct, so I tried to "reset" it by disabling the component, closing the browser, re-open it and finally enable the add-on. No luck!

One final desperate move: just in case, I just opened the following menu on my browser:

"Tools -> Internet Options -> General -> Delete"

and deleted everything. Then, I downloaded the offline installer of Adobe Flash Player from the following link:

http://www.adobe.com/support/flashplayer/ts/documents/tn_19166/Install_Flash_Player_10_ActiveX.zip

And finally, I closed the browser and executed the installer (btw, since the offline installer does the task of uninstalling any previous version of the add-on, I skipped that part and let it do it for me).

When the process ended, I just reopened IE8, visited Youtube again to find this time that everything simply worked just fine!

I don't know if this workaround will work for you, but if you happen to experience a similar situation then just give it a try.

Well, that's it for today. I hope you find this post useful.

Stay tuned,
~Pete

> Link to Spanish version.

Monday, March 23, 2009

WIN OS REBOOT FAILS AFTER INSTALLING IE8

Yesterday I was installing the final version of Internet Explorer 8 on my Windows Vista Business machine and everything went fine until the OS prompted me to reboot.

As this is generally a usual request for new installations of IE, I just pressed the "Reboot" button with confidence.

Here was the inflexion point of my installation experience: after the machine rebooted, and the POST checks succeeded, the monitor's screen got completely blank and the main hard drive just stopped working!!! Not sound, no flashing lead, nothing.

Meaning, the OS was unable to boot; and trust me on this: turning the machine off and on after a while, didn't help at all.

If this happens to you, just don't panic. For some unknown reason -at least, for us mere mortals- the "Master Boot Record" (MBR) of your HDD may have been somehow overwritten during IE8's installation.

Maybe using the installation disks of your OS could work, by selecting the "Repair" option and then let the tool do its magic. But in my case, I used a shorter path.

I cannot assure the method I will describe will work for you; I can only state that it did work for me, therefore USE THE METHOD AT YOUR OWN RISK!

You have been warned now, so read on:

To solve this situation you don't have to reinstall your windows OS (since it's still there on the hard drive); the only thing that you have to do is find a way to write the proper MBR again to your HDD.

To accomplish this task, I searched for an old tool called Max Blast, which I used to execute when I wanted to prepare a HDD (Maxtor or Seagate) for a new Win OS installation or "sort of" repair a faulty disk. In this particular case, my main HDD was a Samsung one but I tried my luck, anyway.

I found on my archives an old Floppy Disk with version 4 of Max Blast, so I used this disk to try to reboot the system.

Then, when Max Blast executed I entered the section named "Maintenance Tools" of the main menu and then selected the option "Update MBR". After choosing the target HDD and waiting for the process to end, I finally rebooted my machine to witness that it fully worked!!!

Windows Vista was booting up again and IE8 was completely installed. Everything just got back to normal. And it only took me like 3 minutes or so to fix.

Well, this is it. I hope you find this post useful ... if you ever happen to find your-self in a situation like this :(

'till next time!
~Pete

> Link to Spanish version.

Wednesday, March 18, 2009

SILVERLIGHT 3 BETA 1 IS OUT (?)

There's no official word out yet but, according to the links posted on the site Next Best Geek, the first beta version of the upcoming Silverlight 3 (Runtime, SDK and Tools) has been released by MSFT.

I have yet no idea what new features are available in this beta but I cannot wait to see what's in it.

Downloading ...

~Pete

> Link to Spanish version.

Friday, March 13, 2009

YES! I'M BACK

Well, after almost two weeks I've finally returned to Montevideo (Uruguay).

I've spent the last few days catching up to get back on track a.s.a.p. So I guess next Monday will be the new beginning of normal working days.

My first MVP Summit was really something and visiting Vancouver is always great. Thus, I hope to repeat the experience next year.

Cheers!
~Pete

-> Link to Spanish version.

Friday, March 06, 2009

SUBMITTING YOUR XNA GAME TO XLCG

Hey guys! I know I told I wouldn't post new articles until I had returned to Montevideo. The thing is that something popped up during one of the talks with the XNA Team in the summit that imvho really needs to be clarified once and for all: the proper way to use each available sumission features in the Creators site (the "main" features).

So this time I`ll be blogging about the guidelines you should follow when submitting a game to the creators club for both, peer review and play-testing. Consider them as part of a brief list of do`s and dont`s or kinda checklist to use before pressing the 'Submit' button.

But first, let`s see the reasons behind these "rules", ok?

First and foremost, act as a serious entrepreneur. In many cases, you deal inter-alia with finances, marketing and even human-resource management so get used to the best practices of entrepreneurship. Thus, even though the word "Community" is used to separate this channel from XBLA, this is still serious business. Period.

When you`re just about to submit a game for the XLCG, you`ll have to honestly answer a few general questions in order to properly assess whether you`re in the right path or not:

  • Is my game ready for commercialization?
  • If I weren`t the author, would I buy this game?
  • What price should I set?

The most difficult part is usually being objective enough. I know, it`s your baby. But you`ll have to make the effort and think over these questions seriously before going any further.

To help you answer those questions, let`s organize the topics a little bit as follows: (I) Type of Submission, (II) Game Description, and (III) Pricing.

I. Type of Submission

Let's go straight into the point: what's "Peer Review" for? I will clarify in what follows what is NOT for: playtesting!!!

Seriously, don't use peer review as means of testing your game in the final market. Not only you will make your peers unhappy about this but also you will lose credibility with your potential and current buyers. A game badly tested may end up in a reduced rate of conversion.

Peer review is meant for games thouroughly tested. The idea behind it is to check whether you self-rated it appropriately or not. It has nothing to do with peers like your game or not. If your game sucks but still, you comply with the rules of submission and rate it correctly according to the reviewers, it will be approved. Simple.

Avoid abusing peer review by testing your games through playtest option. Here`s a great opportunity to test your betas and RCs with the community of peers. Bear in mind that a game submitted for playtesting won`t make it to the XLCG market. One thing though: be reasonable and don`t submit a game for testing when there is nothing relevant to test; meaning, avoid submitting alpha versions. Don`t waste peers` time.

One important note as stated in the creators site: "To help insure the stability and seriousness of the Peer Review step of the Xbox LIVE Community Games process we’re instituting a seven day waiting period for rejected or cancelled games."

Finally, please do not reply/post things like "Who the heck do you think you are to review my game ... ?". Be respectful. Always listen carefully to what a peer has to say: maybe you really learn something helpful. There's no harm intended, believe me.

II. Game Description

There are currently three ways to describe your game: a text description, 4 screenshots and a video.

In order to get the most of these, try to use them all in a proper manner. Think like a pro in marketing. A perfect combo attracks more people to download the demo of your game.

Describe your game in a way that attracks gamers' attention. Tell them in a few words what the game is about. Avoid unnecesary lines like "Best game ever" or "This game will rock your world". Just write down useful info.

Once you get a description worth reading, then enter the screenshots. There's 4 of them, have you noticed that? Use them all. Don't be lame. Screenshots are a convinient way to support your text description, so pick 4 screenshots that really show-off (the most) interesting parts of your game.

Btw, be careful when you create screenshots with too much dark colors in it, since the thumbnails could turned out to lose details. I mean, try to make colors distiguishable for the key areas of the picture and you'll do good.

Don't waste the opportunity to show off how cool your game really is by adding a video. Deem is as a game trailer. Choose its content wisely. Be creative. Make the gamers say "Wow! I need to get this game! Let's buy it now!".

Think as a director creating a tv-spot or a film trailer. Be consice. Present what you're game is about in a way that captures the eyes of the viewer during the lenght of the video.

Just balance the timing. A 5-minute video: way too long; a 1-minute video: not even a news flash. And don't go off-topic. This is a promotional video. It's not interesting for a gamer to see how you created the videogame. Neither it is to show how to complete a whole level.

Finally, there is no way to record a video using XNA in the 360 right now, so in order to avoid using a video camera and center its focus on your screen, you may use programs like FRAPS and grab the action from your PC version of the game. It's a second best, but it could do the trick just fine.

III. Pricing

Tough one. Setting a price for a game is always tricky. Unfortunately, experience in this regard is something that you learn along the way. But there's a few thoughts that you can use:

  • Try set 800 points only if your game is really outstanding,
  • Set 200 points if you believe that is the only price customers will pay for your game, and
  • 400 points is usually ok for the rest of the cases.

One important thing to notice: once a price is stablished, you won`t be able to change it for the following 90 days! So, think twice before taking a final decision here. It could affect your results and figures.

To sum up, here`s a brief checklist for your consideration when submitting a game to XBCG:

Playtest

  • Always use this feature thouroughly before submitting for peer review,
  • Debug and test alpha versions of your game, locally. Playtesting doesn`t release you from that responsibility/duty/task. Thus, try to submit versions of your game that you consider a beta or a release candidate,
  • Releasing new versions to the market even every 7 days could get into the nervs of your current and potential customers. That`s why testing is vital.

Peer Review

  • Don't abuse it!!! This feature is only for games that have been already fully tested and that are ready for commercialization. Otherwise, use playtesting,
  • Think Before Sumit: if your game is rejected or you cancel the sumission, you'll have to wait 7 days before being able to re-submit it. So be careful here,
  • Consider what peers say. Behave. Be respectful.
Screenshots

  • Don't be a lazybones: submit all of the 4 requested screenshots,
  • Watch the colors of each picture: if too dark, then its visibility gets compromised with auto-generated thumbnails,
  • Choose 4 screenshots that really show off your game -specially if you're not submitting a video- as well as complement your text description of it.
Game Trailer

  • Be smart. Think as if you were the director of a tv-commercial when creating your trailer,
  • Watch the lenght of the video: balance the timing,
  • Mind the content of the video: be concise and please don't go "off-topic".

Game Demo

  • Let gamers play a level that really shows off how great your game is,
  • Don`t fill the demo with "Buy-This-Game" screens; bear in mind that if a gamer really wants to buy your game, he/she will buy it, regardless the number of times you make that screen pop up,
  • Also remember that if a gamer has gone through the effort of reading the description of your game, watching the screenshots and your game trailer, and now downloading the demo, this is the crucial time to get a new customer. So give them the best demo they can get.
Pricing

  • Choose the price of your game with care since once stablished it will last for 90 days,
  • Be cautious when considering a change in the price of your game,
  • Remember that this is serious business.

Well, this is it. I hope you`ll find this info useful. As usual comments and suggestions are welcome.

Watch this space!
~Pete

-> Link to Spanish version.

GRANDVILLE ISLAND, HERE I AM!

Well guys, latest times have been really fun and useful.

The MVP summit was awesome: met a lot of people, had lots of fun and a big yes here: got relevant info of what`s comming next.


I cannot tell you what`s next in the XNA world but believe me when I tell you that interesting things lay ahead. Just stay tuned to Kathleen announcements.

In the meantime, you can watch some nice pictures taken during one of the days in the Summit and or the latest XNA Round-Up.

Till next time,
~Pete

-> Link to Spanish version.