February 12th, 2012 by adam

Here’s ANOTHER overheating bug in Apple’s OS X.

This time, it’s the BlueTooth simulator built-in to the iOS Simulator (used every day by iPhone and iPad developers). The iOS5 version of the simulator has this crazy BT demon (process “BTServer”) that will sometimes – for no apparent reason – take up 100% CPU usage and melt your machine.

Solution:

  1. Open terminal
  2. Type: sudo vi “/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/LaunchDaemons/com.apple.BTServer.plist”
    • NOTE: the inverted commas are required, it seems
  3. Enter your admin password for the machine (the file is locked to all except admin)
  4. Use vi to change the 8th line to: <true/>
    • NOTE: the line immediately above should be: <key>Disabled</key>
February 4th, 2012 by adam

The mashup

(My new “preferred explanation of piracy + DRM”)

The original

(From Cyanide&Happiness webcomic, if you don’t know it already..)

February 2nd, 2012 by adam

Here’s what you need to know about your new co-workers:

https://www.youtube.com/watch?v=SJiC4EglCX0&feature=related

January 30th, 2012 by adam

http://www.gamepitches.com/ (just discovered this, via TCE):

The repository for video game pitches and design documents

This site serves to be a free resource to game designers offering them the web’s largest single collection of game design documents and game pitches.

It says “resource got game designers”, but … pitch documents are hugely valuable to anyone working on the business/funding side too. (there are two aspects to the site – design docs, and pitch docs).

There’s some good stuff on there – from the GTA design doc to Spider’s original concept doc. Note to fledgling designers: they’re impressively brief and succinct!

…and if you work for a studio or publisher, perhaps you could ask about getting some of your company’s old pitch/design docs put up online?

January 16th, 2012 by adam

Looks like a “normal” KickStarter project for a new Tower Defence game.

Halfway through the demo video, it switches to “here’s how I’ve been using GA to detect game-design flaws, and to test ideas in tweaking game design”.

Something I’ve wanted to do for more than a decade, but could never find a company who’d take it seriously :). I really hope this iPad game does well – would be great to see a poster-child / real-world demonstration of a workable technique here.

January 16th, 2012 by adam

As a free-time project, I’ve been writing a Risk clone (*) for iPad.

One of the bits I like best right now is that you can give it the URL of *any* SVG file on the web, and it automatically turns it into a Risk map.

(e.g. all the maps in Wikipedia articles are SVG files – it’s a common file format with good browser support)

This was one of those “interesting” technical challenges – I had to find an algorithm that would automatically work out which territories a human would “assume” were connected to each other.

I’m using an open-source SVG library which works fine for basic SVG files but has a lot of bugs with the more esoteric ones. I’ve already fixed a few of the major bugs (they’re now merged into the GitHub project) – but I’d like to get more SVG files to test with.

The one thing to bear in mind is that the colour-data gets wiped when it imports. So … SVG files that make heavy use of different colours or gradient-fills/pattern-fills lose detail when imported.

Also, files where none of the elements are close enough to be deemed “connected territories” … work poorly.

Everything else works fine.

So … if you’ve got any, please post a comment here with URL, or email them to me directly (address in the About link at top of this page).

(*) – I say “clone” because it’s the same genre – but the gameplay is “fixed” quite a lot. If you once loved Risk, but grew to hate it, you’ll see why I wanted to change the baic game design :).

January 13th, 2012 by adam

What happens when you get 2 developers working together, sharing their source? What about 10? … or a 100?

There was a dream, 20 years ago, that the total would be greater than the sum of the parts. That developers could *re-use* each-other’s code.

Sadly, that dream – in 2012 – is poisoned.

What I’m going to describe here happens a lot – although in absolute terms, I hope it’s just a drop in the ocean. Maybe it’s nothing to worry about. Or maybe … well. In the last 15-odd GitHub projects I’ve tried to use, it affected more than a third of them. Such tiny stats are statistically meaningless, of course – but if you look at the causes of this, I think it’s more likely part of a general trend – and that really is worrying.

