Thursday, August 23, 2012

INTERVIEWING DEAN DODRILL, CREATOR OF “DUST: AN ELYSIAN TAIL”

What’s the dream of game developers like myself? To get an opportunity, even the slightest one, to publish your own game title on the big leagues. That game that you always dream of creating from scratch. Your masterpiece. Your 9th Symphony …

Some of us, generally “indies”, even dear dream of watching that game become a success once it goes gold. The kind of success that allows us to officially become part of the Industry from that moment and on with a critical mass of loyal gamers waiting for our next tiles with sincere smiles of joy on their faces.

For Dean Dodrill, creator of the acclaimed game entitled “Dust: An Elysian Tail”, the dream has become a reality.

For those of you who still don’t know, Dean’s game (Dust: AET) was the grand-prize winner of the Dream.Build.Play contest held back in 2009. Recently, the game went gold on the Live Arcade marketplace  for the XBox 360 console (“XBLA”), as a part of the Summer of Arcade 2012 promotion (“SoA”).

As soon as the game got released, it received (and still does) lots of positive reviews, articles, kind words from buyers, a zizillion of tweets and FB posts, and ratings varying from 8.5 to a perfect-10 score.

Most of them, like this interview with the guys of IGN’s  Podcast Unlocked (which I recommend listening to), focus on the story behind the creation of the game and the game itself, from the perspective of gamers.

So, since the game was fully developed with C# and XNA, being a strong supporter of both technologies for years, I decided to try luck and interview him from the perspective of an indie XNA'er.

Well, … guess what? Dean kindly answered all of my questions, so be prepared to read his responses after watching the launch trailer of his game.

Ok, we’re back. Before posting the interview I want to thank Dean publicly for accepting the interview and taking the time to answer all the questions.

Now, enjoy the reading …


Q: Are sells going as you expected? I mean, I don’t want to know the figures; instead, I want to know whether they have reached a point where you can continue developing games professionally (you know, to continue living the dream) or not (= it contributes to make you family’s life better for a while but it is not enough to go beyond).

A: It’s a little early to determine how well sales are going, but I do believe the game will allow me to continue game development, at least at the scale I’m currently working on.

Q: How was it like using the XNA framework –from and artist viewpoint, given your lack of programming experience? (I mean, pros and cons) Which features do you love for C#/XNA to have built-in (I mean, that lacking feature that forced you use a workaround or take a programming detour)?

A: Since I’ve never programmed with anything other than C#/XNA I can’t really compare it to other languages. I will say that I found it fairly easy to pick up, and since much of my code resulted in some sort of visual feedback in the game, iteration was fun. Garbage collection on the 360 was always a hassle, but I loved many XNA specific niceties, such as SpriteBatch and streamlined gamepad support. I also love XACT and how relatively easy it was to work with audio and effects. If I could help I would continue working with XNA exclusively.

Q: Which features of the extended XNA APIs for Live Arcade did you use? Again, how was it like using them?

A: I did have to use the XNA extensions for XBLA, and admittedly most of that was a hassle. The biggest issue is that most of it is poorly documented, and there were always certification issues which were inherent of XNA. Integrating Leaderboards and Achievements was one of my least favorite parts of the process. I definitely got the feeling that XNA wasn’t created with XBLA in mind.

Q: Given that you got a contract with MSFT, do you still own the IP rights of Dust: AET? Did you receive financial advantages, like not having to pay for (re)certification) and or dev/test kits? (if you can comment on it, of course)

A: I do own the IP to Dust:AET, but of course have signed an exclusivity period with MS. MS helped with testing and localization, and assigned me an excellent producer who helped push the game through the system (as well as offered valuable design suggestions). It’s a mutually beneficial agreement, otherwise I can’t go too much into details.

Q: Are you planning additions/extensions to the game? Say, now that you met the deadline for Summer of Arcade, you want to add that feature that stayed behind and would have loved to develop for the release by “unlocking some extra time”?

