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

Archive for August, 2013

Indie Boat 2013

Wednesday, August 28th, 2013

I got back from Indie Boat 2013 a few days ago!

If you want to see pics and videos, check out Dave and Andy’s blogs. If you want to read my account of what went down, read the other two blogs first, and I’ll just fill in my own details.

The trip was an amazing experience. I’ve been to Lake Powell before, so I knew that. Our lake time was great, I had a blast water skiing and sleeping on top of the house boat every night. We saw some cool storms and stars. The food was most excellent. I’ve gotta give a shout out to Colin Northway for his 5 minute GDC talk this past year where he encouraged us to get out and travel a bit more.

This was the first conference I’ve ever organized, and well, it came out way better than I expected. We had about 3 hours of official content per day, and spent the rest of the time talking games too. I led 3 discussions.

Secret Sauce – Where we discussed some of the things we each did to differentiate ourselves. Everyone shared the unique aspects of their business. The trip had a very diverse mix of people from mobile, desktop, web based platforms, so everyone’s approach was a bit different.

Galcon 2 Design – Where I got feedback from everyone on my launch strategy and marketing strategy. I’m still not quite sure how I’m going to do these things, but the crew did encourage me to take the launch of Galcon Legends more seriously than I was taking it.

Indie Survival – Where we discussed surviving the indie life – tips dealing with depression, fitness, workaholism, time management. Working alone and being your own boss is tough, but it is undoubtedly the most awesome job in the world. Key point is to be thankful for what we’ve got.

A few takeaways for me were from these talks:

Personal Story (Andy) – People want to hear more about goats and stuff. I’ll try and do that. I mean, hey, I’ve even got a degree in writing this sort of stuff, maybe it’s time I put it to good use.

Reframing AI (Kim) – Kim got me all fired up about AI. I’ve spent the last 3 days messing with Galcon 2 AI code. It needs some real work to be solid yet, but I’m having fun, although I’m pretty sure I’m using it as a avoidance tactic to put off doing the work I need to do.

Music as more than background (Dave) – It would be fun to make a game where I make / choose the music FIRST and THEN I make the game. (Instead of the other way around!)

Culture (Tim) – Tim defined for us the concept of neotribalism. Which led to some interesting discussion of the various “tribes” in indie culture. All of whom seem to be in a state of constant tribal warfare. Yum? It also got me thinking about my recent departure from some tribes and the significance of that.

Indie Survival (Phil) – Dave suggested doing 45 minute time boxes and then tacking on 10 minutes of banjo practice after each time box. He explained how this helped him clear his mind and get good ideas. I play the fiddle, so I’ve been doing this all week so far. I really like it.

All-in-all, the conference went really well. The small group was the perfect size for doing these small group discussions and we really had fun. I got to know some folks better and meet some new people too! I’m so glad this trip came together!

The evening when I got home, a bunch of cows wandered up our driveway from the ranch next door. This is usually something Nan takes care of, cause she’s in charge of everything animal around here, but she was busy. So I got the lunge whip out and began to march the dozen or so cows and bull down the driveway.

Cows are kind of huge, so the whole way down our 1/8th mile driveway I kept a close eye on them. Last thing I wanted was to be stampeded by a herd of disgruntled bovines. I also had to avoid the real-time cow-pie production remains as I walked behind them.

At the bottom there where a few ranchers who escorted them up the road back to their pasture. On my way back home I fixed part of our electric fence where one of the cows had bumped through.

I clearly need a cowboy hat, and maybe a cattle prod, to really live the rural indie lifestyle.

-Phil

BIG NEWS (again!) – Galcon 2 – Galcon Legends and Party Report

Wednesday, August 14th, 2013

I’m thrilled to announce the return of the Instant Action Galcon campaign as Galcon Legends!

This is going to be sold as a paid game separate from Galcon 2. It will be sold on iPad, Windows/Mac/Linux, probably Android too. But backers of Galcon 2 will get it as a bonus game because it was built as a direct result of the Kickstarter and your pledges. So yes, that means TWO Galcon games are coming now! The “Galcon 2″ F2P MMO and “Galcon Legends”!!

How it all happened: I never planned on having modding in Galcon 2, but the backers asked for it. As a result, a few modders began working on Galcon 2 mods. I got in touch with Evan “esparano” Sparano, to ask if he wanted to work with me on more Galcon 2 modding projects. So Evan spent the summer using the original artwork and watching YouTube videos of the campaign to re-create it using the Galcon 2 engine!

Backers can try out the Galcon Legends beta, by following these steps:

1. Download the latest Galcon 2 for Windows/Mac/Linux from here.
2. Download the Galcon Legends beta from here.
3. Unzip GalconLegends.zip to your computer
4. In Galcon 2, under Mods, enter “path/to/folder/GalconLegends/GalconLegends.lua”
5. Press Play and have fun!!
6. Go to the Galcon 2 forums and leave some feedback!


And now in other news …

The Galcon 2 Party was incredibly fun! Nan and I were there as well as Tim (composer for the previous Galcon games.) Two other brave players made the trek out to Colorado to join in the festivities! Here’s some of the highlights of the day:

