Monday, October 27, 2008

Appleseed Prototype, Part 5

Well, friends, here is the last leg of this particular adventure (or is it!?). Once we've put everything together, we can play it and see it all working in unison!

First things first. In order to build a game, you must have a way to write the game. Some people build their games from scratch, engine and all. Other people build games using software others have created as a basis. I am certainly the latter, thankfully so, and the fact that other people have written this software allows me to create my own games without ever having to learn how to create the engine to go along with it. Bravo!

I use two different pieces of software to create games currently. Most of the games I have made or worked on have been in the delightful Adventure Game Studio. Aside from having excellent, well documented features and an excellent community to go along with it, it is free. This was a big 'selling' point when I was beginning to look at game building. Why pay for something when you can get it for free?

For this game (as well as Gherkin Surfin') I have used Clickteam's Multimedia Fusion 2, which costs money. Why not use AGS? Well, AGS is primarily designed for building an adventure game. Whilst some extremely clever people have used to build other forms of games, I am not one of these clever people, therefore I turn elsewhere. MMF2 is fantastic for a number of reasons - It's the easiest thing I've ever used in my whole life (relative to it's capabilities), it's powerful, it has been used to make a whole bunch of games that made me say "I want to do a game like that!" and it is customizable to the point where you can download extensions (similar to AGS modules) to help you build your game just right. The aforementioned extremely clever people can build these extensions with the wondrous and mystical arcane script known as C++. As before, I cannot :P.

Building a game in MMF2 is quite different to building one in AGS. Instead of typing all the functions in, MMF2 forces one to look through lists and select the appropriate objects and results. This makes it very quick to learn and intuitive, although sometimes if you wish to do something advanced you have to rely on things like trigonometry. For the purpose of Appleseed however, I did not.

I won't go ultra deep into the coding process because I am not very good at it (and also because this post is over 1000 words long anyway :P) and therefore will probably tell you wrong things, but the basic process is as follows:

1. Create your game world. Import graphics and assign them to their associated objects. Put each backdrop image in a separate layer and set up scrolling ratios. Put all items that the user interacts directly with (Player character, enemies, ground, blocks) in the topmost frame.
2. Set behaviours. Make blocks and ground into obstacles so the game knows what to do when the player character collides with them. Give enemies a movement path.
3. Set up player character movement (including camera scrolling). Set events for hitting an enemy and being hit by an enemy.
4. Test.
5. Fix insane amount of bugs.
6.Test.
7. Fix ridiculous amount of bugs.
8. Test.
9. Fix considerable number of bugs.
10 Test.
11. Fix remaining bugs.
12.Test.

As you can see, most of the time I spent on this game was fixing bugs and polishing. The initial setup for having a second character was so preposterously bad that the game would end for no apparent reason. The game wouldn't load the ground after everything was compiled. The goblins walked through walls. The player character got stuck in blocks. The player character got stuck on the edge of the screen. The player character would stop jumping 2-3 pixels before actually bumping into the block above her. The music wouldn't load. The music wouldn't load. The music still wouldn't load, dammit!! Oh, it's loading now. Wait, now it is not? Hmmm. The game won't compile!? But I compiled it yesterday!

Fixing most of these bugs was a fairly simple process, but I needed help with some of them. For the strange character getting stuck problem, a search of the Clickteam forums proved that this was common, and the solution was out there. After downloading an extension and spending an hour or so figuring out how to write custom movement where the player character follows an invisible 'detector object' without any spikies such as arms (whoever thought of this is a clever fellow, in my book) I had fixed a bunch of the remaining bugs. Getting the next 3 out took a search of the Clickteam FAQ on their website and 2 forum threads, in which people were very helpful.

Finally, the game was ready to compile. It is perfectly playable, with two very minor non crashing bugs, one of which is very rare. After testing more post compilation, the rare one crashes the game now. I am sorry if your game crashes when you hit a goblin as Appleseed, I honestly didn't think it'd be a problem. I am working on a fix for this (well, I plan to when I am less exhausted). The other one has been joined by another one which won't crash the game, but will look a little funny. Sorry about these as well. I hate releasing games with bugs.

Anyhow, after much thought and much more testing, Appleseed version 0.1 is ready for download. We've come a long way since the 'idea' phase, but we finally get to see it all in action. Still quite shaky as these bugs would indicate, but a successful (I hope) demonstration of my idea.

Get it here.

I honestly hope you like it. Oh, and if you have a pc gamepad, plug it in. It is three times better than playing the game with the keyboard!

All feedback very, very appreciated :)

Oh and a critical gameplay feature I stupidly forgot to note! You have to be stopped to attack as Applecore!

10 comments:

Bundeskanzler Krang said...

I've been playing it for some 10 minutes now with my trusty old Logitech Wingman, and I have to say: Too damn hard!

I'm a pretty okay player when it comes to Jump'n'Runs, but one-touch-death always puts me off a bit and doesn't encourage me to try harder. Also, Applecore didn't seem like much of an alleviation of my fear of goblins - the detection of her attack is too fiddly, in my opinion, and you can't strike while you're in the air, which makes the platform with the very fast goblin almost unbeatable.

I'll try it again and harder soon, that's just my unbiased and hopefully not too harsh feedback at first glance.

Bundeskanzler Krang said...

Oh, what do you know, I finished it! What makes the game very hard is the lack of aility to judge the speed of the goblins - they all look the same but the all walk at different speeds.

How about simply enforcing a different style of clothing for the goblins and thus indicating their speed, along with maybe four uniform speed levels? I am thinking of a "Oh no, it's one of the fast pink ones, watch out!" reactions here...

Ben304 said...

Oh damn, I forgot to mention one thing.

You have to be stopped in order to attack! (sorry, I'm quite tired and I guess the forgetting of this shows that :P)

Considering that most of my games people say "too easy" I thought I'd make it challenging - perhaps I went too far?

Most of the goblins can be jumped over (the one with the short platform I rarely kill because it is not worth it). The main point of the game is to avoid goblins, not to kill them :). I could make it easier, I guess, but I've played it so many times I guess I know the level like the back of my trousers.

Perhaps instead of a different colours thing I could do different enemies completely? Such as "Oh dear, it's a knight, I must be careful" or "Oh, it's just a goblin, this shouldn't be too hard"? I thought making them a different speed would add much needed difficulty - perhaps I was too worried that the game would be easy?

Thanks for the feedback, anyway :D

TheJBurger said...

I had the exact opposite experience as bundeskanzler. I thought it was too easy, and I never died once on my first try. (I guess your initial assumption about a needed difficulty curve was correct!)

I died intentionally to play as applecore, but I thought playing as applecore was actually harder. It was harder to judge the time of your swings with the varying movement speeds of the goblins in order to kill them. I thought it was much simpler just to jump over them.

The animation and jumping also appeared to be a bit in 'slo-motion.' This occasionally made it hard to time jumps and falls.

Graphics and sound were nice, as usual. :)

As a demo, I had fun, but it's very simple right now. I think you might need more gameplay mechanics for the concept to work better.

Ben304 said...

Thanks for trying it out, J :)

I agree that in this particular stage it is possibly harder to play as Applecore, perhaps with better level design I can reverse this. Incidentally, it took me about 18 seconds to get through the level as Appleseed and 19 to get through it as Applecore (using the attack function on perhaps half or a third of the goblins).

If it ran slow for you it might mean that the window resize thing is doing strange things. If you hit Alt+Enter once it should all go to normal speed (Without resizing). Perhaps this is why you found it easier?

Anyhow, I appreciate the comments and it's given me plenty to think on :).

TwinMoon said...

I was going to say it was incredibly easy, but hitting alt+enter fixed that.
Played at the right speed (;-) it's a very enjoyable game, and I think it's not too easy but also not too difficult.

This is really a fun game, even when it is only one level.
Although I'm still ambivalent about the die-and-get-promoted-thing; I'm not sure I would pick up a powerup if it meant I would get weaker.

If I may do some unasked-for betatesting:
- Not being able to strike while jumping make Applecore softcore, but JB already said that.
- When you hit the spacebar the game restarts (which is annoying when you acciden- tally touch it halfway through the level ;) )

TheJBurger said...

Ah. Alt+Enter fixed it. That was weird. Now it feels like it's too fast. :P I consistently die on about 2-3 goblins now.

Bundeskanzler Krang said...

There! I was really wondering how anybody could find this too easy and doubting my long standing jump'n'run operating experience.

paolo said...

"11. Fix remaining bugs."

Hm... would that it were so...

It's more like "11. Fix all remaining bugs you can find." Believe me, I fix bugs for a living and the to-do list only gets longer... The trouble is that you fix those last two bugs, then the game (or program) goes in to the beta-testing stage and the user comes back with twenty more.

Still, I don't want to be too negative. Even if after fixing an insane/ridiculous/considerable number of bugs there are still a few little ones knocking around, a program is still going to be in pretty good shape for all that bug-fixing, and users will thank you for it.

Ben304 said...

TwinMoon - Thanks for the compliments and critique, I appreciate these both equally :).

TheJBurger - Yep, another thing I stupidly forgot to mention in the post :/. I'm glad this resolved the issue and made the game much harder ;)

Sebastian - I, too, was concerned that someone should say "I finished this in one shot" when I still die playing the level after designing it and playing it several hundred times :D.

Paul - Very good point, and I agree entirely. The fact that there are still bugs in this game shows that point, and I actually spent a lot more time testing and fixing bugs for the game than I did drawing or building it, funnily enough. I do agree that bug fixing is entirely worth it; I don't want to release something that looks slapped together or cheap :)