The latest news, project announcements, etc.
I'm writing this mostly to remind myself that, despite the frustrating lack of gender diversity among technical workplaces, I think it's getting better, and I should remember the positives while working to overcome the negatives (like the men I've had to remind not to use the word 'rape' casually...)
For instance, in my career as a web developer:
- The first place I worked (Fraynework Multimedia) was a technical company run by and mostly staffed by women,
- The second place (MyInternet) had a female sys admin,
- The third place (Obsidian) had a female developer,
- My current workplace (Red Ant) recently acquired a female developer,
- I've worked with quite a few power-house female project managers who were very tech savvy, and
- I've just discovered two very technical women working in quite different fields - Doctor Kristen Stubbs of the Toymaker Project and Garann Means (a web developer who I discovered via her work with Node.JS) who inspired me to write this post.
So I'd like to applaud all the technical women in my life who've stuck it out in what can be a less than inviting field - I think our work is a lot richer for your presence.
Just started playing with MongoDB
(in association with a new NodeJS
project - more about that later) and I've noticed a 'small loveliness' in the mongo command line client - brace-highlighting.
This might seem like a small thing, but it makes it that much nicer a tool to use, and it's a level of attention-to-detail that bodes well for the rest of the tool. Bravo, guys. :)
I've been wanting to model this up for a year or two now (and gen'rally wanted to up my Blender skills while I was at it) so I was super happy to get time yesterday to sit down and have a hack at it.
...and super happy with the results, too, once I wrapped my head around Blender's Bezier curves (thanks primarily to this BlenderNerd
video.) The trick was tying a Bezier curve to a circle as a Bezel object, and then tweak the curve until I had the inside and outside shape I wanted. Copy and paste for the engines, add some extruded Bezier curves as engine supports, and bake out the result as polygons in an STL file, and voila - now it's a product in my Shapeways store!
Ultimately, though, this for a single purpose. My podcasting alma mater, Starship Sofa
, is about to reach it's three-hundredth episode, and I'd really like to present Tony with something to celebrate this milestone - I think one of these rocketship in shiny stainless steel (preferably engraved with 'SSS 300' or something like that) would be awesome. It'll cost about $400 AUD to do, though, so I'll need some help - anyone interested in chipping in? Should I run a Kickstarter or something?
Firstly, SteelWorks. I finally worked out why level loading and saving was failing in the Unity web player - Application.persistentDataPath is disabled there (and the documentation isn't very forthcoming about it.) So the web version
now runs correctly, and even has instructions embedded in the web page. I've also tried my hand and creating some standalone builds (which do
support loading and saving) - please try them out and give me feedback.
Secondly, I've returned to one of my first Unity experiments - drivable vehicles using WheelColliders. Having learned a heap about Unity in the meantime, I still charged full-tilt into the same problem as last time - my vehicles roll over at speed. After experimenting with my own 'anti-roll force' solution, I cannibalised what I found here
to make my own anti-roll-bar solution. With vehicle speed capped, it's reasonably stable - try it out here
. (WASD for driving, camera rotation with middle mouse button, zoom with mouse wheel, SPACE for vehicle reset.)
Thirdly, I scored an early birthday present.
That's a Pololu Zumo robot (chassis, sumo blade and Arduino shield) two metal motors to drive it and an Arduino Uno to control it - with an Arduino starter kit thrown in for all the other things I plan to do with that Arduino. Nice work with the packaging, Little Bird Electronics. :) (And as a postscript, I finally scored 100% on Everclear's Santa Monica - Rock Band 3, Pro mode Drums, Expert. A great, darkly funny song and a real pleasure to play - very satisfying. :) )
More work on my game/experiment
The editor now does all the basic stuff - add and remove tiles with rotation, and everything built with an eye towards touch interfaces. (The camera rotation trigger is currently mapped to middle-click, so I've screwed myself on my work Mac, but anyway...)
Last night I serialised a level to XML for the first time - with a few additions in the UI I should be able to added saving and loading to the interface. Then, all that's left is to make it into a game - splash screen, start and finish markers, winning/losing conditions - the last 90%, in other words. :)
The experiment keeps rolling
Most important change is the projector shadow - thanks to Terry Paton
for the tip on using Projectors in Unity to make easy shadows.
Also included is my amateurish 3D modelling, hot out of Blender
. (People, myself included, love to pick on Blender's UI... Props to those guys, though - we'd be poorer without it, and it keeps getting better.)
I've cleaned up some debug, experimented with more lights, and I'm firming up a lot of ideas in my head about level building and sharing.
...the first of many, hopefully. Click here to experience a little Marble Madness
Valuable lessons learned:
1. My previous clumsy hacks on camera control need to be rewritten - and as is usually the case, the solution was elegantly simple. (I simply move the camera to the ball and then pull back by the desired distance; rotating the camera in response to mouse actions is simple - the only tricky part was picking World rotation for rotation around the 'up' vector, and local rotation for rotation around the 'right' vector, to give a natural orientation.)
2. Adding a damping force made falling look dumb, and surface friction doesn't make any difference to rolling speed - what I needed to tweak to stop it rolling (realistically, but annoyingly) out of control was drag - both the regular and angular kinds.
3. Simple is usually best. For example, the ball moves by apply a force in a direction - the direction is a vector based on the 'forward' direction of the camera. Players don't expect to be pushing 'away' from the camera, though - they expect 'forward' across the terrain (which depending on how steeply down the player is looking, might be a two very different things). So I need to split the camera's forward vector into its vertical and horizontal components - hmm, do I do a Vector3.Project, or something? Simplest solution is to just zero out the 'y' component of the camera vector and renormalise - super simple.
4, Gizmos - super useful. I have a gizmo pointing out of the ball in the direction of force, which makes debugging a heap easier.
I've added some debugging while exploring a Chrome+OSX+WebPlayer bug - turns out to be a known issue regarding that combination.
I've also added cheesy translucency so that terrain doesn't block visibility - I learned a heap about Z ordering, Unity's transparent textures and created my first shader to get this in place - all valuable lessons.