Monthly Archives: July 2009

Games and storytelling

So i went missing for a few days.  One reason is that I got distracted from code by a recently-purchased copy of the World of Darkness Storytelling system rulebook.

I really love  White Wolf’s approach to these games. I’ve played MMOs for many years now, and tabletop roleplaying games for a little less, and I found that I almost universally went with roleplaying/story-heavy sides of whatever I played, so the Storytelling system’s strong emphasis on telling a story, rather than leveling up a character by grinding through rats, really resonated with me.

It also helped me think a lot more about what kind of system Sykosomatic should employ — what can be done in an online world that encourages cooperative storytelling between players, while still having systems for fairly resolving conflicts?

Anyway, I should have an actual full post about what Sykosomatic is and what I’m aiming for with it before I go too far into more specific aspects of its design.

As far as the WoD goes — I’m really liking this system, and I’m going to try and run a couple of short games over the coming months to get familiar with it. Right now, I have a feeling a modified version of the system is what Sykosomatic will end up using in the background…

Posted in random | Leave a comment

Buzzwords, Che Stallman.

I have a thing with buzzwords. They bug me a lot. I get annoyed whenever someone spews a bunch of meaningless crap at me to try and impress me, and it usually makes me turn around before even listening to the actual meat part.

It’s not fancy words that bother me, here, by the way, it’s -empty- words. Sheeple’s description (and Sheeple’s old API) is meant as a nice big jab at those buzzword-crazed software jerks out  there that dump their garbage text into the interbutts as if it were some kind of toilet — and I’m expected to like their shit.

Here’s an example of what I mean. This one is from IBM’s Jazz:

Vision:

Jazz is an IBM Rational initiative to help make software delivery teams more effective.

Inspired by the artists who transformed musical expression, Jazz is an initiative to transform software delivery by making it more collaborative, productive and transparent, through integration of information and tasks across the phases of the software lifecycle.

Wow! Inspired by a revolution in one of the arts! This must be good!

[As a side note, the whole "Vision" thing inspired me to do the same for Sheeple, and I learned some new empty phrases to shove into its description from this site :)]
Continue reading »

Posted in random | Tagged , , , | Leave a comment

Sheeple continued: Dispatch

In the last entry, I wrote a bit about the basics of how object instantiation and property/slot access works in Sheeple. In this entry, I’ll introduce a whole different realm of Sheeple: the method dispatch system. If you’re familiar with Javascript, it might already be obvious to you how polymorphic method dispatch can be implemented with the small bit of Sheeple we know so far:

SHEEPLE-USER> (add-property *sheep* 'foo
                            (lambda ()
                              (print "Method called!")))
#<Sheep #x15031356>
SHEEPLE-USER> (foo *sheep*)
#<Anonymous Function #x1506C446>

For those confused: the above equivalent in javascript would be:

sheep.foo = function () { alert("Method called!"); }
sheep.foo -> function object

And there you have it. Actually calling the function is just a matter of using Lisp’s version of adding () at the end of a variable:

SHEEPLE-USER> (funcall (foo *sheep*))
"Method called!"

In JS:

sheep.foo(); => an alert pops up. The method was called.

Continue reading »

Posted in random | Tagged , , , , , | Leave a comment

Introduction to Sheeple

For a few months now, I’ve been working on something I call Sheeple. What is Sheeple? From the
official description:

Sheeple is a Dynamic, CLOS-like, Delegative Prototype-based Object-Oriented Programming
Framework (or “POOP Framework”) that strives to optimize application flexibility, minimize cost
while increasing value, maximize programmer resources, and empower application implementers to
better assist them in leveraging modern paradigms in order to proactively achieve next-generation
synergy in tomorrow’s web 3.0 world. It is implemented in (mostly) ANSI Common Lisp. Sheeple is
fully buzzword compliant.

Now that doesn’t really say much of anything, but it’s
amusing, specially since some actual (professional!) projects actually describe things in such a
way.

What does it actually do, though?

Well, Sheeple is a library for Common Lisp that implements a Prototype-based object-oriented language very similar to Common Lisp’s standard CLOS. It does things like multiple dispatch, multiple inheritance and such.

One goal I had while designing it was to have it be as practical as possible. Javascript is making waves around the internet these days — not just because it’s the de-facto standard browser-scripting language, but because it’s prototype-based.

The idea of having a prototype-based language instead of using classes for OO is nothing new. Even so, it seems like there’s still debate about the merits of using prototypes instead of classes. In fact, some prototype-based languages, specifically Javascript, have libraries that implement classes!

Even though there are various languages to choose from, there are still few languages that provide what I would consider full facilities. Cecil seems to be one of those ‘full’ languages, but I really ended up disliking its approach — it was too complicated, and there were too many obvious minefields. Sheeple is an attempt at providing the kind of massive framework CLOS provides for class-based OO, but with prototypes, while remaining easy-to-use, straightforward, and most importantly, convenient. Whether it’s successful at this right now (it’s still in development after all), and whether it will ever be is a different question. ;)
Continue reading »

Posted in programming | Tagged , , , , | 4 Comments