Procedural Generation 1 – Creating a Cave using Cellular Automata

Cellular Automata rule sets are quite useful for building cave-like systems.

  1. Fill a bitmap with random black and white dots. Black represents filled space, white represents open space.
  2. Iterate through the bitmap, applying the CA rules to each pixel
  3. create the updated bitmap
  4. cycle back to step 2, repeat until desired result

The following is the series, from random noise all the way to a completed cave system. Each image is 64×64, though it can easily be scaled up to any arbitrary size. I have found that images at 256×256 and above tend to bog down somewhat, so be careful.

Once you have tweaked the algorithms to get the desired cave design, you may have more than one disconnected piece. There are three ways you can re-connect those pieces to the cave system

  1. go through and eliminate all but the largest open area
    – This might result in a quite small cave, so some experimentation here might be necessary, such as setting an arbitrary number of pixels or percentage of overall area as the minimum allowed cave size
  2. draw tunnels to connect the pieces
    – either find the center point of each piece, and draw a tunnel from point A to point B, or iterate through each point in each open area, find there they are closest together, and connect those points
  3. in multilevel games, connect to the next level(s) up and down. A cave needn’t be only one level.
    – this assumes that the same issue does not exist in the next level up and/or down. An unfortunate selection of initial starting conditions could result in two “silo” caves next to each other, with few or no connection points.

There will be some back and forth between tweaking the algorithm and deciding what makes for the best caves. You can add logic to sometimes eliminate extra rooms, sometimes connect them, and sometimes connect them to the next level.

Of course, you don’t necessarily need to create all of the levels at load time. You can create them on the fly – though this does make vertical connections more difficult. Do some experimenting; see which method works best for you. I suggest always having at least two lower levels created, to reduce potential conflicts when fleshing out the current level.

Exploring the Primal Blueprint

For about eight months now I have been following a diet and lifestyle plan called the Primal Blueprint. It has many dedicated followers and fervent advocates. Actually, rather than “follow” I would say I fly in loose formation with the Blueprint. I have my lapses – being only human, and living around the corner from one of the best bakeries in the city. Still – my health and fitness levels are much improved, and despite the occasional bag of potato chips for dinner, things continue to improve on a gradual and manageable trajectory. I can fit into clothes that last buttoned in my early 30s, if not earlier. My weight hasn’t been this low, I think, since I began building websites for a living.

I have never been one to follow “a diet”. The path that took me to where I am now follows:

Back in 2007 my brother, his future wife and I road-tripped to Louisiana to visit our dad and spend some time wandering around Mardi Gras. We had a splendid old time, ate tremendous amounts of really good food, and got to enjoy New Orleans when it was bearably hot and humid. Every day brought a new delicacy, and it being Mardi Gras time, we went through at least one full King Cake every day. Add to that all the deep-fried southern delicacies, gallons of beer from the Abita Springs brewery less than a mile from Dad’s house, and, well, a lot more of me came back from vacation than started out.

I didn’t really feel like I had gained weight. My clothes were tight, and I had to let out my belts a notch, but I told myself it was just the winter hibernation metabolism doing its thing. I bought a bathroom scale, found out I weighed around 205 pounds. It didn’t seem like such a big deal; as a martial arts instructor I work out a lot; up to fifteen hours a week in class, plus all my personal training. Still, 205 seemed kind of high.

Thinking back through the list of food on the vacation, talking to my girlfriend, I realized I couldn’t name a single vegetable I had eaten, other than those in the buckets of gumbo or chili, or french fries, or onion rings. That made me feel kind of queasy.

I immediately drove to the store and bought a car-load of fresh (-ish; they were from a grocery store) vegetables and fruit, and started packing bowls of chopped up tomatoes and avocado for lunch at work. This represented a big change from my usual habit of ordering a sandwich nearly as big as my head from the amazing kitchen at Founders Brewing Company, which at the time was one floor down from where I worked. In a surprisingly short amount of time, the weight began dropping off. For a while, it seemed like every other day I would weigh myself and I would have lost another pound. By the beginning of May I was approaching 190. That was when the Fulton Street Farmer’s Market opened for the year. Suddenly I had vegetables in abundance.

At about that same time my girlfriend put herself on a restricted diet, which cut out all refined sugar, corn syrup and wheat gluten. Have you ever tried going out to eat, or buying common snack foods, without getting at least one of those three ingredients? Not easy at all. Here is where I had to begin adding new tools to my intellectual toolkit. Namely, cooking. A random bowl of raw vegetables is perfectly acceptable for a lunch for one, but when it comes to full meals with a significant other, it quickly gets old.

Between the internet and my girlfriend’s stash of vegetarian and vegan cookbooks, we built up a reasonable repertoire of yummy recipes. For me, the weight continued to fall. I got down below 190 for the first time in who knows how long. Finally, I stabilized around 185, with one noticeable dip down close to 180 during a serious bout of the flu.

Life was good. Then I got complacent. Then the weight started creeping back, a pound at a time. Work- and life- related stress made things worse. Over the next year and a half I returned to 195, where my weight stabilized, though a hard weekend of pizza and beer could bring it back up close to 200. And here I stayed until roughly February 2011.

As is usual at the turning of the lunar new year, I had made a few goals for myself. Not resolutions in the sense that I wanted to accomplish this and that and the other thing. More like, these few important things in my life, I want to do a little better. Of course my weight was one of those things.

I don’t remember how I discovered Mark’s Daily Apple, but I had been reading it for a few months. He seemed to really know what he was talking about, and backed up everything with scientific research (from actual scientists, no less!), statistics, and anecdotal evidence from himself and others of a similar mind-set. And his website is the hub of a community of happy, healthy, motivated people.

Anyway: Chinese New Year came and went, it was now the Year of the Rabbit. And I read the story of the Unconquerable Dave. Take a minute to read this one. It is really something.

Re-inspired, I cut way back on the grains and legumes, and ramped up the meat and veggies. Again, the weight started coming off; more slowly this time, but also more steadily. 190 came and went, then 185. Then I got laid off, and my weight stabilized at 185. More free time meant more time to prepare good food, but it also means more time to eat. Took me a little while to find the right balance. I got the food figured out, and the weight started to come off again, still slowly and manageably. Unlike in 2007, I this time I noticed my energy level increasing, as well as the quality of my sleep, and my overall sense of strength and well-being. I don’t know exactly what I did differently this time. Possibly less sugar.

So here I am now. My weight is now stable around 175. I have had to replace most of my wardrobe; three bags of large clothes off to Goodwill, and a small stash of 36″-waist pants for the holidays. I have a new job, and I walk or bike one and a half miles to work every day, carrying an 18 pound backpack. The fresh vegetables are becoming scarce, so I will have to start buying supermarket produce again for the first time in six months. I still indulge in the occasional snack food or pizza, but usually only on the weekends, and always in smaller quantities than before.

So: What do I think of the Primal Blueprint? Here is a list.

1. The food side of the PB was surprisingly easy to stick to, up to about 80%. Cutting out starchy root vegetables, legumes, and grains seriously impacts dining out. So I prefer to show moderation, even in moderation. Having said that, knowing that I got such great results even while not being super-strict gives me more respect for the PB.

2. The exercise/lifestyle aspect of PB – move slowly a lot, sprint occasionally, lift heavy things, get lots of sleep – fits in well with the current phase of my life. Martial arts and the PB complement each other nicely. The most difficult part is “get lots of sleep”.

3. The online community is great! Lots of support from the commenters and posters in the forums. Given the lifestyles of many of the PB aficionados, it feels like a distributed tribe.

4. The information on the site is well documented. Sisson is very good at backing up everything he says with references for people who want to do more research on their own.

So I feel comfortable advocating the Primal Blueprint. It worked for me. A few of my friends have tried it out, and have had great results. I haven’t felt this healthy since I was in my late 20s. If any of my half-dozen or so readers have tried this, post a comment! I am interested in hearing your story.