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

Archive for the 'dynamite' Category

Stealth Target – Open Beta is HERE!

Friday, 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

Stealth Target: Day 28

Thursday, November 4th, 2010

(Yeah, there was a day I didn’t blog, but I did work .. hence the jump!)

So I spent some real time working on text editing yesterday. Text editing is important in this game because the level designer is such a great part of the game. I really want users who are typing in the intro text and title text of their levels not to feel as though they are suffering. Here’s a shot to show the new features:

DynamiteScreenSnapz060

It took some work to get all those text editing features to work in harmony, but I’m pretty pleased with how it came out. I’ll have to do some adaption when I port to the iPad, as touch text interfaces are somewhat different, but it shouldn’t take too much messing to have it work nicely on the iPad as well.

Tomorrow I’m going to try and launch this beta a bit wider 🙂 Nan and I did a bunch of work on the tutorial levels today, so now the whole game gets nicely explained in those levels. This game is a ton of fun!

-Phil

Dynamite is “STEALTH TARGET” !!

Wednesday, November 3rd, 2010

Hey, so the game is now available for sale in what I call “super-beta-mode” .. I guess it might be pretty polished in some places, but it’s still got a ways to go. I’ll be announcing this more widely in a few days, but for now, STEALTH TARGET is available for $9.99 for OS X only on my website. No demo yet, but I’ll be posting a video pretty soon though!

Here’s some screenies:

DynamiteScreenSnapz057

DynamiteScreenSnapz058

DynamiteScreenSnapz059

This game was created as part of the Ludum Dare October Challenge. Which was a challenge to create a game and bring it to market in 1 month. I started a week early and got here a few days late. But pretty close! I’ll be making a more serious push with the game over the next few weeks as the features and graphics get more polish. So if you want to help out, get in the beta now and start posting your thoughts so I can make this game the best it possibly can be!

Cheers!
-Phil

Dynamite: Day 25 – Doing some polish

Monday, November 1st, 2010

So, today I’ve been adding polish to the game. Here’s my changelog so far:

– test moving lights
– better start position indicator
– pause buttons
– rotate view buttons
– better “build” level picker

Now I’m onto working on creating the “tutorial” levels. There’s going to be 10 of them and they will cover all the basics of the gameplay and controls.

But first I had to update my level building menus so I could delete a ton of junk test levels. Took a while to get this all working right, I ended up having to fix a few bugs in my GUI code. It works nicely now.

DynamiteScreenSnapz055

I hope to have the beta sale started tomorrow. Here’s to hoping!

-Phil

Dynamite: Day 24 – Ratings and Stuff

Thursday, October 28th, 2010

Well, I’m still grinding away at the web integration today.

So far I’ve added in basic user tracking, this will keep track of how many levels a user has created for use in leaderboards. I’m not going to implement leader boards now, since I’m going to be tying into GameCenter and whatnot for those features.

Next up, I’m going to create a table to track each level win, so users can leave feedback (skulls and stars!)

With all that working I’ll be able to get queries going for various categories in the game. Like most popular, and newest, and favorites.

I’ve also added in error handling to the game, so if you have an invalid login, or whatever, it’ll display a message on the screen. It’s amazing how many little things I have to add to get the game all working “just so”.

DynamiteScreenSnapz053

Whew, nothing like a fresh coat of paint to make things look un-awful:

DynamiteScreenSnapz054

Anyway, I’m taking off tomorrow, but I’m going to try and “monetize” this thing on Saturday!

-Phil

Dynamite: Day 23 – Sharing

Wednesday, October 27th, 2010

I’m continuing to work on the sharing menus. A lot of this is “polish” type stuff, so there isn’t much to say. The challenge is figuring out how I want to store the levels and have the game work when an internet connection isn’t available. I want users to be able to play levels they downloaded previously. I eventually decided on just storing all the data in a single sqlite3 database. I erase old data when new data is downloaded. If the connection is broken, then nothing changes. So it should be pretty transparent to the user.

DynamiteScreenSnapz052

You can see in the level selector the “rating” and the “difficulty” indicators. I now have to add support to the game for grading levels once you beat them. I think I’ll do that tomorrow, and then I’ll try and set up a way to buy the beta!

-Phil

Dynamite: Day 22 – User content

Wednesday, October 27th, 2010

So, one of the big objectives in this project was to make it so users can create their own fortresses for their friends to storm! Here’s a screenshot of the “in progress” user level-picker screen.

DynamiteScreenSnapz051

I’m pretty happy with how that looks. I need to add scrollbars and stuff like that yet, but it’s mostly functional already.

Stuff for tomorrow:

– Getting the various categories working .. at least on a basic level, I might not have the web-backend queries fully developed immediately.

