Print Page

Monday, February 22, 2010

Silly Project Time

A lot of my first forays into a new language or bit of computer tech have been been through personal projects that scratch an itch for my gaming hobby. Wargames and RPGs have a near endless appetite for data munging, presentation, and storage. Generating ship charts for Fletcher Pratt's Naval Wargame was probably my first BASIC project on my dad's Altair 8080, and I got my first lesson in design when Dad looked over my program that took all night to calculate and print out a ship and showed me how to get it down under an hour. I still have some old Runequest character sheets printed out on that daisy wheel printer or photocopied from a printout. Back in the 80s HyperCard was AMAZING for a gamer who'd been struggling with learning a more serious language in off hours aiming at getting a lot less for the hours spent. I built full campaign support spread across a bunch of HyperCard stacks- world map with points of interest hotlinked to town & castle maps and dungeon modules, characters, dice, treasure and encounter generation, record keeping, sound effects recorded on the MacRecorder, and even down the hall dungeon pics in beautiful black and white dithered 640 x 480. I learned a fair amount of Rails experimenting with projects that didn't get as far.

This month I'm going to start another project in this vein.


Game side

Three RPGs have settled on the top of my bookhenge next to the bed. "diaspora" (yes, it is uncapitalized on the cover) is a hard-ish SF game that uses the lightweight FATE system used to such good effect in Spirit of the Century, descended from the FUDGE system. Think Traveller but with a fast and loose system aimed at storytelling. Savage Worlds is another lightweight system that aims to be a GURPS-like modular rulesbase for building games in all sorts of genres, with quite a few different settings using it both from the original publisher, Pinnacle Entertainment Group, and many licensees. The third is Barbarians of Lemuria, Swords and Sorcery Fantasy ala Howard's Conan or Lin Carter's Lemuria stories, done with an interesting, lightweight 2D6 based system.

Project concept
So I'd like to set up a game master's database and probably some character generation and possibly some world generation/political conflict simulation along the lines first sketched out by Tony Bath as mechanics for his Hyboria campaign in the 60s and published in his book by WRG. I'll do it with an eye towards either cloning and revising for different game systems or supporting more than one in each application. Whatever I build, I'll want to be usable on my laptop, accessible from and maybe parts downloadable to my iPhone or an iPad should I get one of those toys. At the moment I'm leaning towards running Barbarians of Lemuria first, so something simple like a character file/generator or a locations/scenario notesfile for that would be the first thing to build.

Technical tinkertoys to build it:
These are aimed more at playing with some various interesting technologies than building a carefully crafted architecture. Boredom is the death of this sort of side project.

Application layer
I'm most fluent lately in Ruby on Rails, so I'll probably start this in Rails 2.3.5, maybe Rails 3 beta for the sake of learning some of it before we'll get into it at work, and try to do some piece in Sinatra to get more familiar with it than my prior couple of hours messing about with it. I can probably just run in development mode on the laptop until I want to give ongoing web access to the phone or a tablet. TDD for ADD D&D?

Database layer
We've talked a bit about MongoDB at work, but have more pressing things to do than explore it, so if I'm going to get to play with it off hours, a game project is as good a place as any. The document database NoSQL approach looks very promising for organizing RPG notes. My previous Rails effort at a D&D campaign bogged down as I realized just what a huge data schema I was biting off as I was working through associations and in the early days of converting the scaffolding to a more friendly UI. MongoDB documents look great for fitting the partly, structured, partly amorphous and evolving nature of RPG characters.

Mobile client
I've wanted to play with writing apps for my phone, and the save a webpage as an app icon trick for apps built out of HTML5-CSS-JS looks like a nice way to do it on the cheap. Maybe build in some AJAX updating and use HTML5 data caching to let it go offline and still be useful. Try out jQTouch or go even lighter weight?

World sim network
It'd be fun to play with node.js too, so maybe that could be the foundation of the automated political simulation metagame that has been knocking around in the back of my head for so long. Get to dust off and use some of my long disused ecological modelling training for something fun. Make each politically modelled faction a process and have them interact by message passing for the sake of learning more about message queues. RabbitMQ just for the hell of it? Could spread node.js political actors around several computers in the house if I want to not bog down the main webserver, and just have it report "world" history by being a subscriber to the messages going back and forth. Does such a project need all this tech? No, it could more easily be a ruby script and some simple storage, but it would be a reasonable excuse to play with some of the tech I've read about or heard described at conferences. My projects at work don't need it right now either. It's probably a separate project and too ambitious to include in this pass.

Sunday, February 7, 2010

OOTS Avatar


Daughter wanted an Order of the Stick avatar of herself in Halloween sailor costume for use on a web forum and showed me a guide on how to make avatars using InkScape in Rich Burlew's style by David Shaw. After wrestling and cursing awhile with trying to get InkScape going on the old living room Mac (urgh no X11 and couldn't find the Tiger disks), I withdrew to my laptop and got to work there.

A couple of hours of relearning later, the results made her happy.

Thursday, January 21, 2010

San Francisco JavaScript Meetup #9

I made it over to SF last night for the JavaScript meetup and was really glad I did. The meetup was organized by Matt Humphrey, hosted at CBS Interactive, with lots of pizza provided by the recruiters Mainz Brady Group. It was a series of short presentations on a bunch of interesting projects.

Will Moffat talked about Acre, a server-side JavaScript project for building apps using data from Freebase.com, http://freebaseapps.com using MQL based on JSON to query Freebase for data you can mash up into your app. Acre is based on Rhino, and their app hosting service freebaseapps.com is set up to run untrusted code in a sandbox. Slides, IRC #freebase

Nosh Petigara of 10gen talked about MongoDB and its JavaScript shell. MongoDB is a document based schema-less database that is getting a lot of buzz lately, part of the NoSQL movement. IRC #mongodb

Tom Robinson of 280 North talked about the CommonJS specification and their implementation Narwhal, including JSGI and their implementation Jack, which is a JavaScript web server architecture modeled on Python's WSGI and Ruby's Rack. The general goal is to provide some unifying standard APIs to bridge server side and general purpose JavaScript application development. He mentioned that the Async JSGI spec is in progress, looking towards hooking into the node.js projectIRC #commonjs, #narwhal

Marcus Westin talked about Realtime Templates built on node.js and demoed fin as an example. This was a small database view where his edits in one browser immediately updated another view of the same object in another browser, similar to the way you see updates in Google Wave.

Mats Bryntse showed Ext-Scheduler, a calender and scheduling plugin based on the Ext JavaScript library. The calendar was very nice and he is working on a Gantt chart view.

Adam Abrons (Pivotal Labs) and Misko Hevery talked about their open source project angular.js aimed at making it easier to build simple apps in the browser. GitHub repo They demoed an example online testing app.