Wednesday, April 29, 2009

Wild pockets wins!

I wanted to share with everybody my comparison of Wild pockets engine and Silverlight.
This comparison addresses very specific needs. What I'm trying to compare is the framework's capacity for fast development of single player casual games.


Wild Pockets Silverlight
Plugin installation 0 0 I don't like installing things. I usually don't install anything in my browser that doesn't come from Microsoft, Adobe or Sun. I'm very happy with my Flash player alone.
Development environment 1 0 Just installed one small-sized ActiveX instead of the full stack of Visual Studio + SP + Silverlight tools + Expression Blend.
Environment 1 1 Wild pockets have a nice builder tool to start with. It needs polishing. It lacked a code editor but I liked the ability of using my choice of text editor (Notepad++) for the code. The Visual Studio IDE is far superior though.
Jumpstart 1 0 Open the public gallery and drag objects approach of Wild pockets provides a really fast jump start. Having something running in Silverlight took a little bit longer.
Examples 1 1 The number of examples available in Wild pockets is pretty limited but the open in builder link was very useful. On the other hand, Silverlight has many examples posted everywhere, it's just a matter of downloading the files.
Reusable components 1 1 Wild pockets offer a limited but very usable gallery of components. The quality is not very high but this will probably change when they begin monetizing the environment. Silverlight in the other hand is backed by multiple libraries (see codeplex.com)
Creating components 0 0 I didn't like not being able to "draw" in either of them. Silverlight at least has the Expression Blend, but I didn't like the XAML thing.
Importing resources 0 1 Wild pockets has a pretty limited uploading interface and for 3D objects it only enables you to export them from Maya or 3D Max using their custom exporters. Visual studio allows you to reference dll or use any other file that will be packed at build time.
Built-in features 1 0 Wild pockets has a nice phisics engine and an average 3D renderer. I experimented with the beta particle engine. It was nice having all this out of the box. Input handling was pretty easy from keyboard, but a little bit more challenging from the mouse. In Silverlight you either do it yourself or get libraries from around.
Programming language 1 1 I liked the scripting approach and I picked Lua very easily. Microsoft opted for typed languages (although IronRuby may be coming) and all related pros and cons. I like the ability of choosing VB or C# and I really like the later.
First prototyping 1 0 After studying some examples I started my own project. I got the Wild pockets prototypes working really fast. It took me a while to figure out how Silverlight really works.
Documentation 0 1 The build in documentation in Wild Pockets is just ok and not being able to browse it and search from the browser got me angry. The documentation and tutorials are faulty and outdated. The code completion feature of Visual Studio, MSDN and Google provide enough documentation to make me happy.
Power and performance 0 0 Wild pockets slowed my machine when I had many things going on. The collision detection requieres heavy processing power and the particle system reduced my frame rate too much too often. Silverlight 2D vector drawing was fast enough but limited.
Stability 0 0 Both crashed my browser several times. Wild pockets even gave me a BSoD before I updated my graphics driver.
Building 0 0 Wild pockets is interpreted but one needs to save and let the system upload the script file to the server. Silverlight needs to be compiled. Drawn here.
Learning curve 1 0 In one week I learned Wild pockets, got my prototype working and in a couple of weeks I cleaned it enough to be satisfied with the results. I haven't got a working prototype with Silverlight in the same time.
Capabilities. 0 0 Both are limited. I like 2D games and it was tricky getting it working with Wild pockets. Silverlight in the other hand is 2D only excluding a bunch of other people.
Game development 1 0 Clearly Wild pockets is aimed at game development making it very easy to get a game working. Silverlight is more generic allowing it to be useful for a wide range of tasks non specific to game development.
Ownership 0 1 I have the sources of my Silverlight apps stored in my computer and I will publish a binary file on the Internet. In the other hand, Wild pockets has all my source files and resources in their server.

Conclusions: Gather your own. I have many coming soon.

Tuesday, April 28, 2009

Wild pockets vs Silverlight

I've been trying to port the games to Microsoft Silverlight.
It was then when I discovered how sweet the Wild pockets game engine was and how complicated Silverlight happened to be.
It still needs to overcome the penetration of the Flash plug in but who knows what's going to happen in the future.
You can play the Silverlight attempt here:
http://www.valls.name/content/games/tanksilverlight/
Note: Click on the slider to enable the keyboard input. Same as the Wild pockets game, arrows and space.

Final product!

And here are the completed games:

Thursday, April 9, 2009

Map editor

Piece of advice. Follow the recommendation from the designer diary. Use some kind of "map editor" to create your levels.
My approach: I had functions to generate the different towers. Then functions to generate the levels and finally a "renderer" function that created and placed all the blocks onscreen. This way I was able to easily plug this renderer function in and out and exchange it for a command line one for quick debugging.

My world editor in action screenshot.

And the source code for the level creation is as clean as this:
function createlevel()
x =worldmin + 20 * level
if level == 1 then
for k,v in pairs(towere(x,height)) do create(v,false) end
elseif level == 2 then
for k,v in pairs(tower(x,height)) do create(v,false) end
for k,v in pairs(tower(x+2,height)) do create(v,false) end
create(block(x+1,(height+1)*2,BENEMY),false)
elseif level == 3 then
for k,v in pairs(tower(x,height)) do create(v,false) end
for k,v in pairs(tower(x+2,height)) do create(v,false) end
for k,v in pairs(tower(x+4,height)) do create(v,false) end
create(block(x+2,(height+1)*2,BENEMY),false)
elseif level == 4 then
for k,v in pairs(tower(x,height+1)) do create(v,false) end
for k,v in pairs(tower(x+2,height)) do create(v,false) end
for k,v in pairs(tower(x+4,height-1)) do create(v,false) end
create(block(x+2,(height+1)*2,BENEMY),false)

GUI Elements

In order to make the games more playable I added some instructions.




And some GUI elements for representing game status

The health of the Bounce game is drawn on top of this icon.

Wednesday, April 8, 2009

A catchy spash screen

What do a great game need? A great splash screen!



Tuesday, April 7, 2009

First games

The first games were created rather quickly and were ready for submission.



Screenshot of the first Bounce game.

Monday, April 6, 2009

Always have game ideas in mind


Those are some additional sketches I made about another (maybe future) game.

Sunday, April 5, 2009

First games

The first games were created rather quickly and were ready for submission.

Tune up your games

After you have a working prototype, there is always some fine tunning to be made.

Graph paper was very useful when designing the levels in order to accurately place the enemies for the Bounce game.

Saturday, April 4, 2009

Game sketches

First thing, always, start with some ideas.
Those are early Tank game level designs done after some prototyping.
Bounce game first sketches.

Bounce'em Down Game

Bounce Widget