A: I haven’t given much thought to anything like DLC. Thankfully I didn’t have to cut anything to meet the SoA deadline, it was just a matter of compressing the schedule down and working VERY hard for a few months. Given more time I would have liked to polish a bit more, but that’s the curse of any project I’m sure. I do have plans for future games in this universe, but nothing to announce at this time.

Q: Are you planning to port the game to other MSFT platforms like WinPhone8, Win8 and the Surface? (for instance, by using Monogame or ANX).

A: MS and I haven’t discussed anything outside of XBLA at this time. I was honestly so busy focusing on the XBLA release that I hadn’t considered a port. If anything pops up I’ll be sure to announce it, but XBLA remains my focus as of this writing.

Q: Thanks in advance for reading, your response and for such a great XNA game which serves as a great inspiration for us, indies.

A: Thanks for the interview, Pete.


Game Description:

Immerse yourself in a gorgeous hand-painted world on a search for your true identity. As the mysterious warrior, Dust, your action-packed journey will take you from peaceful glades to snowy mountaintops and beyond. At your disposal is the mythical Blade of Ahrah, capable of turning its wielder it into an unstoppable force of nature, and the blade's diminutive guardian, Fidget.

Battle dozens of enemies at once with an easy-to-learn, difficult-to-master combat system, take on a variety of quests from friendly villagers, discover ancient secrets and powerful upgrades hidden throughout the massive, open world, and uncover the story of an ancient civilization on the brink of extinction as you fight to uncover your own past.

  • Take control of Dust, a warrior searching for his true purpose, as he joins forces with the mystical Blade of Ahrah and its guardian, Fidget, to save the world of Falana from an army unlike any before it!
  • Explore an incredible hand-painted world!
  • Match wits and weapons against challenging monsters!
  • Take on side-quests from a cast of colorful, fully-voiced characters!
  • Craft dozens of items and discover Falana's rarest treasures!
  • Compete against your friends' high scores in ranked Challenge Arenas!

Nice interview, don’t you think?

Not only is the game fantastic but also it may help developers finally understand how powerful C# could be when coupled with a fine tech like XNA, despite unavoidable performance differences with native bits, when you use the tech right even as a one man band (like in Dean’s case).

It’s a pity that many devs (pro and indie) still deem XNA as a tool for kids and hobbyist, only, and don’t give it an opportunity. And what is worse, it’s a shame that MSFT –at least for what is publicly known so far- won’t update it any longer

To wrap it up, Dust: AET shows off a quite enjoyable gameplay, incredible art as well as the mechanics behind its 2D environment, like skeletal animations, particle systems, input combos, shaders, to mention just a few.

So, what are you waiting for? Go and buy it now!

Cheers!
~Pete

Wednesday, August 22, 2012

DBP 2012: TOP 40 FINALISTS

The list of top-40 finalists for this year’s Dream.Build.Play contest has been published.

Top-20 finalists for the XBox360 console:

https://www.dreambuildplay.com/main/winners.aspx#winnersXbox-tab

Top-20 finalists for the WinPhone device:

https://www.dreambuildplay.com/main/winners.aspx#winnersWinphone-tab

You can read on the page, the following:

The games received for this year’s competition were phenomenal.

It could be, but imvho, compared to previous years, and at least for the 360, there is no game that stands out that much this year visually like The Dishwasher: Dead Samurai, Dust: AET, among others, did in previous compos.

I always wondered why this game was never awarded a prize on DBP 2011. If they had submitted the game again for this year’s compo, they would have run for the 1st place. Its gameplay video looks fantastic:

I hope MSFT eventually gives these guys a chance to get an XBLA-publishing contract even if they didn’t win or make it into the final round.

Having said that, congrats to the finalists of DBP 2012!

Cheers!
~Pete

Monday, August 13, 2012

.NET MUST DIE … TO GO OR NOT TO GO NATIVE …

… is that the question? … not really.

From time to time I dare ask technical questions to experts in the fields of native+managed worlds so as to better understand the differences, performance-wise, between code originally written with a native language like C++ and “native images” of code written with a managed language like, as of today, C#.

