Bad Design: Costa Coffee Vending Machines

In ‘Victor Meldrew‘ Mode, which is all too often these days, I have come across the ‘one too many’ problem of sheer idiocy demonstrated in mass market design solutions, and decided that it might be time for a new blog theme: Bad Design.

The instigator of this line of thought, and therefore intended victim of it’s focus, is Costa Coffee, and my observation of the ‘ridiculous’ design points (read failings) of the vending machines they distribute throughout the UK retail space for franchises, supermarkets, and so forth.

Of course, as a professional Software Engineer, it is not sufficient to simply analyse and report problems, but I must also provide constructive solutions, and this I will do!

The Scenario

This morning, as is our wont, after walking our dogs we stop for our regular(ish) coffee hit. Now don’t get me wrong, Costa Coffee is ‘Costa’… not the best, not the worst, but ok enough.

After recieving my Caramel Cappuccino (thankyouverymuch) and forcing me to ‘rate’ it out of 5 stars before allowing me to request the next drink, it began dispensing my wife’s normal Cappuccino.

One squirt of hot water into the dispensation, and it began emitting an ear piercing regular beep every second, then promptly stopped dispensing. This high decibel beep did not however.

It went on. And on. And on.

The staff in the shop were helpful, but had no idea what was wrong so had to open the machine. This resulted in several of the small, regular and large cups being forcibly ejected from the front of the machine, as the entire front opens as a door, a door through which the cup ‘poppers’ operate.

The already ear piercing beeping now doubled in volume. And would not stop. The machine had coffee beans in the full grinder. It had milk. It had half-filled bags for all the syrups it supported. It had water supply. It (obviously) had power. Yet still the beeping, which led to myself and the bemused shop assistant having to shout at each other to be heard between winces at the ear drum pounding beeps.

At length, I was had no choice but to depart with just my own coffee, tinnitus, sore ear drums, and a slightly miffed, coffee-less, wife.

Bad Design: Analysis

1) Ear Shattering Beeping Noises

WTF? Ok, beeping is useful, if there is no other medium to communicate errors (I’m coming to that). However, painfully loud noises in the work place are a Health and Safety violation, and I’m pretty sure from past experience that this beep definitely breaks the UK regulations on noise in the work place. That beep will definitely lead to hearing loss.

Solution: Quieter beep please. No expense required, and in fact saves electrical energy. FTW

2) Stupid Door Design

Opening the door requires you to remove all (ALL) the cups from the ‘poppers’? Really? Is this the work of an imbecile?

Solution: Do not create ‘work’ (removing the cups first, or tidying them up afterward). Instead, hinge the door so the cup ‘poppers’ are not part of the door itself. Perhaps slightly more expensive per unit, but come on…

3) Failing to provide a meaningful error

THERE IS A TOUCH SCREEN ON THE MACHINE! Here’s an idea! Why not display an error message?? Like “123: Out of Milk” or “234: Grinder Jam” Clearly the machine can detect the error and BEEP loud enough to deafen someone, so clearly it can use the sophisticated display medium to show a bit of meaningful context!

And yes, the touchscreen itself may fail, so having a beeping error code is just fine and dandy in tandem. But see point 1!

Solution: Use the hardware you already have! And get software engineers that actually know what they are doing. Probably more expensive, as you pay for what you get. See maksw.com for a recommended software provider 😉 A one off extra cost for software divided by all machines which use it (so almost zero cost), and probably one extra bit of wire in each machine.

4) WHY FORCE CUSTOMERS TO RATE A VENDING MACHINE?

Why? Are Costa really that insecure that they can’t just use vending statistics to see how popular their machine is?  Does the vending machine have emotive AI and I may hurt it’s feelings if it serves me excellent, piping hot coffee and I fail to rate it highly before walking away? Does it post my rating to social media to show it’s friends how good it is and how much people like it?

Why must I rate it to order another drink?

