Friday, September 6, 2013

GameMaker: Day 6 - Deja Vu

TL;DR

Started re-making a game (Samsara) that I recently made for Ludum Dare, but in GameMaker, in 2 days! Cut out a HUGE chunk of dev time already, can't wait to see the total savings.

What I Did Today

Today was day 1 out of 2 where I will be re-making my HTML5 game Samsara, my latest Ludum Dare entry, with GameMaker. There's not much more to say on that, I've been messing with GM for 5 days, and now it's time to see what I can do.

I'm already seeing great leaps in productivity. i started out by making an empty room, adding the player sprite, and setting up his movement. Everything was super streamlined. I remember getting everything setup with my original entry being such a hassle. 

After that, I changed the snow particle emitter from an earlier example to go from right to left, removed the wobble, and used circles (disks) instead of the snow texture. This created the scrolling star background, but the stars are completely random in size and speed, unlike a static image that scrolls. It gives the game a ton of depth, and really makes the look. Later I made the particle emitter persistent, so it stays between room changes, and placed it on the title menu, so the background never stops or resets from the title screen to being in-game.Its the little things like this that people won't always obviously notice, but would definitely miss if it wasn't there. Anywhere you can add subtle things like that, do it.

Enemies are extremely stupid AI-wise right now, there are 3 that were manually placed just off the screen, and all they do is fly right and shoot constantly, but they'll be a tad smarter by tomorrow night. I also want to make an enemy-spawning object tomorrow, so that way they keep showing up until the user loses/dies.

Added in shooting next, all I had to do was throw a direction of either 0 degrees (right), or 180 degrees (left), give them some speed, and I could create them to my hearts content. I made it so they automatically remove themselves on 2 events, either going outside the bounds of the room, or colliding with a person of the other faction. When each ship collides with a bullet of the other factions, they subtract 1 health from themselves, and the enemies can take 2 hits, while you can take 3. 

Then I threw the title screen in, made an object with no sprite to draw all the title graphics (with custom fonts!), and another object with no sprite to wait for keyboard input to move to the next screen. 

From here all I added the character's ability to draw his UI, which for now is just his health counter, and I was done for the day. I clocked in at just over 2 hours. That's right 2 hours, and I'm just over halfway done with remaking a game that originally took me 48 hours to make. 

Holy. Montana.

W, A, S, D, to move, and space to shoot!

Here are some screenshots



Total coding time was around 2 - 2.5 hours.

Source Code

The source code/GM Project file is zipped and available HERE, from my website.

Conclusion

I'm floored. I've cut roughly 7-8 hours off this development cycle already. I did more today, in 2 hours, than I did during the first day of the LD competition, in about 10 hours. THAT is progress. It should be noted that you can't count all of the 7-8 hours I've saved, as I already have all of the game designed, I just have to code it. So maybe 6-ish hours of savings. Still incredible!

I saved the single hardest feature, the 'clone' ship, for last. The reasoning is that I relied heavily on custom objects and arrays in the JavaScript implementation. This is one area where I realize some of the disdain for GameMaker Language, it does data structures differently than every other programming language I've seen. But I'll power through tomorrow, and have an awesome product at the end to boot!

See you guys tomorrow, for the epic conclusion!

No comments:

Post a Comment