Moving Origin Games to a different drive

I wanted to move my BF3 install to my SSD but couldn’t figure out how to do it.  Numerous posts suggested things, but none worked until I found this:

From the EA forums:

http://forum.ea.com/eaforum/posts/list/7461348.page#17730650

From SicklySquid:

“OK. I thought I would pass this along like a good Samaritan.
SO I had the problem of not being able to install BF3 Into the directory I wished. I did most of what -=ADF=-Joey said, however I could not find _installer\DISK1 or EASetup. If they were here I would of found them trust me haha. So instead of uninstalling the game through the setup I simply used the windows uninstaller. (note: I moved the game to the directory on my other HD first. Also deleted the folder in the directory origin put it in.)
After I opened origin back up and instead of it saying "download" it said "install". It gave me the "working" symbol for a minute or so. Then it recognized it in the directory on my other drive. FIXT! “

And another thing… BF3 Expansion packs

From the blurb on the Battlefield Blog (emphasis mine):

Battlefield 3: Back to Karkand is a huge expansion pack featuring four legendary Battlefield maps reimagined in the Frostbite 2 engine. Three new vehicles (the VSTOL fighter jet, Desert Buggy, and an APC), ten new weapons that you can bring back to the base game, and a new layer of persistence with our all-new Assignments make this a must-have for any Battlefield fan.

Keeping up with the Joneses

I’m very, very disappointed to see that, just as in BF2, weapons from expansion packs can be taken back into the main game.  The reason I find this to be a particularly bad decision is that it potentially puts vanilla* players at a disadvantage.  Some people will say, "guns are sideways upgrades", but really, it’s not true.  Unless each gun is identical, there’s no such thing as perfect balance in games.  All it takes is one overpowered weapon to make it a "keeping up with the Joneses" experience. 

If the content pack contains weapons that are very strong or particularly useful in common situations, players will have a choice: buy the expansion pack and have that option, or watch the playing field become skewed in favour of those who pay more.

Moreover, cynics among us (i.e. me) see this as the perfect vehicle for developers to drive revenue by deliberately adding must-have content to expansion packs.

Read more »

Since when was it in vogue…

… to make aspects of your game totally totally and utterly unbalanced when new players are in the mix?  I realise that people are OCD and like collecting shit, but has it really come to this?

I say this because I’ve finally had the time / hardware upgrade to allow me to play BF3, and what do I find?  Every bugger has guns and vehicle perks except me.  In some cases this is not so bad (e.g. I can do just fine without heavy barrel and minor options like that) but in other cases it renders the game unplayable for the noobs.  E.g. I get in a chopper and get shot down instantly, as I don’t have any countermeasures.  The best I can do is wait for a friend to come online who already has chopper perks so I can piggy back off them. 

Similarly, folk in jets have perks like air radar so they can find me easily.  Tankers get various perks like coax machine gun & smoke. 

In my opinion, everyone should start with the key class/vehicle items (defibs, flares etc.) and anything beyond that should be a sideways option.  By sideways, I mean that you already have a default set of perks/tech (such as smoke in the tank), and additional perks give you options for certain situations, not concrete advantages.  As far as I’m aware, there’s no disadvantage to having flares (as opposed to nothing). 

I don’t get it.  It’s just as … weird as starting with no defibs in BC2 – you couldn’t actually be a medic until you’d played for a while.  Games are naturally weighted in favour of experienced players, as they have map / weapon / game knowledge that new players lack.  By design, this compounds matters.

Gigabyte GeForce GTX 560 Ti OC–Avoid

This card, amongst various other factory overclocked GTX 560 Tis are causing problems for lots of people.  There are various 560 Ti cards that have the OC postfix which stands for “Overclocked”, but the Gigabyte one seems to be the biggest offender.

tl;dr summary:

Batches of these cards do not run at their advertised speeds with certain DX11 games.  The cards are either stretched beyond their comfort zones, or don’t get enough voltage.

If you have one of the unreliable cards and play the likes of Crysis 2 or Battlefield 3, your game will probably crash with a silent error, or a driver error.