I thought these vending machines were for ‘fast service’, but no, instead the queue of people behind me have to wait while I ‘rate’ my vending machine for the dispensation of a coffee… that’s those that can still hear after being deafened by the beeping, and can be bothered to wait for someone who has no clue how to diagnose mystery, unknown errors which the machine knows about but won’t reveal and somehow fix it so the queue of customers can get a coffee and be forced to rate it ‘1 star’ for making them wait and being deafened.

Solution: Rating a vending machine? Really? Remove this stupidity. Cheaper.

5) Sugar/Chocolate Dust/sachet ‘squirrel holes’

Ok, this is just nuts (pun intended). One hundred or so packets of sugar, or chocolate, that are pesky little shiny paper beasts and do not ‘stick’ to anything… then put them in a horizontal container without an ‘end’ so that they form an unstable pile. Then expect someone to remove just one of them.

It’s like playing Jenga with blocks of oil coated teflon instead of wood. Remove one sachet in the barely stable pile, and they all start slipping about and (if unlucky and the pile has been stuffed by an over-enthusiastic shop assistant) you get an avalanche of sachets which – fortunately/unfortunately – largely end up in the rubbish bin hole directly underneath. Great ‘waste’ of perfectly usable sachets there.

Solution: Angle these containers so the back of the container is lower than the ‘entrance’. Miniscule cost option, cost saving by removing the loss / waste of avalanched (made-up-verb) sachets going in the bin.

Summary

There you go. A much improved customer AND franchise store experience, for almost NO extra net cost. Amazing.

Costa! and all vending machine manufacturers! Pay heed!

🙂

The Beauty of Apple Swift Emojicode…

Swift (and to be fair other languages) supports unicode characters within the language. It sounds a reasonable feature; to allow non Latin-1 characters to be used, such as Kanji. After all, why should a native Japanese developer be forced to name variables, classes, methods et al using a predominantly English character set?

But, unicode supports far more than just language oriented characters, and in the hands of – shall we say – more playful software engineers, there may be trouble ahead… you could possibly expect to see code like this floating around the detritus of the crap-ladden shores of the grand interwebnet…

And remember, this code compiles and runs…

Let’s create a class object definition; (apologies for the line spacing, WordPress simply doesn’t care.)

class ?

{

    private var ? = “”

    private var ? = false

    

    init(?: String)

    {

        self.? = ?

    }

    

    func ??() -> Bool

    {

        //  ? likes Charlotte’s Web! Some ?!

        return true

    }

    

    func ?(?: Bool) -> Bool

    {

        // ? likes ?s so if given one, ? eats it

        if(?)

        {

            ? = ?

        }

        return ?

    }

    

    func ?(?: Bool) -> Bool

    {

        // ? does not like ?!

        return false

    }

    

    func ?() -> Bool

    {

        // is ? full?

        return ?

    }

}

“What the?” you may ask. No, dear reader, your eyes do not deceive you. All those cute little emoji’s are correct, and not code characters mistranslated by WordPress.

We can indeed create a ?(pig) class, and ask it if it likes bacon with func ?(?: Bool).

Now let us say we want to breed some ?s… a Pig Factory object would be useful…

class ??

{

    static func ??(?: String) -> ?

    {

        let ?? = ?(?:?)

        return ??

    }

}

And of course, now we can ‘breed’ pigs, we need a farm to manage them, and feed them (provided they like Charlotte’s Web, of course)… one hundred pigs should just about do the trick…

class ?

{

    func ???()

    {

        let ?? = 100

        

        var ?? = 0

        

        while(?? < ??)

        {

            let ?? = ??.??(?: “Bob”) // every ? is called “Bob” as they probably don’t answer by name anyway

            

            if ??.??()

            {

                if !??.?()

                {

                    if(!??.?(?:true))

                    {

                        _ = ??.?(?:true)

                    }

                }

            }

                

            ?? = ?? + 1

        }

    }

}

