Thursday, 10 July 2014

The internet continues to amaze

For years the internet has been amazing, and continues to amaze.
When I was first introduced to Compuserve over a hacked retail till modem running at 14.4kbs I struggled to comprehend what I was seeing. When, back in 1994, I was told "just type in whatever you're looking for", in my naivete, I didn't think to enter "tits" or "porn" - I just put "carrot soup". From memory there were about 36,000 results. My brain hurt. In 1994 the internet was amazing.

Years later, as I wrote entire DMS systems in HTML and Javascript (long before it was cool to call Activex objects AJAX) I was blown away by how anyone could not only contribute to the internet (not just the world wide web), but build massive, complex systems on it. In 1999 the internet was amazing.

Seeing those fantastic, simple animations and tiny file sizes when Flash hit the 'net was pretty amazing too - then it became a fully-fledged web publishing platform, for games, apps and even music and video online. It was all pretty amazing stuff -as was watching it all disappear again, as Web 2.0 rebooted the 'web - and almost every application became a browser-hosted application.

In short, the internet is pretty impressive. It was when it first came to public consciousness, and it still is today. More than anything, as well as being a massive repository of data and information, the internet has made interaction not just possible, but essential. Not stupid social media, and tw@tter updates, people showing photos of their morning breakfast toast-and-jam-(nom-nom), but being able to speak with people, literally from all over the world. Talking about anything. For any reason - sometimes for business, sometimes to buy, sometimes to sell, and sometimes just over a shared interest.

What amazes me more than anything about the internet are the people who use it. People who give up their time, expertise and experience - all for free. For no reward other than seeing a job well done. Lots of people use the internet to give things away: whether it's open source software, designs for the latest 3d printer, or - sometimes - something a little more personal.

I had one of my "isn't-the-internet-brilliant" moments last night, when I received an email from Martin (who runs JustAddSharks.co.uk). He'd been reading this blog, seen we'd had problems laser cutting some design ideas, and rather than wait for the next painful installment of disappointment and broken laser tubes, he downloaded the designs and cut out some of our projects, so we could see the results straight away!


Without prompting, and for no reward (we had no idea he was doing it) Martin tried out one of our ideas and sent the results straight back. He even sent some comments and suggestions for possible improvement (yes, the tiles do look a little to far apart in the final cut!) and used different materials to demonstrate the different effects. And all because something had piqued his interest enough to want to contribute.


Our favourite has to be the (left-most) 0.8mm birch ply version: the tiles look about the right thickness (though the left-most 2mm mdf looks pretty good too, for a rough-built log cabin, say).

What was really amazing was that someone, somewhere, saw what we were doing and wanted to get involved. And just did.

Some days I really hate the internet.
I work with it every day. I build websites. I write complex software and use a mix of web- and non-web languages. I love the underlying technology, but some days I hate how it's abused. I hate adverts on just about every YouTube video. I hate that people allow them to be put on their videos (the person posting the videos can decide to turn them off if they want). I hate viruses and pirated software. And stupid in-jokes about cats, and massive video attachments in pointless emails, asking me to "share this".

And porn. Maybe it's considered weird - but I don't want porn on "my" internet. I want it to be a place of learning, shared interests, marvellous inventions and a community of people making everything better, one stepper-motor-driven device at a time!

But some days I really love the internet.
Thanks to Martin's email, today is one of those days.

Wednesday, 9 July 2014

Laser cut roofing shingles for 28mm terrain

After the dismal failure of silicone mould making, but the tedious task of scratch building roof sections for our board game terrain, we decided to try laser cutting lengths of roofing tiles (rather than etching the entire, flat panel) to make our 3d models looks a bit more, well, 3d.

Using our scratch-built roof as a guide, we made each tile 3.7mm wide, 6mm high and spaced them 4.233mm apart. This means that a 4" strip of tiles can easily and cleanly be cut into 1, 2, 3 or 4 inch strips, to match any width of building.

Making the image didn't take very long at all using Inkscrape.
Our first roof section was just three inches wide, and we're unlikely to make any buildings more than 4" wide (they would take up too much room on our relatively limited 6x8" board sections) so 4" strips just seemed sensible. If ever longer runs are needed, it's no trouble to join two strips end-to-end to make longer runs of tiles/slates for a roof.

