Thursday, April 30, 2009

SPACE SQUID GOES GOLD!

aaaaaaand FINISHED!

What a ride this has been! I'm sure I'll post a retrospective or two as things progress with game distribution, but for now... It's time to take a break!

The last and final build of Space Squid will clock in as Build 48. Considering I only had 30 days to complete this project (starting from complete scratch! Never written a game before!) I'm pretty gosh-darned proud of that.

I put up a special credits page so those who deserve them get immortal props :) Check it out, there's some good links in there to some excellent people and some other great games.

Thanks to everyone who congratulated me via IM, eMail, and Twitter during the last few hours! It made the evening that much more stressful. ;)

I'll be contacting a few media places for reviews, interviews, and submitting my game to a bunch of websites tomorrow. We'll see where that takes us!

Here are the laetst, last-minute changes:
  • Removed the level-20 victory message
  • Changed the ink bar from red to black, and moved the bar up paralell to the word
  • Updated the scoring text to indicate the +5000 point bonus for beating a level without restarting
  • Made the level number reset to Level 1 any time you exit to the menu
  • Added a credits page (that looks like ass. Sorry Aubrey :( )
  • Made the game ping Google Analytics every time a level is started - will help differentiate generic or passing-through site traffic with legitimate game players.
Play the game on the official Space Squid Website!

Down to the Buzzer, Space Squid!

Wew! 4 hours to go!

A very special thanks goes out to Ryan Madsen in this update. I've always wanted to have ink in the game, but could never find a decent mechanic for it to work out. Ryan thought one up on a whim and by golly it works.

Since I already had some art assets for ink in the game, it was fairly quick to prototype and test, and it's been uploaded in the new, shiny, Build 47. I really shouldn't be making sweeping changes like this so close to the deadline, but I really really really wanted ink in the game.

There will likely be just one more update to the game before release at midnight tonight with some quick bugfixes (if I find any). Here's what I've got so far in Build 47:
  • Ink now jets out of you when you hit the boost button... In fact, I renamed all references from "Boost" to "Ink."
  • The ink can capture stars. This adds a whole new layer of strategy to the game. Capturing stars this way will net you +500 points.
  • You still get +500 points for capturing stars with a full ink meter, so whether you use it or not shouldn't affect your score too much (directly). However, if used wisely, it can really decrease your time!
  • The ink persists in the game world for 5 seconds only - if it's underwater. If above water it doesn't start decaying yet.
  • You gain a 5000 point bonus for beating the levels in sequence without having to restart. Those who received this bonus are shown in Bold on the high score table.
  • The high score table was manually updated so those who didn't receive this bonus earlier now have it (and I lost my #1 ranking on several levels :( )
So now you can launch ink (use boost) in the air... Pros and cons there that add strategy to the game: You can use boost underwater, and get ink PLUS speed boost... Or you can use your boost in the air, and you only get ink... but the ink flies further and stays alive longer. A nice tradeoff!

Anyway... Almost there! Midnight, here I come!

12 Hours To Go - Score Revisions?

I've got 12 hours left in my development cycle and I'm seriously considering switching one of the score mechanics. I need some input on this one! Hopefully I'll get a few responses from people in the time I have left.

When a score is submitted to my HighScore Database, it sends along with it a "legit" flag (also known as "Champ"). This flag is set "true" if you have not died/restarted/skipped levels since beating level 1, "false" if otherwise.

I put in this distinction as I wanted people to know if someone hammered away on a level, twenty times in a row, just getting lucky and nabbing the high score -- or if they "legitimately" played through the game and got those high scores due to skill.

This distinction is currently marked by the bolding of someone's name on the high score table. Here is an example of what I mean:

This high score table indicates that not only am I, weasel, in first place - but I attained first place on a single attempt through, utilizing my great skill and nothing more. You can further infer that both Pacifist (#2) and Hap! (#4) skipped directly to this level and attempted to beat my score that way, and failed (though it could also possibly mean they just died once somewhere along the way). Either way, this shows that my skill is to be celebrated even more!

With some discussion and thought it has occured to me that, eventually, the #1 spot on all high scores will no longer be bolded. The awe and aura of having a bolded name is good in and of itself, but it will not prevent human nature from just pummeling the digits column and attempting to elevate their score, regardless.

It is therefore my prediction that with this current layout, all worlds will end up having their high score tables dominated by scores flagged as 'non-legit'.

Here is my proposed solution: Give each user +5000 points for completing a level in a 'legit' fashion. This works out to be somewhere around a 25% boost to the average score, and less than a 10% boost for those pro-players in my current high score tables. It is still conceivable that the high score can be held by a non-legit holder, but doing things 'the right way' will give you a significant leg-up.

Thoughts?

Wednesday, April 29, 2009

What to do, Space Squid boo?

As of this post..

T MINUS 33 HOURS!

As of midnight tomorrow I'll be done, so that I can get a good night's sleep and enjoy my Friday. If you have any gripes or suggestions, this is the time to submit them!

I'm finding it increasingly hard to work on the game because there simply isn't much more I can do with it. It's really come together nicely. Check out Build 46 for example - almost nothing much changed!
  • There's now a mute button on the Main Menu (that remembers your preference in a cookie)
  • Added an obscure, tiny donate button on the bottom left of the Official Space Squid Webpage. I might have to make this link more prominent.
  • One person reported an odd gamestopper bug - seemingly occurs at random, but the squid freezes in midair. I've not been able to reproduce on this end but I made some code changes as a precaution (I think it might have to do with an unhandled IOError event when streaming music).
  • Fixed a crash bug: If the ping to the high score server went slower than you restarting the level, the game would hang
  • Fixed a crash bug: If the ping to the high score server went faster than a single game tick the game would hang.
  • Made the date on the high score table actually based on Pacific time instead of Eastern time (why isn't it called Atlantic time?)
I'm also proud to say that all my webpages are STRICT-validated thanks to Aubreys hard work on my webpage. Hooray for conforming to web standards!

And yes, by saying the page conforms with web standards, I'm raising my middle finger to IE 6. Want to make something of it?

MXMLC Ruins FileSizes

While working on Build 45 today I noticed something - that my file size for the project had almost hit 200KB.

That's a lot of KB. And considering a pretty big chunk of the population in the US is still on Dialup, it's an unacceptably large number of KBs. It was taking 2-5 seconds to load on my broadband connection; I shudder to think how many people would scare away from a slower network!

I took a look back through the history of the game, and took a look at how the filesize grew with time.
  • Build 1 was 2KB. This was built in Flash directly, not in the current framework I am using now.
  • Build 2 was 54KB. This was my first setup in my actual dev environment, with all the physics libraries and various plugins I needed. I call this my baseline - this is as small as my code will get. A lot of this - probably 45KB of it - is the Flex Framework.
  • Build 11 was still 54KB.
  • Build 12 was 90KB. You may notice very little difference between build 11 and 12; indeed, the difference is absolutely miniscule in terms of code or assets. The extra 40KB in weight is entirely from debugging statements.
  • Build 26 broke 100KB for the first time (109KB to be precise). It's not surprising either - it's the first build that includes graphics (albeit basic graphics).
  • As I added more and more art assets, the game ballooned to 158KB by Build 38. By this time the game is really starting to look like the final product, and some of the art assets are still in place in the game today.
  • Build 39 took the cake for the largest single asset size jump - hopping from 158KB to 176KB just for the new menu components.
  • Finally, build 44 weighed in at 182KB.
Build 45 was nearing 190KB when I first compiled it early this morning. That's when I noticed it, and started trying to slim it down:
  • I had been lazy and was importing files I didn't need in my source code. By removing these, I slimmed my code down to 169KB - that's 21KB saved just by commenting out a few lines!
  • I turned off debugging - Which got me 30KB back. 139KB!
  • Finally, I turned on compiler optimization, which apparantly swung me right down to 129KB - which is my latest upload to the server, and the version you are playing right now.
I'm OK with having 70KB worth of art. Mentally subtracting that from my total I'm left with that oh-so-familiar 59Kb - right where I started.

After much Googling this evening it turns out that this is the price I pay for using the Flex SDK instead of the proper Flash IDE. The Flex development framework has a bunch of "features" it includes to help develop things in this pure-code environment wheras the proper, paid-version IDE is a bit more on-the-ball with what you actually need. Up until this point I had not seen any good reason for using the Flash IDE - but now I'm wondering if it's worth the 50KB penalty to stick with the Flex SDK and MXMLC. 

I didn't wonder too long, though. The answer is Yes. :) Big bloatware notepads-on-steroids is not what this industry needs! rawr!

There are a few other ways I can reduce filesizes - but to be honest, it's beyond me. I'm not even sure if I can make the suggested changes to this particular project. But let it be known, that there are mythic stories floating about the ether; proclaiming in a dream-like voice that a programmer somewhere... Somewhere far, far away... Has compiled a Flex SDK application in under 10KB.

I guess I have something to dream about at night while comfortably nuzzling my pillow with a smile on my face.

(For comparison; Colin Northway used the Flex SDK to build Fantastic Contraption, and it is 274KB - so I guess I should stop bitching. :) )

Edit: None of the sizes quoted above include audio assets, which are dynamically streamed from the server. For the curious, I have 63KB in sound effects and 2.25MB in music.

Tuesday, April 28, 2009

Minor Update: Security and High Scores

I did a real quick update this evening - it's all backend stuff so I didn't increment the build number, it's still v45.

Thanks to Ben Fox for spotting HTML exploits in the PlayerName/WorldName fields. I had been focusing so hard on SQL exploit prevention I completely forgot. :)

There might be a hole in a place or two still on the site itself, but I'm fairly certain there's no more security holes in the application.

I finalized High Score display elements early this afternoon and as I write this Aubrey is doing me up some CSS to make it look pretty (should be uploaded shortly). One of the biggest features I added was Player Specific Stats. It's like a hockey card, except for a squid. :)

Polish Festival

Mmm, Polish Sausages.

To avoid future ambiguities, Poland should start spelling with two Ls. "Pollish People Use Polish." Makes sense.. Poll -> Pollish...

I've been working on the big to-do list from my last post and I've gotten quite a bit done so far.

One of the things on the list was to make some new screenshots. That was a bit misleading; I actually need a 100x100 pixel "thumbnail" that encapsulates what the game is for easy browsing. Most flash games have this - an icon or a logo of some sort.

I really hate making these kinds of things - I'd rather people just play! But visual guides are handy and they sell well. Here's what I came up with:

Nice, simple, and to the point. Incorporates the Space Squid textual logo as well as the squid and the star, the two primary elements of the game. PLUS IT LOOKS OH SO CUTE,  AWWWWWWW

Some other things I cleaned up in this latest update, build number 45:
  • Returned the main menu destruction and properly focused the game upon instanciation. I was even able to answer my own Stack Overflow question for this one.
  • Rewrote the main menu and all the instruction slides. Now it's more uniform and coherent.
  • Reworked the "Click for More" icon.
  • Fiddled with the colors of the fishtank - I'm not sure if I like this and might change it again.
  • I played with the yellow of the boost bar for around 20 minutes but I kept settling on the yellow again. I made the yellow bit slightly thinner just to say I made progress and left it at that.
  • Made sure the squid's cute little face is always the topmost component - no more obscuring his face with his arms. We wanna see that smile!
  • Made the first segment of his short arms a little thicker - they were narrower than the tips which made them look a little goofy.
  • Looked into the short arms "Drooping" - unfortunately I'm not going to be able to fix this by release date. I currently have buoyancy turned off for the arms - which means they just sag with gravity - but if I turn on buoyancy the swimming dynamic is completely thrown off for the rest of the squid. I'd have to rework all the weight and thrust values which will take me a long time. I figure it's a tiny detail - might as well let this one slide.
  • Changed the hud score display colors to a base blue. I really like how it looks this way! I don't know why I picked purple to start with...
  • Removed the border around the high score name input boxes and made them wider, and left-justified them so they don't act silly when you're typing away.
  • Turned off stats and rankings for "Anonymous," and replaced them with a sign urging people to sign in. It still records Anonymous scores and ranks them on the website though.
  • Replaced the story text with game mode description text. This will be more handy, and noone will read the story anyway.
  • It came to my attention that on any computer without the "Elements" font installed, the countdown timer and score displays were using Times New Roman. That's lame. I think I fixed that now though.
  • Made a new faded-yellow "Galactic Premonition" (preview star).
  • Made sure the EndGame boxes show up over top of everything else.
I'm going to spend a chunk of the rest of the day today working on the HighScore displays on the website, so those should be looking nicer and nicer as time goes on.


I also realized that there is no real "industry" in Victoria and I don't know enough people to throw a launch party. So here's what it is: I'm going to the nearest pub, I'm going to eat calamari and get drunk. If anyone reading this wants to join me, drop me a line.

Never Enough Cartoons about Space Squid

This one has been floating around the internets quite a bit recently, but it well descrbies the whole space squid phenomenon:

http://scienceblogs.com/pharyngula/2009/04/there_are_never_enough_cartoon.php

Monday, April 27, 2009

7 Days, 6 Views

Space Squid has been sitting on FlashGameLicense.com for a week now, and it's been viewed by publishers 6 times.

And only one of them actually played the game - and they never beat (or lost) a level. I have no feedback and no other indication of any slight interest whatsoever. FGL even lists some viewing stats - two of the 6 visitors looked at my page for a total of 4 seconds.

One publisher - AddictingGames - viewed my game for 6 hours but never ended up clicking the play button. I think that's a telling tale - they just left the browser window open and FGL claims it as "interest." Very disappointing.

I'm really really happy I set up my own database so I could track what kind of gameplay exposure my potential buyers are seeing - because now I can see that FlashGameLicense might not be the be-all solution I hoped it would.

However, I'm not completely giving up on them. It might be because my game is listed (as of today) at "97% complete" - maybe some publishers only view 100% complete games? Maybe my thumbnail image isn't the best (it was from v.30 something), or maybe my description could use more marketing magic?

The primary turn-off point for Space Squid might be the Menu. It looks ugly and cluttered. The only thing I like about it is the title, and even then the red underline doesn't quite fit. And a bad impression right from the menu might turn some people right off.

So here's the plan for the last 4 days of this project:
  • Redesigning the menu from scratch with better readable fonts.
  • Make or find new vector keyboard icons - the current ones are crap.
  • Add spacebar to the controls list.
  • Take a suite of screenshots and work on a solid game description.
  • Return the destroy-menu  code and implement the new focus code (stage.focus=this; - argh I wish I knew it was this simple! I think everyone that was trying to help me with the two-clicks-required-bug were overlooking the obvious and trying to think of what the larger problem was)
  • Redesign or recolor the cyan bounding box for the fishtank
  • Change the color of the boost bar - because yellow doesn't appear anywhere else in the game
  • Try a few color changes for the "Level/Score" display on the Hud.
  • Get stroke working on the countdown timer and score results so they better stand out from the background.
  • Fix the text input boxes on the main menu so they don't act and look retarded
  • "Anonymous" shouldn't get the score details in the victory/gameover boxes.
  • Put a border on the game so the squid doesn't fly off the screen and clip mysteriously
  • Finalize the highscore display and get it formatted nicely on the page
  • The victory/gameover boxes should appear on top of the obstacles and water, for clarity
  • Add descriptions for all the play modes (maybe popup?)
  • Make the website not scroll on a standard resolution such as my laptop
  • Shop the game around in a mass-email spam
  • Throw a launch party. Considering it's 4 days away that's probably not going to end up being too big. I really should plan it out better.
Ryan Madsen, who has been making several awesome suggestions for the game since I started writing about it here, just finished a Magic 8Ball responder for Twitter. If you ask a standard 8ball question he'll randomly pick it up and respond to you! Check him out:

or his responses:

(good for some random fun)

Squidlets

Another late-night update brings us up to build 44 - nothing amazingly special this time. I figure as these last few days of April tick by the updates will become more and more inane :)

