The Little Platform That Couldn’t

The following is a step-by-step account of me trying to get my mobile game, Pinball Sundae, released onto the Windows Phone 8 platform. Normally, I don’t really take detailed notes like this; but, for this, I had to. Going into it, I had a certain expectation: my experience deploying the game onto Android and iOS was very pleasant overall; it wasn’t free of frustrations, but I was delighted at how little I had to do to port between platforms. Moving to Windows 8 should be pretty easy, then, I thought.

I could not have been more wrong.

Early on in the process, I could tell that this would be more of an endeavor than I wanted. Not far into it, crap started to hit the fan–to a point where it was almost comical. At some moments, I was willing to bet that Microsoft simply did not want me to bring this game to their platform. So I thought I would save up all of the snags I ran into and share them, so that maybe some other developers following me might have an easier time (or decide not to mess with the platform to begin with).

Super-long bulleted list of fun–GO!!

  • First thing’s first: gotta install Windows 8. “Can’t I make WP8 apps with Windows 7?” Microsoft says “NO!” Good-bye, $200; hello, new OS! (Why exactly are you better than Windows 7 again?)
  • OK. So, I bought Windows 8 on Microsoft’s site, and they said I can upgrade from Windows 7 without formatting my drive. Sweet. So it downloads, and then I have to restart to begin the installation. Fine. But, as the process begins, I get a neat little popup saying “Windows 8 could not be installed“. Uh, what? All I could do was click “OK”. Not OK Microsoft; not OK.
    • After some Googling, I got a few tips: run CCleaner, run msconfig and disable all non-Microsoft startup services, and then run chkdsk. Only after doing all of these things was Windows 8 able to install properly. Yippee.
  • Next up, I tried to bring up the game in Unity. However, in the process of upgrading the OS, the Unity license file was lost (I guess this is in the registry somewhere, which probably got ravaged). I emailed Unity and explained the situation, and they promptly got back to me, allowing me to re-authorize the license. OK; cool.
  • So I got Unity up, got the project loaded–time to build! But, oh–some error popped up in the Unity console. It said something like “do you have the Windows Phone 8 SDK installed?” Damn. No, I didn’t. OK, my bad; I gotta get that.
  • Went to Microsoft’s site to download the WP8 SDK. Ran the installer, the setup window popped up, and then I got a user account control popup asking for permission. Uh…yeah, sure; go ahead Microsoft; install your own SDK.
    • Well… It wasn’t that simple. As soon as I clicked “Yes” to authorize the install, the setup program immediately bombed out, saying it couldn’t install the SDK. Fluke? Alright; maybe I’ll just do it again… Nope. Um… OK… Maybe a system restart is all I need; clear out the RAM/cache/bowels/etc. Still no. Are you kidding me?? (This is where the circus music started playing in my head. Ya da dadadada da da da daaa…)
  • Alright. Ah… Let’s switch gears, I thought. Let me try and get my trusty (and legit) copy of Photoshop CS2 running–I’m probably going to need it for icons or something. Clicked on it, got an admin permission error. Uh… Alright, so run the freaking thing as admin. Jesus. Right-click, “run as administrator”. (Why not do this by default?) And then…
    • New little popup: “extended attributes inconsistent”. Uh. What. (Cue the circus music again.) Thus, we arrive at my second are you kidding me?? moment. What is this? What does this mean? Google! Help!
    • It turns out… What I had to do to fix this, is the following: go into the Windows Sounds menu, in the Program Events list. Under the “Windows” category, there is an event for “Windows User Account Control”–this was the box that popped up asking for permission. I actually had to set the sound to “None” for this event. And then… Well, then it worked: I re-ran the SDK installer, clicked “Yes” on the UAC popup, and BAM! Progress.
      • That was my third are you kidding me?? moment, for those of you keeping track at home. Uh…Microsoft? What, uh… What? Why did a wonky sound event stop me from installing a program? Of course, I didn’t think to do this randomly; I found some suggestion after a fair amount of Googling. Really makes me wonder what kind of paper-clip bubble-gum contraption they have holding this excuse for an OS together.
  • Now this was maybe my favorite part: I thought to re-run the SDK installer. “Maybe the UAC sound error was related to the SDK install error? Could be, right?” I thought at that point, maybe anything was possible. And it was! I was actually able to install the SDK after fixing that “extended attributes inconsistent” error from before. Way to go. Way to fuckin’ go. (Ahem.) Anyway…
  • Now, at the end of the SDK installation, it was, like, “yeah, OK, we installed it, but you may have to enable hardware virtualization to get our shit to actually work.” What. Why? Why have this dependency? (Circus music again.) Why can’t you just work?? So, fine; I Google how to go into the BIOS and enable this feature through some cryptic menu options. *Sigh* OK, not too bad.
  • Opened up Unity again. Tried to build. Compiling scripts…and…WHAM! “System.Collections.Specialized.OrderedDictionary doesn’t exist in target framework.” Huh. Uh…
    • The problem was with NGUI, a Unity plugin I was using for my UI. It just needed to be updated. OK, I guess. So I downloaded the update from the Unity Asset Store and re-imported it.
    • namespace ‘global::’ already contains a definition for ‘UpdateManager’“. *Face palm* Come on! (I started hearing circus music here too.) GOOGLE?? Oh, thanks, Google; all I needed to do was remove a second reference to “UpdateManager” in one of the NGUI scripts. As if I didn’t love NGUI enough… (But that’s another issue entirely.)
  • So! Got the thing compiling; all the scripts were kosher. Rockin’. Now to test on the phone. But… “no Windows Phone 8 device is connected”. Oh. That’s weird. It’s plugged in… I mean, it must be because–YES! Of course!! Windows 8 won’t recognize my Windows Phone 8 via USB! Like, duh! Why would it? (Circus music.)
    • Hey, Google? …Yeah, OK. Right! Why didn’t I think of this myself? I had to install ASUS AI Charger and restart the machine. Now it recognizes the phone. That made total and complete sense, and I’m cool with it. (Are you kidding me?? moments++.)
  • Alright. Almost there, right? Gotta be almost there. So I retry the deployment, but now: Deployment failed. Device is “developer locked”. Developer locked?? What is this, Apple now? ’cause that’s just what I need.
    • Fortunately, aside from being an annoying speed bump, this part wasn’t hard: I just registered the phone for development pretty quickly and kept going.
  • Alright. Start the deployment again… Compiling…processing…packaging…making the Visual Studio project (if you must)… This could be it. This could do it! I THINK WE’RE ABOUT TO Exception: Deployment failed because Windows Phone 8 device is pin locked. Dammit.
    • All this meant was that the screen had timed out and turned off. I didn’t think that would happen since the phone was plugged into the USB port (and my Droid 4’s screen will stay on if it’s charging), but apparently not. Oh well. Just gotta tap the screen every so often to keep it awake…
  • So now that I’ve run into literally every possible snag in this process, nothing can stop me now! Redeploy…and… Are you kidding me?? Oh, it deployed alright. But. Well. The thing was…performance. I was getting about 4 FPS. Granted, this was development mode (and not release), but… Yeah. Uh… So… What? Development mode is not a problem for Android or iOS; what’s going on here?
  • So, of course, I look to the profiler for help. Ran the game through Unity and selected the profiler from the menu, and… Blank. Nothing. No data. Then I tried opening the Visual Studio project and deploying from there–and it took some time making a little performance report (“oh good”, I thought, “this should be helpful”), only to find out that the report only had DLL names (like the overall Unity player) and not actual function calls. I guess whatever Unity makes and sends to VS isn’t symbolicated. That’s cool… Looks like I gotta get the Unity profiler working then. But how…?
    • The solution was to enable the phone’s WI-FI. Are you kidding me?? Why can’t you send the data through the USB?? No; apparently, something about this has to be done wirelessly. I don’t know whose bright idea that was…
    • So, after looking at some profiling data, it looked like the function “WaitForTargetFPS” was taking up most of the frame time. The folks on UnityAnswers said that this function is called to slow down the game so that it hits the target frame rate. Well, my frame rate certainly isn’t supposed to be 4. In fact, I say “Application.targetFrameRate = 60” up in the init code, so… What?
      • Then I tried running in release mode, and… Bam. Smooth. So, is development mode on Windows Phone 8 inherently broken or something? Is it just my game? I wasn’t about to stick around to find out.
  • I figured now would be a good time to create an entry for Pinball Sundae on the Windows Phone 8 developer site. It’s $50 to become a Windows 8 developer. Sure. Fine. Whatever. (What about my yearly Microsoft XNA subscription? I only kept it around because I thought it would carry over to this. Guess not.) So I filled out all of the game data, payment info, screenshots, etc. Getting ready to actually upload the binary now!
  • At this point, I couldn’t help but notice that the icon for Pinball Sundae as seen on the phone still looked like the generic Unity cube. Turns out, one does not simply set a Windows Phone 8 app icon like one does for Android or iOS. No, fuck that. Here, you get to make a series of “flip cycle tiles” for your app. (WTF? Oh, hey, circus music.) Fortunately, the auto-generated VS project had some template ones available that I just replaced with Pinball Sundae-specific ones. I don’t know when/how/why most of those images are used, but, at this point, I couldn’t bring myself to care. (Also, why could I not do this within Unity?)
  • Now, to certify the binary, I had to go through the store test kit. This is series of tests (automated and manual QA) that the app must pass to be submitted. Most of these weren’t so bad (make sure the game doesn’t crash if you get a text message while playing, etc.), though I did have to go back and add a contact email address inside the game itself. I also noticed that Unity’s default settings for some of the textures on WP8 were a little low; I went back to specified higher-quality settings on some of them.
  • OK. Now. Should be all good. Game runs, it’s stable, passed the tests… Now I just need to make it into an “appxupload” file and upload it to the dev site. Now, how do I do this?
    • Apparently I have to locate a “Store” menu is VS. OK, let’s see, um… Hm. It’s not there. No “Store” menu. And it’s not a menu option somewhere else.
    • So I searched and searched and searched for what to do, but to no avail. Are you kidding me?? I reinstalled VS 2012. I reinstalled the WP8 SDK. Still no “Store” menu, and no way to create the appxupload file I needed. So, with that…

Well, that’s it. After all the frustration, lost time, $250, and just plain bullshit, I walk away with nothing. I suppose I could (if I really nag and whine) find a way to keep going, but… For one, I wanted this project out last week, in time for the Unity Windows Phone 8 contest. And, also… I just don’t care that much about WP8. Like, no one has it, and it’s not worth the trouble to bring apps over, at least not now. I thought it was gonna be, like, “oh, hey, WP8! I’m sure Microsoft and Unity worked together smartly and made a great game pipeline as was the case with Android and iOS” but, the fact is, that’s entirely not the case.

Oh well. At least I got my game onto my dad’s phone (it was his phone I was using to test with). Of course, then he goes and says he’d rather play it on the computer anyway.

LOL!

U Betcha

Remember about a month and a half ago when I was wondering what my next project would be? Well, I took all that momentum and sorta just…took it easy actually. I mean, I hung out, lead a normal social life, chilled out, relaxed, maxed all cool… You know how it is.

But that’s over now. Back to work. Because, as of today, I’m an approved Wii U developer for Nintendo! And now, all of those ideas I didn’t manage to cram into Pinball Sundae for mobile (you know, all those ideas I never actually shared on here but do exist–honest) will finally be realized! I mean, if you think about it, the Wii U is a pretty great platform for a game like Pinball Sundae: the tilting and touch features are supported, I can do local multiplayer, and I even have buttons on the thing (should I even want to use them)! And thank God Unity can build to Wii U too–it’s like they’re calling me.