So. What’s going on?

The curse of Github

I love GitHub, I’m a paying member (and I regularly sell it to clients and colleagues) but … in some ways, it’s IMHO actively preventing collaboration.

Just to be clear: it doesn’t have to be this way – you can run your own projects on GitHub and prevent this happening.

But … GitHub makes this the path of least resistance, and that means – in the world of Open Source – it’s the path that gets most followed

When you fix a bug on GitHub, you have to wait for the original project author to “accept” your fix.

If they don’t accept it, as far as collaboration goes: you’re screwed. There is no “plan B” for collaboration.

Your only option is to tell the world:

“Stop using his project! It sucks! Use my project instead! I promise I’ll be a better merger!”

But then … if *you* stop accepting fixes for a while, one of the developers fixing YOUR bugs will have to do the same thing.

And each of these “Stop! Use mine instead!” calls is one-way: once another developer who’s making use of the source moves to a sub-fork, they can never go back. In theory, the original Author could do a back-dated merge … but in reality, that won’t happen, because of the cost involved:

Back-dated merging is combinatorially expensive

In practice, that’s more expensive than a normal person can afford, in terms of time and effort.

For each SubAuthor they want to back-merge with, they have to check every single change that person has made … against every change that they’ve merged already, from every single source. Otherwise they break the previously-merged code. Usually, each individual SubAuthor makes an incompatible change sooner or later – and so prevents the original Author from ever merging with them.

It’s no surprise – usually by this point the Sub Author has given up on the original Author (can you blame them? the Author has disappeared and ignored merge requests for months or years by this point)

So, in practice, very few GitHub authors (so far: none that I’ve seen) re-merge SubAuthor projects once the SubAuthor has really got going. On the projects I’ve been involved in, when a popular SubAuthor disappears for a while, there’s been a desperate scramble by the SubSubAuthors to find the guy/gal and beg/bribe/bully them into merging – otherwise we know that our combined efforts are about to be blown up.

What? Well …

The actions of the Author can undo the work of the Collaborators

Say you have Author “A”, and 3 people making changes and fixes to the code (“B”, “C”, and “D”).

At first, while A accepts merges quickly, B, C and D are all sharing code together – in practice, they are collaborating. However, they are not truly sharing code – GitHub does not allow this – they are sharing code with a Master (A), who is forwarding their work to all 3 of them.

When A disappears, B C and D can no longer collaborate. If A disappears with merges pending … then B/C/D find they have 3 distinct codebases, and no way within GitHub to do a simple cross-merge.

Now, the situation is not lost – if B, C, and D get in contact (somehow) and negotiate which one of them is going to become “the primary SubAuthor” (somehow), and they issue manual patches to each other’s code (surprisingly tricky to do on GitHub) … then they can resume collaboration. I’ve done this myself – it works. But it’s massively more complex than the process they were using before, which was *one-click-merge*.

In practice, at this point B/C/D will stop collaborating. Sad, but true. This happens over and over again on GitHub projects – when a SubAuthor arises, the other collaborators stop collaborating and become new SubAuthors in their own right.

Often it feels like watching a religion split, with each of the senior priests declaring themself “the new Prophet”, and going forth to spread (their) word…

Net effect: GitHub may be killing open-source projects

In theory, GitHub is wonderful.

But the combination of its bad design around some core use-cases, and its intransigence when it comes to the VERY common case of a single person disappearing … have lead to the point where I believe it’s killing projects. This is a gross generalization – and not every project that loses its Author will get this problem – but I’ve encountered more and more “dead” projects on GitHub over the course of 2011.

Of course … the way GitHub is designed, *those projects do not appear to be dead*. Often they appear to be very much “alive” – there’s tonnes of activity.

But all that activity is going on in radically different and massively incompatible forks. It’s wasted time and energy, it’s programmers fixing the same bugs – multiple times – because they are NOT collaborating any more.

