Phil Hassey - game dev blog
Phil Hassey as Snidely Whiplash
"You can't buy awesomeness.
You're born that way."

Archive for November, 2013

Galcon 2 – beta23 – All rewards ready to ship! Many interface updates.

Friday, November 22nd, 2013

Hey, beta23 is available to backers for Windows, Mac, Linux, and Android. iOS builds coming via TestFlight shortly.

I’m VERY excited to announce that we’ve FINALLY gotten ALL the stuff in to begin shipping for all the $100+ tiers! I’ll be sending out surveys via Kickstarter shortly to get your current shipping information so we can get these to you ASAP! Here’s a pic of the mess in our house right now!

And a closeup of the boxes! I can’t for you to see these in person!

I’ve done a HUGE overhaul of how chat works, so it should be much slicker on iOS / Android. The interface now lets you hide chat completely, which is especially useful for phones. I’ve worked on the keyboard appear / disappear stuff, so it should be a better experience on mobile devices. The changes should also make it work better on the desktop too – less interference with box selection. I’ve also overhauled how number keys are handled so that percentage changes are registered more readily. I hope this fixes many of the things people have complained about with the chat system.

I’ve also done a major cleanup on the game settings / options. This resulted in a ton of changes to the user interface code, which I think makes the game work much more consistently given the various options. It’s pretty hard to make the game work when there are some 24 different combinations of how players might select the options to work together.

I’ve also done a fair amount of performance work on the game, so it should actually run more smoothly, especially on mobile devices. I’m now downscaling for phones so that much less memory is used and I made a few other tweaks to increase performance. I’ve also re-worked how the timer tracks frame changes in the game, so there should be less of a stuttering feel when a frame is skipped or delayed.

On the miscellaneous department, I’ve also done some heavy re-working of the touch detection code, so fast swipes should be detected more accurately on mobile devices as well as on the desktop. I’ve also cleaned up the audio engine, so there are now cross-fades between tracks and smooth volume adjustments. I’ve also done a small mountain of fixes to the servers. The lobby should be much less buggy than the last update.

For everyone curious about the progress of Galcon Legends, the game is nearly 100% complete. I was hoping to release it before the holiday season, but I ran out of time. So I’m going to have to put the release off until after the holidays. I did a ton of work on polishing little details in this game, which resulted in many of the improvements you’re seeing listed for Galcon 2 above.

I’ll be hanging out on the servers for a while – so let’s play for a bit!

Thanks!
-Phil

Indie Game Dev: Outsourcing Fitness!

Thursday, November 21st, 2013

Earlier this year I realized I was a little bit overweight. Here’s a pic from 2002 when I was at the high end of overweight. I never want to look like this again:

So with that in mind, I always am working to fend off the weight gain. A year and some ago, I put myself on a bit of a diet / hiking regime. This worked pretty well until I got really busy with work again and I gained back 10 lbs in a few months. Seeing how I was about to dive into a big project and I was already overweight, I knew I had to do something.

I decided to outsource “thinking about fitness” to BeachBody. I realized one of the problems was, with my focus so directed on my work, I didn’t have any mental strength left to actually make myself get in shape. BeachBody has been doing the home workout video thing for ages, and I have a few friends who have used their products before, so that played a role in my deciding to get into it.

Another big thing was they had just come out with a new series called “Focus T25” which really appealed to me. I had checked out a few of their workouts before, and they often had workouts that varied between 15 minutes and over an hour, so you never knew how much time it was going to take every day. Not cool. T25 is ALWAYS 25 minutes.

BeachBody is really smart with how it gets you to get in shape. So let me break down a few of the things it does, gamification-wise.

– They encourage you to be in an group with a few other people. This helps add a bit of social pressure to the experience and makes you feel less alone. Because, you are alone when you do workouts in your living room. Encouragement is done via their website, and sales. You actually get an extra free DVD if you buy the workout through a “coach” (reseller.) The coach is supposed to get you into a group and encourage you. This worked pretty well. It happened all on Facebook, so that makes sense.

– They include a chart for you to check off daily if you’ve done your workout. This is nice, very “daily challenge oriented.”

– They include a diet plan, but basically they say “1600 cal per day” … I ended up just working out my own meal plan, because most of theirs was too complicated. But the inclusion of the meal plan definitely drives home the importance of keeping with some sort of diet if you want results.

– The characters they chose for the videos (Shaun T, and 4 others) seem to be good picks for bringing the pressure right into your living room. I have a projector set up, so when I do my workouts it’s pretty much like being in a gym with them.

– Every Saturday they have you record your weight. This was great, because it avoids the day-to-day roller coaster of weight fluctuation and gets you looking at the long-term progress. So you don’t get discouraged by any single-day set backs.

– The final challenge is getting through the 10 week program and submitting before and after pics and before and after stats. You get a T-shirt if you do this. Definitely achievement unlocked type stuff here.

So my results were this:

– It took me about 16 weeks to get through the program, I had lots of travel and things going on, so I wasn’t able to just power through it in 10 weeks.

– I dropped 14 lbs over the course of the program.

– I found the whole thing worked well, I just had to track my calorie intake, do my workouts, and I made sure to go outside and hike as often as possible. I probably averaged over 10 miles a week.

– I am no longer overweight.

I’ve been crazy busy the past 5 months but having outsourced the thinking part of getting in shape really worked for me. I’m currently working through the program again to shave off a few more pounds. Here’s the way I look at it. I watch probably 2.5 hours of movie/TV every night. So ~30 minutes a day for 5 days a week is like 2.5 hours. So doing this routine is equal time-wise to ONE night of mindless entertainment. Hardly a heavy price to pay for fitness.

While in some ways, I outsourced my fitness planning to BeachBody, I also learned the key lesson they teach: if you want to get in shape you have to do it yourself.

-Phil

Galcon 2 – beta22 – Major iOS / Android overhaul, progress on Kickstarter rewards

Saturday, November 9th, 2013

Ahoy there, beta22 has arrived! Check it out for Windows, Mac, Linux, and Android. (iOS TestFlight on the way …)

This build doesn’t have any gameplay changes. What it does have is a whole new audio system on ALL platforms. It also has a completely new backend for iOS and Android. Both, I hope, will work better than before. Please tell me how it goes in the forums.

BUG NOTICE: It appears you can’t chat unless you press the “Chat button” on desktop computers. Will fix for next beta. Yuck!

On the Kickstarter rewards front, some serious progress is being made. In just the past two weeks we’ve gotten in marble bags, ordered more marbles, ordered the manuals, approved the manual proof, ordered boxes from another company, shipped box sleeves to said company, and gotten in boxes full of shipping materials and more boxes. I think once everything is here and we’re about to do the box stuff, I’ll take a big photo of all this junk in a pile! So – thanks again for waiting on all this – I’m pretty sure you’re gonna like the final product.

Thanks!
-Phil

P.S. I’ll be online for a short time today if you want to play!

SDL2 Tips, Tricks, and Workarounds

Tuesday, November 5th, 2013

It only took me about 3 days to get my framework working with all my targets: Windows, Mac, Linux, iOS and Android. I took an extra day to write my own simple mixer for WAV and OGG audio. And there might have been another day in there for other cleanup / fixes. So maybe 1 week total.

You can get SDL2 here. If you’ve used SDL before, you’ll find that it’s pretty similar, only it seems to work better, and now it’s got slick iOS and Android support.

You will want to follow the SDL 1.2 to 2.0 Migration Guide. And then for Android and iOS, read the README-android.txt and README-ios.txt as included in the source zip. I’m just writing up some tips here to help you along the way. I’m writing this with OpenGLES 1.1 in mind.