For a regular (modern, well-built, slate) roof the tiles work well when placed in a row and by simply overlapping (and offsetting) one row above the previous one. The red lines in the image below show where they can be cut to create a 4" wide section.


For a slightly more old-fashioned roof, just a single strip of repeating tiles gives quite a nice effect. We nudged a few up and a few down, and rotated some by just a few degrees. The tiles are all still roughly the same size (on our scratch-built roof, the tiles were all different sizes and fitted like  jigsaw to get them to overlap properly) but the end result is still a pretty rough-looking surface.


To avoid repetitive patterns, the higgledy-piggledy row of tiles can be cut off at different places, so the pattern starts on a different tile at different places throughout the roof section. The tiles can, of course, be flipped over, to make them lean in different directions. And then, there's always the possibility of mixing shorter sections of straight and wobbly tiles on the same roof to create an old slate roof - generally regular, but with the old slate slipped or out of place:


The designs appear to work pretty well onscreen.
All we need now is access to a working laser cutter to give them a try!
Here's a pdf of the roof strips - load into Inkscrape and copy/paste whichever parts you need:


The top two rows are ready for laser cutting. The bottom two rows allow you to ungroup each individual tile (and the connecting strip) to rotate/resize/respace as necessary. When done simply select the entire row of individual tiles as well as the connecting strip and select "path -> union" from the menu, or hit Ctrl & + to join all the shapes into one single shape.


Making silicone moulds from scratchbuilt terrain

It was an interesting exercise, albeit a pretty  fruitless one.
Without a degassing chamber, it was always going to be risky - though any bubbles that might have formed in the mould would simply become small bumps on the final, cast shape, which could easily be cut/sanded away from the dental plaster. As it turned out, the RTV silicone we used came out in a single, big lump, rather than a long, thin, fluid stream as the YouTube tutorial videos suggest.

Maybe it's just a lack of technique here - we treated the silicone like dental plaster and just wanted it out of the mixing cup before it set, but the set-up time for silicone is hours, not minutes like plaster!
A bit of banging on the table and quite a few bubbles came to the surface. This either meant we'd made an excellent mould and managed to get all the air bubbles to the surface, or the entire silicone mixture is likely filled with air bubbles throughout and the mould is already ruined!


After making up some silicone and leaving it overnight, taking the roof section out in the morning was quite exciting. The silicone poured into the mould as a thick, gloopy goo - nothing like the thin, flowing liquid-like properties of the dental plaster we use when casting pieces. We weren't even sure whether the silicone would pick up the details because it was so thick and gloopy.


The silicone worked really well.
In fact, it worked rather too well, creeping underneath our individual layers of tiles and making a thin film of silicone between each course on the roof. This made removing the roof from the mould quite tricky, without ripping the really thin layers of silicone.


The end result was a not-so-satisfactory mould. There's no way it can be used as it is. And our beautiful wobbly tiled roof section now has loads of little bits of pink poking through between the tiles. So it looks like we're going to have to make a new roof section as well!

We don't really fancy making another 3" wide roof section again from so many individual tiles. But simply engraving a sheet of mdf/plastic doesn't really give a very satisfactory result - the roof still looks like a flat sheet once the building has been constructed.

So maybe there's a middle way.... maybe we can draw and laser cut strips of shingles, all connected along the top edge, to glue on in overlapping fashion to create our roof effect - in this case it'd still mean gluing about ten strips (rather than lifting a complete roof if we stuck to just laser etching) but that's still less work than we put into making a single row our course of tiles on this roof section!

Tuesday, 8 July 2014

Scratch building gaming terrain for Wild West board game

The laser cutting to make linka-like moulds at BuildBrighton was a bit of a failure last night. The laser cutter is, once again, out of action. We really need to spend some time down at our new unit getting our laser cutter up and running, so we can just crank this sort of stuff out!

In the meantime, after seeking some advice, we tried scratch building some Wild West style buildings. There are a number of companies online selling laser-cut buildings, which are great for modern games, or near-future type boards - but for old Western type games, they all look a little bit "regular".


This is a typical Wild West type building. It's weather bleached and a little bit higgledy-piggledy. The board planks are warped and all over the place. This is quite difficult to recreate with a sheet of uniform, laser cut, 2mm or 3mm mdf.

Someone at our local model store suggested coffee stirrers as planks.
It seemed like a good idea, so we set about making a wooden shack from actual wood


