Phil Hassey - game dev blog
Phil Hassey as Rambo
".. I've been there,
I know what it's like,
and I'll do it again if I have to."

Part-time iOS game maintenance job for Galcon

November 17th, 2010

jobadI’m looking for someone who wants to do maintenance on my Galcon games for the iPhone. There are a ton of great features that really need to be added to the game, but I just don’t have time to do them all myself!

Galcon has large fanatical on-line multiplayer base who would absolutely love you if you were the one to help bring the features to the game that they are begging for!

While working together we would meet at least once a week to make plans and we would work towards being on a rather frequent app update schedule. The skills I’m looking for are:

– Proficient in C / C++ code and OpenGL.
– Strong experience with ObjectiveC / iOS.
– Knowing how to work with In App Purchases, Game Center, and iOS 4.x features a plus.
– You must own a Mac.
– You must own an iPhone / iPod touch. An iPad is a plus.
– Roughly 10-20 hours/week to start, this is flexible.
– Python or PHP experience is also a plus.
– Location: Anywhere! We’ll stay in contact virtually.

Contact me if you are interested, and tell me why you’re the best for the job! Payment would be hourly based on experience. This job has the potential to grow into a full-time position.

Thanks!
-Phil

Stealth Target: Day 36 – More iPad support

November 17th, 2010

So, Nan did a test run of the iPad version of Stealth Target today. There’s always a handful of platform issues to deal with in porting!

Like, on the iPad I don’t need a Quit button!

Or, I need to use some ObjectiveC code to open a web page. Thanks to OS 4.x I won’t need to figure out how to embed web browsing in the game due to multi-tasking support. I haven’t added that to the game yet, but I’ll do that before release. (Which reminds me to add that to my tracker so I don’t forget!)

As always, I need to modify the interface a bit more for touch. The mouse and touch interfaces are really quite different, so I always want to make the experience work “the best” given the interface being used.

A new challenge for me is adding pinch to grow/zoom support to the game. In the desktop version the mouse-wheel controls this. To implement this for a touch interface, I need to track where the center of all touch events is, so when a motion happens I can see if that motion is going towards or away from the center. This is a bit tricky, since finding where the center of a multi-touch event keeps changing as motion keeps happening.

I found that technique didn’t work. What did work was passing along with the event a distance value between that touch and each other touch. This way, no matter how many touches are down, a reasonable zoom value will be passed.

-Phil

Stealth Target: The pre-order/beta explained (and now 50% off!)

November 16th, 2010

Many people were confused by my announcement 10 days ago. So I’m going to try and explain it a bit better!

Stealth Target is not a finished game. If you look at the screenshots and video I’ve posted, almost none of the graphics you see are final, they are all free graphics or stuff I hobbled together quickly so as to get the game basically working. What you’re looking at is not what I will be selling to the general public when the game is finished.

beta2ml

I am a solo indie game developer. That means there’s just me doing the bulk of this project. My wife Nan helps with the testing and some of the ideas. And I contract out the art and music since I’m only so-so at those things myself. I don’t have a team of 50 Q&A guys in my basement who test my game for me non-stop. That’s what the beta is for, it’s a way for me to get feedback from the users who are interested in helping me out!

I did, however, make a notable mistake in my beta release! I priced it at $9.99 (my planned full-price.) This was a goof-up on my part, since I really want to thank people who are taking a chance and trying out my games before they are done. I’ve changed this to $4.99 so people who pre-order get the special price. (The few brave users who went and paid the full $9.99 for the game last week I gave full refunds to, so they got the game for free!) And, yes, whoever buys the game at this pre-order price will receive the full desktop game when it is finished. (I’m also planning on releasing it for the iPad. A pre-order will not count towards that.)

Anyway, I want to give a huge thanks to the people who have played the game already and given me feedback. I’ve just posted a new build of the game with a bunch of new features and fixes based on their feedback. You can check my blog to see what all changes I’ve made and how the development has proceeded.

To the people who wondered “Where is the demo??!” Don’t worry, I haven’t built it yet, but I think I’ll be making one available sometime soon. I’ll send out a mailing when I do so don’t feel like you have to rush and buy the game right now if you’d rather try the demo first :)

So, all that said, if you’re feeling brave, go ahead and pre-order Stealth Target for 50% off the full-price, today! For the less brave, feel free to wait it out until I have a demo ready.

Thanks!
-Phil

Stealth Target: Day 34 – More bugs resolved!

November 15th, 2010

I fixed 14 bugs today. Here’s my “resolved items” list. It includes the 3 things I did last week (resolution support, WASD support.)

Google ChromeScreenSnapz002

I’m quite happy with all the feedback I got from the beta-users. Tomorrow I hope to post a build.

-Phil

Update: as an added note – the primary features added are keyboard controls, full screen / resolution options, and better mouse controls.

Stealth Target: Day 33 – Beta feedback

November 11th, 2010

I’ve gotten a ton of great feedback from users in the paid beta. Today I re-read all the emails and forum posts and entered all the unfinished items into my bug tracker. Then I spent the day getting through a few of them:

– Added WASD key controls for the character
– Added ability to change resolution
– Added ability to switch into fullscreen

DynamiteScreenSnapz062

I’ve got 10 other items in my tracker, and I’ll see how many I can get through. I’m hoping to post a new build on Saturday and send out another mailing.

Google ChromeScreenSnapz001

-Phil

Stealth Target: Day 32 – iPad interface

November 10th, 2010

So .. I spent today making the game feel good on the iPad. The key items I had to get working work some “smart navigation” so that mis-touches would send the player towards an open spot and not just onto a wall. This makes navigating much easier as most locations you would want to walk to are along walls anyways. This also improves the desktop interface with the same features.

