Trying to revive this blog. In the meantime look for posts here.
Wow, this blog has been dead for most of the year! Didn’t realize it had been so long since I posted here. There have been a lot of changes for me this year (new house, new job, two new cats). I have been very busy working on great stuff as a NASA subcontractor working with Ruby on Rails and Clojure, but I have still been keeping up with iOS development.
As I mentioned, I started a new job (back in Old Town Alexandria!) and I have begun posting in the blog there. Two articles should be of particular interest: Efficient Delegation using the Objective C Reflection API and Comparing Sprite Kit Physics to Direct Box2D along with a followup – Update: Comparing Sprite Kit Physics and Direct Box2D Simulation Times. These three posts are related to work I have been doing porting Gemini to Sprite Kit, or more accurately, providing Lua bindings for Sprite Kit.
Speaking of Gemini, I have had some interesting queries related to it. Nothing to talk about yet, but I’ll post something here if anything happens.
Recently while developing Gemini I ran into a problem where I broke some functionality that had been working for a long time. Since I didn’t have any automated regression testing in place I did not notice at first and it took me more effort to fix things than it should have. I decided then and there that Gemini needed regression testing. So I started looking for an iOS integration testing framework.
I gave a presentation on Gemini at the Lua Workshop 2012. The presentations were only 30 minutes long, so I couldn’t cover as much as I would have liked to cover, but I think it was generally well received.
I demoed several “levels” and the transitions API (just slide transitions, the page curl has bugs). Getting ready for the presenation/demo forced me to add several things to Gemini and to fix several issues, so if nothing else there is that.
If anyone was there let me know.
I have been busy adding features to Gemini and haven’t updated this blog in ages, so I wanted to add a post about some of the recent work. The two biggest changes I have made are getting physics to work (via Box2D) and adding a scene management API. I’ll talk more about physics in a later post, but for now I want to talk about scene management. Follow the jump to read more.
Just a quick post to let everyone know that I have created a new project for Gemini on github. I restructured the project folders to make it easier to get started with Gemini, so I had to move everything to a new project. The new project is here.
There are also preliminary ruby scripts in the scripts directory that can be used to build the project templates. I’ll post a README.txt in a bit.
I gave a talk about using Lua in iOS projects yesterday at the iOSDevCamp DC 2012 micro conference in Reston, VA. I also gave a brief introduction to Gemini. Mine was the last talk of the day, and judging by the blank look on most people’s faces, I’d say it went great! All kidding aside, it went fairly well, although my timing was way off and I had to skip a bunch of the material I had prepared. Less detail next time, I think.
On the plus side, a lot of the prep work I did for the Gemini portion will be very useful. In particular, I modified the Cocos2D project templates so now you can create a Gemini project quite easily. It even comes with a demo main.lua to show off lines, and animation. I need to figure out how to make all this available via github. Also, I will try to post the slides from the Keynote presentation somewhere.
I have reached a milestone of sorts with Gemini. One of my goals has always been to be compatible enough with the Corona APIs to take advantage of some of the key third party Corona tools. One tool in particular that provides excellent capabilities is the Text Candy library. This library makes it really easy to create great looking text labels and text effects in Corona apps.
In the last few weeks I have made a lot of progress with Gemini and Text Candy. I was planning to write some of this up and show a demo earlier, but then X-Pressive had to go and drop a new version last week, grrrr!. Actually, version 1.0.12 provides one great new feature – it imports Glyph Designer font files directly now that Glyph designer exports to Text Candy Lua format. I have updated my code for this newest release.
Read on to see Text Candy in action on Gemini.
I have been struggling the past week to improve performance in the sprite rendering for Gemini. I am using coscos2d version 1.x as my gold standard. To that end, I created a cocos2d project with a simple sprite sheet and filled the screen with animated sprites. The sprite sheet and the resutling screen shot are given below:
On cocos2d I was able to render 600 sprites at 60 fps on my iPhone 4 in full 640x960 with multisampling enabled (using sprite batching). I might have been able to go higher, but this is all that would fit and seems like plenty for now. Using the same sprite sheet and settings with Gemini I was only getting 47 fps. The screen shot is given below. Visually they are the same, but Gemini is slower.
Keep reading to find out why.
It has been a while since I have posted anything, so I thought I would provide a status update on Gemini. I have devoted much of my (all too rare) free time to Gemini, and I have made some real progress.