I’ve been working on cleaning up some of the modularity issues and spreading the work required for castling between the king(moving itself and the rook), the rook (added a function to calculate where it moves when castling) the board (finding which rook to castle), and the legality functions (whether castling is legal).  I decided to integrate the legality functions into the board class because the major functions depend on the matrix which is stored in the board class.  I also added the board labels to the individual players which saves a few lines of code when redrawing them each turn.

Of course now I’ve run into a snag.  The full legality of castling involves checking whether the king is in check, or moving into check, or across check.  Until now I’ve treated the king, for the most part, like just another piece.  In thinking about the intricacies of evaluating check situations I decided to iterate through the opposing pieces to see if the king is located in their path.  However the complication comes in deciding when to evaluate a check situation.  It has to be done before the pieces actually move to a new location but must take into account the new configuration of the pieces.  What this means is that I need a transition matrix for the pieces to run the check scenario.  After determining that the king is not in danger I can collapse the transition matrix back into the real matrix and move the pieces accordingly.  What this means is that the pieces will not actually move themselves. Unfortunately this will probably require a radical rethinking of the way that the game, the players and the pieces interact with each other.

This is definitely a drawback to prototype design, and a really good argument for planning out the dynamics of a major project ahead of time.

So when I do the presentation on Tuesday I can offer a cautionary note in the development process.  I will cover the basics of Object Oriented Programming, and the different development processes, including top-down, bottom-up and spiral (prototype) design.  Demoing the game should be interesting.  It’s at a point now where all of the moves, including en passant capture and castling, are functional.  The higher logistics of legality are the only major hurdle to functional game play.

After I finish the functionality, I still want to design more of the GUI, including adding actual bitmaps of the pieces and showing which pieces are captured.  I also want to add save functionality and a move list annotated in current algebraic notation.  I’m glad I don’t have a real deadline to finishing the game, because I’ve got no idea how long it will take to get it to a point where I consider it ‘finished’.  If nothing else it’s a great programming exercise.

Chapter 14 – The Education Matrix

Nice to know that I probably waited to long to go back to school.  By the time I finish my Bachelor’s Degree the digital design field will probably require a doctorate to go beyond an entry level position.  Considering how much debt I’m going to accumulate getting this degree, the best I can look forward to is going further in debt to get a graduate degree.  The only consolations are that I pick up new concepts and applications easily, and I enjoy expanding my knowledge and skills base through personal study.  Practically everything I know about Excel was self taught.  Of course the problem there is convincing potential employers that I have the chops without a formal degree.  Maybe  I can go back and rebuild some of my work and create a portfolio of what I have done so far.

Developing the Digital Designer – Interview with Anthony Dunne.

Calling the program Design Interactions rather than Interactive Design really seems pointless.  The terms and limitations of Interactive Design are far from solid, so muddying the waters by playing with terminology seems counterproductive.  I also don’t really like the connotations of calling something a placebo project, since a placebo is a fake medicine that is applied to a test group.  Moving away from the negative bias of ‘problem solving’ which is reactive, rather than proactive, is a good idea, but saddling it with a weighted term like placebo, instead of calling it something like an exploratory project, seems counteractive.  Basically it sounds like ‘designers’ want the freedom to make non-commercial art, but still want to be taken seriously by the business world.  Have fun walking that tightrope people.  Hope you can catch up with the ‘artist’ who has been doing exactly that for so long they are riding a unicycle by now.

Humanities Over All – Eliott Earls

I really think Earls brings the idea of the artist controlling the media and the tools rather than the reverse to a head.  I couldn’t find a copy of Catfish online, but I did find an interview with him.  I’ll try and explore more of his work when I have time.

Chapter 12 – Illustration

I have found a new favorite illustrator.  Viktor Koen is freaking amazing.  I don’t know how he could be confused with other Photoshopers.  The attention to detail and the pure creativity implicit in his work outshines the rest of the field hands down.  Maybe I just have a thing for his style, but the weird moth baby makes me smile in a tight menacing sort of way.  Squee!

Mirko Ilic has one of the most visually interesting yet incredibly frustrating (from a usability standpoint) sites that I have ever seen.  The navigation dots remind me of stops on an organ.  If it had a site map, search option or some kind of textual ques to help guide the user I believe the site would be more compelling, but would lose some of the clean edge.  Ah the mysterious divide between form and function.

I love his take on the childish style that I’ve been ranting about i.e. “Look Mom, I can’t draw anymore”.

At some point I got sidetracked and spend an hour browsing the Interweb for subliminal messages and advertising.  Gave me an interesting idea for the PVC project I’m working on.  Could inserting subliminal messages in your homework be considered cheating?  Hmmm…