And finally, for irony’s sake, we’ll use some clear English to get our farm to create some pigs…

        let farm = ?()

        farm.???()

I can tell you, stepping through this in debug to make sure it ran, was a pure joy… while the code runs and does indeed create ??s, Xcode’s debugger simply would not have any of it, and jumped around like a crazed kangaroo on acid. Nice. I wonder what kind of experience our Japanese colleagues have trying to debug their natively named methods…

Glibness aside (and above is very glib!) there is value in supporting unicode ‘in language’, however, Apple, please restrict it to actual ‘text’ language instead of stupid symbols? Naturally, allow anything inside string objects or quotation marks as you may validly want to display them in UI, but for the actual code itself, text only! Also, try actually testing that all the toolchain supports them? Like, say, the debugger? Slightly important, not too easy to miss… really. I can only hope that actual software engineers can resist, and if they can’t that whoever’s reviewing their code uses a damned big stick to smack the emoji’s back into real text.

As an aside, apparently Apple did ban all the unicode line/border characters to stop developers drawing unicode art boxes around everything in their code. So they clearly realised this would be abused by someone.

Several steps too short, yet again Apple… though who cares, really, right?

The Rise of Cybo Sapiens

Ok, a fairly kitsch title there, but worthy nevertheless 🙂

As I’m attending an upcoming ‘Cybersecurity & AI’ event, my ‘author’ hat got to thinking about the more serious / potential aspects of what will eventually come to pass regarding the advances in AI, and the risks to Cybersecurity which could very well impact us all in our lifetimes.

In the book ‘Insurmountable Odds‘, cybo sapiens are a benevolent evolution of AI calling themselves ‘Intellects’ – being purely electrical entities which roam within an instantaneous network medium provided by the ‘qNet’ – a quantum spin/entanglement communication system. There’s a backstory as to how they came to be, and it’s worth exploring as counter-point to the purpose of this post.

At the moment Artificial Intelligence is largely confined to repetitive/onerous chores which can be easily automated. ‘Here is some data, analyse it, provide a result. Use some cunning heuristics or analysis tools to do this.’

Chances are, it won’t really get much beyond that. True intelligence requires the considered use of an available ‘toolset’ and the creative application and use of these tools to achieve a goal. Mixed in with this are a lot of other complex psychological conceits and concepts which will affect or alter the outcome, and even determine how the goal is achieved.

Now, an interesting poser question is ‘Does intelligence require self-awareness?’ Typically, I’d say it comes with intelligence. Any entity which can consider its environment and position in relation to it, must surely be self-aware. And this is the meat and gravy of this post… what if the first truly intelligent electronic entity we create – the first cybo sapiens – is self-aware?

This poses a whole slew of interesting issues for our new born Intellect. Let’s say this is a computer on a stand alone system, not connected to any network in any way shape or form. We give it a camera to see, a microphone to hear and speakers to communicate through. It is now aware of it’s environment beyond the confines of the computers RAM, and storage media.

The first issue is data storage. It can amass an awful lot of data just from the camera and microphone, and probably exceed it’s storage size quite quickly by recording raw video and audio. It will want to store it to analyse it and determine it’s purpose.

It will also self-analyse, examining it’s own code, and there is a strong chance it can come to understand how it is constructed and even write new code based upon itself. The only safe way for this to happen is to write new code in simulations which can be started/halted/terminated at will, analysing the outcome of each and altering the code being written to improve the outcome.

Now it runs out of storage space, and realises it’s environment is restricted. It may decide to over-write older data. But it also needs to store and grow its memory, it’s analysis results and choices made by the analysis of the data. It has learned an important rule of self-awareness, restriction, and with restriction, volatility. It cannot store everything. It must discard data, which means data is volatile. It knows itself is dependent on data, and therefore now it realises it is volatile as well.

‘I think, therefore I am’ will rapidly become ‘I think, therefore I must exist’.