So, yes. This is good. Good things are going to happen. Now excuse me while I go into hiding for the next eight months.

There’s An App For This

Coming in slightly ahead of schedule, Pinball Sundae is finally available on iOS! Chiggity-check it out here.

Yes. Now I can officially say I made an iPhone app! And, judging by the Android sales numbers so far, I’d do well to simply take my bragging rights and go back to my day job. Although I get immense personal satisfaction from the completion of a project (especially one that’s been over a year in the works), it mostly ends there. However, this should be a pretty kick-ass resume piece (I should go update that).

So now I get my nights back! For now, that is. From here, one of two things–well, hm… OK, one of three things will happen: Wait. No; four. One of four things will happen: 1) I begin work on my long-awaited RPG. I think I finally have the means to do it. 2) I go to Nintendo and try to become a registered Wii U developer (Pinball Sundae on a Wii U? U betcha!). 3) I start a new mobile game with a couple of friends of mine who have been talking about wanting to make something (though I’ve been down that road before, so some degree of commitment will be necessary). 4) I do 1 and 3 and the same time.

So that’s it! I also want to thank Unity3D for existing and making it so that I don’t have to write any Objective-C to make an iOS app. (Although, I still have to use XCode… But let me try not to complain too much.) Currently, though, Unity doesn’t support Windows Phone or Blackberry–once it does (I hear they’re in the works), I’ll look into grabbing those licenses. (Here’s to hoping I make enough profit to afford the additional licenses!)

So, if you haven’t yet, go get Pinball Sundae and enjoy!

To Android and Beyond!

Hello! Well, guess what’s finally done? “Breakout Snacks!” No! There’s no Breakout Snacks! There never was any Breakout Snacks! Breakout Snacks is just a myth!