Ray Bartkus comment about art produced through traditional methods (whatever the hell that means) becoming obsolete seems ridiculous.  Every other interview in the book talks about the importance of artistic fundamentals.  And in my experience for every artist that embraces digital creativity, there is one who adamantly refuses to give up working with “traditional” media.  The most interesting artists (to me) are the ones that successfully meld the old and the new to create works that would  have been impossible in either of those worlds separately, like Mr. Koen.

Chapter 13 – Typography and Graphic Design

This was an interesting chapter, but I didn’t glean much new information from it.  I’ve been playing around with fonts and typography for awhile and I love drawing letters.  When I first learned cursive I had a teacher tell me that the purpose of cursive was not to draw curlicues.  As luck would have it I completely failed to take this advice to heart.  That being said I have never had the patience to design an entire font.  I just do the letters that I need for a particular project, usually a custom logo.  Which is why it really annoys me when I see an edgy product or club that can’t be bothered to create their own type face for their logo.  Another pet peeve of mine is gritty fonts where repeated letters look exactly the same.  Kind of ruins the point.  Someone should make a specialized font tool with multiple options for common letters.

Hour 1 – Square Labels

When I decided to redraw the board with each move so that the current player’s pieces would be at the bottom of the window, it necessitated fixing the labels.  At first I just drew the labels at the beginning of the game when I drew the board and forgot about them.  The first idea was to put the labels in a list and move them each turn, but that was actually more complicated and problematic than necessary.  The solution was to create two lists for the labels, then undraw the old labels and draw the correct labels with each turn.  The labels, being objects in a list, are retained and can be turned on and off as needed.

Hour 2 – OOP House Keeping

So what Laurie was saying about the configuation of the Game is starting to click.  Instead of just letting pieces exist within the game matrix, they need to belong to their player.  So instead of individually placing pieces, I append each piece to the players pieces list, then iterate through the list to place the pieces.  The code is cleaner and makes more sense that way.  In turn the players need to belong to the game.  So instead of doing wierd purmutations with variables at the beginning of each turn, I just reverse the games player list so that the current player is player[0].

Now that I have the turns configured like this making sure that a pawn can only be captured enpassant for the first move after the double jump is simple.  Just iterate through the current players pawns at the start of the turn and turn off the EP flag.

Hour 3 – Revamping Legal

So this is the fun part of programming ( insert heavy sarcasm ). I spent about 30 minutes rewriting the obstructed function so that it would be streamlined, and callable from outside of the Legal module.  Then I spent two hours bashing my head against the desk because now ghost pieces are showing up.  Sometimes the new obstructed function is returning a None type which it shouldn’t be doing.  This causes captured pieces to stay in the matrix, and sometimes pieces don’t recognize that they are on the same side.  Oh well, I’ll sort this out later.

Chapter 10 – Blogs

I have to admit that I was not looking forward to this chapter. When I think of blogs the first image that comes to mind is a vacant teenager spewing the minutia of their everyday life out into the ether. It’s virtual pollution people. I see blogs doing to serious essay writing what chatting and texting did to the fine and lost art of conversation. However I actually enjoyed this chapter more than the the sections about game design, which still seems like obsessive irrelevance, and especially the section on Digital Entrepreneurs which seemed to tout the invasion of big business mentality into independent shops, while big business attempts to co-opt the versatility and flexibility of the independents. Maybe I felt more of a connection because these folks are professional writers, and writing is my first love. Strange how the value of good clear writing keeps coming up. People are finally realizing that the ability to form a convincing and cohesive line of reasoning is being lost. Hopefully a renaissance in the written word will return with the new appreciation of unique and individually crafted work. Now if we can just get over this obsession with minimalistic and sloppy ‘art’.

Chapter 11 – Beyond the Screen

This chapter was certainly dominated by the usability question. No matter what media or system is designed, from a book to an MP3 player to a digitally enabled building facade, the central purpose seems the same. How can the user be drawn into the experience and how transparent will the interaction be? Whether playing a game or watching a movie I always enjoy the moment when the interface fades away and I’m interacting with the content. The point where you forget that you are using a joystick to control pixels on the screen, or looking at a view of the world through a screen. The interviewee who seemed to grasp the importance of this idea the most was Masamichi Udagawa. He understands that when a user steps up to an interface the only feature that they care about is the one that does what they came to do. If the user can’t figure out how to use the interface within a few seconds they will get bored and frustrated and walk away. All the bells and whistles in the world will not change the frustration level of the average user. This does not mean designing for the lowest common denominator. Udagawa also explained the importance of revealing complexity rather than bombarding the user with complications all at once. The more savvy user will find the important features while the tyro won’t need them. The best designer is one who can appeal to multiple levels of users.

Hour 1 – Debugging and Modularizing

Yes modularizing is a word.  Look it up language Nazis.