Due to the novelty around the resurge of C++ due to revision 11, in one of my latest Q&A adventures, I dared ask Alexandre Mutel about eventual penalties –if any, of calling a wrapped operation in C# once the assembly gets compiled ahead of time with NGen (or its Mono equivalent, AOT compilation). Like, say, the following:

[DllImport("SomeDLL.dll")]
public static extern int SomeOperation(int h, string c, ref SomeStruct rStruct, uint type);

[For those of you that still don’t know him, Alexandre Mutel is the creator of, inter alia, SharpDX: “a free and active open-source project that is delivering a full-featured Managed DirectX API”, which is currently leveraging the DirectX-side of projects like Monogame and ANX, among others; being imvho the perfect choice for those of us who don’t want to go back to C++ and once embraced the old ManagedDX solution that then was called off by MSFT in order to give birth to XNA a few months later].

I won’t dare claim that Alexandre posted this impressive article because of my email question (or my prior request of DirectMath support in SharpDX due to SIMD), but I must admit that it vanishes any doubt I might have had in the past in that regard and leads me to concur that .NET must die.

In his article, Alexandre mentions an interesting detail, or fact if you’d mind, when speaking of a managed language:

… the performance level is indeed below a well written C++ application …

… and also that:

… the meaning of the “native” word has slightly shifted to be strongly and implicitly coupled with the word “performance”.

He also references two articles about the real benefits of better Jittering:

And a finding on Channel9 forums, indicating that MSFT is hiring to create a unique compiler to be used on both, C++ and C#.

So, after reading all of the above-mentioned material, if you have reached a point in you programming life where you do search for performance over safeness, is still the real question whether you should go native?

Imvho, the question has then turned into “how”.

The fact that a native solution gives the performance level you are looking for, does not mean that you must only use the C++ language. Even with the additions found in C++11 (a few of them that could have arguably stemmed from managed languages), it still has a cumbersome and unfriendly syntax.

Or what is more, does neither mean that you won’t be able to use a language like C# to get an optimized native application for whichever platform you need (even the Web).

If in order to get native bits we should always stick to “low-level” languages, then we had never moved from both Assembler or even binary notation towards C and all of its offspring. The evolution of hardware and compilers, made eventually C++ a better choice than ASM for performance-oriented apps, given that, marginally over time, the penalty curve was decreasing to an extent that it became irrelevant for native programmers.

Therefore, what if you can get rid of Jittering (being replaced by a fully performance-oriented LLVM compiler) and still have an efficient GC for cases when manual memory (de)allocations are not needed?

Much as I hate Objective-C, due to its ugly syntax, its newest versions for the MAC (and lately, the iOS) platforms offer LLVM native bits with GC.

And what about a more friendly language like “D”, instead? Latest evidence leads me to believe that C-based languages are moving towards its direction.

My point is that going native does not necessarily mean that all  the memory management of your program must avoid a garbage collector for efficiency. Nor that you have to use languages with cumbersome or unfriendly syntax to get the most of efficiency. It depends mainly on how compilers and memory management tech evolve side by side to get the most out of the target platform, how unsafe you can go with a given language where and when needed, and how much penalty-free you can call native operations from external binaries.

For instance, even though its limitations, you can do some unsafe programming with C# (fixed, stackalloc, etc.). The problem is that this feature is not allowed for all platforms (like WinPhone7), and in some platforms the set of operations is limited (i.e.: stackalloc is not available on the Compact Framework for the XBox 360).

And again, the D language seems to provide a friendly syntax (close to C#) while offering a power similar to C++.

Personally, I feel quite comfortable with C#; let’s be real here for a moment: I won’t be creating a Halo-like game any time soon, but I don’t want to go back to C++, say, to consume DirectX11 APIs. Having said that, I really hope C# evolves in a way that arguments from “native” programmers become trivial and the industry embrace it (as once embraced C/C++ to minimize the use of ASM). Evidence shows C# will evolve in this field, but as usual, time will tell …

To wrap it up, does going native imply that .NET should die so that a syntax-friendly language like C# would survive? …

Short answer: yes (or at least, as we know it today). Long answer: read all of the links provided in this post and see it for your self ;)

