Posted by Patrick on Thursday, March 19, 2015Thu, Mar 19, 2015
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 this project. Much of…
Posted by Patrick on Friday, August 08, 2014Fri, Aug 08, 2014
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 the axis is …
Posted by Patrick on Friday, August 08, 2014Fri, Aug 08, 2014
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…
Posted by Patrick on Sunday, February 02, 2014Sun, Feb 02, 2014
projects
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. I've been getting into Unity3D over the last year or so, …
Posted by Patrick on Wednesday, October 05, 2011Wed, Oct 05, 2011
xcode
icons
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 Pack …
Posted by Patrick on Wednesday, September 21, 2011Wed, Sep 21, 2011
360idev
talks
git
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 donut burgers. I had a fantast…
Posted by Patrick on Wednesday, September 07, 2011Wed, Sep 07, 2011
360idev
talks
git
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 information…
Posted by Patrick on Wednesday, August 24, 2011Wed, Aug 24, 2011
tools
shaderize
xcode
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 provide some sort of constant, enu…
Posted by Patrick on Thursday, August 18, 2011Thu, Aug 18, 2011
tips
xcode
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…
Posted by Patrick on Tuesday, April 19, 2011Tue, Apr 19, 2011
360idev
talks
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 description: Xcode 4 finally includes much …
Posted by Patrick on Monday, April 18, 2011Mon, Apr 18, 2011
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 for the tools devel…
Posted by Patrick on Monday, April 04, 2011Mon, Apr 04, 2011
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, and I apologize to my Twitter followers who were su…
Posted by Patrick on Wednesday, March 09, 2011Wed, Mar 09, 2011
templates
xcode
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”). ___DIRECTORY___ Full p…
Posted by Patrick on Monday, March 07, 2011Mon, Mar 07, 2011
c/c++
qt
tools
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 four hours sharpening the axe.” Picking the righ…
Posted by Patrick on Monday, February 21, 2011Mon, Feb 21, 2011
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 …
Posted by Patrick on Monday, February 14, 2011Mon, Feb 14, 2011
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 a future p…
Posted by Patrick on Monday, February 07, 2011Mon, Feb 07, 2011
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's say our monster can have adorable…
Posted by Patrick on Tuesday, February 01, 2011Tue, Feb 01, 2011
swivel
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 …
Posted by Patrick on Monday, January 31, 2011Mon, Jan 31, 2011
snippet
c/c++
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 DigitalColor Meter an…
Posted by Patrick on Monday, January 24, 2011Mon, Jan 24, 2011
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: Serialization in C+…
Posted by Patrick on Sunday, January 23, 2011Sun, Jan 23, 2011
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 my code qu…
Posted by Patrick on Sunday, October 24, 2010Sun, Oct 24, 2010
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.…
Posted by Patrick on Saturday, August 07, 2010Sat, Aug 07, 2010
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 right until the end. I…
Posted by Patrick on Wednesday, August 04, 2010Wed, Aug 04, 2010
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 device though. Dis…
Posted by Patrick on Tuesday, January 05, 2010Tue, Jan 05, 2010
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). Combo and…
Posted by Patrick on Saturday, December 12, 2009Sat, Dec 12, 2009
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 game UI is c…
Posted by Patrick on Monday, October 26, 2009Mon, Oct 26, 2009
c/c++
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 no official design. It was di…