Play it on the fancy-new Official Space Squid website.
  • Sitelocking enabled; you won't be able to run the SWF on your local machine (or upload it to a shady site!)
  • After days of headaches I was finally able to fix the keyboard losing focus bug. It ended up being the "Play Now" button that was getting focus, and when I destroyed it on level creation (just trying to be tidy!) it destroyed the focus with it. I'm pretty sure this is not standard flash behaviour, but there you have it! My workaround was to make the PlayNow button invisible instead of removing it altogether.
  • Cookies! The game now remembers your name from site visit to site visit.
  • I would totally have a preloader in place - if only I were to put MochiAds in. The only working example I could find for a FlexSDK v3 preloader relies on it. :/ I'll find something eventually.
In unrelated news, I was rearranging furniture today and crushed a nerve in my back. For some reason sitting in this chair and typing on my laptop for a month isn't keeping my normally-ripped physique up to par.

While I waited for some drugs to take effect I took some time out to blow things up in Team Fortress 2 and followed it up with some Left 4 Dead. Ah, distractions.

I've downloaded Braid too but it hurts my head. I can see it's an amazing fun game and is awesome, but I don't really want to think right now. My brain is revving high enough as it is just getting this project done. I've shelved Braid for March sometime, when I can enjoy it properly. :)

Saturday, April 25, 2009

