Programming


As I’ve been getting started with Android I decided to take some notes. What follows is something I wrote down as I was working on getting a first sample to build and download from Eclipse using ADT. I followed the instructions from Google and tried the troubleshooting directions. My platform is OpenSuse 10.3 Linux. This note might be helpful if you’re trying to develop for Android.
Read the rest of “When Android doesn’t Launch your application”…

Getting an error code back when a Lua script dies is actually pretty straightforward. Use lua_pcall() or one of its relatives to call the script and the return value will tell if there’s been a run time error. Read the rest of “Catching Errors when your Lua Script doesn’t start”…

I wrote a program a little while ago that draws a Hilbert Curve. Really all I did was adapt the Java source code that’s on the Wikipedia page talking about the curve. That Java source used a class called SimpleGraphics that I’m not familiar with. I wanted to use SDL in C++ for my program. It was easy enough to convert the Java code to C++ but to do the drawing I decided to just implement a SimpleGraphics class in C++ that uses SDL to perform the actions that the program needs.

Since then I revived my interest in integrating scripting with C++ and pulled a Lua interpreter in to that project. Now my program loads a Lua script and executes it. The Lua script has access to the SimpleGraphics class that I wrote. Now that the script interpreter works and can call the drawing methods I decided to take the algorithm for drawing the Hilbert curve and implement that as a Lua script. It was actually pretty easy. The resulting source code works as a sort of Rosetta stone for the three languages.
Read the rest of “The Hilbert Curve in Javal, Lua and C++”…

I took a little break today from the C++ and Lua stuff I’ve been doing to have a look at Google’s new phone platform. I followed the installation instructions and had some demos up and running pretty quickly. I also grabbed the source and poked around to see whose shoulders they stand on. I saw QEMU source, SDL source and they distribute the source for the Linux kernel that they’re running.

The installation instructions worked fine for me on my Linux box, running OpenSuse 10.3 and Eclipse 3.2 that I installed via Yast. I ran in to one hiccup, when I first installed the ADT Eclipse Plug-in the extra options for it didn’t show up in the Preferences Dialog where they should. I had to check a couple times to make sure that I had installed it correctly but it showed up where it should in Help -> Software Updates -> Manage Configuration.

I started looking at the other options for building projects then realized that I didn’t have an Ant view in my Eclipse. So I went looking for where that comes from and I decided I needed to install the JDT Plug-in via Yast. Most Eclipse users probably already have the Java Development Tools (JDT), I think it’s part of most installations, but I haven’t been using Eclipse on this machine yet. After that I had the Ant view and the Android plug-in showed all the options it should. I set the SDK location and was able to create Android projects just like the directions describe.

It’s easy to get excited looking at this SDK. I tried out a couple of samples in the emulator. The connection to Google Maps is pretty impressive. I also see configuration options for XMPP. I’ll have to see if I can talk to a Jabber server on my machine and do something interesting. Maybe I could try a little Java game, I’ve done some SDL. It’s hard to choose what direction to go in but I feel like it’d be a shame not to build something of my own with all this great code to start from.

I glossed over the fact that my program crashed at the end of the script in my post on hooking up Lua to a C++ application. I new at the time I posted that there was a memory problem in calling the SimpleGraphics destructor but what I didn’t realize was that the problem was actually caused by the difference in the declaration of the SimpleGraphics class between the header file that the C++ program sees and the declaration that the SWIG-generated file sees. Here’s the one that gets compiled in to the C++ application: Read the rest of “Ooops - A SWIG Interface Correction”…

I closed off my last post about adding Lua to an SDL application saying I’d look at a tool to do the bindings for me. I actually already had something in mind for the job. I looked at a couple but SWIG seems to be the most versatile. It’s not tied just to Lua so the work I put in to learning how to use SWIG will also apply partly to any other scripting languages I want to support. Any within the realm that SWIG supports, of course. Notably missing from the list so far is Javascript. Scheme is represented in the form of Guile (which is a specific Scheme interpreter as far as I understand).

The documentation for SWIG is pretty sizable but of course with all the combinations of host & script language out there they aren’t all explained clearly enough for a beginner like me. So I started to experiment. SWIG focuses on wrappers for C, C++ support seems more complex. So to understand things I had to scale back even from my simple SDL C++ test program then scaled back up once I got some communication between code written in both languages.
Read the rest of “Using SWIG to connect C++ to Lua”…

I’ve been poking around with a couple C++ programs recently and I started thinking again about how cool it is that you can hook in a scripting language. I’ve wanted to try setting up scripting for a few programs in the past but it always seems too far removed from any one project. This sounds kind of abstract, more concretely I’ve been thinking about scripting behaviours in a game or exposing a script interface from some simple graphics program.

Lua’s a popular scripting language for games. It’s used for add-ons in World of Warcraft and I’ve heard it brought up over and over again at the Game Developer’s Conference. I tried a short example of Lua a while back but I never went back to write any real code with Lua. Since the license is so liberal and writing a little Lua would help me out writing WoW macros and add-ons, I decided Lua would be a good place to start - have a look at yesterday’s post about setting up an SDL project in Visual Studio.

Next for the test harness. I took some code to draw a Hilbert curve from Wikipedia about a week ago and converted it into something roughly equivalent in C++ using SDL. The code compiles and runs under Linux (I used KDevelop) or Visual Studio 2003. In the code I implemented a SimpleGraphics class which takes an SDL surface and gives some methods to draw lines on that surface. The HilbertCurve class uses a SimpleGraphics object to do the drawing. I decided this little program would be a great candidate to get scripted.
Read the rest of “Starting a Simple Example using Lua and SDL in C++”…

Next Page »