Last week I was having an issue with a pesky error after creating the Game class to control aspects of game play and call the other functions.  The error actually resulted from mistyping a variable when I changed the calling line in the StartGame module.  Let this be a lesson to you kiddies, if you can’t figure out why a program that you are writing is being difficult most of the time it turns out to be something really simple that you’ve overlooked.  Before you wrack your brains for an hour looking for something complicated, go back and check over your code with a fine tooth comb.

I decided since the chess module was getting long and unwieldy, to split the legality and the piece definitions off into their own modules.  That is one of the big ideas about OOP: modularity.  In other words there is no good reason to pack everything into one long module if it can logically be split into separate modules.

After readjusting some of the parameters due to shifting operations to the Game class I have game initialization drawing the board, and player initialization placing the pieces.  The white pieces are in the right locations, however interaction is messed up now.  The user can select a piece, but can’t move it.

Hour 2 – Basic User Interaction

Alright, for some reason I had to move the starting positions for the black pieces up one square, but all of the pieces are on the board, and the interaction with the Legal module is working fine.  Hopefully now that some OOP house keeping has been done the turn specifications should go pretty smoothly.

Hour 3 – Defining Turns.

With the Game class running the show defining which side is in play is a snap.  I’ve been wanting to flip the board around with each move to facilitate hot-seat play (both players are using the same computer) so I set up a turnChange() module in the Game class and a flip() module in the Piece class.  The most complex part was figuring out where the pieces should end up on the other side of the board when it flipped.  There is probably some math trick that I could have worked out to transpose the position, but I settled for creating a list (or array for you VB folks) like so: [7,5,3,1,-1,-3,-5,-7].  The current position horizontally or vertically  indicates the slot in the list for how many squares the piece will move.

At first I couldn’t figure out why the game was losing track of pieces after the first move.  It took a minute to remember that I had to save the new coordinates to the .position variable for the piece.

I started working on redrawing the square labels, but it will be a little more complex than I had imagened, so that’s a project for another day.

So at this point I’ve decided to continue working on the chess program I’ve been writing in Python as my final project for Interactive Media.  I started the game last semester as a way to get more practice writing Python and work on classes, which was beyond the scope to that class.

I met with my Laurie, my instructor from last semester, to go over my code and give me suggestions on how I can streamline and make improvements.  Her first suggestion involves the way the classes are organized.  Currently I have a Player class, which contains the interactive aspects, a Board class, which contains information about where pieces are located, and a Piece class, with subclasses for the various pieces.  Laurie suggested that I add an over arching Game class which would control interaction between pieces, players and the board, as well as keeping track of turns.

So I started rearranging some of the classes and methods, and got hung up for about an hour fighting with the graphics library that doesn’t want to draw the board now.  Sigh… such is the wonder and glory of OOP.  I remember getting the TypeError: class requires exactly (number of) positional arguements with a self defined class, but I can’t remember how to fix it.

Chapter 8 – Game Design

Interesting to see that a fad game designer (Rodney Greenblat) went back to fine art when he felt that his popularity was at a peak.  I can’t stand his style by the way.  It seems iconographic of the current trend toward making childish art.  No I don’t mean child-like, with the connotation of innocence and wonder, I mean childish focusing on bold primary colors that seem garish to anyone over 7 years old, heavy outlines and poor judgment of scale and perspective.  I realize that this is a matter of personal taste, but I really hope this fad dies sooner rather than later.  I have a feeling that it is a counter-technological rebellion.  Creating something that looks less polished, geometrically unbalanced and heavily non-symmetrical has more of a ‘human’ feel to it.


I appreciated the back to basics ideal of Eric Zimmerman’s interview.  Every time there are amazing new advances in CGI and computer animation the public is inundated with a flood of movies and games that are very graphics and effects heavy with little focus on plot, characters and real game play.  The craft of story telling and game design don’t really change at nearly the pace that technology advances.  This is why chess, checkers and the stories of the Brothers Grimm are still enjoyed hundreds, even thousands of years, after they were created.


Chapter 9 – Digital Entrepreneurs

I’m really not sure why an interview with the president of a huge design firm (Robert Greenberg- R/GA) is included in the section on entrepreneurs.  Apparently the company splits their employees down into small somewhat independent teams to try and emulate the flexibility and innovation of small shops, but they still won’t have the do-or-die inspiration that comes from knowing if a job fails and you loose the client it means your whole business might go flush-away-swirly.

Maybe I’m a tad cynical but it seems that the real process of climbing the corporate ladder is about how many buzz words and feel good slogans you can cram into your head, along with how to tell people bad news with a completely impersonal approach.  Maybe the best approach to creating virtual intelligence would be to start with a robotic middle manager.


Global Outreach – Interview with Tarek Atrissi

Well I definitely understand the importance of content management.  If the users can’t figure out how to import new content / data into the system than either they stop using it (no matter how good it looks) or if possible you get stuck with updating the system.  Either way building a working system necessitates building an easy and efficient way to update the system.