Space Squid Sports a Shiny Site

I have a super amazing build (number 43) and it totally would have blown your socks of if only Aubrey didn't launch the new website!

Check out the official Space Squid website here and bask in its glory. You can actually play the game ON THE PAGE!! wew!

The high score section of the site still needs a lot of work but the fundamentals are there for you to enjoy.

Hohum improvements to the game include:
  • Giving you score stats inside the GameOver/Victory box at the end of each round. I think this actually adds a lot of depth to the game.
  • Some minor graphical improvements (making fonts more legible mainly)
  • A new instructions page with some details on the "world" scoring mechanism
  • Made the endgame boxes interactable with the squid again (and slightly smaller)
  • A bunch of small tweaks here and there that don't affect gameplay (and thus the highscores)
Things to do:
  • Figure out how to save the username/world in a cookie so you don't have to type it every time
  • Get my domain-lock security in place. It worked once, just have to get it working again...
  • Solve the damned "have to click twice" game-loses-focus bug. I posted a help request for it at StackOverflow.com, if you want to help me out you can earn some karma points. :)
  • A loading page! The game is 182Kb and it takes a while to load now.
5 days left on the clock! It always seems like I'll have plenty of time but then I go two days without doing anything, so I really want to press on for this last little bit. Elbow grease and polish!

The Meaning of Life, the Universe, and Everything

Build 42 isn't a gigantic improvement. I've just added instancing for the high score tables! This update makes such big sweeping changes to the high score API that I decided to turn off score submitting for earlier versions.

High scores for versions 40 & 41 are still in the database and are perfectly valid, they just can't submit anymore.

I really wanted to make a high score solution that did not involve you pitting yourself against a dozen bored kids you don't know with too much spare time on their hands. I also wanted to avoid you scoring regularly in 400th-10,000th place in the globe.

My first reaction was to implement a 24-hour rule - your ranking is based on the last 24 hours of high scores. This is OK, but not perfect. What if a single office, group of friends, or school wants to compete amongst themselves, and only themselves?

I have to credit Ryan Madsen for the idea of instancing the high scores. This will allow any group of people to create their own set of high scores, and only have to worry about being ranked between each other. On the main game screen you can type your own custom group name in the "World" field - just that simple! The field will default to the domain you're currently playing the game on, so if the game ever gets sponsored by some Flash Portal you'll be playing against your friends there.

As a little side bonus I'm also tracking failures now, too. This only counts if you see the red "gameover" box - quitting to the main menu doesn't count as a failure at all.

Aubrey is working hard getting the new version of Space-Squid.com up and running and we'll see new stuff soon. Until then, keep racking up the high scores! I'm a fairly firm "king" in the space-squid.com arena. :)

Thursday, April 23, 2009

Alien Invasion!

I liked the gameplay of those asteroids-in-the-sky so much I made a whole new level out of it!

Now instead of "Easy" and "Hard", there is:
  • Normal hasn't changed from Easy - it's the same, easy to control, solid victory conditions game that you know and love.
  • Pro hasn't changed from Hard except for the graphics - the boulders that hover in the air are now alien spaceships.
  • Aliens! is a brand new game mode where you get as many points as you can in 120 seconds! Because of the scoring mechanism that probably means grabbing as many stars as you can. There's no way to lose (except leaving the arena), and running out of time will win you the game. Changing levels just alters the semi-random layout of the spaceships/stars.
I also turned boost back to a "hold down" key instead of a tap.

Check out Build 41 here or just visit the official Space Squid homepage (new site design is coming soon!)

E: Increased alien mode from 60->120 seconds and removed death-by-limb-removal. Didn't increase the build version for this change.

Space Squid turns 40!

1,408 rows deleted. That's a lot of high score entries! Thanks, guys. :) I can't believe how much you've been plalying! I've reset the high score database to go along with this quite excellent new version. Let's rack it back up again!


So what's new? Too much! Other than making Hard Mode nearly it's own new game...
  • I let squids continue to propel as long as their head is submerged - instead of going from the tip of the mantle. This basically means squids leap farther out of the water, making acrobatics much more fun!
  • I apply the turning force at a much larger angle now, so it's harder to do the "hover cheat" while increasing your turning responsiveness.
  • I put motors in the squid tentacles that auto-seek a straight angle. This will help your limbs from getting tangled up. The motor is only on the head-to-tentacle joint, and I don't have one in the secondary joints yet so they might still tangle a little if you turn really fast.
  • The squid can no longer touch himself - so his legs won't tangle in each other. This small change ended up increasing framerates quite a bit!
  • Played a bit with micro-changes to water viscoscity and gravity.
  • Removed the extra objects altogether in the later levels - they now only show up at the tail end of level 18, 19, and 20. Things were just getting too busy and processors were melting. :)
  • Level 1/2/3, 9/10/11, and 18/19/20 are all "theme" levels now. They only produce one type of obstacle.
  • Reduced the sizes of all the obstacles.
  • Made the sinking depth of the Space Urchin much more random (they were sticking a bit too close to the surface)
  • Updated the main menu with controls, story, and a scoring overview. Be prepared, the story is one of ultimate seriousness.
  • In hard mode, all rocks are static objects that get in your way - and should only appear in or near the air (with a random size as well).
  • In hard mode, all the stars appear in or near the air.
  • Stars now appear 100->350 pixels away from the previous star. No more overlapping double-grabs, and no more traversing to the far end of the screen.. but still close enough that you can still make multiple grabs in single jumps. Thanks to pythagoras for this one (and Aubrey for suggesting it).
  • Pause screen (spacebar) and ability to return to the main menu.
  • Made the GameOver/Victory boxes not intersect with the level objects, so you can still play in the background after the round has ended.
  • Boost now requires a tap instead of holding - this helps prevent you from burning through it too quickly. I'm not sure if I like this change and might revert it.
  • Made squid joints more robust (again).
  • Made easy-mode squid a bit smaller and lighter (faster).
  • Thanks to John Hughes @ Twune.com, Space Squid now has music. Hooray! It's a nice mellow tune to chill out to with underwater vibes. I'll have a mute button shortly if you prefer to listen to your own tracks while squidding.
  • I actually playtested this version so I know all the levels are possible. ;)
  • A bunch of other random small changes here and there.
Once again; check out Build 40 of Space Squid here, or just visit the official space squid web page.

Wednesday, April 22, 2009

Space Squid 39

Made a few changes - mostly graphical - but I did reduce some of the objects that fall in the later levels. Some slower PCs couldn't handle it :(

Here is build 39 - and of course the link back to the (still ugly!) official Space Squid website.

Fair warning: I'm going to reset the high score tables on Build 40 (next update!) because the difficulty curve is changing so much between builds.

Edit: Looks like Level 10 and 11 in Hard Mode are neigh impossible. I'll have to fiddle with the numbers again - in the meantime, if anyone beats them I owe them a beer.

Monday, April 20, 2009

With Haste, Space Squid!

Well, that was quick! Here I was pouting because I couldn't decide what to do... And a few hours after posting a to-do list I have a brand new build on the burner. Let's all say hello to build 38! (You can play on the official Space Squid website)

What's changed?
  • Created Hard Mode! Hard mode significantly reduces the amount of time you have to defeat each level; it makes your squid smaller, lighter, and faster; it reduces your boost capacity and refill rate; and it makes all the obstacles about 10% bigger than easy mode. If you find Easy Mode a bit too sluggish and want a challenge, Hard Mode will feel like a sports car... that falls apart very easily. :)
  • Easy mode now has a squid that is 40% larger than Hard Mode and around 20% slower. This should make the squid feel like a "minivan" that is much easier to control and learn the ropes with.
  • Reduced the number of levels to 20 (from 30). This ramps up the difficulty quite a bit faster - and counting both modes there's technically a total of 40 levels now.
  • Reduced the number of items that fall on your head in the later levels to increase framerates.
  • Made levels 1-5 have 5 stars.
  • Levels 1 through 3 have solitary obstacle types to introduce you to how each one works.
  • Added new GameOver and Victory boxes.
  • Found a new font to work with for the game and website - one that's legible!
  • Added a "Galactic Premonition" (purple blob) that indicates where the next star will be. This will eliminate some of the random guess work and really let you fly with your squid.
  • Added more sounds.
  • Changed boost to the Shift key - now you won't have Mac compatibility issues. :)
  • Touched up a few graphics here and there.
My to-do list suddenly got really short. :(

Stay the Course, Space Squid!

Just under a month ago I stated I would have this game done and released by May 1st. I still plan on having it complete by this date, and I am very, very proud of how far I've come so far. I have to say I'm a fairly amazing guy for learning Flash, Flex, OOP, graphics, and input devices - and making a game - all in a single month! We should all celebrate my genius. Feel free to name your babies after me.

I think I'll have to circle "April" on my calendar and be sure to celebrate it every year with copious amounts of craft-brewed ale.

So I have 11 days left to complete my mission - including the rest of today - and I really don't have that much farther to go in the game. Therein lies the dilemma - I'm not really sure which itty bitty problem I should tackle next. I'm used to finding the biggest issues and resolving them systematically - but when you get a product that's this close to "done," all that remains are naggling barely-issues that really aren't fun to solve. So I haven't done much work in the past few days.

I think to hunker down and get this done I have to make some decisions now on what has to happen - and once armed with this list I'll have an ordered number of things to do. Let's hash this out!
  • I have to ramp up the difficulty faster so the early levels aren't as boring. This will eliminate the casual player base - so I'm thinking I'll have to add a "Hard Mode" to the main menu. My first instinct is to simply make the timer 4 seconds per star right from the get-go; maybe that's too harsh. I'll have to test it out.
  • I will have to place a bunch more sounds in the game - grab-star, victory, game over, loss of limb, reset, and boost. Maybe a few more but that sounds like a nice set.
  • Settle on a font to use in-game and use flash's text rendering to put a stroke on it to help it stand out. The current font gets too narrow at points and makes it nearly unreadable.
  • Add some random fun-facts about squids in the victory message.
  • Add the top-secret "Game Over" object
  • Clean up the "fishtank" graphic around the border - it looks like a series of rectangles right now, for some reason.
  • Straighten out some of the mantle edges on the squid graphic - when twisting in certain ways he has sharp edges.
  • Change up the squid graphic on the menu to be an identical copy of one in-game. Flash's sprite compiling tool will nicely solve this.
  • Make a Mac version that correctly labels the CTRL key as the Command key on the main menu.
  • Implement some real music (see below for more on that). Right now the game streams in some copywritten music but doesn't actually play it (for legal reasons), so at least I know the technology works. :)
  • Do up a proper website for the game complete with integrated high scores.
  • Once the SQL queries are settled on for the high score tables, port them directly into the game.
  • Depending on who (if anyone) accepts the sponsorship, might need to work 3rd party API stuff into the game.
  • Throw a release party.
Once the game is complete I'm going to have to market and distribute it. Since this isn't really an epic game by any measure (and wasn't intended to be!), it won't really survive on it's own two legs like Colin Northway's Fantastic Contraption did. I'm going to have to go the portal/sponsorship route.

That really disappoints me. I hate ads, I dislike the whole idea of portal sites, and I don't want to wrap my head around the magic that is writing several contracts to cross several portal sites. To help me out I enlisted FlashGameLicense.com - Space Squid is now listed there for publishers/portals to bid on and help make my life easier. It might go nowhere, but I'm fine with that - this game isn't costing me anything. :) Eventually I'll have Cephalopod Heaven where you can play all your favorite squid games (as written by me) and I won't have to worry so much!

Through FGL I met up with John Hughes of Twune.com. We're currently working out a deal to get some in-game music going. It'll be some basic, happy, midi-style stuff - I don't think this game will be able to support a million hits on 10mb MP3 (FC proved the problems inherent with that!). Hopefully we'll have some nice sample music up in the coming weeks!

Saturday, April 18, 2009

Fonts and Difficulty Levels

Yes that's right, the latest build 37 has some exciting new additions:
  • Level 30 is now the official end of the game! Now that's a solid goal you can strive for.
  • I made some timing changes for the earlier levels; namely, 7 seconds per star instead of 8.
  • Over level 20 you start losing total time, culminating in the Level 30 battle where you only have 4 seconds per star.
  • After stage 15 on any level, you will have an additional obstacle drop.
  • At a few levels > 20 you will also get additional obstacle drops, culminating in a whopping 5 obstacles per star on level 30.
  • The stars now max out at 20 no matter what level you are on (so level 30 has 20 stars still).
  • I switched in some fonts that are - I know, I know - unreadable at this time. Going to work on fixing that up, but it's a placeholder for now.
I guess this means the game is really shaping up, except there's no excitement or spice in the first 15 levels. I guess I'll see if there's something I can put in around levels 8 and 12 to spice it up a bit.

Boost and Noise

After playing for a few days (with the help of my beta testers), I quickly found out that nobody could beat anything past level 19 - that is, if you could ever defeat level 17. See the high scores here.

Here I was hoping someone would make it near the 30s somewhere...

I've decided to change the difficulty curve to aid this problem - and so we have Build 36 of Space Squid:
  • Instead of a minimum 5 seconds per star, I've increased the value to 8 seconds per star. This should allow entry into the 20+ to 30+ levels.
  • The 10-second-per-star bonus that degraded down to level 20 now extends to level 30, further making the 20s easier. Expect the hardest levels to be the late 20s to early 30s.
  • To aid in those epic jumps to the high stars in levels 16+, there is now a boost button! The boost goes *very* quickly but is refilled slightly with each star capture. If your boost meter is full you get a small amount of bonus points (500) for getting each star.
  • I've integrated my sound and music code, but haven't populated it with any data other than me saying "bonk" if you hit something hard. Sorry if that's really annoying, I'll have real clips in shortly.
  • Added the most frequently requested features: Star Remaining count.
Of course, all of these changes have pretty much made the old high score tables worthless. The new scores will all be much much bigger. :)

Friday, April 17, 2009

Update to the Space Squid Himself

Lil' Squiddy got an upgrade today! Build 35, or play it at Space-Squid.com(and try to beat my high scores! I'm dominating the tables!)

Now his cute eyes and mouth are clearly visible, and I added some meat to his arms and tentacles! properly made graphics, ahhh...

I suppose the most exciting part, though, is his Mantle is now anatomically correct and he looks (slightly?) less phalic. Good news for everyone. :)

A few other minor changes - objects now fall in from off the top of the screen from varying heights, so that the water hitting speed can be greater (or slower); you don't actually have to click the green arrow after typing your name; changed next level to spacebar; the minimum time for star pickups has increased from 4 to 5 seconds (which hits at level 20+), and other itty bitty updates.

It was such a small update this time around I didn't feel like it warranted it's own blog post and updated build number, but I've recently listed the game on FlashGameLicense.com and they require I keep the game as up to date as possible during the build period. *Shrug* Hopefully we can make each other some money!

Thursday, April 16, 2009

Cute Factor 7

A minor update to Build 34 is now up.
  • Cuter beachball (now a Space Jellyfish!)
  • Non-angry Space Urchin
  • Happier looking Space Star
  • Heavier rocks (now they are hard to push and they will guaranteed take off some limbs if you get under them)
  • Space Jellyfish is lighter
  • Gravity has been adjusted down from 8.8 m/s^2 to 8.0 m/s^2. This makes level 17+ possible without cheating.
  • Some graphical changes in the menus and other places
I also found out that my flash player was breaking my site in FireFox for some reason, so I just put in a text link on space-squid.com.

Not-annoying High Scores

I had some pretty horrible bugs in the last build. You couldn't have a name with "R" in it was a big one.

This build lets you type your name once at the beginning of the game (optionally) and it will automatically submit your scores while you play. Officially Build 33 - play it on my (ugly malformatted) site or directly, full screen.

If you head to my site, though, there is a quickly hacked together high score list. Now you can compete. :)

Build 32: First hint of High Scores

Build 32 is up on my new Space-Squid.com site!

Aubrey was saying my logo didn't look professional so I photoshopped the hell out of it:

Nobody, except... nobody, can complain when there is a lens flare.

The only real change in this version is between levels you get a dialogue for entering your name. You can hit "r" to bypass it or you can just use the default Squiddie name. This is a working high-score submitter!

I don't quite have the high-score VIEWER setup yet, but it'll be coming shortly and I need some data in the database first. :) Play your hearts out and save your scores!

I'll be working on some interface niceities (remembering your name, etc) in the near future, and cleaning up the screen a bit. Again this build is just to get some scores into the database!

Space-Squid.com is Alive!

I'm going to keep blogging here, but the official website is now registered! As soon as your local DNS cache gets cleared at your ISP all the links will unbreak for you. :)

The advantage to having it on my site is now you just have to click the main page and get the latest version. Of course my site is very ugly right now - but at least it's in place.


No update yet today - I'm working on high score tables. Almost done,  I promise :)

Wednesday, April 15, 2009

What Aught to be 30

This is the build I wanted to release as the big number 30.


In this update ...
  • Stars are now StarFish (still outer space because it has the word star in it)
  • Mr. Grumpy is now a Space Urchin
  • Mr. Grumpy is no longer nailed down and is neutrally buoyant
  • New beachball object that floats
  • New stone object that sinks
  • Increased water friction to slow you down
  • Doubled your top speed to speed you back up again
  • Increased gravity to help reduce those rediculously-long airtimes :) Speed increase means you'll get the same height though.
  • Made objects drop from a higher altitude as to impede your midair stunts (and to dodge falling rocks)
  • Removed most damage (stretching your joints really really far still results in a snap - you'll probably only see this if you wrap a leg around a Space Urchin and yank it off).
  • Tweaked the timer a bit
I have to do some resizing of some of the graphics (some look stretched) and redo the main menu still, but a step forward in the fun department, I think!

The Big Three-O

Here it is, Build 30!

Unfortunately I don't have a huge update for this nice, big round number - just some minor gameplay changes.
  • Score is back! You get points for moving in general;
  • Plus 1000 points anytime you pick up a star with your feet;
  • Plus 1000 points for every second remaining on the clock when you finish the level.
  • Speaking of the clock, it's now level-based not stage-based. You get a set number of seconds to collect all the stars.
  • You get a base alotment of 5 seconds per star to beat the level with starting at level 20.
  • Before level 20 you get around 15 seconds per star and it slowly dwindles down as you move through the levels.
I'm not really a big fan of the points system, but it adds a level of replayability that the game otherwise lacks. Even finding out the best possible score on Level 1 is pretty fun!

I'll be looking to make a high score table in the near future. That'll add some excitement too.

What level can you get to? Do you think the later levels should allow more than 5 seconds per star? It gets fairly stressful after a while.

Tuesday, April 14, 2009

No Really, The Squid is in Space

This update fixes a few things:
  • The stars weren't ramping up properly. They will now be underwater guaranteed for the first level or two, then will slowly creep up. Full screen stars start at level 20. Thanks to Aubrey for helping me out with the formula for that one.
  • Sometimes stars would overlap Mr. Grumpy. Fixed!
  • I played with some of the physics numbers a bit (gravity and a few others).
  • Your damage-taken bits now have a density and will float to the surface of the water. I think there might be some sort of gameplay to be had there but I'm not sure just what yet.
  • Because it was looking like it wasn't exactly space, I went ahead and made damn sure you know it's space. Background image in place!
One of the neat things about my random level generator is that any changes in the math completely change the outcome for the levels. Each build is like a whole new set. Exciting!


My stats:
- First try, no restarts: 9.8
- Hardest underwater sequence: Level 13
- First death by damage: 16.10 (lost most limbs around 16.8)
- First death by timeout: 16.13 (lost a lot of blood here too)
- Most Heartbreaking Leap: 17.9. Mr Grumpy ruins me here.
- Closest to the wire: 18.19 (very hurt, 1 second left on the clock, trying to make a medium jump in close quarters... stressful!)
- High Score (with restarts): 19.12

Timed Gameplay

It's the next day and I'm still pretty excited about the last build. I took a look at it and decided a few things needed to change:
  • The bloody bits isn't exactly inline with the "cute" message of the game.
  • Worrying about your health all the time is annoying
  • If you are good at steering the squid, the game isn't terribly challenging.
  • There's no "victory" message to give you that sense of accomplishment.
  • The skill level doesn't ramp up per-level.
With this in mind I made a few gameplay changes!
  • You now get frowny face balls for breaking parts off, no more bloody patches!
  • It doesn't end your game anymore if you lose parts! If you lose your feet, it simply becomes harder to reach the goals that are higher up in the sky. Additionally, for every frowny face you produce, your squid loses 5% of his acceleration. You won't be able to jump as high if you lose lots of parts (though this is slightly mitigated by the fact that you have less mass and therefore less water friction).
  • There is now a countdown timer in place to make sure you wisk along to your next star expediently. :)
  • There are now clear stages and levels. Every level you go up it adds one more stage on, to make the game progressively harder.
  • The countdown timer is mostly random, but the minimum value will drop over time. It will eventually bottom out at 5 seconds (around level 60 I think?), but will always have a maximum of 60 seconds.
  • The higher-up stars were hard to reach for some people so they also slowly creep up over time. They reach their maximum altitude around level 20.
I think this is really shaping up to be a fun game. Check out Build 28 here.

Eureka!

Well I set aside two hours tonight to do a bit of an experiment.

How's this for a radical build. Number 27!
  • Water. You are still a space squid - there's stars and you are in a gigantic outer space fish tank.
  • Time/Score pressure is gone now. Take all the time you need - the game gets hard enough on it's own without this extra source.
  • Fun times.
I was thinking to myself, "if only there was some way to dampen the rotation force, like... that mushy feeling you get in water." Presto chango, water it is. And it worked very very well.

I am quite confident these same controls in this new medium is going to make gameplay that much better for everyone.

I really think this is it - this is going to end up being my first game. Heck it's fairly game-y as it is - just have to add some polish and shine to this bad boy and I've got a market!..

Then again, I'm posting his at 2:30AM and maybe I'm just a bit too excited about the new build.

Monday, April 13, 2009

SpaceSquid presents: Phallic Nightmare

Up until this point I had been using Box2D's debug drawing method. I was kind of dreading the day when I had to incorporate graphics - but it really wasn't too difficult once I got down to it. Much thanks to Colin Northway for sending me a quick step-by-step email on how to best export images to and from Flash, and how to incorporate it into my AS3 code.

I am hesitantly offering up Build 26. It is fairly horrible looking - I'm just happy that I was finally able to turn off the debug drawing mode and get my own art in there. Even if it is scaled incorrectly and looks more like an insane penis than a cute squid. I'm pretty happy about the menu though, that load screen is killer.

There's no new gameplay elements today, other than some tweaked damage settings. Your squid is a teensy bit more robust now.

A few folks have asked me what I'm using for a development environment. Here's the breakdown:
  • Notepad++. Very simple notepad tool that does a bit of syntax highlighting for me, and that's all. I do all my AS3 work in this, and it's free to boot.
  • MXMLC / Flash SDK 3.0. This is a free command-line compiler for flash.
  • Adobe Flash 10 Debug Player - I use this to actually see my debug messages. As I'm not using a development environment I don't have a handy window to display anything that goes wrong. :) Free of course.
  • Adobe Flash 10 Pro (CS4). I only use this to draw the graphics - nothing else.
I use a few other odds an ends for file uploading and such, but nothing exciting. Quite simple really. In fact, up until my use of CS4 for graphics today, I had zero cost on software. Setting up the development environment would only take me an hour or so if I had to do it again, and that includes downloading, installing, and configuring everything.

If you have any questions about what I'm using or the development process, feel free to ask!

Late Night with SpaceSquid

A small late-night upgrade.. Didn't take me a whole lot of work, but each item has some interesting consequences.
  • Fixed up the goal boxes so they fade out quite a bit more once they've been achieved. I toyed with removing them altogether but I kind of like seeing your achievements stay on the screen.
  • I made a (very) rudimentary random level generator. Switch levels with the square brace keys: [ ]. There are now over 2.1 billion levels! How's that for content? After playing with it quite a bit I found that the random levels make the gravity seem like... Well, like it doesn't really matter. I'm going to have to experiment more with maximum and minimum planet sizes and mass values for everything to see if I can get it back. Maybe random levels aren't the way to go? Maybe my generator just needs some tuning?
  • I made the squid size vary a bit (60-120%) randomly with the level. Because the forces don't scale properly, the larger the squid is the slower it handles. Conversely, the smaller squids are zippy little jetfighters! I really prefer playing with the small squids because of the fast responsiveness, but they are very touchy. Because  I don't want to scare people away I made sure level 1 starts with the chunkiest squid. Level 6 has one of the smallest squids possible. Perhaps one day the smaller, lighter squids will be unlockables?
  • I put joint contstraints on each of the limbs. This has had some interesting side effects. I find the squid looks a bit more natural now - the legs attempt to stay aligned. There is even some natural motion, like the feet springboard off of walls to help propel you away from danger. The downside, though, is it drastically changes your vector on rotation. This seems to make the squid a lot harder to control (for me, anyway). I'm curious to see how other people find it, especially on the larger/smaller squids.
  • The goal areas have little countdown clocks on them, based on your keypresses. This adds another dimension of challenge to the game. After the game gets tuned I'll set these to a mildly challenging setting - they are mostly random with the level but will scale with your CuteFactor (to help you deal with the added obstacles).
  • There is no Victory message still. I think I might make it around CuteFactor 10, but again will have to tweak once I see how well people deal with the levels.
And there we go, up to Build 25 already. Don't forget to click on the SWF to give it keyboard focus. 

My best score on any level so far is CF13. :)

Sunday, April 12, 2009

Space Squid v24: Rob Edition

OK, so maybe it wasn't all Rob's idea, but the way he pre-empted this version with his comment yesterday really makes me look guilty. I'd better give him recognition just in case ;)

Build 24 is up - a little half baked, but the concept is there. The screen should be fairly self-explanatory - make it to the green boxes!

(A future version will clean up the boxes and make the screen less cluttered.)

I can make it to Cute Factor 12 - but getting past CF9 is pretty difficult. Give it a whirl!

I Crash Flash

Today was a fun day!

My lack of OOP experience meant I made several mistakes along the way. When I went to implement a few new features early this morning it became clear that I had to fix things.

I took one linearly-written 800-line-of-code file and split it into 5 appropriate classes. Then I learned that Flash doesn't have pointers (hello, referrers!) and I put my code into an infinite loop at some point.

I also removed all traces of Box2D's "scaling" from my code, until I realized it would hideously break things then I put it all back in again.

I thought I had it all squared away and was going to test out the new build - and I had to laugh. After a long day's work, the Squid's head feels as painful as mine does.

I should have a playable iteration up late tonight or early tomorrow sometime.

Easier Variant

I took the game and pared it down to quite-a-bit-easier version just so people can get a feel for what an earlier level might be like.

It's not drop-dead tutorial-level easy; there's still one planet with a massive gravity well (that you can't escape if you get close enough), but there's a lot less to worry about. It still takes some finnesse to get your SquidHead in the goal areas too. But you can see the difference between this and the last build - the game, it's fun factor, and the skill required largely depends on level design.

Saturday, April 11, 2009

Double Goal Areas

I'm still toying a bit with gameplay but trying not to deviate from the original goal. Here's a double goal area style game with a minimum and maximum entry type gate; it's quite difficult but should pose a fun little challenge to the gamers out there. I've tried it about two dozens times and I've only beaten it twice.


Please excuse the textbox bounding issues. I swear it's not my fault. :) Darned Box2D and their scaling factors.. I think I'm going to have to go through and convert it all back to pixels at some point soon.

I'm looking into getting a level creator of some sort made now. There's enough days in the month to get something in.. I have a few ideas... Well, you'll just have to wait!

Space Squid Sauce

Right! Turns out I had to destroy the child sprites when I recreated the object instances of the Hud. Problemo solved-o!

And that of course opened the door to finally seeing the goal object in the game. That's right, you can now officially win!

When I have actual levels in place, I'll start out with something easier, but for now you've got a fairly difficult challenge. You have to get 5000 style points before you can enter the goal area. And once you do... What's stopping you from getting a higher score?

I'm really happy that such a big, simple gameplay change was added for the nice round number, Build 20. Enjoy!

And as usual.. let me know what you think. :)

Learning by Trial

My Flash newbishness really shined through today.

I've had this bug that's been plauging me for about a week. I drew a goal object - even cut n pasted code from several sources - but it would just never show up. Well, turns out I had to not only addChild(crap I just drew), but you also have to addChild(object that drew that crap) and addChild(object that called that object). I guess I understand the logic behind it - one big chain of display objects linked together to the first Sprite iteration - but this is the kind of thing that you can't solve by poring over the API documentation or simple tutorials. Sigh.

I was very excited to fix this bug, as it allowed me to move all my other drawing code - ie, the HUD - out from the main file. I had some hideous hacks in place to get those score counters rolling. I went through my code and started OOP-ifying everything up and moving code bits out into their own files.

Unfortunately, this broke something else that I just can't figure out.

Now the Hud is it's own proper object. It works fine and dandy, until you hit the Reset button. The reset button creates a new instance of the world - which then in turn creates a new instance of the Hud. My traces show that the Hud is still receiving input and drawing things, but the screen doesn't update anymore.