Symptoms

I bought the Gigabyte card purely for the quiet fans, but I’ve found that it cannot and will not run Battlefield 3 without heavy tweaking.  Without the tweaks BF3 will, without fail, inside 3 (three) minutes:

  • (Silently) Crash to the desktop
  • Crash with a BF3 stopped working error
  • Crash with a Windows 7 driver failure (like this)

    bf3_crash

I initially raged against BF3 and called DICE all of the names under the sun as BF games have a history of being horrendously buggy on release (I still crash on loading up for the first time quite a lot so…), but this time around the amount of ranting on forums with BF3 and other DX11 games points to faulty hardware.

‘Fixing’ The Problem

Gigabyte users only.  Either RMA the card and ask for a different model or…

Read more »

Good support (for once)

… kinda.  I recently built a new computer and one of the parts I received was faulty.  The heatsink bracket had a missing thread, so it was impossible to screw the brackets together.

I emailed Novatech support, assuming I was in for the full, painful returns rigmarole, but was pleasantly surprised, but also befuddled at the hoop jumping I had to do. 

The good

I described the problem and told them exactly which bracket was unusable (the Zalman CNPS 10X Quiet comes with three mounting brackets for different motherboard types, and only the LGA 1155 bracket was faulty).  I only had to wait to speak on the phone for about 30 seconds of hold music the second time I phoned. 

Most importantly, I received a new bracket in the post the next day, and you can’t say that about most places.

Read more »

Valve’s response to being hacked

… was very, very disappointing.  I’m somewhat befuddled by the extremely low key response to the incident. 

Visibility

On logging into the steam client this evening, there is no mention of the breach.  I’ve seen a few people on the forum disagreeing with my assertion, so I can only assume their announcements strategy is bugged or flawed.  I have announcements turned off, but in this case, the announcement should be prominently displayed.  Being told you may have had your credit card / password details stolen is not something I ever want to opt-out of.

There is no mention on the steam website.

There is no mention on the steam forums except for a tiny security announcement across the top of each individual forum.  It is tucked away out of sight – it’s not splashed across the main index or anything of that ilk.  I was asked to change my password when I tried to log in; that is all.  No reason was provided as to why I had to do this, either before or after.

Finally, I didn’t receive an email about it. Emails were only sent to those registered on the forums. 

Breached

A company’s security is only as strong as its weakest link, and once inside a machine, it is hard to say where an attack started and ended — particularly when you take human factors into account.  Not to be mean to Gabe, but Gabe’s HL2 fan site forum account was hacked years ago and they found his password was “gaben”.  Nobody is perfect, even when they’re taking preventative measures.

Even if the machine is totally isolated from the rest of Valve’s network, all it takes is one sloppy admin to re-use a password elsewhere, and you have major problems. 

History tells us that companies often cling to information when something goes wrong, and that what is eventually admitted (either due to information control in the early moments of the investigation, ignorance or both) can be far worse than the initial assessment.  In a situation like this, I believe that the only safe thing to do is to warn all of your customers about the potential breach so that they can take preventative measures.

Furthermore, as it happens, I do have a forum account, but it was tied to an old email address.  Who’s to say that my steam account username & password don’t match my forum username & password?  It is a common thing to do (note: I didn’t, but it wasn’t far off as, like most people, I am forgetful and a touch disorganised).

In my opinion, there should be a general email going out to all steam customers via their login emails, plus unavoidable notifications on the steam client, website & forums.

So how did I find out?  http://www.rockpapershotgun.com/ was the messenger for me, not Valve itself.  Perhaps I am the exception, but I somehow doubt it.

Unity3d – Profiling calls to Destroy

Destroy All … Things

I’ve recently been investigating some performance problems in our Unity3d app.  In one specific instance (running full screen on a rubbish laptop), there were numerous large performance spikes caused by the nebulous-sounding “Destroy”.  After prodding a little bit, Destroy is related to calling GameObject.Destroy().

Unfortunately, Unity3d’s profiler won’t give you any information related to what types of objects are being destroyed, and wrapping your GameObject.Destroy calls in profiler sections doesn’t help, as Unity3d defers the work for later in the frame (so the methods return nigh-on immediately).  As such, you get told “Destroy is taking x ms this frame”, and that’s about it.

Finding the culprits with the profiler

I managed to work around this limitation by (temporarily) changing all GameObject.Destroy() method calls to GameObject.DestroyImmediate() then wrapping the calls in Profiler.BeginSample() / Profiler.EndSample() pairs.

Note: If you access your unity instances in the same frame after calling destroy, this probably won’t work for you.

It was then possible to see which resources were doing the damage on the laptop.  All of our resource cleanup code was in one place, so it was trivial to do.

The temporarily instrumented code ended up looking something like this, and immediately let us know the culprits.  Note this code is just a simplified mockup, but it should give you the gist of the idea:

// centralised resource cleanup makes profiling simple
private void CleanupResources<TResource>()
{
    Profiler.BeginSample("Destroy: " + typeof(TResource).Name);
    IEnumerable<TResource> resources = FindResourceOfType(typeof(TResource));
    foreach(var resource in resources)
    {
        resource.Dispose();
    }
    Profiler.EndSample();   
}

//… and each Resource type inherits from a common base class, implementing IDisposable.
public abstract class Resource : IDisposable
{
    protected abstract void CleanupUnityResources();
   
    public void Dispose()
    {
        CleanupUnityResources();
    }
}

public class SomeResource : Resource
{
    private Mesh m_unityMesh; // gets set when resource is locked in
   
    protected override void CleanupUnityResources()
    {
        // GameObject.Destroy(m_unityMesh);
        GameObject.DestroyImmediately(m_unityMesh);
    }
}

Unity3d–Threadpool Exceptions

A quickie, but something to be very wary of.  I’ve been using Unity3d of late (I recommend it – it’s a very opinionated and sometimes quirky bit of software, but it generally works well) and I was recently tasked to parallelise some CPU intensive work. 

I decided, quite reasonably, to use the built-in ThreadPool rather than doing my own explicit management of threads, mainly because the work we’re parallelising is sporadic in nature, and it’s easier to use the ThreadPool as a quick first implementation.  So far, so good.  Everything was going swimmingly, and it appeared to work as advertised.  In fact, the main implementation took less than a day.

Most .NET developers who are familiar with doing threading with the ThreadPool will know that, post .NET 1.1, if an unhandled exception occurs on a ThreadPool thread, the default behaviour of the CLR runtime is to kill the application.  This makes total sense, as you can no longer guarantee a program’s consistency once an unhandled exception occurs. 

To cut a long story short, I spent about three days debugging a very subtle bug with a 1 in 20 reproduction rate (oh threading, how I love thee).  Some methods were running and never returning a result, yet no exceptions were reported. 

Eventually I reached a point where I’d covered nearly everything in my code and was staring at a Select Is Broken situation (in that Unity3d had to be doing something weird).

Unity3d silently eats ThreadPool exceptions!  I proved this by immediately throwing an exception in my worker method and looking at the Unity3d editor for any warnings of exceptions – none was reported (at the very least, they should be sending these exceptions to the editor). 

I then wrapped my worker code in a try catch and, when I finally got the 1 in 20 case to occur, sure enough, there was an exception that was killing my application’s consistency.  So yes, I did have a threading bug in my application code, but Unity3d’s cheerful gobbling of exceptions meant the issue was hidden from me.

I’ve bugged the issue, so hopefully it’ll get fixed in future.

Note: To the people who say “you should be handling those exceptions in the first place”, I would say, “not during development”. When developing, I generally want my programs to die horribly when something goes wrong, and that is the expected behaviour for the .NET ThreadPool.  Unhandled exceptions make it clear that there’s a problem and it means the problem must be fixed.

MS Wheel Mouse Optical (WMO 1.1)

I’m an addict

As a first person shooter (FPS) addict, I play a fair amount shitload of games.  I racked up a god-awful number of hours in Team Fortress Classic (I would conservatively estimate over 3000, on account of the fact I played it on and off for several years), 1400+ of Battlefield 2 and now 1000+ of Left 4 Dead.  I average ~1 hour a day.  I like to tell myself it’s a small time sink and I’m not wasting my life.

In that time I’ve gone through countless mice, mouse pads and a few desks, too.  If you waste spend an inordinately large amount of time doing something, it’s worth making sure that your time-wasting is enjoyable as possible.  I recently bought a new mouse.  Here is some highly interesting* discourse for mouse enthusiasts. 

This post covers choosing a mouse, setting it up and then rejoicing in shooting pixels more accurately.

Everyone else: I am warning you.  Look away now.

*may not be true

Caveat Emptor

I’ve been gleefully using MX5xx series mice for the best part of a decade.  The MX518 is a fine, spangly beast.  It draws admiring glances from neighbours and also dazzles helicopter pilots with its vajazzled charms.  It looks a bit like this:

An MX518, yesterday.

image

However, I recently stumbled across the ‘feature’ the MX518 has that’s commonly referred to as “angle snapping”, “prediction” or “correction”.  What is angle snapping?  Well, at the hardware or driver level, if your movements stay under some arbitrary threshold, the mouse input is subtly altered to keep your ‘lines’ straight. 

Here’s the effect in action.  A common test is to draw some horizontal and vertical lines in MS Paint.  Notice that my MX518-created lines are eerily straight for large sections.  If you’re pixel aiming at someone’s head with a rifle, this is not helpful.

mouse_lines

Note: This is a feature that is found in several mice, including gaming mice.  In some cases (such as the Logitech G series and the Razer Death Adder), you can disable the “feature” using the driver.  As that bloke off Art Attack used to say, “Try it yourself.”

Time for a Change

The MX518 I use at work (I have two) recently had a wheely bad fault and, having discovered the most-likely-non-issue that is angle snapping, I decided to unnecessarily obsess over it and buy something else. 

Because that will make me a Quake Live Pro, of course… (oh and sometimes it’s fun to change things)

Smile

Things to be aware of

Before I delve into specifics, here’s some guidelines for purchasing a new gaming mouse. 

Laser Mice Suck

Firstly, steer well clear of Laser Mice — their tracking sucks. They’re expensive. Even people who are endorsed by these brands don’t use these mice – laser has not yet caught up with the best optical has to offer, so don’t be fooled by the notion that newer is better.

DPI is overrated

All of this DPI nonsense seems to have little to do with mouse performance and tracking characteristics. All a higher DPI count seems to do is multiply your sensitivity by a factor using hardware and/or a mouse driver (much the same as turning up your sensitivity in windows and/or ingame).

Older mice with lower DPI can potentially track better than newer laser mice with 5600000000000 bajillion DPI.  In short, it’s largely a marketing gimmick.

Most of the professional quake players use 400 or 800 DPI coupled with a low sensitivity, so why would you ever need a 5600 DPI mouse?  Answers on a postcard.

Mouse Drivers Aren’t Always Needed

If your mouse is perfectly serviceable without installing drivers, try the mouse both with and without the drivers.  I’ve had mice that worked well both with and without.  I used the setpoint drivers for my MX518 solely to turn off the silly DPI switching buttons, but I’m not using any drivers with my new mouse.

Kill Windows Mouse Acceleration

Like Poison Sockets, Windows Mouse Acceleration is a hazard to your health.  It’s terrible.  Switch it off using the CPL mouse fix.  This version works with Windows 7 64 bit – I can’t guarantee anything else, but there’s another version that works with XP floating around.

Mouse acceleration means that physical distance you move the mouse isn’t the sole factor for your aiming.  If you use it, it should be a conscious decision, not something foisted upon you by windows in a ham-fisted fashion. 

If you insist on using mouse acceleration, either use the driver settings for your mouse or, even better, set up acceleration using in-game settings (newish half life and quake-based engine games offer customisable acceleration settings).

Negative Acceleration

Even with today’s space-age technology and fretful nerdery, mouse tracking is not yet perfect.

Most optical gaming mice on the market today can handle extreme speeds without losing their minds (as in, it’s almost humanly impossible to totally totally baffle the sensor while furiously turning around).  However, if you play with a low sensitivity and use a large mouse mat (I’m talking at least > 20cm of mouse movement to turn 360 degrees) there is the possibility of suffering from negative acceleration. 

Negative acceleration occurs when the sensor continues to recognise input, but cannot accurately track the distance covered.  The faster you move the mouse, the less distance is registered.  This manifests itself in fast movements (such as flicking the mouse to turn around) not turning you as much as if you’d performed the movement slowly. 

The optimum mouse setting is one where physically moving the mouse the same distance maps to the same logical game input.  Negative acceleration erodes this consistency.

The ESRreality MouseScore offers the clearest explanation.

It should be noted that, but for all the worst offenders, this is only a concern for low sensitivity gamers, and certain mice have workarounds available (such as increasing the USB polling rate via Windows). 

The Contenders

After researching the pitfalls, I did a cursory bit of reading around and discovered that roughly half of the best competitive Quake Live players use (or used) one of the following (crappy-looking) mice:

None of these mice is billed as a gaming mouse and they’re all dirt cheap.  Bizarrely, Microsoft don’t really talk up this fact or try to cash in.  They’re like a trio of unassuming murderers living next door.  Strange.

All 3 feature the same optical sensor.  The differences are just the shape and the available buttons.  The WMO is ambidextrous; the IMO is the same shape but has some extra side buttons.  The IME 3.0 is also a very similar shape, but is right-handed and has the extra buttons.  Gamers tend to favour the WMO or the IME 3.0

The negatives of each of these are all similar.  Firstly, without altering the USB polling rate, the sensor performs worse than the likes of the Death Adder.  Secondly, the wheel has a mind of its own.  Slamming the mouse down can force a button press.  For this reason, many players unbind the wheel and mouse 3 and rely on keyboard binds.

You can find the WMO or IMO for £8 to £15 and the IME 3.0 for £20.

The rest of the mice like the Death Adder all have strong reviews, but furtively slither into the £40+ price bracket.  As a Scottish miser, £40+ is a lot of clams for a pointy thing, so I baulked at the prospect.

Anyway, I chose…

The Wheel Mouse Optical 1.1

After drinking in the details posted in various nerd forums, I plumped for the WMO 1.1 at £14.99 from Maplins (product code: D66-00074) ordered via Amazon. 

As far as I can tell, there’s no problem with stock or versions. If you get one that was manufactured in the last 90 years, it ought to be a version with the sensor that’s good for gaming.

The WMO 1.1

image

My first port of call was to uninstall my old logitech setpoint mouse drivers.  I then plugged in the new mouse and cancelled the intellipoint driver installation process.  There’s no need to install drivers for this mouse, so it’s one less thing to worry about.

Next, I installed the CPL mouse fix to remove windows mouse acceleration.

Finally, to minimise the chances of encountering negative acceleration, I overclocked my USB polling rate to 500hz.  This was quite fiddly to do, but beyond a few reboots and Avira complaining about phantom viruses, it wasn’t a big deal.

Overclocking the USB polling rate increases the ‘perfect control’ region from 1 m/s up to 1.5 m/s, so unless you really throw it around with a miniscule sensitivity, negative acceleration shouldn’t be a concern. 

A quick test showed everything was in order.

Desk and Mousepad

As an avid PC headbanger, I’ve always favoured large desks.  In fact, I don’t understand why many PC owners fret over mice and monitors but often overlook the cornerstone of the PC experience: The desk and the chair.

I’m using a Influx Curva 1200 Right-Handed Wave Desk coupled with a Steelseries QcK+ mouse pad.  Both are fantastic products.  The Curva is solidly constructed, is a perfect height and affords me plenty of room.

I’ve got a 24” + 20” monitor dual screen setup, and there’s still room for a 45cm mouse mat and a few other bits and pieces.  At £150 it’s not a budget buy, but given how much I use my PC, I think it’s well worth it.

image + image

Regarding the size of the mousepad: I used to think anything over 30 cm was overkill, but having a 45 cm pad makes a large difference.  It covers such a large part of my desk that I no longer have to worry about positioning the pad – it’s everywhere, so I can get comfy.  A decade ago, my TFC clanmates used to constantly mock me for my OCD style mouse mat positioning.  The words still ring in my ears.  I cried sometimes, but no longer. 

Compared to the standard size QcK, it also affords me the luxury of using a lower mouse sensitivity. 

Sensitivity

I’m an arm player in that I use my forearm to move the mouse as opposed to my wrist/fingers.  I used to be a high sensitivity wrist/fingers player when I had a small desk.  I prefer using my arm; it’s more precise and I suffer from fewer PC-related mousing strains.

One sweep across the entire pad turns about 400 degrees (so probably about ~40cm for a 360 degree turn).  Because of its weight, this was slightly cumbersome with the MX518. The WMO is much lighter and glides easily.

Generally speaking, the lower your mouse sensitivity, the more precise you can be for picking out enemies.  A low mouse sensitivity is not a panacea, nor will it make you, me or anyone else a PRO GAMER!1, but I’ve switched around over the years and I keep gravitating towards lower and lower sensitivities. 

Also, once you’re familiar with a game, the need to sharply turn around often abates as you react less and predict more. 

Testing and Conclusion

I’m impressed with the WMO.  For £14.99 and a bit of tinkering, it’s a great mouse and, with my settings, the tracking seems to be borderline flawless.

It’s definitely not as grippy as the MX5XX series so if you’re a sweaty git, you may find it becomes slippery due to the lack of a rubbery finish.  Thankfully, I don’t sweat at all when sitting at the PC so this is not an issue for me. 

Also, the shape is perfectly fine; I prefer the shape of the MX5XX but this is better than adequate.  Everyone will have their own preferences when it comes to shape.

The tracking is borderline flawless and its lightness means it glides much more easily than other more tubby mice.

The only real downsides I’ve encountered were the phantom clicking mouse wheel issue and having to mess around with USB polling rates.  If you can live with these two issues, then I’d strongly recommend trying it out.  For £15, you won’t do much better.

Yes, I am a nerd.

Additional References

Fragtality’s epic gaming mice guide

British Telecom: SIM codes

tl;dr summary

If you’re with a broadband provider other than BT, ask for the SIM code when you’re moving your telephone line.

Long version

British Telecom have a habit of making things unusually difficult for their ‘cheap’ customers.  Not only do they try and foist every single one of their sodding services on you when you only wish to make an enquiry, but they’re (deliberately or otherwise) quite adept at being very inconveniencing when it suits them.

If you don’t have broadband with them and you’re moving home, you may need a SIM code (simultaneous provide code) to transfer your broadband smoothly.  Failure to obtain this code means you can’t kick off the broadband transfer in parallel, meaning a much longer time period of downtime.  After arranging my phone line transfer, I phoned up BeUnlimited (an ISP I can thoroughly recommend) and was informed that I need a SIM code to move the broadband quickly.

I then entered the catacombs that is BT’s cavernous automated phone system.  After much swearing and several dead-ends (note: companies should NEVER tell me to hang up when I reach a dead-end – there should always be a ‘to speak to a human being, press 1’ option), I managed to get through to someone.

Anyway, it turns out that various BT operators don’t seem to know what the SIM code is and will gropingly state things like, “no, you mean a MAC code; I can arrange some broadband with BT for your new home, Mr. Simpson”, as you patiently try to explain that you have placed an order, and you wish to retrieve the SIM code associated with it as your existing broadband provider is asking for it. 

After much gnashing of teeth and stalling, the operator revealed that I cannot get the SIM after an order has been placed – it is generated once and discarded; they don’t take a note of it or mention its existence.  I was told I had to cancel the order, wait 24 hours and then re-order, then explicitly ask for the code during the order process next time around (as they don’t provide it as standard).

What an absolute shambles.  Can you imagine them doing the same thing to me had I been with BT for all services?  Not on your life.