Updates from Dark Liquid Toggle Comment Threads | Keyboard Shortcuts

  • Dark Liquid 1:19 pm on September 30, 2012 Permalink | Reply
    Tags: ftl, ,   

    FTL 

    I’ve been on holiday the last week and so I’ve been taking the time to play some games. One game in particular I’ve been playing a lot of is FTL. FTL or Faster Than Light is a sort of space-ship simulator with elements of rogue-like gameplay.

    It’s available on Steam and GOG, but I’d recommend getting it via the FTL website as that way you get the Windows, Linux and Mac versions, as well as a Steam key too.

    What I really enjoy about FTL is the fact that it really feels like you’re managing a spacecraft and the rebels constantly on your tail add a real sense of urgency and danger to each decision you make. In FTL you get to control power distribution to various ship systems, you control the doors and can vent oxygen into space via the airlocks. You control individual crew assignments and each crew member has their own health bar as well as the ship itself having both hull damage and shield strength.

    The fact that the game employs the rogue-like of perma-death (no reloading from an old save) and randomly generated maps and events makes every game unique and even the events themselves have multiple possible outcomes which are randomly chosen meaning you can’t even keep an eye out for things you recognise, as that guy you rescued last game that joined your crew might blow himself up in a crazed rage taking out half your ship in the next game.

    The game is also brutally hard and unforgiving. I’ve yet to complete it though I’ve been close on several occasions. To show just how fickle the game can be, I played one game on ‘Normal’ difficulty and managed to destroy part of the rebel flagship at the end, but got defeated. I then played an ‘Easy’ difficulty game and died on my first jump – the game lasted all of about 2 minutes!

    It’s frustrating, but ultimately incredibly rewarding and satisfying. Every decision you make, every action you take in the game has a real effect on you chances of success which only adds to the aforementioned sense of urgency. It’s an incredibly fun game and if you’ve ever wondered what you’d do when you have aliens destroying you oxygen producers, your engines are on fire and you have a choice between firing one last shot in the hopes it’ll take out the attacking ship or diverting all power to the medbay to heal your crew so you can attempt to retake and repair the ship and retreat, well, FTL is for you.

     
  • Dark Liquid 6:55 am on September 15, 2012 Permalink | Reply  

    Numenera 

    Damn, I could not be more excited about Numenera. For those of you unaware, Numenera is the new roleplaying game by Monte Cook (a long time game designer that has worked on D&D, Call of Cthulu and others) being crowd-funded on Kickstarter.

    From the initial announcement, through to the latest blog post, everything I have heard about it makes me more and more excited. It sounds like exactly the kind of game I’ve always wanted to run and play.

    The mechanics are designed to be very simple and light and remind me of a cut down version of the FATE rules in many ways. I really like the FATE system which puts more mechanical emphasis on narrative and story-telling rather than D&D which is more mechanically focused on combat simulation. One of the coolest things about Numenera is the way it removes a lot of the work involved in performing actions in game. I recommend reading Monte’s blog posts on Numenera to learn more.

    Apart from the mechanics, I find the setting intriguing and exciting as well. Set a billion years in Earth’s future, where civilisations have risen and fallen to be replaced with another, Numenera takes place in the Ninth World – the ninth civilisation in the pattern. Earth and even the solar system itself are littered with the remnants of great civilisations long since past.

    Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

    With all the detritus of advanced civilisations past, the Ninth World has it’s own magic users and monsters. Nano’s wield incredible power by tapping into the smart-dust nano-tech that permeates the very atmosphere. Incredible bio-engineered beasts and mechanical artificial life roam free or are harnessed for food and/or labour. The Ninth World is just beginning, a medieval sort of civilisation but built on the remnants of transhuman, post-singularity civilisations that have come before. The entire settings evokes a sense of mystic wonder and a sense of discovery, which the mechanics also hook into.

    Combat in Numenera is not the primary driving force of experience and character progression – discovery and narrative control is. This, if nothing else, is one of the things I’m most excited about. Again this works similar to the FATE system of buying in narrative control and tagging aspects. Players can spend XP on adding aspects to a place to lower the target number on a task they are trying to perform, spend some on a simple dice re-roll or spend more to increase their stats permanently. GMs can offer XP to take narrative control (“while you are sneaking past the guards, that device you found starts talking in an alien language very loudly, if you accept this XP”) or the can give XP to players for making a discovery such a finding a new artefact or learning a fundamental truth or idea such as “what goes around comes around”.

    Because combat takes second fiddle to narrative, character progression is fairly limited, but this is a good thing that stop characters and the GM getting into some kind of combat-effectiveness arms-race which seems to happen in D&D too often for my liking.

    Of course, these problems I mention with D&D aren’t really D&D’s fault, the players and GM can play however they like, I just find the design of D&D encourages things down those lines and my programmer brain leans naturally towards optimisation for the rules, which tends to result in a bit of power-playing. Numenera offers a complete departure from that kind of game with it’s strong focus on narrative and roleplaying over combat simulation, so I’m hoping it will become a firm gaming favourite at my table and might work nicely as a bridge to getting my group to try out FATE at some point.

    All in all, I’m really excited about the game and can’t wait to start playing it. I’ve signed up on Kickstarter for the Altruist Collector pack which gets a copy of the books fired off to a library as well as shipping all the goodies to me for free (shipping from the US is expensive). I also paid to upgrade my core rulebook to a fancy leather-bound edition which will be amazing. The best part though is that I get in on the playtester material so I can try out things before the products finally get released around June/July 2013.

    If you’re interested in getting in on some of these deals, there is only 60 hours left or so of the kickstarter at time of writing so go signup now!

     
  • Dark Liquid 8:07 pm on July 12, 2012 Permalink | Reply
    Tags:   

    RaspberryPi – The Saga Continues 

    I’ve not had a great deal of luck playing with my RaspberryPi since I got it. Those who follow me on twitter will know my lament:

    I’ve been through 3 SD cards and they all were faulty on arrival, either refusing to work at all or otherwise having so many bad-sector errors or other similar issues that they were essentially unusable – and this was just testign them out on my desktop or laptop, the RaspberryPi was even less happy about them.

    Finally though I’ve found an SD card which so far has seemed to Just Work™. I bought a 32GB Sandisk SD Card from Amazon UK which has worked a treat. I also bought a new SD card USB adapter since my old one died, and that seems to Just Work™ too. After all the stupid buying, then getting refunds, rinse and repeat, it’s nice to finally be able to actually get started!

    Since I want to play around with lower level stuff on the RaspberryPi, specifically games development, I wanted a distro that didn’t include any junk like X for example. I plan on doing everything directly through OpenGL|ES so any of the normal desktop stuff is pointless and a waste of space. I also want to try and squeeze as much performance as I can out of the device so I found a Raspbian Wheezy armhf minimal image. The image is built with support for hardware floating-point operations and is a very minimal, basic install so you end up with a lot of free space and much better performance for any app that requires floating point operations.

    I had some weird issues when putting the image onto the SD card because unless I had it mounted, I lost the device files to be able to write to it. I just ended up writing to it whilst mounted and it didn’t seem to cause any harm. I then used gparted to resize the partitions to fill the 32GB before I tried it in the RaspberryPi.

    I ran the following commands after booting the RaspberryPi for the first time on the new image:

    After that, I installed rpi-update by Hexxeh by following the instructions on the rpi-update github page. I ran this and rebooted, then I finally decided to try out the demo code in /opt/vc/src but found it wouldn’t compile.

    As it turned out, some of it was already pre-compiled, but the pre-compiled stuff was compiled without the hardware floating point instructions and was therefore incompatible with the rest of the system. I just changed into the lib folders and did a make clean and a make to rebuild them and found the demos I tried compiled fine and ran nicely.

     
  • Dark Liquid 12:02 pm on June 9, 2012 Permalink | Reply
    Tags: portal2, , ,   

    Latest Projects 

    My latest projects have been pretty interesting of late. I’ve been playing with the RaspberryPi. For those that don’t know, the RaspberryPi is a little credit-card sized computer designed to be a hackable, simple system similar to the golden age of early micro-computers such as the BBC Micro et al. It hasn’t quite got there yet and it’s still very much in the early stages, but being interested, especially given it’s very low price point of around £20, I decided to pick up one of the development boards.

    First of all I decided to buy a simple starter kit from SK-Pang, as having the board laying loose on my desk seemed like a recipe for disaster. The whole package together seems quite nice and after digging around for an SD card and imaging it with a copy of debian, everything seemed to work fine. What I wanted to do first though was get it on my wifi so I wouldn’t have to unplug my main computer to be able to network it. I bought a powered USB hub and a USB wifi dongle and while both seem to work, the RaspberryPi seems to have some power issues – something that’s been bought up on the forums et al I’ve noticed. It seemed that while the RaspberryPi works fine off the independent power supply I provide it, either it or the hub are drawing power on the USB port the hub is plugged into, making the RaspberryPi become a little unstable and not powering the wifi dongle enough for it to complete loading it’s firmware. One solution I’ve seen is to mod the USB cable between the hub and the RaspberryPi to sever the +5v power line, so that there will be no power draw. I’ll give that a go in the future, but until I work around my other issue, there isn’t much point.

    The second issue I’ve been having is my SD card. The crappy no-brand 2GB one I had laying around works, but only barely, and constantly causes -110 errors, etc when in operation, if the RaspberryPi will even boot from it at all. It’s extremely temperamental and often has I/O issues. With that in mind, I bought a 16GB branded card and then found to my dismay nothing I had in terms of card readers could even detect it. After finally trying it out in a ASUS eee, I could see it, but it would constantly error, so I presume it was faulty. Until I can get a reliable, working SD card my RaspberryPi experiments are at a bit of a stand still.

    However, until I can start playing directly on the hardware again, I plan on working on a custom image in an emulator such as QEMU. I don’t want half the stuff that comes with the standard debian image (such as X windows) as I plan on using the RaspberryPi to play with OpenGLES directly or with network controlled things. I have no use for X as all the graphical stuff I want to do I can run directly on the hardware without it – I’ve been looking at the Clutter toolkit as platform to work with rather than doing everything from scratch.

    The RaspberryPi in it’s current state certainly isn’t ready for the faint of heart yet and I wouldn’t say it’s quite at the stage a kid could just pick it up and play with it yet, like they could with a BBC Micro. Making the device a little more robust in it’s handling of SD-cards and/or giving it the ability to boot from USB storage devices would be awesome and make having to deal with crappy SD-cards a non-issue. The power issues are annoying and I think it would be better to either up the overall power on the board and isolate the USB power from the board power with a proper power management/current limiting/etc chip or to just remove power from the USB ports entirely and make them data only, so powered hubs are required. Perhaps both could be done by isolating the power via a jumper on the board allowing you to put the jumper on and use low-powered devices like keyboards directly but being able to remove it and use a powered hub without risk of interference between power from the hub and the board.

    It’s a fantastic project though and the few problems it has are annoying but not insurmountable. Until I have some money to spend, I’ll be playing with it software-only in a VM.

    The other projects I’ve been working on are test chambers for Portal 2. For the most part I’m just playing without too much of a serious effort towards making the levels actual fun, but I think a couple of the ones so far are definitely entertaining.

    First off is Square.

    Square is a simple level designed to test out a couple of different, simple ideas. I think it’s one of the better ones out of the first four I made.

    The second chamber is Bounce.

    Bounce was to test out some ideas with lasers and to use misdirection to throw the player off the trail. Some things you think yo shouldn’t do, you have to in order to succeed.

    The third chamber I made was Ups and Downs.

    Ups and Downs is a bit ropey. It suffers a bit from not being obvious what you should do, though the clue is in the name to a certain extent. Plays with the concept of having the user backtrack multiple times, running back and forth to be able to get out.

    The final chamber as of posting I’ve made is Junction Box.

    Junction Box was an experiment in multiple rooms and conditional logic. Using a combination of lasers, switches and folding panels, I was able to make a corridor that changed shape, redirecting you to one room or another based on setting the user could apply with a switch. It has some rough edges, but I think it’s pretty good and succeeds at being challenging and fun.

    I also recorded the solutions to each chamber and put them up on youtube, if you find you get stuck on any of them. You can watch them below.







     
    • Lorcian 3:38 pm on June 26, 2012 Permalink

      Speaking of making things, how goes the baby making?

    • Dark Liquid 3:48 pm on June 26, 2012 Permalink

      No luck so far.

  • Dark Liquid 6:50 am on April 9, 2012 Permalink | Reply
    Tags: , , , , radio   

    My First “Proper” Node.js app 

    So over the weekend I cranked out my first proper node.js application. It’s a very simple frontend for controlling MPD (the music playing daemon). When I say simple, I mean just a start and stop button and a button to ask it to update its track database. It’s designed as a simple tool for G3 Radio to control the automated jukebox they run between their live DJ shows. More features are on the cards as per the wiki for the project, but at the moment it does the job.

    It’s using express.js as the webservers and mpd-socket for talking to MPD. I have it load JSON files for its configs. I’m using the lovely everyauth middleware for auth against a flat file, which takes all the pain out of that process. It was pretty easy to write after I wrapped my brain around some annoying issues I was having.

    Anyway, if you fancy seeing some bumbling attempt to make a node.js application and/or need something like what I’ve described,  check it out on github: g3hal on g3radio @ github

     
  • Dark Liquid 9:28 pm on March 31, 2012 Permalink | Reply
    Tags: cucumber, , , testing   

    Automated Web Testing With Cucumber, Selenium and a custom fixtures server 

    Recently I’ve been working on a website that is a single page AJAX driven application that’s essentially just a frontend to an API, rather than doing any of it’s own processing.

    For testing it I wanted to be able to test without hitting the API but since the application is so javascript heavy and makes use of various complex workarounds for various browser issues, testing it using the usual methods never worked and only “real” browsers cut the mustard.

    I’ve tried a number of headless browsers such as zombie.js but they’ve all had issues so I’ve settled on using selenium for testing in a real browser. The other issue is that most web application testing systems assume at least some kind of backend system that you can then mock the http calls of. However in my case the entire app is client side and has no server at all, so doing that wasn’t an option.

    The solution I came up with was a cobbled together selection of rake tasks, shell scripts, a custom node.js server and some hooks in cucumber to set up fixtures.  I run my tests against a live server through a recording proxy to get the results of the API calls, then format the results into little fixture files to get loaded by the fixtures server based on tags on my cucumber scenarios. It’s quite a flexible setup now it’s running, the only chore is writing the fixtures, though hopefully I can knock up a quick script to generate the fixtures automatically from my proxy recordings.

    I wont go into the details of running cucumber with capybara and selenium, since those are already well documented elsewhere, such as on the capybara github page. However, I’ll run through my scripts.

    First off, I have my bash script to actually setup my server and run all my tests, it goes a little something like this:
    UPDATE: Made some amendments thanks to suggestions from Ralph Corderoy in the comments.
    UPDATE 2: Removed set -eu line since breaking out on errors means not shutting down the fixture server when tests fail.

    What is happening in the above should be fairly obvious, but essentially I’m running my fixtures server and capture it’s PID so I can shut it down later. I wait for a bit, then execute my tests via a Rakefile, then I send a command to the fixture server to shutdown, wait for a bit, then force a shutdown in case it’s not done it already. Simples!

    The fixture server can be found in my random scripts repository on github. It’s hard-coded to run on port 7357 but that’s easy to change. I’ve tried to document how it works in the code but a gist of it is that the fixture server will server static assets but fall through on all other requests to look at whatever fixtures it has loaded. By default, it will have loaded no fixtures so will 404. However, it has some special URLs for loading in fixtures. On /_fixtures/load/:fixture the server will load a json fixture file with the name :fixture.json. Multiple fixtures can be loaded for the same path and the server will work it’s way through them, serving each one once until it has no more where it will then 404 again. Fixtures can be cleared from memory with a call to /_fixtures/clear and you can inspect the currently loaded fixtures by calling /_fixtures/inspect. A call to /_fixtures/shutdown will instruct the server to shut itself down. At the moment the fixture server only supports loading fixtures for GET and POST requests as that’s all I’ve needed, but it’s easy to extend that.

    The fixture files themselves are very simple. Here is an example one:

    In the above fixture file, the server is setup to respond with a failure message the first time it is accessed with a GET on /test, a redirect the first time it is accessed with a POST on /test/post and a success message the second time it is accessed with a GET on /test.

    In cucumber, using the stuff I’ve mentioned above, we can now do cool stuff like configuring fixtures for each scenario. I use something like this to setup my fixtures:

    I slap that in a .rb file in my features/support directory and I can now use the @authed and @notauthed tags to load the appropriate fixtures into the server, like in the following feature:

    You’ll notice that I can do cool things like load multiple fixtures by specifying multiple tags. The fixtures get loaded in the order that that tags appear so I can create fairly complex fixture scenarios from simple individual fixtures.

    All in all I’ve found it a reasonably nice simple way of being able to test client-side only apps that drive APIs without having to hit the actual API server. Obviously if you are developing your own API server as well, you should be writing tests for the API server in addition to the client, but this way to can keep them nicely de-coupled in your tests so you don’t have to hit live data, which based on your project might be impossible to test against anyway.

     
    • Ralph Corderoy 11:16 am on April 1, 2012 Permalink

      Nice write-up, though I stumbled where you nouned apply! My brain is wired to know that word has one meaning and sound. Perhaps ‘appli’, if not ‘app’? On the bash you may like to know &> does the job of > followed by 2>&1, e.g. &>/dev/null, and ‘set -eu’ is always handy at the start of a bash script, e.g. curl(1) fails, though you’d expect the kill(1) to fail; kill $PID &>/dev/null || true.

    • Dark Liquid 3:32 pm on April 1, 2012 Permalink

      That use of apply was a mistake caused by writing the original draft for this article on a phone. Bloody auto-incorrect!

      I wasn’t familiar with the set flags, but yes, having looked them up that makes a lot of sense. As for the &> shortcut I was aware of that but for some reason I keep finding myself using the long form regardless. Old habits I guess :)

      Thanks Ralph, I’ll amend the script accordingly.

  • Dark Liquid 11:22 am on March 9, 2012 Permalink | Reply
    Tags: , , , jquery   

    http://blog.multiplay.co.uk/2012/03/using-the-jquery-deferred-object-pipe-method-to-validate-success-data/

     
  • Dark Liquid 7:00 am on February 7, 2012 Permalink | Reply
    Tags: , ,   

    Updates 

    So life has had some ups and downs recently but nothing I feel too inclined to elaborate on. None of my plans have really worked out so far, the exercise hasn’t really happened nor the writing or work on other projects. Driving is still going fine despite a busted alternator and other minor issues. Money, money, money.

    I recently signed up for Netflix. Seems like a cool service but had such an appallingly poor selection I cancelled before my free trial ran out. Also, I couldn’t find a way of getting it working on the PS3 as there seemed to be no app available unlike LoveFilm. Speaking of which, I’m loving. Much better selection and nicely working on the PS3. Cheaper too for the streaming only package. I finally got to see the black and white French film Angel-A, a film I’ve been wanting to see for a long time. It was everything I had hoped for, a really beautiful, quirky film. I’m liking these streaming services, they are actually making me watch films again. CONVENIENCE, PEOPLE! This is what the industry needs to pick up on. People are cheap and lazy, make your damn products to fit instead of sticking your head in the sand and hoping everyone will change to suit.

    Work is fun. I’ve been working on a big project for some time now, getting into UX as well as working with some interesting tech, playing with the new-ish HTML5 technologies. Fun stuff.  I still sucks though, just slightly less so.

     
    • Lorcian 11:42 am on February 7, 2012 Permalink

      Taking my theory in a weeks time, not looking forward to it. 55 questions… and I can only get 5 wrong. Not going to be much fun. So, I’m going to probably have to spend the next few days really cramming for it. I’m hoping i’ll pass, it’ll encourage me to see the whole thing through to the end. Sorry things havnt been too great for you. Things will pick up though, they always do. eventually.

  • Dark Liquid 2:57 pm on January 16, 2012 Permalink | Reply
    Tags: , , php, wordpress   

    Just wrote a quick article about setting up contextual help in wordpress plugin on the Multiplay tech blog. Read it here: http://blog.multiplay.co.uk/2012/01/updated-contextual-help-in-wordpress/

     
  • Dark Liquid 9:30 am on January 14, 2012 Permalink | Reply
    Tags: gaming, ,   

    New Years 

    So, it’s a New Year. This year starts off with me being poor having spent obscene amounts on being able to drive. Debts are mounting up across all the various accounts but hopefully everything will work itself out. I’m hardly in such a bad state that I can’t dig myself out of it.

    I generally don’t make resolutions for the New Year, but I am going to try and do some more exercise. Having spent the last 4 years or so essentially sat on my ass the whole time, I was shocked a few days ago when I did some simple exercise to find that pretty much all my strength has gone. Not really shocking, given my activity levels, but it really made the point that I need to do something before I turn into some fatty spherical lump that lift a fork without losing his breath. Taking the typical geek route, I’m focusing on statistics, statistics and more statistics. I’m hoping actually tracking and graphing staff might gave me some immediate visual goals to reach for, since just doing exercise, as a participant with no tracking, never feels like I’m making any progress, which is never encouraging. Hopefully Fitocracy and/or RunKeeper will provide some much needed guidance and motivation.

    Since working for Multiplay, games have become a large part of my life again. Having now bought over 300 games in the last 2 years, I have quite a large back catalogue to play though. Typically these are all indie title but for a few more mainstream items, since that tends to be where my interests lie. [Generic FPS] just doesn’t interest me, though I will say that I’m enjoying the independent, single-player only Hard Reset immensely at the moment. I’ve played a lot of Skyrim recently, which has been a lot of fun. I’m always amazed by the things fans will do, and this beautiful track by Malukah Fenix certainly qualifies as amazing:

    My writing has taken a bad hit this last year. I’ve barely written anything or read anything for that matter (well, barely read anything means less than 20 or so books in the year for my appetite :P ). There are many stories I want to finish and that a few people on Protagonize want to see the conclusions of, so I need to get back on the saddle. I had said to myself last year I would try and seriously pursue publication, but that hasn’t happened. I’m hoping this year, now I have more time due to driving to work, things will be different, but if I’m entirely honest with myself, I doubt I’ll put the required time or effort into making a serious attempt. Not only is it a lot of work, it’s quite intimidating. I do want to finish at least one novel though by the end of the year and hopefully get into the meat of editing it with an eye to publish it independently, for kicks, since I’m not sure I’m even interested in mainstream publication or actually making a living from writing.

    I’d also like to try and get back into music again and I have a computer game I’ve been meaning to develop for some time. So many projects, so little time.

    Lets hope the time thing changes this year. Or, more proactively, let’s actually try to change that this year.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel
%d bloggers like this: