Friday, November 28, 2008

http://www.brainminute.com/continentaldrift/cd7.swf

The latest Continental Drift rev

Sunday, October 5, 2008

I tried to tell a joke, and all I got was a t-shirt.

Atlanta's new game developer convention, SIEGE, was this weekend. I didn't speak like last year, but I went to some surprisingly good panels. Conference panels are a hit or miss affair - good panels are often developers talking about specifics of their day-to-day creative work ("Audio roundtable", "Concept art"). The worst tend to be people who are not working developers discussing how they think things should be ("Are Games Art?", "Interactive Games as Social Media"). Those panels just make me think, as medieval Squidward says, "Everyone be-eth a critic." Anyway, it's always good to go to conferences just to meet people, and it's cool that Atlanta has a conference at all.

So, back to my joke. Last year, the convention had an art contest based on a prompt, and nobody entered. This year, the contest was to develop an entire working game based on a prompt. Now, way fewer people can make a working game than can draw a picture (no offense, artists, I'm not talking about doing it well, just doing it at all.) Furthermore, the contest was announced Friday. So I figure it's 80% certain no one is entering. The joke would be to bang out a bad but working flash game Saturday night, walk in Sunday, collect the prize T-shirt and everyone would have a good laugh. Worst case, somebody like me has the same idea, and I get to know a like-minded programmer.

I spent five hours Saturday night, and another five Sunday morning banging out a sort of a game based on the prompt "The Lab Experiment Goes Awry." Here's the game, such as it is:

http://www.brainminute.com/LHC/LHCLoader.swf


Well, long story short, it fell flat.

First: Yes, I was the only person to make a game. But I was not counting on two teams of bleary-eyed students who had worked for 72 hours straight, both trying build some kind of Unreal 3 level. Neither had much to show for it, and were still feverishly typing. Well, I couldn't exactly say "I should win no matter how bad my game is because I'm the only person here with an actual game as opposed to one fourth of an Unreal level still in the editor", so I was kind of stuck. Don't get me wrong, what they had represented a lot of good effort. It's just that it didn't work with my vision of breezily walking in and having the only entry. Have you ever gone to a local Magic (the card game) tournament and it's all kids? And then you either win and feel like a jerk, or worse, you lose and feel like a doofus? It was kind of like that.

Second, there weren't any judges. People just wandered by during a break in the wrap-up meeting, so I had to stand there like it was my eighth grade science project (second place in the county, 1986, thanks).

Third, my laptop sucks, and the contest was moved up an hour, so I didn't have time to beg one off a friend, so the framerate was bad. Nothing turns cute into stupid faster than a bad framerate.

So the joke was doomed from the outset, but that's ok, because the game didn't come together like I'd hoped, anyway. What's funny is that I could have told me why it wasn't going to come together before I even started, because I know: "Don't try to do two new things with no time." The most rookie of rookie errors. Indeed, I was counting on the fact that all programmers who are capable of finishing a game in a day also know that a day isn't enough time to finish a game, if you follow me. But instead I fell into my own trap. Why did I do that? I dunno.


The two new things:

First, I was trying for some dark humor by observing that if the Large Hadron Collider were to create a black hole, the implications are so bad, that it strains normal ethics to the edge of absurdity. But getting anything more complicated than "get the bad guy" across in a game is new to me, and requires finesse, timing -- and time.

Second, I tried a new control system. It's kind of a Tempest-plus thing where the controls move you clockwise and counter clockwise, and you shoot into the middle. But in ten hours I was barely able to get the math right, much less add the kind of rework, polish, feedback, and coherent instructions required for that to work.


Oh, well. It was fun, and has a few good ideas, and I'm kind of proud of it in a way. My Flash skills are very raw, and it was nice to just plow through something, avoiding all the things I don't know how to do, and heedlessly trampling good programming practices. It's not often my typing speed gets to be the gating factor to my productivity.

Oh, one more thing. The "LHC Rap" is totally awesome. Using it in the game, I'm risking a James Agee - Walker Evans kind of thing. You know, when you read "Let Us Now Praise Famous Men", and you might have thought it was OK, but Walker Evans' photos in the middle are so much better that they cross media and genre and make you realize the book itself is kind of stupid.

Sunday, August 10, 2008

Thanks to everybody who has tried the rough draft and told me what they think; I've learned a lot. The main things I've learned are:

-Breaking the game up into levels works.

-Mouse controls are unintuitive when a player needs to quickly react to an ogre attack.

-No one really knows about or tries country linking.

-It's fun, but not super fun.

Response has been favorable enough that I'm going to stick with this general structure (levels, ogres, et al), but it's clear that it needs a lot of work. People also had several good ideas, and I have some of my own I'm going to try. I'm going to add some of the easier stuff and shoot for posting an update next weekend.

Friday, August 8, 2008

I posted a rough draft of my game on my server. It's got a looong way to go, but it's kind of a complete idea, so I'm posting it.

Above is just a screenshot, not the game. I'll send you the link to the real thing, but I don't think I want to link to it here yet, because I don't want this early draft found by a search engine or something. Just send me an email or ask in the comments here if I haven't already pressed it onto you.

Please give me feedback. It's not super fun yet, but I feel like it has the seed of fun if I can just figure it out...

Monday, June 30, 2008

This little test app shows the Tweener library for moving bits around. Each dog moves using a different easing method.



This swf comes with the Tweener doc, and shows the available easing functions. You can click each curve to see how it will move.


The Tweener library itself is super simple, this video tutorial shows how to use it. The trickiest part is that the place in FlashCS3 that you specify the locations of external class libraies is hidden in the basement with a Beware of the Leopard sign.

The global path list is at:
Edit->Preferences->ActionScript->ActionScript 3.0->Classpaths.

The per project classpath is at:
fla properties->Publish:Settings->ActionScript Version 3.0 Settings->Classpath.

I always use the global list. Much simpler that way.

There are several good AS3 tutorials here, which I found while trying to figure out sound. Strangely, I had a lot of trouble finding material on sound in AS3 until I found that site.

Monday, June 9, 2008

I'm setting up a site on my server. I toyed with using PHP and MySQL, but in the end went with Microsoft stuff. I don't have much time, so easy-to-learn is critical. And I'm already paying an extra four bucks a month to use Windows 2003 Server, so I might as well go all the way.

IIS 6.0 was already on the server, so first I installed asp.net 3.5. Then in IIS I set Brainminute.com to use asp.net 2.0+ (as explained here). Finally I replaced Inetpub/vhosts/brainminute.com/httpdocs/index.html with a placeholder default.aspx page that I FTPed up using smartFTP.

Next I installed SQL Server Express (Both the DB and the Management Studio). I chose 'Windows Authentication mode' for loggin on, but I don't really understand what that means.

All that sounds easy, but somehow it took me days to figure out and set up. But now it's installed, along with smartfoxserver, and I'm good to go. I'm working through various asp.net tutorials and sql server tutorials, and in the next couple of days I should have a basic brainminute.com up to start playing around with.

Wednesday, May 28, 2008

More good podcasts to listen to while cleaning the kitchen:

Two bloggers I read, Joel Spolsky and Jeff Atwood, have a series of podcasts about the ongoing process of building their joint venture website. The good part is that they don't know each other very well, and don't agree about a lot of stuff.

Clay Shirky sums up his book "Here Comes Everybody". Short version: the internet is so good for organizing communities, it's almost automatic.

The developers of a neat flash game, Iron Dukes, on developing the game

When I haven't found specific podcasts to listen to, I fall back on these series:

Dot Net Rocks a very frequent podcast series on net development. A bit hit or miss, but lots to choose from.

This week in tech is another decent and frequently updated podcast. However, I don't care about tech that's not immediately relevant to my projects, so this sub category of the series on free and opensource software is the best

And these three podcasts I recently found, but haven't tried out:
Indie Game Development podcast series
And this web development series.
And maybe this web development series.
I got a second monitor, a 22" Monitor with a 1650 x 1050 native resolution. This is the perfect size to sit beside my current 19" monitor running at 1280x1024, since both are 12" high and within 25 pixels of the same pixel height.

I figure my productivity will double.

Wednesday, May 21, 2008

I decided to use SQL Server instead of MySQL. It's just as free (for small outfits like me), has a nice GUI, hand as a bit better organized support and instruction (like the videos from last post). Most importantly, it's what we use at work, so getting familiar with it is a twofer.

Monday, May 19, 2008

Headfirst SQL is very disappointing. But as a pedagogical example of what not to do, it was interesting. I understand that I'm not the target audience for the book, since I've got a grasp of the subject already. But I think a true beginner would get even less out of the book than I did.

To give the book a fair shake, I put myself in its hands, and worked through the book back to front as it recommended. Maybe sometime I'll write a long review with examples, but for now I'll just say the problems were in four categories:

1. The book takes fully 300 of its 500 pages to cover very simple single table SQL commands like basic INSERT and SELECT. It creates a false impression of complexity by dwelling on syntax minutia and unrealistic examples. After 300 pages the beginner won't even realize he's learned almost nothing of what's interesting about SQL, namely JOINS, which get short shrift.

2. The book can't decide whether to cover database theory, and the vacillation clutters and confuses the discussion.

3. Many errors in the examples.

4. The frequent pencil and paper questions and quizzes, a great idea in theory, are badly misapplied as pointless syntax drills.

A much better intro to building databases is this series of free tutorial videos on using SQL Server Express. It starts with the question "Why not just use a spreadsheet, or better yet, notepad to store your data?" and builds from there. Solid stuff.

Monday, May 12, 2008

I heard two good podcasts while cleaning the kitchen last week:

Guido van Rossum, the inventor of Python. You can write plugins for SmartFoxServer in Python, so I'm going to try it out.

The guy who invented Scrum. I like some of the pillars of scrum:

-I like cross functional teams.
-I like 'sprints' of a few weeks resulting in a visible deliverable.
-I like that the deliverable must be completely done.
-I love that the team is left completely alone during the sprint.
-I dislike the daily team meeting.

Well, I like it in theory. I've been on a few teams that tried to use scrum, and every time, all the good pillars quickly wash away in the ebb and flow of development. The only part that sticks is the damn daily team meeting. Worse, without rest of scrum, the meeting goes from pointless to counterproductive, as people over-focus on small daily tasks at the expense of the big picture.

I'd give scrum another shot if I had the chance, though.

In CS3 news, remember the maddening problem I had with the Debug Console? The same is true of the Variable Window. You have to have the Variable Window up when you begin the Debug Session, or else it doesn't get initialized correctly and won't work.

Sunday, May 11, 2008

I installed MySQL at home and on my server (which was easy) and then bought Head First SQL. I once built databases for a living, but that was ten years ago, and I was using Microsoft Access, which automates a lot of the SQLy stuff. So the principles stuck but the details haven't.
If there hadn't been a Head First book, I wouldn't have bought anything; paper books on particular technologies mostly suck. But in this case, the Head-First books have an explicit educational philosophy that makes for very good instruction, plus you can critique the book's execution of the pedagogy as you read. Two for one! For Dummies books used to offer similar quality, but they've slid.

Wednesday, April 16, 2008

Again, nothing to do with flash, but if you use regular expressions, but not enough to have the syntax on the tip of your tongue, this is really neat:

http://gskinner.com/RegExr/

Tuesday, April 8, 2008

I downloaded and played around with SmartFoxServer. They have a neat demo game. Or rather, it would be really neat, except they don't do any of the networking tricks that make online games bearable, so the controls are extremely annoying.

Here are a couple of good write ups of techniques first person shooters use.

A good write up of Quake 3 networking.

A good write up of Source Engine networking.

Sunday, April 6, 2008

It's time to put my flash stuff into proper source control. There are three pretty good options that I've used before. Microsoft's SourceSafe is already on my computer (legally, I think), but it's kind of famously bad. Subversion is open source. Perforce is good and doesn't have a licensing fee for the first two users.

I went with Subversion once I figured out first that you don't need to run a server to use Subversion on just one machine. Also, the app TortoiseSVN integrates Subversion with Windows Explorer nicely.

It took a few hours of fiddling around to get my repository the way I want it, but now it's all set up. C:\svn is the repository, and C:\trunk is my working folder (the little check marks by the files tells you it's working.)