Tim and I set up the breakfast table, complete with the day’s program and name plates. It was most elegant.

After breakfast it was time to meet the Galcon Goats! Everyone pet Cuzco and got to meet Lilly and Nibbles (who were in some of our Kickstarter videos.) Lilly and Nibbles also had kids who were quite friendly with crowd.

After that we hit up the natural water slides near San Isabel. The hike was great and the water was perfect!

Following lunch we took some time to tour Bishop’s Castle. It is incredible.

When we got back to the Galcon HQ, we took a break for a while. But before dinner we still packed in a couple intense games of croquet. It’s a lot like Galcon. There is only one winner.

Nan made an awesome Galcon cake for the party. It was delicious chocolate!

To wrap up the evening, I launched beta17 and we played until we dropped! It was a great party!

One player stayed over night and got in a personal ride on the Galconicorn the next morning. Good times!

Thanks again to everyone who backed Galcon 2!

-Phil

BIG NEWS: Galcon 2 – beta17 – Music, Android, Store … and MORE!

Saturday, August 10th, 2013

Ahoy there! We’re right in the middle of the Galcon 2 Party and wanted to invite you all to join us! Here’s beta17 for Android, Windows, Mac, and Linux. (iOS TestFlight email will come shortly.) We’re going to be battling it out on the servers for a few hours to celebrate Galcon 2 and check out the newest features!

I want to introduce Kim Derome, who has been working hard on creating the soundtrack for Galcon 2 over the past few months. I’m quite excited to be able to add in 5 original tracks by Kim. They are excellent and I hope you enjoy them!

I was able to get Galcon 2 working on Android, thanks to a helpful internet person! If you have an Android device, please check it out.

I’ve given the Galcon 2 store an overhaul, so now it’s got a more modern grid format. I’ve also added planet styles and colors, both of which I think really add a ton of fun to the game. In addition, I’ve overhauled the interface for betting so it’s just a few taps to set up. Lots of annoying bugs were also fixed.

I’ve also given everyone an additional 10k coins to play with. (Note: we’re still in beta here, so at some point all coins earned / spent / etc will be reset. These are not the coins you paid for.)

Lastly, I’d like to thank Evan Sparano (esparano) for creating documentation for the modding API! This is a huge help, so now when I work on Galcon, I’ll know what everything means. Also, he’s been working on a super secret project which will be fully revealed very soon.

Thanks everyone! Developing this game “in beta” is a most excellent experience!
-Phil

Getting ENet to work with Marmalade

Thursday, August 8th, 2013

Through a bit of Googling and whatnot, I got in touch with Joe Delgado who was able to provide a patch to fix ENet to work with Marmalade. These are modifications to unix.c. When I am making a Marmalade build of my games, I always have PLATFORM_MARMALADE defined. So you can replace that with whatever you do.

After the #ifdef __APPLE__ segment, add this to set up the correct defines, etc.

#ifdef PLATFORM_MARMALADE
#define SOMAXCONN 128
#undef HAS_POLL
#undef HAS_MSGHDR_FLAGS
#undef HAS_FCNTL
#include <sys/select.h>
#include <sys/uio.h>
#define HAS_SOCKLEN_T
#endif

In enet_socket_send, it turns out the Marmalade sendmsg is broken. So I replace:

    msgHdr.msg_iov = (struct iovec *) buffers;
    msgHdr.msg_iovlen = bufferCount;
    sentLength = sendmsg (socket, & msgHdr, MSG_NOSIGNAL);

With

#ifdef PLATFORM_MARMALADE
    // concatenates buffers together

    ENetBuffer * newBuffers;
    char* d;
    int i, totalSize;

    newBuffers = (ENetBuffer*)malloc(sizeof(ENetBuffer));
    totalSize = 0;
    for (i=0;i<bufferCount;i++) {
        totalSize += (buffers+i)->dataLength;
    }

    newBuffers->data = malloc(totalSize);
    newBuffers->dataLength = totalSize;
    d = (char*)newBuffers->data;
    for (i=0;i<bufferCount;i++) {
        memcpy(d, (buffers+i)->data, (buffers+i)->dataLength);
        d += (buffers+i)->dataLength;
    }

    msgHdr.msg_iov = (struct iovec *) newBuffers;
    msgHdr.msg_iovlen = totalSize;

    sentLength = sendmsg (socket, & msgHdr, MSG_NOSIGNAL);

    free(newBuffers->data);
    free(newBuffers);

#else

    msgHdr.msg_iov = (struct iovec *) buffers;
    msgHdr.msg_iovlen = bufferCount;
    sentLength = sendmsg (socket, & msgHdr, MSG_NOSIGNAL);

#endif

And that seems to get ENet working 100% with Marmalade. I applied this patch to ENet 1.3.6 … The original patch was written for ENet 1.3.3, and I suspect it would work for the latest version of ENet. I built this with Marmalade 6.3.2. I’ve passed on a request to the Marmalade team to fix sendmsg so that the larger chunk of the code would no longer be necessary.

-Phil