In the case I cited at the start, 100-plus developers have (probably) re-written the same fixes for the same problems.

i.e. the total effect of this project is tending towards ONE HUNDRED TIMES less than the sum of its parts.

Note: LESS … not more!

There’s some value there, still – anyone can come along and start from the original project and make their own fork. But it’s a sad and sorry fraction of what the Open Source world dreamed of when the word Collaboration was fresh and exciting.

This is UnCollaboration. And its becoming depressingly common.

January 1st, 2012 by adam

T-Machine.org is up for renewal, Joker.com won’t accept credit and debit cards any more, so I’m having to remote pull everything to a new host. Hopefully this will work first time, without screw-ups…

(Joker.com doesn’t take any other form of payment – PayPal, bank transfer, etc. They used to do plain Credit/Debit, until recently (that’s now been removed) when they switched to the “insecure password and spam email account” system that Visa/Mastercard are pushing)

This Visa/Mastercard system is not only a joke, it’s also a great way to lose business: moving to the new system just cost Joker.com a 5+ year customer – and I’d have continued to be a customer for decades to come, I’m sure. Web 0.1 triumphs again …

December 9th, 2011 by adam

For the past week, my iPhone’s have been unable to use Gmail. After approximately 4 hours, gmail locks you out of IMAP completely, unless/until you force-kill Apple’s mail client. The problem is … if you force-kill the client, you lose all emails you wrote, and you lose all emails you filed into IMAP folders (Apple’s client refuses to save state – it requires the server to do it).

Nothing has changed on the phones – and Google has been putting up irritating “stop using gmail, use the new gmail” ads for the same period of time – so I’m going to go out on a limb and guess that someone at Google changed something on the IMAP protocol that makes it no longer work correctly with iPhone.

