I split the images into 3 galleries to help reduce load times – it still can take some time to load each page, so please be patient:
Additionally – you can see some of my favorites (and a brief explanation of why I like them) here: 100×100 Highlights
Here’s another way to look at the highlights: Constellation Maps
From Levels to a Gallery
- Over 20,000 levels generated before any images. This is twice as many levels as I generated for the previous gallery (80×80)
- At first, the top 120 levels had images generated. This is twice as many as the usual 60 that I generate because of the high number of levels to start. I later generated images for an additional 60 levels.
- 76 images for 49 levels are included in the galleries (the last 11 images/7 levels are from the “second tier” set of 60 levels). 25 levels have 1 image, 22 have 2 images, 1 has 3 images and 1 has 4 images.
- I looked at over 6,000 different images for the 180 levels. Each level had 12 images generated initially, and exactly half of the levels had at least 42 more images generated with a few of them having 100+ more images.
Four Weeks
My program started generating levels exactly 4 weeks before I finished the images for the galleries:
- For 20 straight days my computer was generating levels at just a bit over 1,000 per day.
- There were 2 interruptions of 3-4 hours due to crashes (a bug that I later found out about and fixed, after I wrote a utility that monitors the level generator and restarts it just in case anything happens).
- I paused processing for an average of about 30 minutes a day to do other stuff on my computer. I tried to keep this number very low so that the program kept up with the 1,000 per day pace (which naturally varied quite a bit without interruptions, from about 900-1200 levels depending on random luck).
- It took 18 hours for my program to select the top levels based on similarity filtering.
- It took another 6 hours for my program to generate the first set of images for 120 levels.
- It took a week for me to complete the process of looking at images, categorizing levels, regenerated images, etc.
Reaction
My expectations were very high given:
- The month long wait
- The huge increase in size from the previous gallery (from 6400 to 10000 tiles)
- The large number of levels generated and selected for images (twice as many as the 80×80 set).
- The strength of the previous set (80×80).
I have to admit that initially I was very disappointed. In retrospect I think that it was a mistake to make a double set. It takes a lot of manual time to go through images for 60 levels, and my favorites within each set change drastically from initial impression to completion of the gallery. 120 levels was too many – and I made it worse by generating images for 60 more levels rather than finishing the first sets.
After I stopped making new images – the set started to grow on me, and by the time I posted the gallery a week after I saw the first images, it had become my favorite.
It’s not uncommon for a gallery to start out as a disappointment and finish as my favorite – but this one probably had the largest gap between initial impression and final opinion.
Admittedly, while I was working on the next set of images (95×85), my opinion of this set dropped a bit. With a starting point of half as many levels and a smaller board size – the 95×85 gallery manages to compete with (and I think even exceed) this one, though I think the top 5 levels from this set are better.
The Next Set (After the next one)
My initial disappointment with this set led me to make my first significant code change to the level generator itself that adds a bit more randomness (though I can turn it on/off and choose the level of randomness I want). Over half the levels generated for the 95×85 gallery used this option and I think the gallery benefited from it significantly.
This is why I decided to make a new 100×100 set following the 95×85 – well that, and I’ll be honest, my program can’t go much larger without it moving at a snails pace. The added randomness also drops the speed of level generation down from 42-46 per hour to 24-28 per hour for 100×100.
As usual – as long as my computer isn’t generating new images for the set that I’m working on, it is generating levels for the next set. The downside is that I have to decide on the board dimensions of the next set before I’ve formed any opinion of the current set.
An unexpected tornado resulted in my area left me without power for about 24 hours just as I had completed much of the initial manual work for the 95×85 set. That gave me enough time to form an opinion – and for the first time change the dimensions of the next set after it had already started generating images.
The change is very minor – from 100×100 to 101×99. You won’t be able to see the difference in the levels, but it might make a difference for my program.
Speeding Up the Process
Shortly after I started generating 101×99 levels, I started playing around with cloud processing via amazon web services. The free-tier allowed me to spin up a virtual machine (though one with very limited memory and just 1 CPU). In about 2 hours of processing, this virtual machine successfully generated 1 level at 101×99.
Obviously, that wasn’t going to help me much, so I tested a compute optimized VM with 8 CPUs at a cost of 70 cents an hour.
My PC has 4 cores and 8 logical processors and my program makes levels on 8 threads – though the gain in speed is marginal after 4 threads. The AWS VM outpaces my machine by about 50%, which doesn’t impress me much given that my machine cost about $1000 when I bought it 5 years ago. The VM is a stopgap until I buy a new computer – though it is nice to know that if I so desire, I can spin up a dozen of these VMs and make a new set of 100×100 images in a day or two.