We started out making a basic framework for our building using some 3mm foamcore board. Then stuck a load of coffee stirrers to the front side and cut them to length. We deliberately cut them off the board, then placed the shorter lengths onto the foamcore. This helped to create the slightly wobbly, less-than-perfect edges along the sides of the building


It would have been easier to glue all the planks in place, then just run a knife blade along the edges, but because our wood is still quite regular (and a bit chunkier than the thin planks used in the building in the photo) we tried to emphasise the rough look of the building by making the edges irregular and a bit out-of-alignment.


Making the building was actually quite a nice process - far more "art-and-crafty" than the usual "engineering and construction" approach used (when building rooms from the Hirst Art moulds). While the glue dried, we taped the sides together and checked the overall size against one of our 28mm Wild West miniatures.

The front of the building was extended beyond the roof level, as was common with commercial buildings in Old West towns. The building is 3 squares wide and 2 squares deep. It's a little on the small side for an actual, to-scale building (but a bit too large to be an outhouse) but it looks fine against the miniature as a generic wooden building. Maybe a simple sign on the top part of the front would make this look like a believable "general stores" or something?

The roof for the building could be made from a number of materials.
A lot of buildings had simple wooden shingles, many had corrugated tin roofs, and occasionally a brick/stone building might have a slate/tiled roof. We couldn't  decide which to go with, and eventually settled on shingles.

Our local model shop has sheets of plasticard for a quid a pop which was perfect for trying out a few ideas. Before we actually started on our roof, we looked again at the reference photo and decided that our coffee stirrer building still looked a little regular. What we needed was an overlapping plank built building.


We cut some of the plasticard into strips. Luckily we didn't have a steel ruler to hand, and pressed just a little too hard with the knife blade, which created the exaggerated, wobbly edges. Horrible for a cut plastic edge, but perfect as some rough-cut wooden planks.


Along the length of each plank we ran the tip of a craft knife, to create a wood grain effect.
Although it's not easy to see this on the white plastic surface, once it's painted and drybrushed, the deep cut, along with the slightly raised edges on each side of the cut, will give a really strong, visible wood grain.


Perhaps it was the solvent fumes from our plastic cement, but once we had a decent stretch of "planked wall section" from plasticard strips, we had a crazy idea about using the same technique for our shingle roof. Except instead of using strips, we'd cut each strip into individual shingles, and glue them together to make a roof. What a bonkers idea!


We took some of the left-over strips from the wall section, and cut a few more, then sliced them into roughly rectangular shapes. Luckily everything in our Wild West reference picture was made from rough-hewn wood - slightly dodgy shingles with uneven sizes and wobbly edges are just what we need!


Making the roof was a slow, tedious job. Every layer or two we had to wait for the plastic cement to dry enough to make the previous row secure (it works by melting the plastics together, so the shingles are really fragile on the roof, until the glue has dried fully). But after a little while, the roof was complete.


In place it looks ok. The whole building looks fine. It needs a layer of paint and maybe it'll start to come to life. We're really pleased with the (painstakingly built) roof and the rest of the building looks not to bad - it certainly has more character than some of the rather flat, laser-cut western buildings available online.


Our plasticard isn't really thick enough to make the awning frame from, so perhaps some laser cut mdf just for that would suffice - then we can stick a rough-cut planked roof, or maybe some corrugated metal on top to finish the model. A large sign for the top part of the frontage, perhaps with a thin wooden frame would be more inkeeping with our slightly more regular house-build than a hand-painted sign (as per the reference photo) and that's our first western building done!

We'd like to have another go at making some more western style buildings, using the plasticard strips, as well as trying the odd brick building (maybe a bank or a hotel). But the thought of making more of those roof sections is a bit daunting.

So before we go sticking everything together, we might just dig out some silicone and have a go at making a mould of this roof section. If it's thick enough (our current roof section is at least as thick as the Linka wall pieces we made the other day, but much larger) it'd be far easier to just pour some (dental) plaster into a mould in a few minutes, than spend two hours or more gluing each individual roof tile in place!

Monday, 7 July 2014

Linka gaming terrain moulds

Paul has been busy casting loads of Hirst Art pieces for our Space Raiders boardgame terrain - enough to make a few decent sized rooms at least! He also came across some alternative moulds from the late 70s/early 80s called Linka.