My hunch is that this glitch is being caused because my textboxes still exist in the world (they weren't destroyed with the reset button) and I've just created new ones behind them or something. If anyone has any tips, let me know.

Some good news: The code I wrote for the goal area seems to work great. I have some coordinate conversions to do, but as soon as those are squared away I'll have a brand new form of gameplay: Get your squid to an objective without dying. :)

Friday, April 10, 2009

No really, sticking to the plan.

I can't believe I didn't listen to myself!

Just two weeks ago I posted a blog entry entitled "The Art of Sticking to the Plan." And here I am veering wildly off the plan and adding bells and whistles - complicating a game that is fun because of the simplicity.

I put out a call everywhere - all the social networking sites got posted to - and all of my [important ;)] friends took a look at Build 18. Most people gave me some lightly positive encouragement, but the overwhelming majority was confused. Gameplay was frustrating, the concept was not clear,  and overall - people didn't have fun. I should have listened to myself, I should have stuck to the plan!

I'm going to go ahead and blame this on gameplay experimentation and not really worry about it too much. I only lost two days development time on all these weird gameplay ideas, and at least I have a recorded demo of what the gameplay could be like if I ever want to go back and try again.

As the biggest complaint was the control scheme - which is largely a relic of the original (archaic) design - I have switched changed in the mouse for keyboard controls. Left, right, and up arrow keys now jet your squid around on the screen. I simplified the concept - now it's just stay alive! and you get points for doing so. You get more points the longer you stay alive, and you get bonus points for touching planets with your cute little feet - juts to encourage more dangerous gameplay. :)

So here it is - the simplified Build 19.
  • Arrow keys now control the squid. Be sure to click on the flash first to give it focus.
  • Lose health by touching things (your feet are safe though)
  • Gain style points by moving or touching things with your cute feet
My only issue with the game as-is, is it's fairly easy to put yourself into a geostationary orbit and just tap the up arrow once in a while. I think if I bring back Ink Bottles as a propulsion fuel limit it would make things a bit more fun.

Thursday, April 9, 2009

Experimenting with Gameplay

SpaceSquid is completely experimental. The game I had written down in my notebook weeks ago, is not exactly what I'd call "fun." A quick physics toy maybe, but not a game.

In an effort to find what is fun and what can be extended into a game format, I've been playing around with scoring and how things work. Here's Version 18:
  • Every time you move your cute mommy squid will let go of one of her cute little eggs!
  • As everyone knows, squid eggs are not affected by gravity.
  • Your cute factor will slowly increase with time (plus a few bonuses here and there)
  • You will get style points if your cute squid eggs touch anything. Your babies want to see the universe! Help them explore!
  • You get a style point bonus every time you move - this is multiplied by your cute factor, so the biggest points come from saving your ink for later!
  • You have a limited amount of ink that's used in propelling you around. Touching objects will decrease your reserves. Squids aren't meant to breathe in the atmospheres of planets, silly!
  • If you touch anything when you are out of ink, or if you lose any limbs because of rough handling, the game will end!
Try playing it here, and let me know what you think of this playstyle!

Slight Gameplay Changes

It's funny how a tiny change can affect gameplay so much.

Changes in Build 16:
  • Gave the Squid his long-overdue mantle fins
  • Fixed the collision checker so it actually reports even light touches. This actually made the game horribly difficult so I disabled collision checking on the little club feet your squid has. Feel free to touch things with that!
  • I played around with a bunch of motors and limit settings. The squid should flow a little more naturally now instead of just tangling himself up every chance he gets (though he still will if coaxed)
My high score in this build is.. 156% Cute, 7 Friends. Try to beat my score! Click to play Space Squid!

A bit more Game-Like

I spent a big chunk of the evening trying to get a goal area built into the game, but I've failed. :( I'm having trouble wrapping my head around all the Sprite objects and exactly where I need to put things to make them work. I'll figure it out eventually.

I've hacked together a bit more of an interface and tuned the level a little bit more. Here's the lowdown:
  • Avoid touching anything. Squids are very delicate and they don't like brushing up against planets or the edges! Sometimes they will be forgiving but usually it will end your game.
  • Propel yourself around with the mouse. Draw vectors - the longer the line, the more oomf! You don't have unlimited power, though. It costs you Ink Bottles to move, so use them wisely!
  • Build up your Cuteness by surviving for a long time! The longer you last, the faster your Cuteness accumulaes. You will also get bonus cuteness for using your ink bottles - the bonus is greater the later you use them!
  • As time wears on, your squid will get more and more popular with his buddies! See how many friends you can accumulate. This accumulation is linear.
  • If you lose a limb in a crash, you might make enemies instead of friends :(
I'm sure you'll quickly realize that proper usage of your ink bottles to attain the longest standing orbit is the call of the day. Try your hand at getting a top score!

When I get the goal areas in, they will "open up" at a certain cuteness level. Surviving throughout the level then making it to the goal area will be the main challenge. Soon!

Oh, and I also added a few light-duty motors to the squid tentacles. They wave back and forth a teensy bit now, just to destabilize your orbits. :)


Special thanks to Aubrey for the scoring formulas (I learned logs today!), and thanks to OfficiallyHaphazard for helping with Cosines for the tentacle waving!

Wednesday, April 8, 2009

Space Squid: The Game

There aint no party like a cute squid party!

Objective: Don't touch anything! Make sure you get as many Squid Friends as possible (and looking maximal cuteness along the way)!

Careful though, you only have 100 InkBottles to propel yourself around the screen with!

If you touch anything you'll end the game, but if you end things catastrophically you will also lose Squid Friends!

Space Squid: RC1

I like calling things Release Candidates because, though it has applied to be a candidate, it will not be the candidate. It has pre-emptively failed.

Anyway, BUILD 13.

I am really happy about this one. I put some instructions on the screen and even built a prototype level that acts as a neat little sandbox. The instructions are fairly easy: draw a vector with your mouse. The length is the strength. Things to try:
  • Beat the game as specified (touch the right, then left, wall)
  • Try it without losing any squid bits
  • Try it going fast
  • Try it going slow
  • Try tearing your squid apart completely (his head bits do seperate but is very hard to do)
  • Try knocking all the planets out of orbit (pro tip: hump the planet with your squid legs)
  • See how long you can drift without touching anything, not even the walls
I have some significant gameplay changes coming in the pipe that makes the game... much more a "game" than a toy. Stay tuned!

Tuesday, April 7, 2009

Nirvana for the Content

At the pub tonight I had enough beers that would normally place me firmly in the grips of "drunk." However, the quantity of food I devoured (well over average) counter-acted the results and placed me in the ultimate perspective of contentedness.

I did not feel dizzy or lightheaded; I did not feel any lack of judgement; I did not feel any dampening of my motor functions; I did not slur my speech. In fact, if I woke up feeling this way I would have no problem getting behind the wheel of a car. If it were for not one little side effect.

Everything we glance at, we analyze - we spot a painting, we note it's size and shape. We spot a bottle and we note in our head that is it brown and contains beer. We glance at people and silently assign names or pointers in a split second of scanning recognition. 

And I had lost all of these abilities.

I scanned the pub, the crowd, the things on my table, and I just saw shapes. The only things that concerned me where that who I was talking to and the pint in my hand. I had lost any ability to care for or note my surroundings.

The experience was in full force for around 10-15 minutes but quickly began tapering off to normality. I was really quite pleased with the experience and hope to have it again sometime!

Needless to say I did not touch the squids today. I am completely content with their progress from yesterday.

Incremental Updates

I was reading some old, old blog posts of mine (from last week) and thought I'd update a bit on what's going on now. I've had a lot of thoughts in the past week that I didn't think were blog-worthy.. but when summed ended up being quite overwhelming. Prepare yourself!

I've been working on the game for a total of 9 days now. During that time I have been maintaining my contract work, which is my full time job. I have also taken many, many breaks that probably accumulate up to several days of inactivity. Slacking, really. But I want everyone to know that my progress is so rapid it's self-inspiring, and making me more and more motivated. I've gone from a guy who just two weeks ago was considering hiring someone to write this game for me, to being the guy who is actually doing it... and pulling it off well.