I also added the ability to pan around the level by using two fingers like in many other apps. This works well. I haven’t decided if / how I will support zoom in and zoom out.

I’ve gotten a ton of emails from artists and musicians, but it’s all pretty hard to sort through! I haven’t done much contracting out, so it takes me a while to figure out what I’m doing. Hopefully it’ll all start to make sense soon.

The response from the beta sale has been excellent. I’ve gotten a number of people giving me great feedback. Over the next few days I’m going to use all that feedback to update a build for this weekend. I may also try and get it working as a demo version so that I can expand the beta to more people.

Getting the editor working took a few UI tweaks as well as handling of the keyboard when it pops up. What I’ve noticed today is that my game has 4 different coordinate systems that all have to “get along”:

– The OpenGL physical coordinates
– The iOS event coordinates
– My user interface coordinates
– The game world coordinates

And getting all those systems to work nicely together when say, the devices is reoriented, or the keyboard pops up is a bit of tricky business!

-Phil

Stealth Target: Day 31 – iPad cleanup

November 9th, 2010

It took a bit of messing with provisioning profiles, but I got it to deploy to the iPad, eventually.

I also add to add setup for the depth buffer into ES1Renderer.mm .. This is not included for whatever reason.

Then I got to do some iPad specific tweaks – since the game was first for the desktop, some of the code is specific to the mouse interface. I’ve wrapped some #ifdefs around those things to check for BUILD_DESKTOP or BUILD_TOUCH so I can have some code that checks for certain mouse buttons and some code that doesn’t.

There’s a pretty good list of things I need to do however:

– Get music and sound effects working

– Get the mini-level preview screens working better.

– Do some smarter backface culling

– Avoid overdraw as much as possible

– Smarter touch interface

But in general, the game seems to work alright 🙂

So by changing my rendering to use GL_ONE (additive) blending, I can easily see where I have overdraw happening in my scene.

DynamiteScreenSnapz061

That shot has GL based backface culling enabled, but I’m going to disable it so I can do my culling on the software size so I don’t use so much memory in my buffers. Not sure if that will give me a performance gain or not, but it’s something to try out.

To get the music working, I converted my .wav file to an .aac file using this command on OS X:

afconvert music1.wav -f adts

That seemed to produce an .aac file.

From investigating speed issues on the rendering, it seems my use of GL_LIGHTs is slowing down things considerably. If I disable all my lights it renders much faster. I may have to investigate some other options here.

Anyway, it’s nice getting this game started on the iPad. I think it’ll come together pretty quickly with another day of tweaks.

-Phil

Thanksgiving Centerpiece – made of cheese doodles

November 8th, 2010

I think we all have a duty to produce a unique centerpiece for Thanksgiving (or your equivalent national eating turkey holiday.)

centerpiece

This was my Thanksgiving centerpiece from last year. Part of it was performance art – the construction of the piece as the turkey was being cooked. It was made from Cheetos cheese doodles and toothpicks.

This year, I’m considering some other options. Possibly even options that might be semi-relevant to this blog. I’d say more, but I don’t want to ruin the surprise.

-Phil

Stealth Target: Day 30 – From 755 down to 0 errors

November 8th, 2010

Wow, it’s been 30 days? That’s a long time! At least, say, compared to 5 minutes. I’ve spent the morning answering emails and trying to round up artists for this game. Again, check out my jobs page if you or anyone you know is interested. I can’t wait to see how the game is going to look with “real” art 🙂

I’m going to try and get this game “running” on the iPad. At least, compiling. I’ve got only a couple hours, so we’ll see what we can do.

– Created iPad project. Moved in all files and game assets and gave it a build just to see a big number. 755 errors! Swell!

– I set up my standard -D defines. Error count down to 348.

– Added in proper loading of the iOS OpenGLES headers. Down to 78.

– Fixed use of SDL_ defines in my code to use my generic defines for various keys. Down to 42.

– #ifdef’d out all SDL stuff based on my USING_SDL define. Down to 19.

– Created a few iOS / ObjC specific functions in a .mm file. Down to 17.

– Changed all GLdouble to GLfloat. Down to 5.

– Included “glues” a GLU for ES implementation. Down to 0!!

Now onto the linker errors. I’m starting with 6. The are all the missing audio functions. I’ll have to get my iOS audio code copied over from Galcon Fusion for this.

Got rid of those, but now I’ve got 18 other linker errors. Trying to work out what Frameworks I need, I guess. Just needed “CoreGraphics” it appears. And I’ve got a build! It’s a dummy build, in that it just shows the default bouncing box that the project includes. I’ve got to connect the iPad app to the actual game now – but having it compile without errors is always a good first step!

To wrap the game I’m creating a new file – gamewrap.cpp. The header will include some very simple functions so the ObjC code does not have to interact with any of the real game objects. (This means I’m going to have a global game variable in gamewrap.cpp. This is something which can add some level of pain for Android ports, but I’ll face that music later.)

… and … I’ve got a visual! It’s oriented wrong, and I don’t have it handling events yet, but hey – it worked! Wow!

iPhone SimulatorScreenSnapz015

Now if I can get it handling events and oriented proper, the game will be “working” at some level on the iPad 🙂 .. Got those working, and the game is almost working – some of the 3D rendering is still a bit off though:

iPhone SimulatorScreenSnapz016

Anyway, I guess that leaves me something to do tomorrow!

-Phil

Stealth Target – Open Beta is HERE!

November 5th, 2010

beta1ml

It’s been a crazy month developing this game! But here it is, in all it’s beta-glory! I’m doing an open beta so that you can get the game early and provide feedback so it can be the best game possible!

Here’s a short gameplay video to give you an idea of how it plays.

Lastly, if you are an artist or musician and you want to work with me to polish this game, let’s talk.

Thanks!
-Phil