InControl is just a little over a year old on the Unity Asset Store now. It started as an open source project to scratch my own itch but it clearly resonates with the Unity community. Following the encouragement of friends and fellow developers to turn it into a sustainable paid asset, I’ve been really happy with how it has done.
There’s always been an essence of good will to t
This is a follow up to my last post on the current Xbox 360 controller bug in Unity. In this post, I speculate on the possible cause of the bug.
In my last post, I wrote the following:
“An brief note on the Xbox 360 controller: Microsoft originally designed the triggers to work on a combined axis, with the left trigger adding 0..-1 to the axis and the right trigger 0..1. The value of th
tl;dr: Unity (as of at least 4.5.2) has significant problems dealing with two or more Xbox 360 controllers on Windows, where they randomly may not work at all, or have non-functioning triggers, and/or have phantom clones. This is significant because it is the most common controller on the most common platform for many desktop gamers. There is no known workaround or reliable method for returning all
It’s been a long time—too long—since I last posted. Work and life got busy, as they tend to do. Our first child was born three months ago. And I’ve been all over the place with side projects and prototypes. But now it’s time to dust off the site with a fresh redesign and begin talking about some of the things I’m chipping away at this year
Typically, I have at least two versions of Xcode installed. Occasionally more. Keeping track of which one is running can be difficult, so I grabbed this lovely icon by Artua and put a ribbon on it with a label.
It helps keep me sane.
In the package available below, I’ve included the Illustrator CS3 file (so you can make your own), ICNS and PNG versions.
Download Xcode Versions Icon
360iDev was a blast. Several other iDevBlogADay authors have already commented on this. In trying to explain what the conference is like, I came up with the phrase “liberal arts developer conference.” There are plenty of developer talks, but also some great design, business and just-plain-makes-you-think talks.
And multiplayer Pac-Man. Let’s not forget that. Oh, and d
As I’ve mentioned before, I will be speaking at 360iDev. I do have a few announcements about that. With just a few days to go and many attendees also reading iDevBlogADay, I hope you will forgive this post not being all that developerish.
My talk has taken a slightly different angle than the original proposal, and for those wondering whether to come to my talk or not, here is some more i
I don’t like writing boilerplate code.
A while back, I started dragging my game engine kicking and screaming into the world of OpenGL ES 2. The good news is this lets me write shaders. The bad news is I need to write boilerplate code every time I write a shader — you know the kind — scaffolding code to load the shader, code to bind the attributes and uniforms and prov
In the process of going through my game engine and refactoring a few things, I noticed a bunch of TODO: reminders that I had apparently dropped in months ago and promptly forgot about. Out of sight, out of mind.
After a quick search, I found this very helpful post by Jake Marsh for turning them (and other markers) into Xcode warnings at build time.
I refactored his snippet slightly and ended up w
I am super excited to announce that I will be speaking at 360iDev this September. You can see the schedule here. This is going to be an awesome conference, and I’m stoked to be a part of it. Everyone who attends 360iDev raves about it so, if you can attend, don’t miss it!
My talk is entitled, “Power Your Workflow With Git.” Here is an excerpt from the descr
I thought I’d briefly mention what I’m up to these days. I started working on one of my potential game ideas and did some upgrading on my game engine to bring it up to date on OpenGL ES 2.0.
And then I got distracted. So distracted, in fact, that I have decided to switch projects.
A little while back I tweeted to the effect of stating that there was a lot of low-hanging fruit
This week’s iDevBlogADay snuck up on me a bit. I’ve been intending to do a “numbers post” on my Swivel promotion, so here it is, and I’ll try to keep it concise.
Back around two weeks ago, I got up one morning and on a whim decided to make Swivel free. Sales had essentially flatlined, so there really was no risk.
What happened next surprised me, a
In case this is driving you up the wall:
The new Xcode 4 template locations are:
/Developer/Library/Xcode/Templates/...
~/Library/Developer/Xcode/Templates/...
Additionally, Xcode 4 changed the File Templates to use a triple-underscore instead of guillemets. The following tags can be used in File Templates.[1]
___DATE___ Current date (using NSCalendarDate format “%x”).
__
Since the release of Swivel, I’ve taken a bit of time to let myself unwind from the development cycle and dwell on what I want to work on next. I’ve decided on a new project that I’m really excited to get into, but before I do, I need to do a little work on my tools.
Abraham Lincoln said, “If I had six hours to chop down a tree, I’d spend the first
One of the recurring compliments that Swivel gets is that it runs very smooth. This was not an accident. For a puzzle game there are surprisingly many things that are potentially rendered in a single frame: several layers of blocks, shadows, crossfading backgrounds, particles, explosions, double-layered fonts, etc. One of my early goals was to have rendering be very fast. I wanted the game to ooze
Yesterday @GavinBowman asked me about my experience using Game Center for the multiplayer mode in Swivel.
So here is a brain dump of my thoughts on the subject. I apologize in advance for the somewhat rambling nature of it. If you have any specific questions beyond what I cover, feel free to ask in the comments. I won’t go into any code but if there is interest it can be the subject of
Two weeks ago I started a series of introductory posts on Archivist, a library for simple serialization in C++. I wrote Archivist for my game, Swivel, which is now in the App Store.
Today I’d like to show you how to deal with basic inheritance with Archivist. We’ll get into polymorphism in a future post.
Let’s extend our first example with some inheritance. Let&r
Swivel has been approved and should be appearing in the App Store worldwide any moment!
Here’s a direct link: http://itunes.apple.com/app/swivel/id383057392
I was planning to write another post on Archivist for this week, but with Swivel in the approval process I am pressed for time to get my promotion materials together. So instead here’s a quick snippet of code that may be useful to you.
Color values are one of those things that you don’t really think about until you need them. And when you do you might fire up Photoshop or the D
I’m thrilled to be a part of iDevBlogADay for which this is my first post. I hope I will be able to contribute something of worth to the community every Tuesday. I have several bits of code to release as I go along too, so hopefully you will find it helpful!
Yesterday, I outlined my motivations for a creating library called Archivist. You may want to check that out.
In short: Serializa
Swivel had a particularly nasty bug. It crashed while loading my application state, but only occasionally—sometimes once a day, sometimes every hour. This turned out to be one tough error to find.
I spent many hours going over my code with a fine-toothed comb, running memory debuggers, rewriting and refactoring anything suspect or complex, throwing in extra validations and checks. While
Last night I was playing an idle game of Swivel before bed. I posted a score of around 3,500,000. A few days before that I posted 800,000. Until that point I had a threshold of about 250,000.
I must admit I felt like some kind of Zen master racking up a 65x chain combo. It was a curiously placid experience, however, as if my brain managed to read the pattern of blocks and knew what to do with it.
Swivel is entering the gun lap. There’s still plenty to do, but I feel like the end is in sight. This has prompted me to consider what can be done to speed up the final development stage.
As many developers know, scope creep is a real danger — particularly right at the end of a project. But sometimes early scope creep in the heady, naive days of initial design sticks around ri
A six-minute gameplay video along with some commentary on Swivel.
It gives more information about the game and shows it off running on the new retina display. Sorry it’s a bit fuzzy — I recorded it with my camcorder since the iPhone 4 simulator runs too slow on my iMac when you crank up the HD graphics (crazy, I know!). The game still runs a smooth 60 frames per second on the
This is what I’m working on as I find the time.
The mechanic is simple: rotate groups of four blocks clockwise or counter clockwise to match four or more adjacent blocks.
Bonuses can be generated for matching more than four blocks, rematching (adding a block to a match in progress), combos (matching within moments of the last match), and chains (causing additional matches by a match).
Most of my game development on the iPhone is done in C++, not Objective C. I feel like this has its benefits, but it also has drawbacks, not the least of which is that programming user interfaces can get really messy. The Cocoa delegates model is wonderfully powerful for that kind of thing. The easiest model I’ve seen in C++ is the signals and slots model used, most notably, by QT.
My ga
Bartosz Milewski gave me a good chuckle this morning. Here’s a slightly paraphrased excerpt from his video presentation.
C++ is an ugly language. I don’t think I need to convince anyone of that. It’s an ugly language and we love it because it gives us performance, mostly.
But there are some parts of C++ that are uglier than ugly: template meta-programming. There was