Kismet implementation in Codea?

First I’d like to say I love codea it’s amazing and unique piece of software.
Than I just want to share my thoughts about 1 thing that may sometime get implementation in Codea. The idea is simple there is a thing in UDK (Unreal mobile engine) called Kismet, what it allows you to do is to make basic things like movement and some actions (I dont know much about its real possibilities) to be implemented in the game through a simple logical blocks without a single line of code. And I would like to see something like this maybe in a distant future in codea as well. If some of you remember before codea was released a guys from Muteki Corp. announced a Game Studio, an app for making games on iPad which they never released and I think never will, but they were going to make this kismet like visual scripting system along with standard LUA scripting and as the codea is already here I really would love to see something like this.
GameSalad is also a good example of visual scripting implementation but in a different way.

Necessity is the mother of all invention.

Kismet is a complex tool with limited functionality. If there is a programmer working together with a non-programmer (e.g. level designer) and wants him to “program” something, he might perhaps invent Kismet for Codea. Any other programmer will just program the needed logic in code, not visual blocks. I don’t see Codea games going there with the exception of visual programming blocks as part of the game itself, see BattleChips or Cargo-Bot. But I’m bad at scrying.

It is always possible that TLL will implement something like Kismet, or provide some kind of OpenBlocks like visual programming language; but I don’t think that is were Codea is going.

I, personally, like to build data driven programs. Where you have a relatively small “engine” and then all the behaviors come from data structures. For example if I were wring a RPG and wanted to have a door the datastructure might look like:

GameObjects["doorClosed"] = {
	sprite = "Planet Cute:Door Tall Closed",
	isTerrain = false,
	isDeadly = false,
	isPermanent = true,
	isInventory = false,
	isObstacle = true,
	requires = "key",
	isRequirementConsumed = false,
	replaceWith = "doorOpen"
}

So as you can see I have described various aspects that are common to all objects in the game, but I have also described behaviors:

  • You cannot pass though the door (isObstacle = true)
  • To open the door you need a key (requires = "key")
  • You get to keep the key after you have opened the door (isRequirementConsumed = false)
  • Once the key has been used on the door it becomes open (replaceWith = "doorOpen")

You can then imagine what the “doorOpen” datastructure is like.

Learn to write data driven programs and you get the kind of ease of something like Kismet, but much more powerful