My two cents,
~Pete

Saturday, August 11, 2012

THE DARK KNIGHT RISES: 6 OUT OF 10

Finally I had got some time to go out and watch the final chapter of the Batman trilogy in Montevideo.

First of all, thanks to Nolan and all the cast for giving back the dignity into the character on the screen! (indeed, compared to everything before Nolan’s view of Gotham, his trilogy is great).

Now, I’m not going to talk here about any eventual loose ends, inconsistencies, speculations, deux-ex-machina, mythology and what not. Instead, I will mention two things: first, why I am not giving this film 10, and second what I would love to see in the future.

About my 6-out-of-10 score for the film:

  • Batman is not presented as the world’s greatest detective.
  • Batman exposes himself a lot in open spaces in the City, what goes against his ninjitsu training on the league of shadows.
  • Bruce Wayne is always doubting of his role as Batman (in the comics he knows what he has to do and never doubts about becoming the Batman).
  • There is no balance between action and quiet moments. In fact, there are many sequences with no action to unveil the plot that could have been short, and long action scenes with little interaction among lead roles (like Batman and Bane who could have got more encounters during the film, imvho).
  • Bane is presented as a bully with a nonsense purpose, whose lines sounded with a strange intonations (what is more, his plan also resembles the Joker’s).
  • No fight scenes between Talia al Ghul and Catwoman.
  • Why waiting months to destroy Gotham? It’s just equivalent to “monologuing” …
  • Supporting characters with no added value to the film.

I could go on with my list but I won’t because I like the fact that this time the films are serious about the character.

Now, if a new director shows up with a new vision, please:

1) Stop with the trend of villains with chaotic goals.

In past Superman films, Lex Luthor was presented as a madman with just a fixation with land (even if it’s alien), instead of being presented as a controversial businessman plus scientist with a double agenda for the sake of power and global domination.

The same happens in Nolan’s trilogy with everything related to The League of Shadows, the Joker and Two face. They all seem to have something to prove but in the end they are just breaking havoc.

In short, not everyone has to go mad or become a freak to be a villain in a movie.

For example, The Penguin could be a can high-society mobster that trains birds for deadly tasks, whose umbrella is just a gun in disguise (like a blade inside a stick).

Btw, I would love to see actor Jonny Coyne (Alcatraz’s warden) as The Penguin:

2) Let the Batman be the World’s Greatest Detective.

Besides the incredible gadgets, his strong spirit, determination, and his fighting skills, Batman is the world greatest detective. He moves in the shadows avoiding open scenes.

And please, as a side note, find someone with a voice that does not have to force it to sound fierce.

3) Stop with that line that everyone can be Batman.

Bruce Wayne is the one and only Batman. Period.

Many can wear the cape for a brief period of time even in Comics, but none gives Batman the right touch of presence and solemnity.

Why not adding more characters like Nightwing?

Ok, I can give it that Robin could make things less realistic and prone to guess who the man behind the mask is, easily. Unless you don’t treat them as fulltime sidekicks of Batman but independent heroes them-selves.

4) Write a storyline that can lead to a Justice League film.

If the original Batman is dead, how can this impact on an eventual Justice League film? In particular, what about the legendary friendship between Clark and Bruce? They are not just co-workers. They are friends -despite their different approaches to fight crime for the sake of justice, who trust each other (please, do not remind me of the kryptonite bullet here).

5) And stop with unnecessary roles.

Focus on the lead characters and real supporting ones. Avoid wasting time adding roles that do not add relevant value to the storyline (like Deputy Commissioner Foley and or Bane’s wingman; I am not talking about the actors here –who are great- but the roles them-selves).

Ok, enough words.

To wrap it up, I enjoyed the film and the trilogy but I didn’t fall in love with it. In fact, even with all the flaws one can find in The Avangers movie, I still like it more than TDKR …

My two cents,
~Pete