SDL2 for Windows, Mac, Linux

– Initializing your Window must be done in the right order. Basically, I call SDL_CreateWindow first, then SDL_GL_CreateContext. If SDL_CreateWindow fails with my preferred settings, I chose more fail-safe settings. After setting the mode I use SDL_GetWindowSize and SDL_GetWindowFlags to see if I got what I wanted. If things aren’t quite right, I use SDL_SetWindowFullscreen and SDL_SetWindowSize to try and request them again. (I always go out of fullscreen, set size, (maybe go into fullscreen), then set size again.

– As of SDL 2.0.1, Mac Retina displays do not work consistently. There is a flag for this “SDL_WINDOW_ALLOW_HIGHDPI” but I’ve found that if you ever change mode, or do anything, things seem to fall apart. If you aren’t messing around much, it might just work well enough for you.

– glu doesn’t seem to work anymore. So I had to switch over to using glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP,GL_TRUE); to generate my mipmaps. I examine the glGetString(GL_VERSION)) to make sure it’s >= 1.4 before doing that. And if I’m not on a new enough GL, I just don’t use mipmaps at all.

– Use stb_image to load your images. (I didn’t do that just for SDL2, but it’s a great tip!)

SDL2 for Android

I can’t believe how smoothly this went. (Recall, 2 months for NDK, 1 week for Marmalade .. this port took 1 DAY!!!)

– Follow README.android for the details.

– in AndroidManfiest.xml in the “activity” tag add android:configChanges=”orientation” , keeps your app from crashing. You may use other orientation tags to keep it in a single orientation, or whatever.

– If you use sockets, be sure to add these permissions “android.permission.INTERNET”

– Use SDL_rwops to read your own data files (which you have placed in the “assets” folder of your Android project.)

– If you want to use SDL2_mixer, you may need to edit SDL2_mixer/Android.mk and disable a few things.

– If you are using single touch, your mouse SDL code might work already, otherwise add support for SDL_FINGER* events (and filter out the touch events from your mouse code if (e.motion.which == SDL_TOUCH_MOUSEID) { break; }

– Be sure to call SDL_SetTextInputRect before SDL_StartTextInput if you are using key input. SDL_SetTextInputRect let’s you specify where on the screen the text is appearing so that SDL2 can shift the screen to keep the virtual keyboard from overlapping it.

– On suspend / resume I had to pause my audio.

SDL2 for iOS

– Follow README.ios for the details.

– SDL_SetTextInputRect doesn’t work. So you’ll need to capture UIKeyboardWillShowNotification and shift your screen to keep the virtual keyboard from overlapping it on your own.

– Unlike in Android, the orientation won’t change between portrait and landscape UNLESS you add SDL_WINDOW_RESIZABLE to your SDL_CreateWindow flags.

– Even though I added in SDL_iPhoneSetAnimationCallback, I got crashes when suspending my app. I also had to use SDL_SetEventFilter to capture SDL_APP_WILLENTERBACKGROUND and SDL_APP_DIDENTERFOREGROUND to set a flag to tell my callback to start / stop doing its thing.

Custom Mixer?

You might be able to use SDL2_mixer on all platforms. I did try it out for Android, and got it working pretty easily. However, I decided to write up my own mixer using SDL2 to stream the output. (This ended up only taking a few hours, and it keeps me from having to have SDL2_mixer as an additional dependency on all platforms.)

I used SDL_LoadWAV to load wav files and stb_vorbis to load and stream ogg files.

Good luck!
-Phil

Wits & Wagers Halloween expansion

Saturday, November 2nd, 2013

Hey,

For Halloween Nan and I (well, mostly Nan, but I did come up with at least a few of the questions) came up with an expansion for the game Wits & Wagers!

You can download the pdf WitsAndWagers-Halloween. Print out page one, flip to back, print out page two. (Double check alignment, the pumpkin question should have the long answer on the back.)

-Phil