1. I have successfully failed the last Ludum Dare. The theme was Evolution.

    My idea was to make a shooter/roguelike with evolving enemies with evolution path defined by the agressive (or not) actions of a player.

    I’ve spent too much time learning lua and programming the game engine. But I liked what I did. I’m goung to build upon the results and improve this engine. I’ve completely ignored OOP this time. It’s all functions and event maps (actually lookup tables) and that’s great! Gives me a bird-eye view on the inner mechanics of the game.

  2. "Lua 1.0 was developed as a data-description language for Petrobras, the Brazillian oil company. It’s hard to be any more “industrial” than that. PL theoretical features were added gradually as the language evolved — prototypish objects in 2.0, anonymous functions in 3.1, proper lexical scoping and coroutines in 5.0… At this point, Lua is (like JavaScript) a nice fusion of Scheme and Self. But unlike Scheme or Self, it’s never been a “research language” — the focus all along has been on providing a practical, embeddable language engine (a la Tcl). Highly recommended is the authors’ HOPL paper, An Evolution of Lua. Incidentally, one of the reasons (IMHO) that Lua is such an elegant language today is that it has discarded an awful lot of cruft along the way. With each major version, a number of features were thrown out to make way for the “new way of doing things”. This was possible because Lua is typically embedded (so if new Lua breaks your code, just don’t upgrade it for that app), but also (again, IMHO) because Lua isn’t mainstream, and the smaller userbase is more tolerant of breaking changes. Conversely, JavaScript is the mess it is today because it went big so early, and has to support all of the mistakes made in the early days. Also incidentally, one of the defining of features of Lua (all along) that hasn’t been mentioned in this thread is extensible semantics. In Lua, reading from or writing to a table can mean anything you want it to mean. So, lots of fancy features (inheritance, laziness, autocreation of subtables, functions with private state, memoizing, currying) can be implemented by the user in just a few lines, instead of having to be built into the language core."
    Bret Victor

    (Source: lambda-the-ultimate.org)

  3. I’ve spent last day looking for a suitable technology to use in the upcoming Ludum Dare game making compo. A day of c/c++ compilation and breaking through dependency hell.

    I’ve stumbled upon several interesting projects I’ll dig into later. Especially amazing are field and ipython. Both let you do some amazing live coding in python. The first one gives the ability to construct graphical interfaces built into code in a simple graphical interface (sorry :). The second one is a very advanced REPL second only to Lisp/Scheme REPLs.

    The problem is the field is not suitable for games at all and projects made with ipython are hard to package and distribute.

    In the end I found lua based solution and recorded a demonstration of my newly acquired power. I’m amazed to say the least! Watch the video.

  4. Music For Geeks And Nerds

    This is a very promising introduction to music theory for people with programming skill. The examples and exercises are all code, making it easy to experiment and gain insight into the structure of music. The eBook is ~15$ but that’s ok considering there is no other book like this.

    The choice of programming language is Python. I personally don’t use it but it’s easy enough to use in this case. The default python’s interpreter is not too comfortable. It doesn’t have autocompletion, help and commands to save the functions defined live. So you should install ipython. It’s easy, just do:

    sudo easy_install ipython
    

    If you are on a mac and this gives you some strange errors there is a possibility you have installed another version of python breaking the apple’s provided distribution. Just use proper /usr/bin/easy_install

    Also it’s a good idea to run ipython from bash. I’ve tried it with fish and the %edit command was broken.

  5. Something more audible from my hard drive.

  6. Mood Loops

    I have found some audio sketches on my hard drive and released them in a rather raw form.

    My clipped tracks will blow your speakers.

    (Source: soundcloud.com)

  7. This amazing video shows how easy and playful programming could and should be. The technology behind the show is REPL for JavaScript built on top of Emacs. This example makes me want to learn the editor.

    The Emacs is highly interactive and has a built in tutorial. I have completed it and what I have learned is very promising so far. The editor looks like a perfect fit for all my live coding needs until the light table project is mature enough.

    I’m on OS X by the way and you can grab your own copy of cocoa Emacs too at http://emacsformacosx.com

    A very good introduction is available at How to Learn Emacs by David Röthlisberger.

    And if you need some more inspiration the Emacs Rocks! has a lot more.

  8. Two useful functions for fish shell on OS X Lion.

    Recently I’ve stumbled upon a branch of fish shell tweaked to work well on OS X. It was really great but I was missing some neat commands I had in my zsh. I tried to replicate them but failed at first mostly because fish does IO redirection in a different way.

    After half an hour of googling and another half an hour of pulling my hairs while trying to fix a lot of strange errors I succeeded! And here goes the result. To use it put these files into ~/.config/fish/functions/ folder. Create it if it doesn’t exist.

    pfdir.fish will print folder path of the topmost Finder’s window
    pfsel.fish will print the paths to all selected files and folders of the topmost Finder’s window

    Have to say I couldn’t do it without already existing and great oh-my-zsh plugin: https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/osx/osx.plugin.zsh

    It’s definitely worth checking out if you prefer zsh.

  9. Fixed my game a bit.

    Fixed a bug when a player jumps from the ledge to the right. No more annoying error messages!

    Also fixed a several seconds game freeze at the beginning. I had to move from JSON format to TMX format. This library helped me a lot https://github.com/MattTuttle/HaxePunk-Tiled

    I have redrawn grass tiles and they look much better now.

  10. An interesting situation I’ve got playing Hack, Slash, Loot. My game character was stuck inside a cage when my shadowform was dispelled by a monster. The shadowform is an ability which lets you pass through walls. You can see this poor lad in the bottom-right corner of the room. I had to restart the game ending his pity.

    An interesting situation I’ve got playing Hack, Slash, Loot. My game character was stuck inside a cage when my shadowform was dispelled by a monster. The shadowform is an ability which lets you pass through walls. You can see this poor lad in the bottom-right corner of the room. I had to restart the game ending his pity.