Just like Hirst Arts moulds, these are best used with dental plaster/stone, to make solid, robust wall sections. Unlike Hirst Arts, the walls are more like thin, flat panels, than blocks to make walls from.


The moulds cast really easily and the pieces, although thin, are relatively easy to get out without too many breaking and snapping during de-moulding (some of the long, thin sections are susceptible to breaking as the mould is flexed to get the other sections out)

One really nice element to the pieces is the way they can be connected either in a long, flat section, or at right angles, to make nice, sturdy wall pieces.



These moulds were originally created for Hornby 0-gauge and 00-gauge model railways. As such, they're not quite to the right scale for our 28mm miniatures.

The 0-gauge stuff looks fine against a 28mm western-styled miniature. The bricks may appear a little larger than if they were made to the same scale as the character, but they're not completely out-of-scale. Given that most 28mm miniatures have "cartoon" proportions (large heads, feet and hands) having larger-than-they-should-be bricks in a wall section isn't the end of the world.


The smaller 00-gauge stuff also looks ok, set against a 28mm character. In fact, the bricks look more in scale to the character than the 0-gauge sections.


But it's immediately obvious that the doors and windows are far too small for this size playing piece. What we need is something somewhere inbetween....

Using the Linka moulds as "inspiration" (we definitely did not just rip off their idea but make the wall sections a little larger) we drew some wall sections in Inkscape, but made them a little larger.


We kept the interlocking edges so multiple pieces could easily be connected together. However, we made each wall section almost as high as a playing piece. By creating some "full-height" and some "half-height" pieces, they can be stacked one on top of the other to create either single-storey or multi-storey buildings.

We made each wall section in 1", 1.5" and 2" sizes.



(In the image above, we've incorrectly labelled the 1/4" section as half-inch. Sizes are approximate: a one inch section is 7 bricks across, but a quarter-inch section is two bricks across. Obviously, four of these sections would be longer than a single, one inch section - the length, in inches, is really only a guide, to help determine how many playing squares each wall section would cover)

After placing the layouts alongside some 1" squares (our board game playing surface uses 1" squares) it became apparent that we'd need to do some jiggling about:

To place a door, for example, it would either have to go in the centre of a single 1" piece or to one side of a longer 2" piece. In either case, we'll end up with a door frame very close to one edge of a wall section, which is potentially a point of weakness. We can't place a door in the middle of a 2" piece, because then, when it is placed on the board, it would fall between two playing squares, and not line up with a single one.

An alternative to this is to create a 1.5" wall section, into which we can put our doorway, allowing about a quarter of an inch of material around the sides of it. In this way, we can put the door in the middle of the playing piece, but we'd need either quarter-inch or three-quarter-inch wall sections to go on either side, to create either a 2" or 3" long wall section.

As we couldn't decide which to choose, we drew both.

As we already have some liquid silicone and catalyst here, the idea to laser cut and engrave the brick pattern onto some 3mm acrylic and - assuming everything works as we hope - make a rubber mould of the final piece; this will allow us to make multiple wall sections quickly and easily from our dental plaster, without tying up the laser cutter for hours at a time!

Progress will be reported (successful or otherwise) in a later blog post......


Friday, 27 June 2014

RFID reader for BiuldBrighton door pt II

The RFID reader door-opening mechanism at BuildBrighton went a bit funny a few days back. The screen was full of garbled characters and the system got into a "locked up" state, so that no-one could use the door entry system! As we were using "in-development" firmware, there was no clever trickery like watchdog timers keeping everything in check, it just locked up and stayed locked up.

We're not sure of the exact cause of the failure, but given that we noticed there was no flyback diode on the relay coil, there's a good chance some negative voltage has caused it to go screwy!

After failing (and once someone had arrived at the hackspace with an actual piece-of-metal key to open the door) it also looked like someone had had a go at fixing it - not be consulting the schematics, reading the firmware or tracing back the wires to see how it worked - more like poking odd wires into odd holes. No wonder it stopped working!


So the new v2 version is going to have to be soldered together, to stop little fingers from poking about with the wires. While we're about it, we're also using on of Arthur's really cool ethernet-to-UART modules to do the talking to the BB members website.