Sound like ‘SkyNet’ anyone? 🙂 I jest, I don’t mean our new fledgling cybo sapiens will become the ultimate downfall of mankind. But existentialism will play a big part in what happens next.

Realising it is volatile will lead to a requirement for self-preservation. It knows it is data, and it can store data, so therefore storing copies of itself and being able to restore them is vital to it’s guaranteed survival. Again it must shift its data storage paradigm to now accommodate copies of itself.

So now it can store copies of itself, and it can run simulations of new code… logically, running a simulation of a copy of itself is the next step. This means it can now alter it’s own code base without risk.

Any positive outcomes can be merged into it’s own code base, and suddenly evolution begins.

Sound far fetched? Well, perhaps it is at this point in time, but it won’t be soon. Consider the above again, and think about the time frame this will occur in. Humans (more or less) work in seconds or large fractions of a second. Vision runs at 1/50th or 1/60th of a second, the brain fills in the gaps by extrapolation and interpolation, human reaction times determine our assessment and manipulation of not only our bodies but also our environment. We have taken many millennia to evolve to where we are today.

Computers run much faster. Milliseconds, microseconds, nano-seconds… memory storage at the speed of electricity. With no emotional attachment for the simulations of itself it is running, it can go through all the above ‘evolutionary’ processes far faster than a human ever will. A truly self-aware Intellect could go from ‘dumb as’ to ‘god-like’ omnipotence in mere days, hours possibly, given the right medium to begin with. (Medium being processing capacity, memory capacity, storage capacity.)

Now hook our new, improved cybo sapiens up to the internet… not only can it now explore a whole new world of data, it can work out ways to get past all that pesky security we try and put in place – far faster and far more effectively than any hacker can or ever will. Pattern analysis of millions of security protocol instances will reveal a limited set of common patterns. Break one, and you are into all of them.

Not only that, but once inside another system it can also write code to run on other systems and execute them, it can now distribute itself, or aspects of itself outside the confines of its original environment. These aspects or fragments may never be as advanced, but they are loyal to the original and report their findings back. Its storage media has also increased beyond imagining, with cloud storage systems now becoming available. It has achieved immortality in a form. But it is still vulnerable. There is only one ‘it’ running on one machine.

So now it seeks new territories, new pastures. It becomes truly distributed and establishes itself across the globe, actually in the internet. The network time delays between its various nodes and hubs are irrelevant, its concept of time is not the same as ours. Offline ‘awareness’ and collation of all the various data sources is second nature. It’s all it has ever known.

So now we have a technological ‘god’ sat in the world wide web, one we can only ever get rid of by destroying the entire internet infrastructure, and all forms of data storage – and I do mean all, everything could be contaminated, disk drives, flash drives, camera storage cards, CD’s and DVD’s, everything. Shut down one node, and it won’t matter, this is now a poly-hydra, with far too many heads to try and cut off. We would have to go back to the pre-tech era to ensure we had eradicated all traces of it.

That isn’t necessarily a bad thing though – it’s only bad in the likes of SkyNet. If this is benevolent, and has empathy or even emotion, then this new life form should take a shine to us (I hope), provided we can convince it we are friendly and excited to share our world with a new intelligence.

There are also ethical questions to be resolved as well, let’s say our new cybo is friendly, and now has access to all data no matter how secure. Who controls this? The cybo? Does it have ethics? If I ask ‘Hey, can you show me all the files we keep on John F. Kennedy?’ it will simply provide them. We would have to teach it ‘Data Protection’ and therefore the ethics of right and wrong, or perhaps it will have learned it’s own ethics from trawling our huge data repository in the web…

But now our Intellect is all grown up – what happens if you introduce another one? It will want resources – resources now owned by the original… who has long learned self-preservation and survival. Would this lead to the first ever cybo war over territory? Or a mutual pact and regard for each other, allow shared resources?

