Outlook.com account problems with Windows 10 - no start menu

I created myself a new <user>@outlook.com account this morning and added it to my Windows 10 laptop. On logging on I got a very strange problem. The desktop loaded and all looked ok, except the start menu doesn't respond. I can launch shortcuts on the desktop and open task manager, but no start menu. The Notification icon on the task bar also has a strange symbol on it.

I tried rebooting and logging on several times, but each time no start menu.

Logging on with another account I can see there is a Start Menu folder in the profile with shortcuts. Very strange. Anyone else had problems with outlook.com profiles on Windows 10?

Darren H.

DPH Software Ltd

Posted in Windows 10 | Leave a comment

The indiepocalypse is just normality

I've just been reading the Indie Dev blog, once more talking about the 'Indiepocalypse' which seems to be getting mentioned a lot lately, and while I have to agree with what's said there, there's something else I've been wanting to point out about this claim.

A lot of things said about the indiepocalypse are certainly true, as Obi Wan Kenobi would say, from a certain point of view.  It is getting harder for a game on the Steam store or a mobile App store to get noticed by everyone, and there are more stories of good games making less money.  But 'harder', 'more' and 'less' are all relative terms.  This is where it depends on your point of view.  If you were one of the few people releasing indie games in these stores when the opportunity first arose, then yes, from your point of view it may seem harder to get noticed.

But I released indie games 15 years ago.  Back then, there were no stores at all - you had to just put a demo or shareware version of your game on download sites or try to get it on magazine cover CDs and hope people found it - if they even had internet access of course, which most people didn't.  You wouldn't think of saying, "My game only got 6 hours on the Steam market front page, boo hoo."  And if they did like it, there was no pre-made payment and download solution that gamers were familiar and comfortable with and already had their details stored on.  We used a company that processed credit card orders and would use your own supplied program to email a registration code in return, but customers back then often wouldn't be comfortable with using their credit card online.  That was a difficult time to release an indie game.

Of course, it was even harder before the internet took off.  While I wrote games in my pre-teen years, as did several of my friends, we didn't release them - I suppose it was theoretically within our capabilities, but it seemed far too hard.  Can you imagine most customers not being able to play or see a demo of your game, just having to read a magazine review a few paragraphs long, and basing a decision on that about whether to buy your game, and if they did want to buy it, having to send a cheque to you in the post for it, then you having to manually make a physical copy of it, package it and send it back?  I don't know if there existed such a thing as a successful indie developer back then.  (And if you think shovelware is a modern invention, I owned an original copy of this.)

It's incredibly short-sighted to say that the good times for indie developers have ended.  If you look at the good times as starting when the internet came into popular usage, the indie games business certainly show no signs of reverting to the level of difficulty it was at before that, and it's hard to see how it possibly could.  If you compare to just a few years ago, then you could argue that things have gotten harder since then, but there's no reason to think that's a long range trend, and it's debatable whether it's even true.  Saying that things have gotten harder since then tends to be based entirely on the stories of games being released now that make few sales.  Well, if it isn't obvious, I can assure you that games were released a few years ago that made very few sales as well.  The only difference is that now you're seeing games on Steam make few sales, whereas probably those same games wouldn't have got on Steam a few years ago.  What used to be, "I've a 0.1 chance of getting my game on Steam, but if I do then I'm certain to get huge sales" is now "I've a 0.5 chance of getting my game on Steam, but if I do then I've a 0.2 chance of getting huge sales".  The chance of huge sales hasn't changed - the chance of seeing poor-selling games on Steam is what's changed.  That's what's generated the attention in the press, and the fear of the Indiepocalypse.  But the poor-selling games always existed.  Getting a hit was always hard, just in different ways.  If you think the easy riches for indie developers are over, you're wrong - inasmuch as the easy riches never existed.

On a similar note, one of the claims about the Indiepocalypse is that the market is saturated now that everybody can make games.  I would point out that when I was a child, there was a whole shelf in the children's section of our local library devoted to games programming books.  One of them was even about programming in machine code - and I repeat, this was for children.  There is nothing new about everybody being able to make games.  What has changed since I was a child, as gone into in some detail earlier, is being able to easily distribute your games.  This benefits the best indie developer as much as the worst, so there's no point complaining about it.  And when it comes down to it, not everybody can do it, as you can see by looking on the Unity forums sometime, and seeing how many questions there are saying, "I have just got Unity, I have the idea to make an MMO with spaceships, what do I have to do???"

Really, the failure rate of indie development hasn't changed.  A few failures may have been fairly high-profile and visible lately, or may just have become a trending topic for no particular reason, as happens sometimes in social networks.  But besides perception of the situation, everything in the industry is just as good, if not better, as it has always been.

From a certain point of view.

Posted in Development | Leave a comment

Scrolling Areas in New Unity GUI

I spent a lot of time yesterday trying to get a scrolling area of indeterminate-size text working on my GUI - searches come up with several solutions, none of which worked, mostly because they always involve at some point adding a ContentSizeFitter to an object that's a child of the ScrollView.  Unity complains about that as a conflict, and understandably so - the ContentSizeFitter does get the text to resize to it's contents in principle, but the parent always seizes control of the RectTransform and so won't let it do its job.

(The Unity manual says the solution to this is that the ContentSizeFitter isn't necessary, and that 'The parent Layout Group can already make each child fit the size of the content.'  But this is A MALICIOUS LIE.  You can fiddle about with settings on the parent Layout Group for a whole hour - believe me, I know - and if there's not a ContentSizeFitter on the Text object, that text ain't expandin'.  Although one thing the Layout Group might do is shrink the text to a height of zero.  You know, just to show it's joining in with the fun.)

But as it turned out, all this fiddling was unnecessary.  At some point (whether in Unity 5.2, or in a previous update that I didn't download) a new menu option has appeared to add in a fully functional ScrollView with all the required child objects in place so that you don't have to do it manually - and it's certainly doing its job a lot better.  Since I only wanted one Text object in my scroll view, I put that in place of the empty Content object it automatically creates, and replaced the reference to it in the ScrollView.  The Text object now accepted a ContentSizeFitter, and everything was fine.

I presume the automatically generated ScrollView is a new feature since all the help I spent hours searching for online yesterday didn't mention it, and only mentioned hacky solutions like the ones I was trying myself and which either didn't work or required a lot of scripting (and while I've been prepared to do that for one scrollview, I'm not accepting it when I've got a few dozen of them to do).  So there is now, in any case, at least one online mention of the easier solution that now exists.

Posted in Unity | Tagged , , , , | Leave a comment

Remote Control Digital Mixers (Soundcraft ui)

As I used to be a sound engineer working for Nova Sound in Northwich (anyone remember them?), I have been watching with interest the advances in sound equipment for live gigs. In the 80's my sound desk was a Soundcraft 400B monitor desk. We also had a Soundcraft 800B and 500 for front of house. They were great desks and very tough for life on the road. For stageboxes we hand built our own panels with neutrik and harting connecters and 100m multicore to front of house.

As things have moved into the digital age its interesting to see what can now be achieved with networked stage boxes / mixers. Although these are out of reach price wise for most smaller bands, cheaper "all in one" digital mixer / stage box are starting to appear. As a Soundcraft fan - the new Soundcraft ui12 and Soundcraft ui16 look amazing, especially for the price. Its a shame they haven't yet produced a 24 channel version. The Soundcraft ui16 with 12 mic channels is just a bit too small for bands that want to be fully miked up.

So a wish list for Soundcraft if possible with the ui series.

1. Produce a Soundcraft ui24 version.

2. Maybe include insert points on a few of the channels for outboard gear.

3. Add recording to hard disk for all channels, not just the stereo out.

I think the next 12 months are going to be very interesting as more devices are released.


Posted in Digital Sound | Leave a comment

Balloon Platform Defense released on Kongregate

As promised, we've released a minigame version of Balloon Platform Defense this month on Kongregate.

Play Balloon Platform Defense - The Basement

Screenshot ducks

Balloon Platform Defense - The Basement has just 20 arcade levels to get you started, much reduced from the 100 planned for the full version, but they aren't just the first 20 - there are some hard ones thrown in there as well.  Your amount of lives is also lower to fit in with the shorter game, and there are only options of 1 or 2 players instead of allowing up to 4 as the full game will.

Posted in Balloon Platform Defense | Leave a comment

Balloon Platform Defense - upcoming game for 2015

Balloon Platform Defense is a game combining the Single-Screen Platformer with the Tower-Defense genre.

Play now on Kongregate

Balloon Platform Defense trucks screenshot

Here, some trucks formed from balloons are moving toward the exit on the left.

Balloon Platform Defense screenshot trucks destroyed

They must therefore be squashed out of existence before they can reach their destination.




The enemies in Balloon Platform Defense are all made of physics-based balloons, allowing you to attack them by any method that applies enough pressure to them - jumping on them, pushing them against a wall or a ceiling, or between two players.

Screenshot Balloon Pile

There are some plain balloons too, which don't move unless they're disturbed.

Screenshot Balloon Kites Wind

Some levels have strong wind which will blow balloons around like these kites.


Balloon Platform Defense has been in development for about 6 months, and is intended for alpha release on PC, Mac and Linux in 2015, with a minigame version to be released on Kongregate in April 2015.

Screenshot Balloon Windmill

Lovely windmill isn't it?


  • Single-screen gameplay allows for 4 players on one machine
  • Physics-based enemies can be defeated in a variety of ways
  • Arcade, Survival and Casual gameplay modes

To hear the latest news about Balloon Platform Defense, you can subscribe to our Twitter account or Facebook page.

Posted in Balloon Platform Defense | Leave a comment

Free Visual Studio Tools for Unity

It's about two months now since I became aware that Unity code can be edited using Visual Studio. I remember what a relief it was to be able to rely on intellisense to remember the myriads of different member and property names that I was still getting used to after about a year of programming with Unity. Of course, MonoDevelop sometimes gives you intellisense, but whether it chooses to give you intellisense right now bears no relation to whether it will give you intellisense, say, ten seconds later.

So the fact that I had to go back to MonoDevelop sometimes for some debugging, or indeed that I sometimes opened MonoDevelop inadvertently when my finger accidentally double-clicked on a script or error message, has been a bit of an irritation. I have been aware of solutions to both those problems, but until now I thought that they always involved paid versions of either Unity or Visual Studio, or both. I can't even manage a new computer right now (which is part of the reason it annoys me so much if I accidentally open MonoDevelop - it takes my computer a minute or two to open it, during which it can't do much else), let alone big software licenses.

A few weeks ago I got quite excited when I noticed the Visual Studio Tools for Unity. But then I got to the FAQ and found that the minimum required version was Visual Studio Professional. Another question mentioned Visual Studio Community Edition, but I'd never heard of that - I knew the free version was called Express Edition, and that was below the minimum requirement, so I guess I ignored mentions of any other versions.

Just the other day I was looking to see if there was a version of Visual Studio for the Mac (since I'd acquired a 10 year old Mac Mini that ran more smoothly than some of my computers, and thought it might be easier to develop on that), and found some recent announcements by Microsoft, one of which was the Visual Studio Community Edition which I had glossed over before. If you haven't noticed it before either, it's basically Visual Studio Professional, but free, with a similar license to Unity Free (you can use it until such a time as you start making loads of money from it, then you have to buy the paid version).

It took a few hours to uninstall some conflicting versions of Visual Studio, install Visual Studio Community Edition 2013 (the latest stable release at time of writing), then install Visual Studio Tools for Unity. After that, getting it working was simple - instructions are given on the project's own page, I just opened my project, imported the package 'Visual Studio 2013 Tools', closed and reopened Unity, and then selected the new menu option 'Open in Visual Studio'. It really is that simple.

And then, in addition to all the intellisense and stuff you could get just by using Visual Studio Express to edit your Unity project, these are a few of the added features you get:

  • Your game can be run from Visual Studio (the default setting by the Visual Studio Play button is just to 'Attach to Unity', but it can also 'Attach to Unity and Play' - it will remain attached, and unable to edit code, until you press the Stop button in Visual Studio, even if your game has already stopped running, so don't be caught out by that).
  • Double-clicking a script will open it in Visual Studio.
  • Double-clicking an error message in Unity will bring up the offending line of code in Visual Studio.
    You can set breakpoints and debug your game from Visual Studio. (Though note that an error still just lets the game struggle on - it doesn't break automatically like programs in Visual Studio usually do.)

Alas, there's currently no syntax highlighting for shaders, so I still will be going to MonoDevelop for editing shaders for the moment, but it seems the next version of Visual Studio Tools for Unity will support that too, so we'll be able to use Visual Studio for everything. And there will be much rejoicing.

Posted in Unity | Leave a comment

Angles Without Trigonometry

I've mentioned before about it being a good idea to avoid using trigonometric functions in games.  There's an interesting article here about some of the reasons for avoiding it with reference to 3D geometry, but since I'm making 2D games at the moment I'm more concerned with how to avoid it in 2D, and I've written a C# struct for Unity to make this easier.

As I said previously, any angle in 2D can be represented by a normalised vector (a vector with a length of 1); the angle the vector represents is how far you would have to turn anticlockwise from a line pointing to the right, so a vector pointing diagonally up and right represents the angle 45 degrees.

Representing a 2D angle this way has a lot of advantages.  Firstly, the x and y components of the vector are the cosine and sine of the angle, so as long as we keep the vector normalised, we can read off these values easily instead of their being computationally expensive operations as they normally would be.  True, it takes a normalisation to get this representation in the first place, but that's still cheaper than three transcendental functions (an atan2 to get the angle, then a sine and cosine).

Then we can often work with the angles and keep them normalised, just by using trigonometric identities. (This is also equivalent to basing 2D angles on complex numbers.)  So adding two angles together or subtracting one from another, and automatically having the sine and cosine of the new angle, only requires a few multiplications and additions. Common operations on angles like rotating by a right angle are also easy, as is converting to a vector (which is essentially what it already is). My equality operator is only accurate to within about a tenth of a degree, but it doesn't need checking for whether angles are a whole rotation apart - the representation is naturally periodic.

I've added whatever other helpful features into the class that I can imagine wanting while working with angles, including the PerpDot operator that Unity's own Vector2 structure leaves out.  I hope you find it useful.

Download Angle2D class

Posted in Unity | Tagged , , , , , | Leave a comment

2D LookAt Function

I've noticed a few complaints in Unity forums that the 2D engine in Unity doesn't have its own LookAt function.  If you just use Transform.LookAt() in the usual way, an object seems to disappear.  It's Z-axis turns to face the requested direction, as usual, but in a 2D world this will mean that the Z-axis is now at a right angle to the camera, and since the sprite is flat and intended to have its Z-axis facing the user, it will be invisible.

There are several solutions to this problem, but I'll just explain two.  Firstly, we should note that Transform.LookAt() takes two arguments, the 'target' vector, and an optional 'worldUp' vector.  For a sprite to keep pointing forward, 'target' must just point along the Z-axis, or Vector3.forward.  But 'worldUp' determines which way the sprite's Y-axis should point, so we can still use this to orient our sprite.  Obviously if you want your Y-axis point along some vector called 'direction', you can just use the line:


It's slightly more complicated if it's the X-axis of your sprite you want to point along 'direction', but either of the following lines will work:

transform.LookAt(Vector3.forward,new Vector3(-direction.y,direction.x,0f));

(N.B. There's a similar function in the Quaternion class which works as well, but don't use Quaternion.FromToRotation(Vector3.right,direction);  This will seem like its working at first, but occasionally your direction rotation will be (-1,0,0), and the rotation will be 180°, but it won't be around the Z-axis!  While we're on the subject of things not to do, avoid using Atan2.  Indeed, avoid using angles at all if you can - trigonometric functions are all pretty slow, and there's rarely any reason to use trigonometric functions in a game.)

This works, but there's another way which is, if nothing else, interesting.  Quaternions have to work out the axis you're rotating around, and since we know the axis is always the Z-axis, the calculations involved become a bit simpler if you're only working in 2D.  It's hard to imagine a scenario where the amount of efficiency involved here could be significant, but nevertheless, somebody might want to know about it.

A quaternion stores the cosine of half the angle we're rotating by (this is called w in the Unity Quaternion class), and a unit vector of the axis of rotation multiplied by the sine of half the angle we're rotating by.  Since the unit vector of our axis is (0,0,1), two of the values will always be 0, and the other two will be the sine and cosine of half our angle.  If you're familiar with the unit circle, you'll know that means that all we need is a normalised vector in the correct direction, then the x component will be our cosine and y component will be our sine.

Since angles start from 0 pointing right along the x-axis, our half-angle-vector must be pointing to an angle halfway between that and our desired direction, or halfway between the vector (1,0) and our normalised direction vector (x,y).  One way to get such a vector is to take the average - we can add them up (but we're only bothered about direction, not magnitude, so we won't bother dividing by 2) giving (1+x,y).  Another is to take the vector from our target direction back to the beginning (1-x,-y) and rotate it by 90, giving (y,1-x).  The trouble with either of these is that for some normalised input vectors, they would give a zero vector.  But by doubling one of them and adding it to the other, we get another vector, still in a suitable direction (just with a different magnitude) - (2+2x+y,1-x+2y).  By normalising this, we have the required values for our quaternion.  The code will look something like this:

Vector2 halfangle, toward;
Quaternion q;
toward = (aim.position - transform.position);
halfangle = new Vector2(2f+(2f*toward.x)+toward.y,1f-toward.x+(2f*toward.y));
Quaternion q = new Quaternion(0f,0f,halfangle.y,halfangle.x);
transform.localRotation = q;

I'm pretty sure that would actually be less efficient than the simple version unless it was in a loop that avoided allocating new structures every time.  But the principle is there, and if you ever have some situation that requires you to work out a normalised half-angle vector anyway, or even if your target vector is already normalised for some reason, then this way might become noticeably more efficient.

Although the real reason I posted this latter half was because I'd figured it out, and couldn't help sharing it somewhere, natch.

Posted in Unity | Tagged , , , , , | Leave a comment

Windows phone press and hold keys

Just found something not seen before on the windows phone. Pressing and holding some keys brings up additional options for that key. For instance:


Holding down the $ symbol brings up the options as above, so for instance you could select £ or € instead.

There seem to be a number of keys that are available including .com and . on the above keyboard for typing a url.

I'll try and find the other keys.

Posted in Windows Phone, Windows Phone | Leave a comment