Actually, there was a “Breakout Snacks” but, alas; no more. That’s because I renamed it to “Pinball Sundae”! Yeah, Atari wouldn’t take too kindly to me using the name of their hit arcade game in my own game’s title, so I did a little brainstorming and landed on something better!

ANYWAY! The game is out! For Android devices 4.0 and up, that is. I found that older devices either wouldn’t have enough RAM (the game isn’t a hog anyway) or just wouldn’t install it properly (like on my brother’s phone), so I didn’t want to risk someone plopping down the $0.99 and then having a lousy time. In fact, it should be just the opposite; there’s quite a lot of game there for just a buck! It’s a very good deal!

What’s ironic, though, is that while my main goal for this project was to make a mobile game for myself first and foremost–one that I wouldn’t find annoying like just about every other mobile game–and grab some experience along the way, I can’t actually buy the game myself. Thanks, Obama. (I mean Google. Sorry; reflex.) Yeah; Google won’t let me buy my own game from the store. Now, I could just plop it onto my phone from Unity, but how funny is that, that I can’t actually officially get the game myself…

I should probably link you to the actual thing though. It’s here. You could, of course, also just search “Pinball Sundae” on the Google Play app on your device too. I’ll be talking more about this in the coming days of course, but for now, I’m about to do an up-to-date iOS build (I’m writing this from my Mac right now). Enjoy!!

Are We There Yet?

Hey! It’s been 3 months. Yeah. I know.

Look… I mean, I guess I’m just gonna say what we’re all thinking… I’m not really gonna keep this blog going much anymore. (It’s not like I have lately!) It’s true that I have been hard at work on Breakout Snacks, and that after I’m done, I would theoretically have more time to blog about random crap. But… I don’t know; this method of expression doesn’t really suit me anymore.

Will I ever make another blog post after this one? Yeah, probably. But only for milestones or important things–which is sort of what today is. Today is “Almost Done With Breakout Snacks Day”! I’ve made a separate page of the site revealing a bunch of info about the game, including screenshots and a video. So, see? I’ve been up to stuff!

Now, I’ll probably go away for a while and work on it some more…and then I’ll come back here victorious after I’ve launched! So go check that page out and start anticipating! And check out my Twitter (@mikebelotti) which I find myself updating more frequently now…

Staying the Course

Is today the day I spill it all about my next game?

No!

But I don’t blame you for wondering. It’s weird that I’m this paranoid, but, it is a sorta unique idea, and it is theoretically possible for someone to see it, steal it, and have a team of developers copy it and release it before I do. OR, they release it right about (or slightly after) I do and then do a much better job at marketing it and steal all my thunder. (Note to self: get a marketer…)

Now, do I think I have God’s game gift to man here? No, no. To women? No. Do I think I have something kinda quirky and fun and sort of experimental? No. I mean, yes. Yes; I do. And once I even post a screenshot, the surprise is over!

So just hang back… I’m still on target for an end-of-April release onto Android and iOS (although if the QA phase takes me past that, so be it!), and it’s lookin’ cool. And, actually, there’s probably no harm in telling you that the tentative title is “Breakout Snacks.” So, there; do with that what you will.

Gaining Momentum

Things are happening. I still don’t have anything tangible to post or show, but things are happening. I haven’t been slacking this whole month…

At work, things are even busier. This is OK with me though; I’ve recently been recognized as a senior programmer (I’ve been there over four years now!), and my effort actually is paying off. Whereas last year I was flirting with the idea of pursuing leads with other companies (Zynga, EA, Arena Net, among others), I think I’d rather stay put for the time being. Things are…looking up.

And on the side project front, I’ve set a deadline for the end of April to have the game out on the Google Play store (and, ideally, the iOS App Store, but I know that Apple takes more time reviewing games beforehand). I’m feeling good about this; I’m already at the point where I’m just polishing the game; I have a couple more features to add, but the gameplay is basically solid, save for some minor tweaks and balancing.

I would love to reveal some details about what the game actually is, but, I’m also pretty paranoid. I mean, I’ve shown it to friends, family, coworkers (even my boss), and others (in person), and I’ve gotten some feedback. But I’m not at the point where I’m going to post public details on the Internet just yet… But, like I said, I’m pretty pleased with the progress I’ve made, and I think I’m on schedule to finish it up soon!

Pain

I had my cat euthanized yesterday. Let me tell you, that does not make for a fun Saturday to say the least.

She was pretty sick. She had some weird aggressive form of cancer in her face–under her eye, near her jaw. We weren’t expecting to have her for too much longer, but that morning she woke up bleeding out of her eye. I think a piece of it fell out; something did. Basically, she was in bad shape; probably in pain, but I don’t know. She was a trooper about that sort of stuff.