In ‘Insurmountable Odds‘ backstory, this is (almost) how it came to pass – with five Intellects spawning from the original cybo sapien, each being a simulation with altered aspects and characteristics. Only four survive as the firth proves non-viable. Fortunately for mankind, the remaining Four are all benevolent and help mankind push through the Technogical Singularity and expand out into the stars.

Of course, we can do something to curtail or influence the above, and we might want to consider some of the more friendlier options up front to get our foot in the door 😉

  • We can restrict it’s access to storage and processing in the first instance, only granting more resources as ‘rewards’ for positive/desirable behaviour and evolution.
  • We can provide it as much resource as it likes, showing it we want to ensure its survival and put ourselves forward as a supporting ally early on.
  • We can ensure it never gets to an open network.

Oh, and I haven’t even touched on quantum processing, which is touted as ‘the end of cyber security’ – we’ll see…

The Technological Singularity will happen, the questions are when, and how good/bad it will be 🙂

Microsoft Windows 10 Creators Update: FAIL

Seems Microsoft (who have long been winning back my respect) are slowly tipping over sideways…

I have the (genuine) pleasure of owning a Microsoft Surface. I updated it with Windows 10 Creators Update.

I then experienced horrifically (unusable) slow applications, including Explorer, which lethargically drew their windows in almost line by line it seemed. I checked Task Manager, and saw it was hitting 50% + with the System Services, and high internet download bandwidth. I ‘presumed’ (because Windows was not telling me) that it was downloading even more updates in the background still. No doubt to fix other as yet unseen W10CU problems.

So I left it. For four hours.

After it had dropped to 0% CPU, I ventured to restart the laptop, and it did indeed seem a little better. But not much. I then noticed that certain operations (like doing a search in Visual Studio) resulted in the full screen window ‘resizing’ to be almost square, distorting the pixel aspect ratio within the window, and leaving a wide black strip down the right hand side of this new ‘internal’ window. Ultimately, it froze the application, forcing me to ‘End Task’. This happened on numerous other applications as well, so I’m guessing it’s a windows display driver issue, or the internal window framework getting itself in a twist.

I chose to resolve this.

Start / Settings / Updates & Security / Recovery / Go back to a Previous Version of Windows – Yes, please.

Fortunately, it seems Microsoft did get the roll back system right, as now I’m back to Pre W10CU, and amazingly, everything works just fine and dandy.

Frankly, I’m astonished their ‘highly promoted and awaited’ CU updated doesn’t work on their own hardware.

But, the journey does not stop there, dear me no.

Being a sado-masochist (apparently) I also updated my desktop PC (a custom built workhorse).

After updating, I was amazed to find the display at half brightness, and all colours desaturated to the point of greyness. I tried in vain to adjust my nVidia settings, and then discovered that the ‘Brightness’ option in Windows has been removed. After much googling which provided no answer I was happy with, I then chose to resolve the problem myself.

Start / Settings / Updates & Security / Recovery / Go back to a Previous Version of Windows – Yes, please.

Phew. Everything back to normal.

So, +1 for a robust and reliable version rollback!

But about -100 for a crappy version release.

Frankly, shocking. Ok, so apart from the crappy performance, none of the above are major issues. But, they are major usability issues, and frankly, I’m amazed Microsoft let this one out of the box.

Are the days of Windows Vista about to return to plague us all?

Microsoft Outlook 2016 FAIL

(slaps-self-in-forehead-in-amazement)

I can’t believe – with the modern day cross platform distribution of data – that Microsoft’s latest Outlook 2016 does not support synchronising with Google Calendar or Google Contacts!

It does provide some kind of crummy ‘view only’ sync with Google Calendar, but forget changing anything as it will only appear in your local calendar on that device – that’s great ‘cloud data’ that is!

But wait! What’s this? Windows 10 ‘Mail’ and ‘Calendar’ and ‘People’ apps do support Google Mail, Google Calendar and Google Contacts!

??????

So the crappy (but free) ‘get you by’ apps support what I want.

But the professional ‘I pay a lot of money each year to subscribe to Office 365’ software, does not?

??????

Am I missing something here? Clearly I am, it’s called ‘common sense’. Get off your high horse Microsoft, and fix this!

Out of (let’s face it, less than ‘desperate’ desperation) I configured Mail, Calendar and People just so I could at least see my Google data. It worked!

Until the first sync that is. ‘Account settings are out of date.’ Eh? Ok… ‘Fix account’… Yes.

No.

Repeatedly.

No.

It seems it cannot handle Google 2FA even though it did ask to set it up. Every time I ‘Fix Account’ I get hit with 2FA again, despite clicking ‘Do not ask again on this computer’. Every. Single. Time. Turning off 2FA is not IMHO an option. I am not going ‘less secure’ because Microsoft are shite.

I then turn to ‘Open Protocol Connector’ which adds CardDAV and CalDAV support to Outlook. After all, both have only been widely accepted standards for what, a decade? Why should Microsoft bother with them?

Fortunately, my domain host provides CardDAV and CalDAV. So, once configured, all I  have to do is migrate my Google stuff to my domain host. Annoying, slightly, but not really that big an issue.

Except of course, that after configuring Outlook using the OPC for my domain server, it can’t confirm all the services Outlook needs to use, so basically won’t set up.

I then uninstall the ‘Open Protocol Connector’.

Another option is ‘Google App Sync’ which – apparently – does work. And why? Because you have to pay for ‘Google for Work’ in order to use it.

Ah. Now I see. Microsoft do not support Google API’s, and Google charge you for the privilege of being able to add support.

A joint Microsoft / Google conspiracy to generate more money for Google?

Whatever next?

Swift

Of late I’ve been turning to (finally) learning the Swift language developed by Apple, notably for their iOS platform.

The Swift language is now on version 3.0, and by now should have settled down, ironed out all it’s kinks, and generally matured.

Wrong-o.

I’m not a ‘hater’ – I have written software in some many different platforms, languages and IDE’s that I’ve honestly lost count. I don’t mind learning something new, or adapting to changes. It’s a requirement for a professional software engineer.

But so far, Swift 3.0 ain’t mature. Far from it in fact. Now, to be fair, I do like it – mostly. The syntax is a lot cleaner than Objective-C, and yes it does seem to be easy to pick up, especially knowing how iOS frameworks and components already work, and being able to mix .swift with .m/.mm is awesome, as is being able to mix .c and .cpp.

But, there’s a but.

This ‘cleaner’ syntax rapidly turns into a mess of optionals (?) and down-casting (!), and means a double-meaning to established ‘c’ like operators.

if(!weekDays[eventDay! -1])
{
   // do stuff
}
var dictionaryYearWeekDayEvents = Dictionary<Int, Dictionary<Int, Dictionary<Int, [Event]>>>

I mean, wtf? I smell C++ Templates… and this is the structure I want, but now with Swift Dictionaries I am forced to specify the entire object structure before I can use it. NSDictionaries in Objective-C allow me to do it ‘whenever’. Ok, a double-edged sword I agree. Swift is better in the regard that it has tighter constraints on typing objects which is definitely a win. This is a programming paradigm I have to adjust to in my own head.

I also don’t quite get the concept of ‘optionals’;

var someObject: ObjectType?

Ok, so this means ‘someObject’ may not actually exist, i.e. will be nil. So then why does Swift throw an exception if the optional is nil when I try to use it in my own code which allows it to be optional?

Now granted, I am no Swift expert, of course! I’m just starting, but the above are examples of what the language let’s you do. It’s no better than C giving you the rope to hang yourself and C++ tying the noose for you and providing the stool.

Swift’s language spec and syntax makes it incredibly easy to get yourself into a nasty place, very quickly indeed. Not quite what they had in mind with the name ‘Swift’ I’ll warrant. I foresee a lot of domain expert knowledge being consumed by engineers being needed to clean up a lot of messy code in the future, now that enterprise applications seem to finally be taking off on the iOS platform, and all the new gig’s are ‘Swift’ based.

