Edward came over to the atelier and we've been working on adding networking support for the mobile phone clients. We're using his Python software that sits between the clients and the game servers (which are known as "screens"). The clients talk to the "swarm server" natively using WebSockets, falling back to Flash-emulated sockets if the browser doesn't support them, and to AJAX if it doesn't support either. The game server talks to the swarm server using a simple TCP connection.
Okay kid, this is where it gets complicated. Since this is just a throwaway prototype, I'm going to bend a lot of rules from now on to speed things up. For example, the game logic was originally completely encapsulated (in fact I had the full game simulated 'in memory' before writing a single line of graphical code). But now to save some time, I'm going to mix a lot of the presentation logic into those same classes, and do the nasty with member variable visibility.
OK, so I got bored after dinner and decided to plunge on tonight regardless. Mostly graphical changes this hour: now using the Nokia font; made the images larger and redrew them; gave the snakes a different head depending on which way they're facing; added screen glare (to be redrawn later); ensure a certain number of rabbits are available "most" of the time (depending on number of players); and a few minor technical changes.
Hour 2 went well, after a minor technical glitch. The game is now "fully playable", though I've slowed it down to test. Each snake is independently controlled, and has its own colour, name and score. Snakes no longer grow infinitely, they now only grow when they eat a rabbit (which also increases their score). Powerups and skulls decay after a while. When a snake dies, it turns into skulls for a while too. Rabbits are randomly placed every so often. Maybe skulls should be too.
So, apparently you can write Snake in about an hour. I wonder if I've set myself enough of a challenge. Here it is, playing fine. Done so far: snake movement, snakes hitting snakes, snakes hitting themselves, snakes hitting walls, snakes hitting powerups, snakes hitting obstacles, snakes headbutting each other. Next up: scoring and control of multiple snakes.
This Friday there's a video games party at my atelier, celebrating and sharing video games, old and new. I've been meaning to write a new game for people to try out on the day, but of course I've been too busy to think about it and didn't remember until the weekend. Then I got drunk and didn't remember until today.
This is a plugin that adds tabs to the Roundcube settings page, allowing the user to set their vacation message or change their password. Behind the scenes, it logs in to qmailadmin as that user to make the changes. Both vacation and password tabs can be individually disabled.
My presentation to SCOPE will begin in around an hour. If you're watching on the webcast and can't see very well, you can find a copy of the slides below to follow along with.
It's not a Kinect, damnit. But what is it? What are these strange pictures davidc keeps posting, where is it leading, and will he even receive the parts in time?
I'll be presenting my "magic wall" art project next Thursday evening at the next SCOPE session. I'm not even going to try and describe it in text - it seems to defy definition - so come along to Atelier Überall to check it out, or tune in to watch it live.
It's been a long time since I've played with any microelectronics - the last time was about 15 years ago for my A/S level Electronics project with a venerable 1802 processor, already 20 years old at the time. I wired up a massive array of LED matrix displays and had it controlled by an 1802, one SRAM with program code, another with display data, and around 10 breadboards worth of demuxes, ripple counters and drivers. It was pretty dim, but it worked.