Exposition on MAS964 PS10

A few exercises in design, problem set 10 for Principles of Visual Design.

Communication! This exercise was a lot of fun. A central server that just forwards messages between clients, and a trivial protocol for clients (just forward mouseclicks). Up to the students to design our own graphics for it. The neat thing here is everyone has radically different graphics. A semiotics lesson.

I like how my first assignment, a straightforward client to show the communication space, worked out. In fact, I think it looks rather nice. Each client is given a particle - mouseclicks move the particle around softly. The particle itself is drawn less saturated as the client info gets stale. In addition, lines are drawn between particles to show connections. Lines also get dimmer as the info goes stale.

I think it looks pretty good when you have about five active clients. The graph between them is complex and tumbles around. And the thick lines somehow suggest a deliberate connection between the particles, even though there isn't really any coordination. Simple, but nice.

I didn't do the second assignment, a version of the applet that emphasizes one other client. Not enough time.

Because I was spending so much time on my third applet, the "god's eye view". Here I just display the protocol stream directly as a bunch of numbers. The numbers have meaning, but it's not immediately apparent. That must be how a god does things - everything in the abstract, all information there but nothing special to make it easy to process. (Afterall, god is all powerful - why bother with fancy graphics?)

It's no fun just being an observant god, you have to be able to meddle, too. The god client can take control of other people's clients, essentially forging messages as them. In addition god can create new clients out of thin air, and also smite other clients with one keystroke. It's fun being god.

Sources

DoubleBufferApplet.java
From start to finish, the old warhorse. A lesson about code longevity.
PS10Applet.java
Base class to implement the core communication facility for the clients.
Particle.java
Newtonian particle, modified a bit from other assignments
NumberFont.java and FixedNumberFont.java
Bitmap font support. Some improvements over earlier assignments
bigfont/ and smallfont/
The font bitmap directories.
ParticleClient.java
The client code for the particle client. Nothing too complicated here.
IDParticle.java
A subclass of Particle for the client. Named for the ID, but the important feature here is a linear controller.
GodClient.java
The God client. Lots of forgeries going on here.
GodClientInfo.java
Objects to display a client's info

Nelson Minar <nelson@media.mit.edu>
Last modified: Fri May 9 02:42:25 EDT 1997