It’s been a long time since my last post and I think I need to do something to break the streak, even if it’s just a quick update. I feel that saying I’ve been busy is a bit of an understatement, but at the same time it feels as though I’ve gotten nothing done. At work I have one project coming up out of the ground at a very fast pace as well as another project getting ready to go out to bid. I’m in the process of getting registered to take the architectural registrations exams and doing a bit studying for them as well. In what spare time I’ve had, I’ve made a start on a board game design that’s been kicking around in the back of my head. Of course, any spare time I had has pretty much dried up thanks to a rather significant development in my personal life. Two weeks ago my wife and I had our second child, a baby girl. She’s doing well and I’m sure she will fill our lives with joy and leave little room for things like blogs. None the less, I mean to press forward and scrape together some new content when I can. As for this post, I’ve decided to include a rending from work that was presented at a school board meeting concerning the project that is about to go out to bid, a performing art center.
It took way longer than it should have, but the sound panels for the Marion School District offices are finally up. We went through multiple printers, multiple panel manufacturers and still didn’t manage to get exactly what we asked for. However, the results look pretty good. Some of the panels are huge! Having a camera that takes such high resolution pictures paid off in that regard. Its very cool to have my photographs turned into a permanent gallery for the school district.
I’ve been taking a lot of pictures at the wonderful Memphis Zoo. I’m also trying to determine the ideal number of images per post now that I’m putting galleries on the front page. I think the last one was too many and was a bit overwhelming. So here is a selection of nine photos of big cats I’ve taken over my last few visits to the zoo.
I’ve updated WordPress and added some new plugins in an effort to improve hosting and sharing of photographs. As a first test, here is a set of images that I had previously been sharing with Flickr:
Pretty slick huh? Be sure to click on the images to check out the slideshow feature. Let me know what you think or if you have any problems viewing the images.
Edit: I’ve removed half of the images that were in this post. I think more than 10 is just overkill for a single post
I’ve made some more progress on the map system I’ve been playing with. I settled on a system governed by two binary variables. The two variables refer to the presence of the smaller three hex and one hex spaces on a given tile. This gives you four categories of tiles. Tiles with neither, tiles with both and tiles with one or the other. This system allows you to layer information onto the map rather than having discrete zones like I described in my previous post. In this case, I am envisioning the three hex spaces as representing trees and the one hex spaces as impassable rocks.
To generate the map, I first generate a pattern of rock formations within a hex grid. Then I do the same with the trees, placing tracts of trees onto the hex grid. This results in a hex grid where each tile can be open or contain rocks, trees or both. In this case, there is no interaction between the tree and rock layers, but I can envision a more sophisticated system which introduces interaction between layers.
Based on the intended contents of each tile, an appropriate tile is selected from the tile set and placed at those coordinates with a random orientation. I developed three possible tiles for each category, for a total of 12 tiles in the set. Since each tile can be oriented six different ways, there are 72 variations of the tiles which can be present in a map. Despite the high number of possible permutations, the map is still generated from very few distinct pieces. This results in a very abstract, low resolution map that is very reminiscent of tabletop games.
I’ve started generating some random maps using the hex tile set in my last post. The map below uses only 3 tiles from the set, placed and rotated randomly. Once I add more of the tiles in, I’m going to group them together into general types. For example I might have 3 tiles which can be used for open terrain, 3 for forested areas and 3 for hills. By doing this, I’m hoping to get less homogenous results as well as create some defined features and regions on the map that span multiple tiles.
I’ve always been interested in rule based systems, and lately I’ve been reading a lot about game design. I’ve found it far more interesting to hear the designer’s thought process behind the design of a game than to actually play the game itself. This has recently led me to listening to The Game Design Roundtable, a game design podcast hosted by Dirk Knemeyer & Jon Shafer.
On a recent episode, Dirk Knemeyer talked about one of the projects he’s been working on called War Stories. The goal of the project is to develop a tabletop strategy game that streamlines and simplifies the process of playing. Most such games require lots of charts, tables and reference materials. The design team wanted to get rid of as much of these extraneous parts as possible, and they did this by making the few pieces they did use more intelligent.
My personal favorite result of this process is the way the space of the game, the map, works. The spaces on the map vary in size proportionally with how easy that terrain is to cross. So easily crossed terrain is very large and hard to cross terrain is small. This allows you to simplify movement by setting a piece’s movement ability to a fixed number of spaces. The movement modifiers present in similar games are now simply inherent to the map. No math required!
I really like the idea and I spent some time exploring it myself. You can see some of the results below. In this example, each map piece is made up of 19 hexes and contains either 3 or 5 spaces. Each space contains either 1, 3, 5, 7 or 9 hexes. These rules allowed me to narrow the number of possible configurations. Each column is one of 9 possible permutations of number and size of spaces within these constraints. There are more possible configurations in each category. I chose ones I felt were most distinct and interesting, generally avoiding symmetry where possible to make them feel more organic.
I spent some time dressing up the sphere points script for a video. The points are now added one at a time at the same spot, resulting in some nice swirling effects as they spread out. I also added a bit of color to further emphasize the three dimensionality of the form. There were some artifacts from the encoding when the sphere spins that I couldn’t get rid of, but it doesn’t look too bad. You can see it below or click Here for a bigger version.
Someone recently asked a question in the Cornell scripting group about equally distributing points on a sphere. There was a quick response to the question, pointing to some of the classic spiral distribution algorithms. This came with the caveat that, depending on the number of points you have, there is no mathematically perfect solution. My first reaction was, why try to calculate the position of each point when you could just have the points figure it out for themselves? I may be showing my partiality towards self organization, but nobody pulls out a calculator before blowing a bubble, you just throw it out there and let nature do it’s thing.
So I opened up processing and set up a basic physics simulation, throwing points on a sphere at random and instructing them to stay as far away from each other as they could. The points repel each other depending on how close together they are. Points right next to each other yell “Get away!” and run the other direction, while points that are far from each other call out hesitantly “Keep your distance!”. The result is that each point gets its own space, and each space is roughly equal in size. I say roughly because, even though we aren’t using a single mathematical algorithm to place every point, there’s no getting around the fact that there is no perfect solution to this problem (outside of special situations, such as a dodecahedron or Icosahedron). You can see the result for 100 points below. I added some lines between the closest points to make the space easier to understand in a still image (it looks great in motion so I’ll try to put up an animation soon).
As I typed this up, I searched around and found that a paper on this method of point distribution was published in 2004 called Discretizing Manifolds via Minimum Energy Points. The authors thought this title was a bit too dificult to digest, so they also call it the Poppy-Seed Bagel Theorem (I see what they did there).
A new year and the end of another long posting hiatus. I’ve recently had to take on more responsibilities at work, leaving me with less time for “extracurricular” actives. It seems that when time is short, this blog is the first thing to get ignored. However, overall I feel good about the number and quality of posts I made over the course of last year. While none of the work I posted was particularly sophisticated, I still managed to average about two posts a month. I’ll be happy if I can maintain that pace through the coming year, which should be very busy.
One of the projects I’ve been working on is an interior with a honeycomb motif. I did a few initial sketches manually to show the client the idea. But, now that we have the approval to take the design in this direction, I’ve started using processing to more thoroughly explore the possibilities and develop a more robust system. Here is the very first result, showing a random distribution in a hexagonal grid with three states: void, outline and solid.