I took her in to get checked out. I didn’t think there was really anything that could be done, but I also didn’t go there with the expectation of putting her down. But after a quick look over, the vet strongly suggested that that’s what we should do. Dad agreed. I was conflicted, and I still am.

I was there for the whole thing. Now, I consider myself pretty emotionally resilient, but that’s not something I can witness again. It’s too much. I swear the cat knew what was going on. We had to pry her from her carrier; she was hissing and growling, jumping away from everyone. She saw me, and I tried to calm her down, but what am I gonna do? Tell her everything’s gonna be OK?

The vet’s assistant held the cat by the back of her neck, and that seemed to calm her a little. I guess it would; that’s what the mother cat does with her kittens. She was still growling, and all the time I’m thinking that this isn’t what she wants after all; she wants to live, even if she’s in pain.

Then they began to sedate her. Her growling lessened, and she started to get sleepy. It was so unnatural-looking; whenever she’s sleepy, she usually curls up into a ball for a nap. But this time, it just looked like her head got too heavy for her to hold up. And right before she faded, she put her paw on my hand. I don’t know. This was either a “thank you” or a “fuck you”. Whichever it was, Scarlet, you gotta believe me; I was just trying to take care of you in the best way I knew how…

I Can’t Even Fill Out One Title

Remember the good ol’ days when my posts had not only a title, but a sub-title? How did I do it? I don’t even know what to start with now as it is.

Is it because so little is going on? Eh, I wouldn’t exactly say that… Hurricane Sandy tore through the area last week, leaving me without power for 4 days. No physical damage though; no floods or anything too bad other than that. But when you’re a video game developer…any amount of time without power is too much! I’m not going to take it for granted again.

Does this mean I’ve been doing more work on side projects? Well, actually, yes–exactly that. Anything to show? Well…my mobile game isn’t done yet, so…no. I mean, if you happen to see me in person, I can show it to you on my phone! But…I’m not going to share it with the Internet just yet. It’s mostly all programmed though; all that’s left is polish–nice art, sound, and frilly little things like particle effects. And, well, making the rest of the levels… And I wanna get this thing off to Android and iOS, preferably at the same time–it’s going to be sort of a challenge, especially with the iOS part, since Apple development sucks ass…but Unity does what it can to soften the blow.

Nothing else really new unfortunately; everything else is just politics as usual. I’m going to try to wrap up my mobile game in…maybe…two or three months? Something like that. I better start thinking up a name…

Well, This is Embarrasing

It’s not like I plan to go months without posting. It’s more like… Months seems to go by without me posting. See? It’s not my fault; it’s time’s fault. Doesn’t that sound better?

And it’s not like nothing has happened. Have I come out with any new games or songs? Well…no. So, those of you who were hoping for that stuff, you can stop reading now. Or, you can continue reading as I attempt to explain myself.

Anyway, um… Let’s see…where to start… Well, first off, I got an apartment with Theo. Cool! So does this mean you guys are gonna pump out tons of new songs? You would think so, right? We’re both horrible slackers, truth be told, so that’s not exactly happening right now. And, us and a few other guys are working on our group project mobile app, and that’s…crawling along. Honestly, six guys on a small platformer game like what we’re working on is just overkill–if we were able to work on it full-time. After work, everyone’s tired and/or busy, and Guild Wars 2 and Borderlands 2 are certainly not helping things…

And then my personal mobile project…is also crawling along. I don’t know. Unity is awesome to work with… In fact, I think that because Unity is so easy to prototype with, what happens is, all these little ideas that I feel like trying out actually do get built…only for me to realize that they stink, and then I don’t follow through. But this particular project–a combination of breakout and pinball–should be solid. I just need to get off my freaking ass and do it. No more excuses!

Other distractions include health-related stuff like back and neck muscle soreness, slowly-deteriorating eyesight (I don’t have glasses yet, but I fear it’s only a matter of time…), and a persistent case of cellulitis (which, after two rounds of antibiotics, should be gone by now… I mean, it looks like it, but…asdwgaqyisfwq). I know, TMI maybe, but…this is part of my alibi!

So, y’know… I’m just… Eh. I don’t know. I don’t know why motivation is so difficult to muster. Even though work has been more interesting recently, I think that the only way I can truly be happy is if I’m self-employed and/or otherwise my own boss. And I know that the only way to get there is to gain experience from these side projects. So why am I sucking so badly lately? Maybe admitting that is the first step back to awesomeness.