Main Categories: | Landscape | Fenceposts | Wildlife | Trees | Mushrooms | Art | Games || All Posts ||
for daily images, visit my ||Tumblr||

Saturday, 30 August 2014

Velvet Worms ...at last!

Peripatoides novaezealandiae - Peripatus

I first read about velvet worms - aka. peripatuses - in Stephen Jay Gould's Wonderful Life - a book about the burgess shale fossils (among other things) and immediately went to look them up on youtube and wikipedia. They are beautiful creatures that, unfortunately, live nowhere near scotland.

Peripatoides novaezealandiae - Peripatus
However I had noted that they do live in New Zealand, so when I decided to take a trip to Auckland, peripatus went straight to the top of my list of things to see!

Over the weeks and months of looking under logs and asking people, I slowly came to the realisation that they are a pretty rare and hard to find animal in New Zealand. Perhaps their range and fecundity have been affected by the massive environmental upheavals of the last few centuries - like so much of the rest of the native fauna.

After three months of nothing, I eventually engaged the enthusiasm of a very experienced local bush man, who had seen peripatuses before and thought he might know a likely spot in the Waitakere ranges.

Peripatoides novaezealandiae - Peripatus
Sure enough, under the first log we looked at we found a small, formless, velvety blob. As I held it in my hands,  it extruded feelers and legs and elongated until there was a fully formed, caterpillar-like creature gliding sinuously over my palm.


We placed it back on its log, and took some photos and videos as it walked about. They are nocturnal, and it was obviously uncomfortable being out and about during daylight on a cold winter's day.



Although we continued looking, that was the only velvet worm we found, and it may be a very long time before I see one again.

Friday, 29 August 2014

Caravan Defender

It's been a long time since my last successful game jam - that was the dotBrighton Game Jam in september 2012.

In the meantime I have tried to do Ludum Dare a few times, working at home, on my own, but I never get close to a finished product in the time allowed.

So it was great to sign up for Kiwijam 2014 - they set up a maker space in Auckland University and did a great job of organising stray individuals like me into teams ready to attempt the impossible - make a game in 48 hours!

Kiwijam maker space - humming with energy on Sunday afternoon, as the clock ticks down - will we get our games done?

My team decided to use Unity3d - such a good tool for rapid prototyping - and eventually we went with the idea of doing an RTS game about creating and defending caravan trade routes, and although we didn't have time for graphical niceties, or game structure, we did get the game engine functional within the time limit.

Screenshot from the version of Caravan Defenders presented at the end of Kiwijam.
I've published the game on itch.io for anyone who would like to mess around with the system. There is no way to win, unfortunately.

Click here to play!
 Enjoy!






Markov Text Generator

I wrote this simple Markov text generator last week - mostly as an exercise in getting to know the Dart programming language and tools.

The generator works by being presented with a body of text, and it goes through the text, recording statistically what letters tend to follow on from the various sequences of letters. Then it uses this data to generate more text using the same statistical probabilities for each letter sequence. See this wikipedia link for more details.

For such an inanely simple algorithm, it is capable of coming up with beguilingly complex results:

Seeded with a 234k chunk of The Lord of the Rings.

I'm scheming on how I might use it in computer games... NPC background chatter might be one use, or libraries full of books - you could insert useful text on a particular page, and have the players get a clue about what to look up in the book to get useful results, rather than just inane babble!

But text is only a sideline - Markov Chains might also be useful in ai routines, random level generators - anywhere where you want to approximate a complex system without modelling all the underlying processes.

Thursday, 1 May 2014

Octopus Stinkhorn

Here's an outlandish-looking stinkhorn from New Zealand - the octopus stinkhorn. 

Clathrus archeri - Octopus Stinkhorn


Clathrus archeri - Octopus Stinkhorn



Clathrus archeri - Octopus Stinkhorn



Clathrus archeri - Octopus Stinkhorn


Monday, 7 April 2014

Millhouse Post Office

Here are a couple of photos of Millhouse Post Office.

One from about 1980 maybe? (I'm afraid it has no date on it)


And a second one from 2014:


You can see the results of combining the two here: Post Office

Wednesday, 5 March 2014

Fallen Tree Lingers

I'd just like to show you a couple of photos I took of an alder tree that fell across a river near here. The first pic was taken just after it fell - May 2003:


The second was taken in February 2014:


 I am amazed that a tree could hold on in a fast flowing burn like this for such a long time. Some of the beggest differences in the images are due more to the time of year, rather than the decade that separates the them. Hopefully I'll remember to revisit in May and get a clearer comparison...

Tuesday, 4 March 2014

Spirals

I wrote a while back about how elegant spirals can be in computer games - in particular, they are useful if you want to iteratively cover a space with evenly distributed points, with the range expanding out from a single starting location and with one growing tip - I have used them in the past for searching for a suitable placement point in a landscape for a game object, but I'm sure there are many other applications.


Anyway, I didn't include any code in that post, so here below is a Spiral function that is ready to use. This is written in C# for Unity, but should be easy enough to convert to whatever you happen to be using.

Vector3 Spiral( float dist, float spacing ) {
float rad = Mathf.Sqrt(  dist / (Mathf.PI*spacing ));
float angle = Mathf.PI * 2.0f * rad;
 
Vector3 retVal = Vector3.zero;
retVal.x = spacing * rad * Mathf.Sin( angle );
retVal.z = spacing * rad * Mathf.Cos( angle );
return retVal;
}



'dist' is the distance along the line of the spiral from the origin, and 'spacing' is how far apart you want the coils of the spiral to be from each other (this spiral has the handy attribute of maintaining a constant radial distance between each concentric coil.)

To achieve an even distribution of points, increment the distance param by the value of spacing - that way points will be equally distant form their neighbours on the line as they are from the neighbouring coils.

Here is a screen shot of the points generated by calling Spiral( dist, 1.0f ) with dist = [0,1,2,3...] As you can see, the unit spheres are packed pretty close to 1 unit apart:



Changing the spacing to 2.0f and iterating Spiral( dist, 2.0f) with  dist = [0,2,4,6,8...] will lead to each of the unit spheres having 1 unit's space between them:



...Spirals!