I just had to write the same email for the second time, and re-file 50+ emails for the third time – and I’m giving up. You just can’t use gmail on an iOS 4 iPhone right now (I’m guessing that iOS 5 works OK, or there’d be an internet rage fest going on.

So. What to do. Dump the iPhone (switch to Android as my main phone, perhaps?)?

Or decide that enough’s enough, gmail is just too damn annoying these days (e.g. the 3 week period earlier this year where “reply all” was disabled on my gmail account) … I’ve heard there’s an email-for-life system called … hotmail?

Hmm…

December 5th, 2011 by adam

Please email me (adam at red-glasses.com) if you have skills / interest in the following:

  1. Mass market (i.e. everyone + their mom) telling stories
  2. javascript frameworks for complex visual 2D stuff (e.g. iGoogle, Netvibes, etc)
  3. Visual manipulation of large 2D images on mobile (especially iPhone)

NB: we have no funding yet, just an idea. This is a scatter-gun first approach – if things go well, there will be another call for people in 2-4 months time.

December 1st, 2011 by adam

Against my own advice, I submitted an eleventh hour proposal for the 2012 GDC. I’ve fallen in love with San Francisco, but I’m in two minds about going next year, it seems to have too much of E3 about it. The simple beauty of a conference for games people, about games, feels washed out and faded away.

“While we can’t comment on why individual submissions were declined due to the high volume of submissions received, be aware that it can often be due to multiple reasons — many of which have nothing to do with the professionalism or quality of the talk proposed.”

The more time I spend around inspirational people, the more I realise that it is never acceptable to refuse reasons for a decision. Usually, the reasons are things you’d rather not hear – criticisms too close to the bone, complaints too painful but fair – but they are things you need to hear anyway, to have a decent chance of moving forwards as a person.

CMP / Think Services is in the unenviable position that they own the only global event that speaks for mankind’s total relationship with computer games. I’m sure it seemed like a good commercial play at the time – but how fair is it that they now must shoulder the total face-time of every step forwards in the art and science of game development? Tough crowd, if you ask me.

Or is there some other (non judgemental) forum for face-to-face game design that I’ve missed?

November 29th, 2011 by adam

On Facebook.com front page:

“Dave Stone and Mike Merren recently read articles.”

…so I click on one of them. Lo and behold, instead of getting an article, I get The Independent app trying to force me to install it.

Force. Yes, force – there is no option to “view the article”, the only option is “install this app or cancel”.

Lots of people complaining about this recently, but there’s really only two things to do:

  1. Shame the newspaper by tweeting them
  2. Report them to Facebook for abuse

Tweet them to let them know what you think

@Guardian and @TheIndyNews

Report to Facebook

Yes, I know Facebook is behind this in the first place, but if you don’t bug them about it, they’re less likely to care:

…and you might as well let the developers know how pissed you are – directly – since Facebook gives you this option:

November 28th, 2011 by adam

If you follow links in linkedin emails today, from an iPhone, you get kicked off the linkedin.com site, and every page redirects to:

Https://touch.www.linkedin.com

Even if you type in the front page URL directly, you are *not allowed* to visit the website.

Classy.

November 21st, 2011 by adam

(I’m prototyping a new game (working title: “ChessQuest”) – original post here)

Major changes:

  1. Enemies have health, and can be killed by touching them
  2. Performance is another 30% faster (should be running OK on most phones now?)
  3. Enemies have a direction indicator (not necessary right now, but it’ll become important in a later version…)

Download link

Chess Quest-0.4.0

November 20th, 2011 by adam

http://www.java-gaming.org/topics/lwjgl16k/25093/view.html

“the LWJGL16k competition starts right here, right now.” – Cas

The rules

First deadline: 25th November 2011
First task: get a black screen running using LWJGL

“you’ve got 7 days. All I’m looking for at this stage from you is a blank window opening up and maybe a rotating square or whatever. Of course complete games are even more welcome but the idea is to get something shipped.”

Well, what are you waiting for?

If you’ve got Eclipse installed, all you need do is download the LWJGL library, copy/paste the 50-line minimal project from the Wiki, and submit your entry!

(I believe Cas is onto a good thing here … force people to realise how easy it is to make a game if you focus on small-but-visible steps done *quickly* – No more procrastination!)

November 18th, 2011 by adam

And repeat after me:

“novice web developers should NOT override the Enter key on the keyboard”

(autocomplete fails – when you hit enter to accept browser-autocomplete, the idiotic untested, badly-written javascript kicks in and deletes the form data)

November 16th, 2011 by adam

That’s one higher than Jim Greer.

Finally.

November 15th, 2011 by adam

UPDATE: So … it seems Suffusion has (buried deep inside the config) a way of displaying category pages with a higher-level workaround to the WP “missing feature”. Although so far I can’t find a way to set the settings on individual pages (which is what you generally need). So, I’ll leave this post up – it’s a good starting point for customizing Suffusion’s page-of-pages (which is also, it seems, how you would customize its Category pages.

Just to be clear, this is not a bug in Suffision, although it’s an oversight and I hope it’ll be included in a future version. The core problem is in WordPress: people have been requesting/expecting this feature for the past 5+ years, it’s pretty basic, but for now the WP folks haven’t added it.

Problem: List all the posts in a single category

This is VERY frequently requested by WP users: you want to have a Page on your site which lists the posts that are in a single Category.

WP has a very low-level way of doing this – which is very error-prone, hard to maintain (it’s hard-coded to database ID’s!), and requires you to break every single theme you own. Every time the theme is updated, you have to manually re-implement the fix!

Fortunately, there’s a minimal workaround (which is documented in the WP docs now (scroll to bottom)) which still (!) requires some theme editing.

Fortunately, Suffusion already has most of this workaround implemented, so we can make the fix without screwing around with the theme so much. The source code in Suffusion is almost identical to the sample provided by WP – but unfortunately it’s missing a key part. In Suffusion, you CAN list posts on a Page, but you CANNOT filter those posts by category.

Solution: Combine WP’s source with Suffusion, with a bit of safety improvement

So, edit the file “posts.php”, titled (in Suffusion): “Page of Posts”.

Where it has these lines:

$args = array(
	'orderby' => 'date',
	'order' => 'DESC',
	'paged' => $paged,
);

…instead copy/paste the following:

$category_exclusive = get_post_meta($posts[0]->ID, 'category', true );

if( $category_exclusive )
{
$cat = get_cat_ID($category_exclusive);
$args = array(
	'category__in' => array( $cat ),
	'orderby' => 'date',
	'order' => 'DESC',
	'paged' => $paged,
);
}
else
{
$args = array(
	'orderby' => 'date',
	'order' => 'DESC',
	'paged' => $paged,
);
}

Usage

As per WP’s official suggestion … if you want a page to filter by category:

  1. Edit the page
  2. Select the “Page of Posts” template (this is Suffusion specific; in other themes, it might not exist)
  3. Add a “custom field” (scroll down on the edit screen), called “category”, with a value of the NAME of the category you want to be included

Explanation

One major thing here: We are being SAFE and non-destructive to the Suffusion theme.

Critically important is that we ONLY do a “filter by category” if the Page itself requests it. WP’s sample code does NOT have this protection (which is why the code above is slightly different).

This means that the rest of Suffusion (which doesn’t know about our new feature) is unaffected, and works as normal

October 26th, 2011 by adam

(I’m prototyping a new game (working title: “ChessQuest”) – original post here)

Three major changes:

  1. You have a health bar, and can die
  2. The trackball is now supported for movement
  3. Performance is literally 1.5x – 2x faster

Download link

Chess Quest-0.3.3

So, a friend of mine tried it out today, and he couldn’t move around at all – something wrong with his HTC Desire (even though I’ve been testing on near-identical phone, for some reason his phone was losing the input gestures). This evening I did some improvements and fixes until it began to work “tolerably” on his phone – and I threw in some new small features too.

It’s still test stuff – not indicative of the final gameplay, but I’m trying out different basic ways of achieveing the stuff I want to achieve in the later versions.

Overview of what’s changed

  • You have a very basic HUD
  • There’s a couple of coloured powerups scattered around – red restores health, green increases maximum health permanently
  • Enemies actually kill you now, every moment you’re touched by one, your health drains continuously
  • You can choose different levels at the start – I included one of the early test levels that was easy for me to upgrade with recent changes. I’ve got another one I can probably add quickly later (one which generates 100% random mazes each time you play)
  • The ultra-simple EntitySystem I’m using was running too slow. There’s no simple fix I can see – the ES really needs to be written for performance, if I want it to be high performance – but I was able to do a 10-lines-of-code workaround that took the worst piece of bad performance in my game and made it literally 5 times faster. That’s good enough for now!
  • Input system has changed *again* – the Android OS has poor input management, a bit buggy, with an inconsistent programming API, which *also* runs differently on different phones – so I keep trying to do as little work on this as possible. The Android OS is desperately trying to prevent me from doing any prototyping at all – it’s begging for me to write hundreds of lines of code to make up for Google’s inattention there – but if I do that, I will lose all the time I would have spent doing game design and dev, and the whole project will be a failure. So, yet again, I’m putting on a band-aid and dodging the rest for now. But … at least now you can use trackball instead of / in addition to swiping on the touchscreen
  • There’s an FPS counter on the screen
October 25th, 2011 by adam

Someone just wrote this comment on one of my StackOverflow answers:

Fundamentally, this question/answer pair is saying:

“Apple: one of your non-programming managers made a stupid mistake in one of your core tools, one used every day by hundreds of thousands of people; since you won’t fix it, here’s a (tricky) workaround that anyone can use”

Apple “doesn’t do” anything open, doesn’t do community support, or community development – you’re not even allowed to know if you’re the first person to report a bug, or the millionth.

But if they did, just imagine how much better their tools would be, and how much more productive the iOS developer community would be…