Er... Well might not be the best word. I'm shooting to get my game up and running ASAP. My implementation might look slick, but my code is a complete hack job and is not at all up to my own standards. I completely intend to rewrite this game from scratch if and when it becomes popular and demands further development. My main mission here: getting the game out, and getting it out as soon as possible.

I think I'll send a shout-out right now to Phil Hassey, the author of Galcon. Knowing he wrote such a fun game in such a short time (48 hour game jam!) really inspired into doing something similar(ish).

In the past 9 days I've stumbled, quite accidentally, upon 2 gameplay ideas. I intend to make these my Game #2 and Game #3. I've also revised and re-revised the gameplay mechanics for SpaceSquid. Not quite settled on how exactly things will go down, but I'm getting very close to nailing things down.

A while back I said I used distance-joints on my planets. I'm such a doofus. The next day I looked at them, all pivoting around on their ultra short sticks like balloons on a really short tetherball rope. I immediately converted them (after learning about how) to Revolution Joints and nailed them down to an invisible static object that sits right behind the planets. Much more stable, and I was even able to add a small motor force to the planets so they will slowly spin. This will look much nicer once I have planet graphics.

I blogged earlier about the "Bullet" property that bodies can have. They work fine on larger objects, but when I apply them to smaller things (such as the squid tentacles and arms) they start jittering the simulation quite a bit. I've been forced to keep the smaller squid bits marked non-bullet, but I've instead converted all the planets to bullet objects, as well as the clubs on the end of the tentacles, and the squids upper mantle, as they will likely be travelling quickly. There will still be some clipping, especially between the squid arms and the tentacles, but they won't be noticeable once I get the joint destruction routines into place... *evil grin*

I decided on a scale for my game, too. I still do a lot of testing in full screen mode, which is probably a big mistake... (*quickly runs and tests it in a smaller window*) I'm lucky, it's still looking OK in the smaller size. Official viewport is now 700x500, which is 6 pixels wider than Fantastic Contraption. Suck it, Colin. I resized my game arena to fit these dimensions.

I think one of the biggest chunks of developing this into a real game will be level development. If this becomes somewhat fun and looks like a feasible long term project, my first mission will be a level editor. For now, it's just going to be whatever I can come up with. I have sketched out 5 basic level designs that I think will work out well. I made sure my code can handle all sorts of wacky things like microscopic black holes up to ultralight gas giants (helium gas of course!). I guess it doesn't help that right now the squid is roughly half the weight of the biggest planet.

A few days ago I found the game getting a bit too twitchy. I slowed down the timestep by half, so there is now twice as many physics calculations per second. It slowed down gameplay pleasantly and still provided those "big crunch" events as the squid collapses into a planet. As I increase planet densities I might slow this down again.

Motion Captured: Or, setting up tracing sucks.

I spent way, way too many hours today on getting some very simple things done. I had set myself a milestone, though, and by gum I would achieve it!

First, a shout out to my girl Aubrey who gave me a rundown on some fundamentals of Object-Oriented Programming that I had not quite picked up on. She also acted as a sounding board that really helped me pull through with a victory tonight.

Secondly, thanks to OfficiallyHaphazard for directing me on some simple vector things that I could have probably figured out myself if I hadn't had several beers. Also thanks to him for setting me up with Trace(). Good god programming with traces is so much nicer.

Speaking of Trace, I have a big beef. Actually, a list of them..
  • For trace() to do anything in your flash application you must first compile the application with debug mode turned on, which is off by default.
  • Finding out how to turn on debug mode is tremendously hard when you are using the Flex 3 SDK command-line jobby (and tremendously easy in retrospect).
  • You must also define two environment variables that aren't set by default in Windows Vista. Boy I love adding useless environment vars for a single application.
  • You must create, from scratch, your own configuration file. This file must be stored in your user directory. Wow, so convenient!
  • If you use Flash 8 or earlier, you can tell the config file where you'd like your tracelog to go. Flash 9 or later, it defaults to the oh-so-convenient c:\documents and settings\username\program data\roaming\macromedia\flash\logs\ . Woe betide the person who renames their documents-and-settings directory!
  • Googling how to do anything in Flash 3 SDK is impossible since "sdk" is such a generic term, and vastly more popular products "Flash 3 Builder" and "Flash 3 Framework" both experience all the same issues, but have different solutions.
  • Flash 2 SDK documentation is all on page 1 of the google results and Flash 3 SDK documentation is on page 4.
OK I think I'm done ranting now.

So today, I present you with a single build. Build #12. I was able to wrangle the code so that anywhere you draw on the screen, it will remember the force vector and apply it only to the squid. Hooray! This is going to be the basic gameplay element. Things will become more clear in the coming days as I solidify the complementing assets.

Build 12 is important to me though, because this is essentially it: This is the gameplay. I could call this the tech demo right now and call it quits... But I gave myself until the end of the month, which means I can turn it into a proper "game" with levels and a bit of an interface.

PS: Props x3 to OfficiallyHaphazard for finding the first ever bug. The unmapped key "d" will remove the squid's head (and therefore disable the mouse) for some reason. No idea why this is yet.

Sunday, April 5, 2009

The Making of a Space Squid

I spent the day making a somewhat realistic Squid object. I even researched some squid physiology to get the dimensions right. After my disasterous failure (in the last post), I went through several iterations:
  • Build 6 - with this build I finally got my spatial coordinates right.
  • Build 7 - this build is a further step where I made my squid with a retardedly huge head
  • Build 8 - my lil' guy is finally coming together and looking like a proper squid! I have his joints hooked up wrong but I'm pretty proud of him.
  • Build 9 - I fixed up the squids joints and made him affected by gravity.
  • Build 10 - shaped the head a little bit and prevents the arms from being affected by gravity. The long arms still are, just not the short ones.
  • Build 11 - changed weight distributions in the squid's body and placed a few new planet types.
A fairly productive day - even if it is just easy-peasy object building, it was a lot of fun and really renewed my enthusiasm for the project.

My next goal will be getting the interface running properly. I've never dealt with mouse/graphics interactions before so this is completely new territory, and quite scary.

Woops, Sorry Squiddie

In my latest build, I attempted to create a fully articulated squid that is affected by the world physics.

I knew when I set out that I wasn't quite sure of the spatial dimensions of my screen, and I was pretty confident it would be pretty messed up. And boy was I off.

I did my first compile after linking my squid all together, and as you can see, it resembles nothing like a squid. It appears to have half of its body outside of the visible area, and everything is spaced light years apart.

Looks like calamari for dinner tonight. Sorry, squiddie :(

Saturday, April 4, 2009

Tethered Planets

It took me much too long, but I was able to make an incremental build today that made me way too excited.

It's officially titled "Build #4." I figured out how to make some distance joints in Box2D and tethered my planets down. On the backend I have "Pin" objects and "Planet" objects with easily callable functions, for ease of level creation. I also have a very sparsely populated "BuildSquid" function which just draws a circle. Can't wait to make that a proper squid with waggling tentacles all over the place.

The goal of the game so far is to get the little squid ball from the left side of the screen to the right side of the screen. The next big deal I'll have to tackle is the control mechanism to allow you to do so. Right now you can just drag and drop him to the right side. I'll have to make it so you can set a launch vector and go from there.

I'm having some trouble deciding on a sense of scale. I'm coding all of this in a full screen flash window. Maybe I should decide on some dimensions early on and really nail down the size of my squid and planet objects.

Thursday, April 2, 2009

Research

I've been spending the last few days just researching - reading up on Flash forums and the Box2D common issues. I've learned quite a few things and have a better grip on how I'm going to implement this now.

One bug that Fantastic Contraption has always had, is the "Collision skipping." When an object moves too quickly, it will clip right through another object without triggering the collision detection. Box2D has a feature to prevent this - flagging your objects as "Bullets" will instead sweep the object and halt the simulation at the first collision intersection, then continue on with the new vector.

I imagine it reduces performance, as each collision requires a new step in the physics process, but my benchmarking tests on my game don't seem to have a large effect. I think I'll keep it in. :)