– Displaying the title of the category

– Decide on what categories make sense. Maybe these should be queried from the web API?

– Add the ability for users to rate levels

Then for Thursday, I’m going to try and set this up for beta-sale if possible! And start sending out requests for artists to help me finish the job!

-Phil

Dynamite: Day 21 – Web API

Monday, October 25th, 2010

So .. I spent all day today getting some of my Web API up and running! Here’s some of what went into this:

– I considered using libcurl or some other pre-made solution for making web requests. However they were all too heavy-weight or did not support Windows.

– I ended up taking the code I had written for Galcon’s web API and cleaned it up a bit. I also wrapped it with a nice C++ wrapper so it would integrate more cleanly with my new codebase. I can now make web requests like this:

WebRequest r;
r.host = “www.galcon.com”;
r.request = “/somegame/api.php?action=dostuff”
r.post = string(“data=”)+r.urlencode(&game.data,sizeof(game.data));
r.exec();
while (!r.poll()) { … wait … }
results = r.get_response()

This is nice and simple and asynchronous. I am able to make these requests, and call poll() once a frame, and then once it’s done polling I can handle the results.

Since I had taken the time to do all this, I figured I’d spice things up by integrating some kind of analytics package with it so I could see where the rough areas are in my game. Unfortunately, no analytics package I found has a “super simple officially supported web-API” .. I may however give playtomic a whirl, it seems to be pretty simple web API calls from looking at the API code, but it’s really for flash .. in the meantime I’ve got a database setup that captures my tracking calls. But I’ll be looking at other options.

To wrap things up today, my biggest goal is to be able to share levels between players. Since I’ve got my web calls working, this should go pretty easily. It’s 3:30 now, so let’s see how long it takes to get this up and running. And, 3 hours later, I’ve got sharing working! Wooo! It’s still not quite as elegant as it needs to be, but it does work to some extent.

-Phil

Dynamite: Day 20 – More Tweaks

Friday, October 22nd, 2010

Since this game contains a level editor, it’s pretty important for me to have the gameplay ironed out solid before I beta the game and have players creating levels. So I’ve been adjusting little things about how the bombs work and whatnot so that I don’t have to change much after the game is “in the wild”.

We’re coming to the end of the fourth week of dev on this project, and so far I’ve been really pleased with how things have been coming together. Not everything is perfect, and there’s a way to go before it’ll be ready for the final release, but I’m pretty hopeful that I’ll have a for-pay beta going next week (like Minecraft / Wolfire do.) The main things that will be done after that is bug fixing, graphics, and the single player campaign. As well as integration with Game Center or whatever.

Nan has noted that some of the levels I design are outrageously difficult, so I’ve enlisted her to design some easier levels. Difficult levels are challenging, but sometimes they just aren’t much fun at all. Getting the right balance between “challenging” and “infuriating” isn’t always easy. But I guess that’s where having say, 100 levels or so in the game is smart. If I only have 10 or so, the curve is going to be really steep. It’s okay for the last 10 levels of a 100 level game to be near impossible, but not for the 10th level of a 10 level game.

One of the things I really miss about python / PHP when doing C / C++ work is the lack of handy standard library goodies. I just spent the last few minutes rounding up a md5_digest and a base64_encode, base64_decode function for my codebase so I can start doing some web requests. I’m also going to have to re-hack my web code to work better, since CURL has too many dependencies, and there doesn’t seem to be anything else available, so I’ve got my own silly web request maker. Along with that I’ve got things like urlencoding, and whatnot, that I get to implement. A bit slow going.

-Phil

Dynamite: Day 19 –

Thursday, October 21st, 2010

So I’m marching towards getting this game into beta. Fixing up some final items. The first one was I was finding that guards would sometimes get together into packs (all on a single square) and stampede. I’ve fixed that by checking for guards who are on the same spot going the same direction and having some of them wait a few frames before moving. This does a nice job of breaking them up.

Aside: I’m listening to Skaven’s tunes via the Modizer app. Very cool!

Time to churn out a new level! “The Barn” has arrived.

DynamiteScreenSnapz050

I’ve added in auto-save / auto-restore of the whole game state. And I’ve added in save / restore of the game settings (like your volume preferences, or whatever.) I had to hold myself back from doing anything crazy like using a fixed_map from EASTL, and just do it the “simple” way. Using new and shiny things is fun, but it doesn’t necessarily buy me any time or improvement in my code.

I then added clipping to my GUI code so that I can have things like scrollboxes and whatnot. I considered SCISSOR_TEST, depth buffers, and stencil buffers. I eventually decided on just calculating all the clipping in software so I could avoid using all those GL features. That way they are saved for possible more cool uses, like effects.

-Phil