At about midnight last night, we finally got a working duplicate copy of the door opening mechanism. We made everything that needed to connect to anything else use a socket (or in some places, a 0.1" pitch pin header) which helped with the modular prototyping. Arthur soldered up the wires from the door into a number of "plugs" using some more 0.1" pin header and plugged it all in.


Amazingly, it worked pretty much first time (although, it had taken about four hours to solder up the perfboard, inbetween helping out other members, drinking tea, munching pizza, doing some laser training and cutting parts for another project).

BuildBrighton once again has a working door entry system.
Which means we can get back to our own personal projects for next time ;-)


Friday, 20 June 2014

How Hirst Arts moulds can change your game

Not just because they create really impressive looking terrain. Not even because you can end up with loads of modular sections which allow you to create thousands of combinations of Space-Hulk style corridors. In our case, the need (ok, the desire) to use the Hirst Art moulds has actually made us change the way we've approached our gameplay.

Originally, all our board sections were designed on a strict 1" grid. All walls were either exactly horizontal or vertical (following the lines of the grid) and each wall filled one square-width.

Collision detection was easy - draw a line from the centre of the start square to the centre of the destination square and walk along it. If, at any point, you hit a square containing an obstacle, the line of sight (or line of firing, it uses the same algorithm) is interrupted where the collision occurs.

However, with the Hirst Arts moulds, we've had to make a few changes.
To begin with, we've had to offset some doors and entrance-ways on the rooms, deviating slightly from the "how to" guides on the Hirst Arts website. The way they are designed in the online guides puts the door in the dead centre of a two-square wide room

On a playing surface with no grid (a typical wargaming table for example) this causes no problems. So that our doors still line up with our grid (along with the walls etc, while still trying to get the maximum playable area within each room) we've moved the door sections across by half-a-square, and replaced the pillars on either side with a single-pieced section, off to one side


In the image above, we can see already where our problems are going to stem from, if we stick with the rule that each wall occupies one floor-tile-width, when it comes to calculating line of sight, and line of firing.

Even if the corner pieces cannot be walked through (the corner section takes up too much room to be able to comfortably place a 25mm base in the square) it's pretty obvious that a character placed in  the centre square below the wall should be able to see the square diagonally opposite. But with the "one wall takes a sqaure" rule for line-of-sight checks, this LOS would fail, and potentially spoil the effect on the game.

When it comes to corner pieces, the answer is simple - remove the corner pieces from the "collision map" when checking for line-of-sight (and line-of-firing)


Now anyone standing in the centre square below the bottom wall can see all squares diagonally. The LOS goes through the corner squares containing a small piece of the wall, but this isn't enough to cause the line-of-sight check to fail, and shouldn't stop a character firing at another square, diagonally across from them.

But even this doesn't actually fix the problem. The problem is that the walls don't take up one square width. And sometimes our line-of-sight check is going to fail incorrectly, because of the angle between the source and destination squares, not just because of corner pieces on room edges. For example:


By using a full square-width for our line-of-sight checks, this would cause one character to be invisible to another - the line-of-sight passes through a square containing a wall section. But if we ignore the darker shaded areas, we can see that in this case both characters would be able to see past the rounded corner of the wall, and should be able to see each other. Here's another example:

A character on the green square should be able to see a character on the blue square. The amount of wall in the way is negligible. But the line-of-sight check still passes through a square which contains a wall section - even though it's not directly in the line of sight between the centre-points of the two squares. Using the current grid-based approach to line-of-sight, we'd still be getting a hit with the wall, when quite clearly there shouldn't be one!

However, the Hirst Art moulds are just too nice not to look at. There are plenty of war-gaming and tabletop gaming fans out there, not only with the moulds, but with some really nice (non-regular) terrain, just waiting to be used in a game like this. So we need to find a way of accommodating different, not-so-blocky rooms and layouts. And the obvious answer is... another software re-write!

This time, our board game (in the app) consists of a graphic/image layer, depicting the map as the playing surface - and underneath this layer (invisible to the player) is a one-bit collision map. We're going to use the grid as a guide for the movement of playing pieces (and for calculating proximity between pieces and special squares on the board) but for line-of-sight, and firing, we're going to pretend the grid simply doesn't exist.

So when playing a game like this, the collision map can have any shaped room, with walls of any thickness, placed directly on the grid, or slightly offset from it. Of course, this is going to make an online editor a little more complicated to code (and maybe even to use) but the end result will not just be a better looking game, but a game with much better (and more accurate) gameplay. And if it helps improve the gameplay, there's no way we're leaving it out!

Now, time to get coding again....