KoboldTouch: MVC Wrapper For Cocos2D

On October 4, 2012, in idevblogaday, Kobold2D, KoboldScript, by Steffen Itterheim

Here’s what I’m working on. Hopefully this answers the questions I’ve been getting, in particular those about KoboldScript. And what’s happening with it, when is it coming, when can we stop using Corona SDK, etc.

UPDATE: KoboldTouch is now available!

Well then, let’s start with …


Huh, what?

Well, the short answer is: KoboldTouch is an MVC wrapper around Cocos2D.

The long answer … let me start by saying that Cocos2D is suboptimal. From a code architecture point of view. Cocos2D has no concept of structure besides views (nodes), and doesn’t encourage structure in your own code. It happily lets users subclass views in order to add data and game logic.

I can’t stop but feel helpless to see beginners learning the things we’ve abandoned 20 years ago as bad practice. Yet Cocos2D code is written by subclassing views as if it were the most natural thing to do. It’s also the very thing Apple tells you not to do.

The result are projects lacking in what is called separation of concerns. It’s not just about experience. Without a clear architectural model frequently reminding you to consider separation of concerns, anyone is more likely to end up creating a blend of design patterns at best, or worse:

Continue reading »

KoboldScript Status Update

On June 24, 2012, in KoboldScript, by Steffen Itterheim

I think it’s about time to issue a KoboldScript status update. KoboldScript is Lua scripting for cocos2d, in case you didn’t know. In the near future it’ll be released as part of the KoboldScript Game Kit project. I showcased KoboldScript before here and here.

Static bindings, manual labor

One big advantage of KoboldScript over other script language solutions available for cocos2d is that the KoboldScript binding is static, ie it is done at compile time. There’s very little runtime overhead to it, thanks to SWIG. So in terms of performance it’s miles ahead of Wax, LuaCocoa or other dynamic scripting language bindings like JSCocoa. And it is compatible with both Mac OS X and iOS.

The big problem with static bindings is that you have to somehow define each class, each method, each property and write lots of glue code. In the past, I did this manually. It involved writing a C wrapper method for SWIG and usually an Objective-C dispatch function went along with it. On the Lua side the function needed to be registered as well. It’s an error prone, repetitive, boring task. Perfect for code generation!

Continue reading »

Tagged with:  

Here’s a crazy thought: with commercial game kits (game source code products) being popular and financially rewarding – why not crowd-fund an iOS game by selling it’s source code, resources and development insights while you’re creating it?

Marcus and I will give this idea a spin. Marcus is a game designer I worked with at Electronic Arts Phenomic for 6 years. I’m sure you know me. Together we’re going to create a tilemap-based physics game using cocos2d and KoboldScript (Lua scripting for cocos2d). And we are going to sell everything we’ll create practically from day one.

If that sounds even slightly intruiging to you, we’d love to get your feedback!

Visit the launch page and take our survey which has already helped us tremendously to focus on what’s important for you. For example I’ve converted the entire KoboldScript library to use ARC seeing how important ARC is to you.

But do keep on reading for more details …

Continue reading »

LearnCocosTV 7: Tic Tac To Lua

On March 12, 2012, in LearnCocosTV, by Steffen Itterheim

A presentation about KoboldScript with a demonstration of a Tic Tac Toe game with Scene changes and transitions. You’ll see more KoboldScript code and learn more about its key concepts in this episode.

Episode #7 – Tic Tac To Lua

• KoboldScript Demo #2
o Tic Tac Toe
o Presentation
• iDevBlogADay: Donations
• Angry Ninjas Starterkit

Tagged with:  

LearnCocosTV 6: One Small Script for Man

On February 27, 2012, in LearnCocosTV, by Steffen Itterheim

In this episode of LearnCocosTV I demonstrate how to write and animate a Cocos2D scene with KoboldScript.

KoboldScript is more than just writing the same Cocos2D code but with a scripting language. Most other scripting language bindings for game engines simply translate the game engine’s C/C++/Objective-C API 1:1 (more or less) without introducing new concepts, adding more comfort by simplifying common tasks, or utilizing the powerful features of whatever the scripting language has to offer.

KoboldScript goes three steps further than that – one by tightly integrating the setup of scenes via defining the node properties in a tool-friendly tree structure (Lua table) that you can both write manually or create programmatically using Lua’s built-in features.

Two, by using Statemachines to drive game logic while also providing free Lua scripting via user-specified Lua callback functions. And three, by adding a (MVC-ish) component system with re-usable abilities and behaviors to all Cocos2D nodes.

Unfortunately I ran out of time at the end so I couldn’t even say goodbye. I hope you don’t mind. :)

Episode #6 – One Small Script for Man …

• KoboldScript Demonstration
o How to create Scenes with Sprites, etc
o How Abilities & Behaviors work
• iDevBlogADay: Asynchronous Texture Loading
o Cocos2D Webcam Viewer speedup

KoboldScript Koolness, Part 1

On February 18, 2012, in Kobold2D, by Steffen Itterheim

I thought I’d post a very early result of the KoboldScript scene setup. This scene was scripted entirely with KoboldScript with about 50 lines of code:

Below you’ll see the part of the Lua script that created this scene. In fact it’s not so much code as it is defining data, which behind the scenes calls the node functions like setPosition and setColor for you.

Continue reading »

Tagged with:  

LearnCocosTV 5: Pretty State Machine

On February 13, 2012, in LearnCocosTV, by Steffen Itterheim

KoboldScript is coming! KoboldScript brings Lua scripting to Cocos2D and Kobold2D, with Objective-C performance for the StateMachine part and faster-than-Wax performance for the runtime Lua functions.

More details and first looks at some early development scripts in this LearnCocosTV episode. I’ll have something more visual to show in 2-4 weeks.

Episode #5 – Pretty State Machine

• KoboldScript: Lua Scripting for Cocos2D & Kobold2D
o Poll: Which scripting language for Cocos2D?
o iDevBlogADay: Text Editors for Lua
• KoboldScript combines:
o Lua StateMachine generator (full ObjC performance)
o Runtime Lua functions (faster than Wax)

Continue reading »

Tagged with: