Saturday, October 9, 2010

Simulation and fabrication of ingenious mechanisms

That is the title of the seminar I will be leading at Sprout. Sprout is a hacker space founded by three MIT graduates (Nagle, Shaunalynn, and Alec) in Somerville, Massachusetts. For more information see their website. If you live around the area you must check this place out. I found it when I was looking for a place for my son to work on some electronics projects. One of the unique aspects of this place is their eclectic approach to education and technology. You will find a place to fabricate your plans into hard matter and more importantly someone to help you or work with you in almost any field. Wonderful place wonderful people.

The seminar is going to be about simulation, mostly simulation of mechanisms but depending on the participants' backgrounds and interest areas we will be covering a lot of other topics as well. We will look at the simulation process as a vehicle to help us go from math/physics to physical objects. Mekanimo will be our main tool for computer simulation. I will cover the basics of Mekanimo at the beginning of the seminar. We will be using the book How Round is Your Circle as our guide. This is a very interesting and unique book that I enjoyed reading. It will provide us a starting point but where we may end up is going to be up to the participants.

We will be frequently visiting problem solving methodology and computing as well. Learning from failure is going to be another hot topic. Anyone who simulated a process/product and then physically built them could tell you how things almost never work as planned. To be able to identify the reason why it didn't, we need to thoroughly understand the topic at hand. I think failures are opportunities for deep level understanding.


If this sounds interesting to you then join us.

Friday, September 3, 2010

What's in the pipeline

I am currently working on the Mac release. It is a little bit more work than I anticipated. There are some minor issues like widgets not retaining focus, popup menus functioning slightly different, etc. Investigating why things behave different in different platforms is time consuming. I am using Wing IDE and it is helping me a lot debugging. If you haven't tried it yet give it a shot. Not being an experienced Mac developer doesn't help but I should be able to speed up the pace gradually. Of course watching FIBA 2010 is not helping either. I am hoping that creating an installer for Mac is not going to be a major issue but we shall see. By the end of September (more realistically in October) I should be able to start public testing. If you would like to become a beta tester please let me know.

After the Mac release I will add support for Box2D version 2.1. This should be fairly straight forward. After that I will add "Scenes" feature. Currently there is only one scene and this is shown under "Sytstem" in object tree. Scenes can be different things in different context. For example, if you are developing a game then you can use them for different levels, or different sections in the same level. When you climb down a pipe in a Mario game you go to a different place; this would be modeled with a different scene in Mekanimo. "Go to a new scene" will be an action that can be assigned to behaviors. I may be able to add some transition effects like fade-in, slide from right to left, grow from the center, etc. In Box2D terms, each scene will hold a separate world. I haven't decided if I should let two scenes run simultaneously or not. I can think of several scenarios that could use such a feature but have no idea how difficult the implementation would be. Naming conventions is another issue. Should each scene have their own name-space or should they share a common name-space? I can see advantages and disadvantages for both cases. Haven't decided yet.

I have already implemented several widgets like buttons, labels etc. I will add a user interface for adding these GUI widgets to a scene. These will help creating complete games. Speaking of games, I will also add a "Game" object with support for displaying and keeping track of common game elements like score, ammo, health, etc. Game object will hold levels as well. You will be able to manipulate the Game object via the object tree. Once you have a complete game you will be able to export this game as a windows/mac executable or HTML5/Android executable. I am hoping to be able to create some simple but complete games in a matter of hours if not minutes. Sounds awesome eh?

This will conclude the second phase of Mekanimo development. Maybe in another post I will talk about what I am planning for the third phase.