Friday, July 30, 2010

Work in Progress

Alright, this is pretty much what's already happening so I might as well save myself the trouble and play along with it. I've been using the blog to test out the new game I'm working on, as mentioned in the previous post, and instead of taking it down and re-upping it constantly, I'm just going to leave it up and let all who care to see check out the game in its developing stages. Check back every couple of hours and see if I've accomplished anything, if you like. Maybe I'll even post some updates on how the code is coming. I know, soooo exciting.

Update Log Entry #1, 7/31/2010: OH MY GOD, I HATE TRIG SO HARD RIGHT NOW

Update Log Entry #2, 7/31/2010: Rotational shooting is working. I don't know why, but I'm not gonna touch it.

Update Log Entry #3, 8/1/2010: Well, I basically rewrote the harpoon and little whale classes and all their movement and collision handlers about three times from scratch. I think my current implementation is a keeper, but the whales aren't moving correctly when they get hit. Why do I have the feeling that the solution involves more trig?

Update Log Entry #4, 8/1/2010: Nope! No trig! Turns out I'm just retarded, which is a mixed blessing in this case. Time to graft the Thumb-Man controls onto this game to get the player moving...

Update Log Entry #5, 8/1/2010: Yahoo! WASD controls now functional. Just don't fire a harpoon while you're facing left until I get that ironed out...

Update Log Entry #6, 8/1/2010: Wall collisions, quick-jumps, and level-dropping is all implemented, and I fixed the aiming system! Things are going smooth right now, time to call it a night.

Update Log Entry #7, 8/2/2010: I wasn't looking forward to transferring the game to a 550x530 window (as opposed to 550x1800) but it was surprisingly painless. The only thing that didn't transition so well is -- surprise, surprise -- the rotational aiming. Just need to patch that up, then I'm on to implementing the "bubble" functionality, and then the game is almost done!

nathan

[EDIT: Removed the game. It's now in a later post.]

Intermission

Ugh. Must... program...harder......

For my next programming project I've tackled something way more ambitious than that last "game", and I'm starting to feel like I bit off more than I can chew. I don't want to give away too much, but I'm essentially making a Bust-a-Move (aka Snood) variant. one of the things that is different is that the screen is really tall, to the extent that you'd have to scroll up the page in which the game is embedded while you're playing to keep up with your progression. I thought this would be a funny format for the blog, but some issues are coming up that seem to illustrate why nobody makes games in this way.

Let's just put it this way: your browser's Flash player is not exactly a PS3. There's a limit to the number of sprites that can be moving or even displayed on the screen each frame without massive slow-down. This is a problem because the way I'd designed it, the game started with a 37 by 14 array of bubbles to be busted, which the game has to iterate through and move each individual bubble for every frame of the animation. Right now, I see three possible fixes for this:
  • Instead of moving all the bubbles every frame, I can make a timer and move them down a row every couple of seconds. This is how it works in Bust-a-Move and Snood anyway. I'm afraid that this won't fix the lag problem, though, because the game will still have to display a ton of bubbles.
  • I can give up the dream and decrease the height of the game window, so that new content generates and disappears as you scroll up. D'oh.
  • I can try to make the cluster of bubbles one glacially moving monolithic sprite, and then use my two-dimensional array to store information about each part of the grid rather than storing an actual Object. This feels like the best solution to me, but also sounds like the hardest to implement.
 That's where I am right now. What should I do? Should I just give up the idea of an epically tall game? Would that be annoying? Or should I try the one-big-sprite fix? Help me!

And since I feel obligated to post content, here's the first game I designed in my class at Vassar. It makes the last thing I posted look like less of an achievement, but this one was made using a Flash game designing add on rather than from scratch. Some of it won't make sense outside of the context of the class, so sorry about that. The point of the game is that you can't beat it without "cheating." I'm not telling you how, though. That's the game part.

[Sorry! The game has been moved here: Wallhacker]

CONTROLS: Arrow keys to move, space bar to shoot.

Featuring music by artists including Big Black, Microdisney, Thinking Fellers Union Local 282, and Earth Wind and Fire. Enjoy!

nathan

Wednesday, July 28, 2010

The Physical Adventures of Thumb-Man In Sunshine Land




Woohoo! Above you will find the first fruits of my attempts at videogaming. Alright, it's modest. And the graphics are pretty rushed. And there isn't really an objective. In fact, it's really just a platformer physics engine, and even then the controls are kinda sluggish. But here's the cool part! You can click those little arrows in the upper-right corner to change the physics constants: gravity, land speed, jump speed, and the coefficients of friction in the air and on land. Just use the arrow keys to move the little dumpy thumb-guy. It's pretty self-explanatory.

AWESOME FEATURES!
  • The height of your jump depends on the duration you hold down the "up" button. Whoah, cool!
  • Real simulated physics includes a vague semblance of momentum! Ga-roovy!
  • Crouching increases your friction with the ground, sacrificing speed but increasing control. Duuuuuude!
I read somewhere that Miyamoto and his team made a level editor for Super Mario Galaxy 2 so that people on the art team could actually make levels of the game without doing any programming. I thought it might be cool to have a graphical, non-programming interface to test game mechanics and controls, which is where this miniature half-project originated. In other words, I'm lazy and want you to do my dirty work. Try tinkering with the variables and leave a message if you find a setting that feels particularly fluid. Crank air friction all the way down to .009 to give our hero Simon Belmont-esque realistic jump physics, or pump it way up to 1 to give him divine air control worthy of Jigglypuff himself!

Some technical notes of varying nerdliness:
  • Sorry about the arrow button controls. It would obviously be easier to just have a text entry field for each variable, but for some reason I didn't realize this until I had written an entire Class for the arrow buttons with a bunch of neat little bells and whistles, and now I'm too attached to it. I guess I can go back and change it if it's that bad... also, if you think one of the variables increments too much or too little with each click, message me and I'll fix the code.
  • Just to clarify, the friction values are coefficients for the character's speed, so lower number = more friction. The other values work the opposite. Bigger number = more gravity, etc.
  • Okay, this one's really nerdy: ActionScript is weird. For some reason, when I fed a global Number variable of the game's main class to an instance of the Up/Down Button class, it copied the variable's value and left the original unchanged. Okay, normal. But when I did the same with a TextField variable, it actually went and updated the original. So yeah, I'm not really sure how pointers work in this language. There is still much to learn.
Well, have fun.

nathan