I don’t know if I agree with the idea that playing multiple roles will result in bringing out the best in both areas.  It’s a rare bird that has a head for business and a solid design sense.  Usually one wins out and the other suffers.  But I suppose it’s just as rare to find someone with a mind that can embrace both the design and the development side of a project.

I wonder how long ago this guy graduated, since his school was forward thinking enough to eschew teaching any specific software.  I don’t know if going that far is necessarily the best course, but I agree that it’s important not to get too attached to any particular digital tool.  Even the next release of a favorite piece of software might have a completely revamped interface.  Hell, look at Office ‘07.


Marshall Clemens reminds me of Paul Laffoley.  I think Marshall is a slightly saner version.


Chapter 7 – Motion Design

I’m always fascinated to see who is considered ground breaking in a particular medium.  I doubt that McKay thought he was doing something truly innovative by playing with an animated dinosaur, but once Walt Disney caught on and started interacting with Mickey then the die was cast, for good or ill.

Full of Ideas – Interview with Cary Munion

Maximal! What the hell is maximal.  I’m the first person to agree that minimalism is dull, but can’t we have a better word to describe the opposite view?  But the Honest website rocks.  That’s a (bleep)load of content with minimal lag time.  And the NEXTgencode site is nicely laid out with good interaction, which helps deliver the message.  I really like the idea of using advertising to filter potential customer’s rather than just casting a broad net.

On a side note though some of their video content is in Quicktime (who the hell uses quicktime) and the video channel was just a green screen.  This apparently is a common issue.  So I checked the bulletin boards, and finally the repair option worked.

Pushing the Limits – Interview with Beatriz Helena Ramos

Interesting to hear a designer refer to technology as a tool instead of a media these days.  Hmm.. let technology facilitate the creative process instead of dominating it, what an idea.  Reminds me of when CGI first hit Hollywood and studios packed movies chock full of computer graphics just because it was the new hot thing to do.  The plots were still crap, and the special effects didn’t really help because it was too easy to tell that they were digital.  It isn’t just poor quality that gives the fake away.  Sometimes an effect just looks to clean, or is just too unbelievable, therefore obviously a computer did it.  I think she might be right about only learning new software if you need it for a project, otherwise you can spend all of your time fighting with a flashy interface and no time actually creating something.

So overall the chapter on animation didn’t really grab me.  The most likely reason is that I have no experience in the medium.  I should go back over this after I learn Flash.

Hour 1

Still playing around with Aviary.  I found the basic interface tutorial for Peacock (the hub based visual laboratory).  Somehow I managed to overlook it before.  I also looked over a basic tutorial for Raven, which is the vector graphics editor.  It was posted by this guy who must be one of the designers for the site.  And in preparation for my Interactive Presentation I thoughtfully downloaded this video.  Just hoping the college has RealPlayer installed.  Finally I tried out a nice Aviary browser plug-in for Firefox called Talon.  I may never need to use Photoshop again.

Hour 2 – 3

I need some images to use for the chess program I’m working on in Python.  So I found a set of chess pieces on line and imported them into Aviary.  After selecting each image and cropping out the remainder of the file, I desaturated to convert the images to grey scale, thus reducing the file size, and modified the brightness by 10, and the contrast by 5.  Hopefully this will make the pieces easier to read against the board.

I finally figured out how to import image files into Python using the graphics library created by John Zelle.  The first step is to set a variable to a pixmap of the file, then set another variable to an image of the pixmap like so:

from graphics import *
def main():
    win = GraphWin(“Test”, 500, 500)
    win.setBackground(‘peachpuff’)
    pawnFile = Pixmap(“images/pawn.gif”)
    pawn = Image(Point(250,250),pawnFile)
    print (type(pawn))
    pawn.draw(win)
    wait = win.getMouse()
main()

from graphics import *

def main():

    win = GraphWin(“Test”, 500, 500)

    pawnFile = Pixmap(“images/pawn.gif”)

    pawn = Image(Point(250,250),pawnFile)

    pawn.draw(win)

    wait = win.getMouse()

main()

Surprisingly transparency in a gif is maintained with in a Python graphics window.  Unfortunately the export image function on Aviary for gifs is not quite up to par.  I don’t know if it’s because the web safe colors option is set as a default, or if it’s an issue with transparency.

So giving up on Aviary for the moment, I pulled the chess set image into Photoshop, and it took about ten minutes to pull all the pieces out, delete the background, crop and save the files as gifs.  The same process took about a half an hour with Aviary because it can’t handle multiple images in the same window.

There is a drawback to importing images of the pieces into Python.  When I created the simple piece objects I did it based on a coordinate grid, so the images were drawn from the lower left corner.  With the imported images the center point is 0,0 so they are drawn on the corners of the squares.  I’ll need a fix for that.