Scripting, Forth, Lua, Python, perl, pygame and Land
2005-09-23
I think I finally settled down on the "scripting language" issue. Creating my own uber-cool language, using a simple forth like language, using Lua - so many possibilities, and all with advantages and drawbacks. I actually created 3 own languages and a VM in the last couple of years, and also implemented some Forthes (because it is really cool in a crazy way, ask Madgarden :) ). Never got to try out Lua (yet).But, the solution to it all is for now, I think, python. I originally discovered python as a good bash/perl replacement for short shell jobs. While bash can do simple things, and perl can even do complicated things fairly quickly - in python I can do it even faster and, I can re-use a script I did even months later. Something impossible with perl per definition.
Soon after I realized how easy it was to write small helper apps in python, where I would have used C before. After also using it a bit for Gimp and Blender scripting, I had to realize that python also beats PHP several lengths at web scripting. This whole site runs on python, for example - and has nice, readable, modular code.
So, I guess it was just a matter of time that I'd also try it for games coding :) Since python itself is interpreted and therefore too slow for low level tasks, still need something to do the core stuff. pygame has not enough features and is really slow, and also as Allegro developer, the choice is clear: something Allegro based. And of course, since I'm right now working on Land, I simply make python the scripting language to use with land. That way I still need to finish land, but will also make it useable from python now - if nothing else, it will be a good test-case how to access Land from outside C.
Now, the real news, I started a little example game yesterday. It is a quite simple RTS game, and expected to be finished in a few days at most. It uses pygame, just because I wanted to try it out, but will be translated back to Land later. That also will allow it then to use a 3D landscape instead of the flat board it uses currently, and run at much higher performance.