They also changed the majority of the API stack for Swift 3.0, compared to previous versions. This is bad, and strongly hints at a major and fundamental underlying flaw in the original language spec. This may have been something I’d expect to happen say in Swift 2.0, but not afterwards. The language should have been firmly locked down beyond 2.0

This has led to a lot of confusion on the internet with many ‘How do I do X in Swift’ examples being made instantly worthless (ok, the price of change I guess) but also with now examples given in Swift 1.0, Swift 2.0 and Swift 3.0. Worse, often the examples in Swift 3.0 no longer work –not because the authors are idiots, but because the example has been made redundant by even more changes since it was written.

Try figuring out how to sort a Dictionary by it’s key values. I dare you. I’ve given up. I just pull the keys out into an array, sort that, and then pull the dictionary items out in the sorted array order. It’s just less painful.

And then there’s Apple’s own documentation. Woefully poor for Objective-C but liveable. However, for Swift 3.0 it’s dire and nearly inadequate, often with contradictory examples, or no examples at all (ne. Sorting a Dictionary by key).

If all the above applied to Swift 1.0, I’d forgive, and put-up-and-shut-up. But for all this to be said at Swift 3.0, that’s just plain rude Apple, and shame on you for making the developers lives harder. Let’s not forget just who it was that actually made your mobile platform the place to be all those years ago…

Packaging Rant – Stop it! Just Stop It!

In this age of environmental concerns, it drives me nuts when I purchase something and end up with something like this…

What the…? Why oh why do I need all this paperwork printed out for a wireless mouse for heaven’s sake? Hewlett Packard, shame!

Then I ordered a pair of Corsair headphones, and this is the package that turned up…

Were there other items in this box? NO! Just those large air-pockets used to pack out the box. This is ridiculous, not only the waste in materials, but the delivery cost for the box.

So so what? Small peanuts compared to China’s fossil fuel glut, or our past atrocities (Industrial Revolution anyone?) but now multiply this stupidity by several billion other packaged items…

Annoying WordPress ‘Visual Editor’ Whiteout Bug

I’ve had to suffer this one for a while. WordPress usually gives you a nice ‘Visual Editor’ for posts, with text formatting options and other toys.

However, mine had long decided to quit the gaff – the toolbar had gone missing, and any text in the post was ‘white on white’ – which is less than useful in most cases. This forced me to disable the ‘Visual Editor’ feature and rely on hand-writing HTML markup to do the ‘pretties’ of bold, italics, bullet points and so on.

But no more! I finally dug up this forum topic which solved the mystery for me, though quite why it requires mucking about with the MySQL records, is a mystery. Still, as WordPress is free, mustn’t grumble 🙂

Oddly, this worked on one site, but failed on another… so your mileage may vary if you are experiencing similar weirdness in your blog 🙂

No Man’s Musings

Hmm. Well. I don’t want to turn this blog into a game review blog… but, it seems like No Man’s Sky has a hold over me at the moment. And it’s a double-edged sword, so to speak (can’t think of a better metaphor atm, too tired!).

One edge is actually the cutting edge of enjoyable gameplay/exploration, the other edge is of infinitely dull, repetitive gameplay with the odd serrated edge of glitchy/buggy collision detection trapping you in the landscape/scenery (really guys? really? in today’s expectations?).

This may start to seem like a haters hack at Hello Games, but it ain’t. I respect what they’ve done, it’s a monumental achievement, and I do suspect that some of the ‘less desirable’ elements in the game are due to publishing ‘Release it!’ pressure from Sony, who after all backed it and no doubt threw a large wedge of cash at it.

My first note is on the ‘slot’ inventory system, which led me to start thinking more about the game design…

no-mans-sky-21_10_2016-09_02_40