There's a good free O'Reilly book on Subversion, but really the TortoiseSVN documentation is a better read and includes everything I need to know about Subversion for now.

Monday, November 5, 2007

I can't figure out how to save flash file embedded in a webpage. The only thing I can think of is to create a link to the .swf file, then doing a 'save target as' like so:

http://www.brainminute.com/Bounce.swf

http://www.brainminute.com/BrainarooFontTest.swf

http://www.stampedegames.com-a.googlepages.com/progress1b.swf

Tuesday, October 23, 2007

I've fallen into a Team Fortress 2 vortex.


It's so very good. Also, Portal.

Monday, October 8, 2007

Fun with physics.

One presentation at SiegeCon was "How to build a flash game in 45 minutes", and the presenter built Breakout during the presentation. It was targeted mostly at the students at the con, but since it beat my own 200 hour estimate by 199.25 hours, I went.

Tonight, I tried to duplicate the feat, but failed in the 45 minute goal because I got impatient with my own off-the-cuff physics, and decided to look into APE, an open source Actionscript physics library.

I got APE, and converted the game objects to APE physics objects in an hour or two. I was stymied at first because APE's current release, v0.45, doesn't generate events on collisions. This made the actual breaking-out part of the game problematic. Luckily, I discovered after a bit of poking around that the latest version in the code repository (it uses googlecode.com), does support collision events, and it's pretty stable.

So I switched to the latest code, and here is the result. It's crude, and it took four hours -- though to be fair I was watching an incredible Monday Night Football game at the same time.




APE is pretty neat, though it still has lots of quirks. For example, collisions caused when you forcibly move an object (like dragging the paddle with the mouse) can be weirdly sticky and wrong. Try whacking the ball with the paddle to see what I mean. It also seems particularly susceptible to objects passing through each other when velocity is high.

I might spend an evening or two turning it into a real game with art and levels and stuff. Just cause.

Sunday, October 7, 2007

I went to SiegeCon this weekend, Atlanta's new game developer's convention. I was on the "Developing an MMO" panel, and it went pretty well I think. I met a lot of local game developers, including some flash guys, which was fun.

(FWIW: The SiegeCon site says I was a "lead programmer" on City of Heroes; I wasn't. The writer meant core programmer or something, but lead was a specific job title at Cryptic.)

Monday, October 1, 2007

I want my own font for the game. I could use standard fonts, but that's boring. I could license a font, but that costs money.

Font-making is an art and science of its own, so I might be better off with something off the shelf. On the other hand, the hand-lettered look I want also happens to be the easiest to make.

Here's my first attempt. Yes, it's terrible, but I kind of like it. I used FontCreator, an application for making fonts that's free for thirty days. I think I'll stick with it and try to make it better.