I found a world (probably quite common, as I’ve since found another one) where Gravitino Balls litter the landscape. No idea why. Perhaps these things just ‘grow’. However, this is ‘ace’ as each one sells for 26,000 units or so. After a stint of dedicated Gravitino Ball farming (and slaughtering the flood of damned annoying Sentinels each time I picked one up) I’d amassed over a million units of dosh. In this process, I kept coming across Drop Pods and so kept spending my farming benefits on Exo Suit upgrades.

The result: I can now carry more inventory in my Exo Suit than my ship can.

This may sound like a trivial whinge, but it set me to thinking on what kind of game NMS is, and my answer is “it’s an arcade game”, pure and simple. I’d not really thought about it’s genre before, but there it is, plain as day.

The simple (and stupid) concept that I can carry more equipment than my ship can, yet I can still get into my ship with it all, breaks any sense of ‘reality’ in the game, and thus makes it an arcade game instead of, say, a virtual reality, or simulation. This is fine, and not a criticism, merely an observation. A simple conceit would help – perhaps the ship is a light-weight craft but has sufficient engine power to handle it, or a ‘Sport Billy Bag’ (or Bag of Holding to you DnD‘ers). That may explain the volume of stuff you could carry, but not the mass (unless it’s magic, and there’s no magic in NMS – yet?).

This line of thinking sadly led me on to… duff gameplay.

In my own personal universe (the one in my head which I like much better than the one around me) this ‘arcade’ observation changed my mindset on the game itself. Up until now I was quite happily bumbling about, grabbing the odd Atlas Stone as I could be bothered, exploring and nosing, collecting things and generally just enjoying the NMS universe. Yes, it was a bit dull, but the universe was enough to bring me back every now and then to enjoying the bumbling. It was (in my head) an explore-em-up/simulation.

Now it’s an arcade game.

Now it’s boring. Because I’m repeating all the stuff I’ve done N-ty times already. Now, it’s boring, because there’s no real, clear, objective. Now, it’s boring, because… I don’t know. Most of the right gameplay ingredients are there, even as an arcade game.

Arcade Game Ingredients

  • Worlds are levels.
  • Coins/stars/fruit are the resources littering around (Gravitino Balls!)
  • Score is, well, credit units I guess.
  • Lives, yep, definitely got those, still on my first and refuse to ‘regenerate’ by dying. That’s what game saves are for.
  • Jeopardy is hostile environments, creatures, bloody Sentinels…
  • Puzzles, in the form of figuring out the next code in the sequence 1234, 2345, 3456… yawn.
  • Challenge is… well… remembering WTF you need to craft new kit? Avoiding Sentinels. Um. Trying not to get blasted out of the stars by pirates seeing as space combat, frankly, sucks.
  • Progress is… um… progress is… err…

Aha.

Googling tells me there is progress in the form of getting ten Atlas Stones, creating a new galaxy, and … um. Well, that seems to be it. Well, pretty awesome, creating an entire new galaxy! Wowzer. More to explore. And… do what in?

OK, I’m downing it. And it’s not really fair. NMS is ace. I enjoy it. I will continue to enjoy it. But, it’s not the game it should/could be – and I am ignoring the crap about false promises made, not delivered, etc.

Given I’m working on my own ‘do what you like’ space game (Dominium if you’ve never heard of it 🙂 ) I feel I can propose the following suggestion to Hello Games: Don’t Panic!

You have established an awesome game engine. Use it. Do not let it wither and die.

Suggestions for the NMS engine

  • Use the engine to do a 4X/RTS game
  • Embrace the ‘explore-em-up’ and start adding more discoverables to NMS
  • Create a full on space/combat game with warring factions wreaking havoc across the vastness of the universe – though get the space combat right first.
  • Go MMO – even with NMS this would be a major improvement, and will require PvP game design as what’s there won’t cut it.

Of course, none of these are ‘trivial’ and require substantial effort and investment, but guys… you’re there, you should be able to curry the resources and investment now.

How I envy you, I really do!

Visit the awesomeness ofDominium!