Friday, July 31, 2009

Evil Weevils

Yesterday I got my game running and the install built. FTP shenanigans prevented upload and that kind of sucks, but it's mo better now and I'll finally have something for The Tester to do again. Turns out, if you change your FTP access password and forget all about it the site won't let you access all your sweet, delicious, cancer causing data. Sometimes I hate internet.
For shits and the occasional giggle I went ahead and ran the game to play the 3rd level in its entirety. I discovered some bugs. Crappy bugs. Bugs that I had thought I had fixed. Like, my leak is back for some reason. I think. The new laptop gets hot and the game slows down. I don't know if one thing is causing the other or what. I have no idea if it's a hardware issue or a software one, and the Vista OS (BS?) doesn't exactly make things easy.
Second, my collision engine does some odd nonsense and I don't know why. I can dash into walls sometimes and that does incredibly odd things that it shouldn't be fuggin doing. I have zero idea why though since I haven't bloody touched the collision engine since I built it. Ah, wait. I did. I put the floor collision before the wall collision in an attempt to fix a different bug (which still doesn't work by the way). I'll put it back.
Ah, right, and sometimes if you dash into a ledge, there will be a quick frame of being inside the ledge before it corrects itself.
The problem that gives me the urge to kill is a different collision bit that I thought was fixed. It has to do with stairs. Basically, The Thief has 4 collision boxes around him. One on his feet, one on his head and one on either side of him. When these boxes touch collision rectangles, they modify the position of the character. So the bottom one will make him stand on top of a rectangle if the bottom collision rectangle is touching it.
The trick is that the side rectangles do not go all the way to the floor. There is a gap of about 15 pixels or so. Hence, if a platform is only 10 pixels high, the side rectangles never touch it and never modify the character's position. When you walk over them, the bottom rectangle then triggers and you step up instead. If you make a series of these, you can build steps. That works great.
The problem comes when you jump on the stairs. If you hit the corner just right the floor eats you. Something odd is going on and then you disappear from the room like Andy Dufresne. My hypothesis is that is has to do with rectangle ordering. Basically, the engine runs through every single rectangle in a list, from top to bottom. This gives a certain priority to the earlier rectangles. If a side rectangle triggers before the floor, you'll never touch said floor. That would also cause it to work correctly in most situations, but not when jumping or when higher, logarithmic speeds are involved. So, possibly it's not a bug I can correct for. I instead have to build stairs from the bottom up and not the other way around. I'll give it a shot and see what I can come up with.

- In not game stuff, I'm still waiting around like an idiot for Cal State to let me know what the hells is going on. So, like a proactive little would-be student I called. The conversation went thus:
"Hi, my name's Eric and my student number is number number digit number number number digit. I can't sign up for orientation. What gives?"
"Ah, well you're not currently accepted."
"Okay, when will I know. Like today? Tomorrow?"
"Sometime before the first day of class."
"But are fees due the day you register? Else you are dropped, correct?"
"Yes."
"So how do I get loans and stuff all on the same day? That doesn't seem like that would give me a lot of time, now does it?"
*silence*
"Hello?"
"Just keep checking the site. We'll also send you an email to let you know."
"Maybe, possibly, conceviably, eventually."
What really gets me is that I'm a bloody Senior already. I've got a trully staggering amount of credits. If all credits were the same I'd have 4 degrees already. Provided I were accepted (again) then I wouldn't even be there that long, maybe a semester or two. Add to that the fact that apparently they are not accepting admissions for spring at all, and I'm a very unhappy panda about the how situation.

- In good non-game news, I finally got my diplomas and certificates in the mail. I now actually have the paper that says I'm awesome and a game artist, respectivley. This project of course the method for proving that I'm awesome as a game artist.

Wednesday, July 29, 2009

Horizon

The first half of the cliffs is done. Now I'm onto the second half for building and scripting. I'm confident it will be quicker, since yesterday I polished off the rest of the scripting in the second half. So about an hour was all it took. Having established methods for creating and dealing with the scripts, it's a lot easier that doing it from scratch all the time. Today I'll start getting the rest of the level put together. I'm feeling it's full steam ahead now, the only thing stopping me from the end, is me. We can do this.
I'll put together another install and get it to The Tester.

- In non game news I got around to play Battlefield Heroes. I got to put together a little British dude and pick a class and did the tutorial and was enjoying myself to a point. Planes fly like retarded toasters, but what can you do? The pictures of abstracted looking soldiers encouraged me to continue onward, the sweet gameplay juices were in there someplace, just ahead. "You can use your bearded British dude. Think of all the fun you'll have driving a tank." So I when ahead and jumped into a game. Somewhere between the lag, the fact that it was my first experience with the WASD control setup, and the fact (that I had forgotten) that everybody on the magic of internet is a dick, I died. I died a lot. Then I died again. One memorable death involved being run over by a tank shortly after respawn. I think it may have been driven by one of my own dudes.
That's about when it struck me, I'd rather play COD4 or Halo 3 to get my death match on. I'm not saying that I'm really good at either of those games (well, maybe Halo. On a good day I'm death in azure armor) but even when I die, I can see the polish on the experience. The lack of lag and my ability to wield a controller like a samurai wields a sword both also help. No, it's not quite fair to compare BHs to either of those games, since BH is free. But I can't help feeling that it's like eating at a restaurant you don't like - sure it's food, but you're thinking about eating something else the whole time.

Monday, July 27, 2009

Sometimes the World is Just Too Small

Back from Comic-Con. Since the only thing worse than watching live footage of a bunch of nerds get their geek on via live TV feed is having to listen to one of said nerds talking about all the fun they had, and their celebrity meetings/sightings, I won't.
Well, almost. Like I said way back here I searched out the Penny Arcade dudes to ask a single burning question, "No indie area for zero budget and student games? What the deuce?" To which Jerry (I refuse to use his online avatar's name) replied with, "No space actually. PAX fills up every square foot of the Convention Center there, otherwise we would. You can enter the PAX 10 though and win a booth." To which I replied, "Yeah, but there's no real guarantee there. Besides, my game is more of an olde skool affair and less of an art house game." To which he said, "Well, they're also building additions to the Convention Center up there, so maybe we could do something like that later."

-After doing some more thinking, I hate the drop down move on a philosophical level. No matter how I wrap my head around the concept, it always seems like more for the sake of more. It doesn't add to the core gameplay in a fundamental way nor add additional aspects. It is a feature that I can prune, and so, I did. As I keep hearing and thinking, "He's a Thief, not a Ninja."

-In other game news, after coming back after almost a week I still like the scripted bits and level designs for level 3. So, yay. Still need to have them tested though.

-Since I was away for a few days with nothing to think about, since TTT is done from story, gameplay, concept and programming point of view and I can't build assets in my brain I found my mind wandering back to the EP. Being free of the concept of structures and narrative in a real way, to not worry about context for actions and gameplay concepts is amazing. The ideas are there and they're magical. My brain is full to the brim with new ideas and some really odd experimental game concepts, things that could only work in a project like the EP. Things I'm very excited about. One of which follows the concept of Loss and Failure, wherein you can't win, only try to endure for as long as you can. I take that bitter pill and wrap it with some reflex based shooter candy to taste and the get it all tied up into a retro cool exterior and, at least in my head, NetHack style ASCII graphics. There's only a concept there, no story, the hints provided in the game towards a meaning or purpose. In a basic sense, I care less for it, since I'm all about that sweet, sweet shooter candy, but I still find my brain demanding context and I think this massages both halves of it.
The other thing is still in it's primordial life stages, growing, changing, beginning to live. I wanted to do something where the player is their own enemy and I wanted to do a game with some cute way to affect how time effects you and your environment. I've previously torn into Braid since I felt that the core platforming mechanics were too loose and the time bits an artifact of the levels themselves. I wanted to avoid that by making the time parts fundamental to the experience. So, I decided to combine the two concepts into one and the parts that are left are very exciting to me. In a way, one idea became the core gameplay of the other and vice versa. I've never seen anything like it before, so you'll have to excuse me if I play this one a little close to the vest for now. After all, I need to finish Thief first. At the end of the day, it'll always be my first born, and my favourite.

Wednesday, July 22, 2009

Dropping By

The Cliffs level is still in the same state that it was in previously, since, let's just say other stuff came up. On a basic level it had to do with this and the idea of moving. But I'll spare the details here. So no version for The Tester. Yet.
I did manage to steal some time and draw out some examples of puzzles for the Walls level, and they seem to be interesting to say the least, using portal rectangles to make quick changes and imply a 3 dimensionality. It may play like ass, but the theory is working I think.

What I did consider, rather at length, is a new attack for The Thief. Effectively, I'm thinking that if you can fall onto an enemy with enough force, you should be able to knock them out. An Ambush basically. The trick is that the enemy can't know you're there and you shouldn't be able to jump to do it. It kind of has to be a preplanned event. What I don't want is to be able to use the new wall jump, then double jump and be able to Drop an enemy. That's...cheap. So I'm thinking that if the player is high enough above an enemy, and falls into them, then it could be okay. Basically trigger a variable if you're running and untrigger it if you jump, so it only works if you run off a ledge. I may even have a prep animation play.
From a gameplay perspective, I think it'll speed it up and offer alternatives. After spending so much time getting the combat to not suck I'm still trying to force it into being the B feature - which it is. Offering an alternative to combat in certain situations (which I'll still have design control over) only seems like a positive thing. Granted, the bosses are all still game progression gates and the only key is being able to fence, but the more options I give a player, the better the illusion of choice is, then the better the game experience will be. At least, that's the theory. If I install and it's crap, then screw it.

-A right, for those of you at home reading (deluded much?) who may not have spent the hours studying game theory, a "Gate" in gameplay terms is a passable obstacle. They come from the idea that a gate is in a wall and with the right stuff, you can get through it. Old games sometimes had actual gates, but a Gate is anything that requires the player to overcome something to continue. There's a modern thought that says Gates should be transparent and shouldn't really offer too much of a challenge. I say that a Gate should be a test of the player's abilities and design around that. In other words, if the player can't get past the Captain boss, then the Skelingtons in the following level will ruin them. It's kind of an olde skool interpretation of the idea.
To go with Gates are the concept of Keys. Again, you could have an actual Gate and Key system, wherein you require a Key to pass a Gate, but I prefer to deal in metaphors here. When I think of a Key, I also consider skills to be keys, to be assets to the game itself. Like I said previously, having acquired the skills to get past a gate should mean that the player should be ready for the next part. That's one of the things I hated about Ninja Gaiden II, the Gates (bosses) all required skills that were not taught as part of standard gameplay.

- Ah right, the illusion of choice in games. I break it down for you, in games, you do not have a choice. There's no fuzzy logic. Since a game is, fundamentally a system of rules then the player's "choice" is already figured in advance. One could argue that games like GTA4 or Oblivion give you choice, but they really don't but instead serve up great illusion. In GTA you can't go inside buildings, you can't alter the story in a meaningful way, you can't tell Roman, "You lied to me, I'm going back to wherever it is I'm supposed to be from." You can steal whatever car you want and drive anywhere, as long as you don't leave the city.
I'm not saying that's a bad thing though. The illusion of choice means very real designer control. With control, you can do anything. As long as a designer can make it seem like the player is the one making the choices and being the prime mover, then the better. For every false choice given to the player, the player will think of what the other choice may have led to, even if if leads invariably to the same outcomes. The player will be happy though.
Do it badly though and show the player ugly truth behind the curtain and they can be quite upset. I think the rewards are worth it though.
To give another, really off the wall example, Halo 3's multiplayer. It smacks of control. The weapons are balanced just so, the spawn points controlled just so and gamplay tweaked perfectly. The false choice given to the player is in what they do and where they go. You shoot stuff and stuff shoots at you, there's no real choice in the matter. No matter what you do really, that game is meant to have bullets and lasers and crystal needles flying at people. The levels are all designed explicitly to encourage that. Players are given a wide variety of choices, but they all lead to the same place. The illusion of choice.

- Finally, I'll be trolling Comic-Con (I pronounce it "Komi-khan" like people in the Eastern Bloc)for the next 5 days. I'll be the big dude with the Magic card stuffed into my badge. If you see me, say hello and I'll take your picture. I may even post it.

Monday, July 20, 2009

Welcome to Boulder

I spent a good part of the weekend getting the scripting in the cliffs levels going and I about halfway. I'm finding the going to be tricky, mostly due to having to set up the scripting to be bulletproof and not having done gameplay scripting of this magnitude before. Case in point, I have a set piece involving a Raiders of the Lost Ark style boulder chase, except with a lot of terrain destruction and so on. I got the sequence working in about an hour, including the modification of the levels themselves. I then spent 2 hours getting the bloody thing working well enough to not be dicked with.

Basically, the player gets to a screen, triggers a scene and triggers the variables on the next screens to also do the chase sequence. However, weirdness then abounded. Basically, if you ran into the next screen and then right back, the boulder would then disappear like it was part of some crappy David Copperfield trick. So I went ahead and made a mod that said, "if the boulder thing is happening and you try that Vegas magic nonsense, death to you." So that's nice. But between that and resetting the variables like that, scripting is taking me longer than expected. But I should get going faster now that I have a consistent workflow established and working concepts to get it done. Also the fact that the rest of the game doesn't have anything like the set pieces in the cliff level is nice.
The idea is that I'm going to go ahead and get the other set piece on the first half all done by this weekend, and hopefully before so I can get a build to my very, very patient tester. Who can play it and tell me it's garbage and/or full of bugs. So it goes.

- I've also managed to fix some basic bugs in the collision system. Script wise what I've done is when I want something to go away, I change the height to zero. No height means no area and that should have meant no way to interact since you can't overlap 2 collision rectangles when one of them has no area and, from a math perspective, doesn't exist. At least, you would think so. Turns out you can though and if you hit a rectangle purged from the screen by a script the little character climbs up the nothing and then falls to something. Death. So that's much better now since I told the engine explicitly to only do that if the rectangles has a height and, you know, exists. As I think of it, that probably also optimized it a little, so it only checks for collision with rectangles that are there now.
I did something like it with the catch rectangles too. Odd considering. I'd previously remarked how, hypothetically, the corner contains all of the unused rectangles of every type, like some kind of singularity that stops you, kills you, teleports you and you could hang from. Now it just works by ignoring the Death rects without dimension or catch rectangles that live at 0,0. Good day(s).

Thursday, July 16, 2009

Panic Switch

I've got switches working great using a single variable and modifiable terrain. So I can have stuff move on a switch, change on command and stay that way afterwards. The basic code I've written is nice and portable and should be cool for almost everything else in the Cliff level and anything else in the game that needs switches like doors and stuff. The new code uses a single variable system unlike the more complex multiple variable system code that I've written before. Now I can have different stuff have different timings and wholly different triggers so I can have more than 1 on a page at the same time. So I'm liking that.
The problem that I've run into is what happens when you die. Not in a spiritual sense mind you, since there's no "Burn in Hell Forever" function, but in a mechanical one. Basically, if you are killed by a scripted event I need to reset the scripted event. It's not a huge issue, but the scripting and the Death() functions don't talk to each other. In other words, I can't have scripting run off this command:

If You Just Died...
Do Stuff
Reset Other Stuff
EndIf

There's no way to pass a variable from the Reaper Function to the scripting. Unless I rewrite it that is. I'm thinking that I need to add a bit to the Death Function that basically tells it to reset some stuff if the Story Progress variable is something specific. Then at least I'll have something that can be passed. Of course when we do some logic we get:
1) Trigger a switch->Die -> Reset Switch
2) Trigger a switch -> Do a different scripted event and update the StoryProgress variable -> Die -> Reset variables, but not switch
3) Trigger switch -> Do different scritped event -> Return to first screen, trigger different switch-> Die -> Reset Variables, but not the original switch or the one that killed you.

You see, in the 3rd place it's possible to have an event carry over from a previous life. Like some kind of polite poltergeist. Basically, I'm thinking about the screen that I've built yesterday. It has 2 triggered blocks that fall and could squish you. In the 3rd test case if you trigger the first one and then move on and do something else, the game will update the Story Progress variable. If you come back and trigger the other switch and it kills you, the Story Progress variable is no longer relevant to the event, so it would not reset the switch that killed you. In effect making an event from a previous relevant to your current endeavors. That's not good, at least not in this context. It's just sloppy scripting.
So, I'm thinking that I'll trigger stuff off screen sometimes. Basically, if you get past a scripted event without triggering all of the stuff in it, the next event should clean it up. So in the test case, if you do a different event and come back, the switches are all already triggered, even if you missed them. So if you die, no problem, since nothing you caused is being carried over. I may decide later that I hate it, but it works in the context of the level and as I think of it, nothing else in the game really has scripting like the cliffs do.
Thanks for the help internet!

-In non-dev crap I'm playing Tenchu: Shadow Assassins and finding I enjoy it quite a bit. The sword fighting is crap, so I avoid it at all costs. There's been some griping that the basic concept has changed. In previous games the areas were more free form and game the option to try different things. That was great but I frequently got the idea that I was doing something incorrectly and the stab wounds to prove it. TSA is a lot more linear and that's okay. Each encounter is now presented as a stealth puzzle to figure out and when I break somebodies, um, everything (with Wii-mote action!) I get the feeling that I'm smart and I like that feeling. Then I feel dumb at the end when it gives me a D grade. Apparently I'm a less than average ninja.

-Wow, 3 exclamation marks? Wait...one...two...hmm, just 2 I guess...Three! Ah, there it is.

Wednesday, July 15, 2009

200

Post 200 already. I'm a little impressed as I seriously thought I would get bored of this a long time ago. My rambling notwithstanding, I'm really quite keen on the progress that I've made and continue to make on this project, the herculean task of learning to crawl by running a marathon. The whole thing growing and changing in the last 2 years and now we have 200 posts to show us how we got there. Some of them useful, some silly, some sad, most of them show the how of it and hopefully provide some insight into the slightly warped mind of this indie developer. I've tried, even when I shouldn't, to be as brutally honest about the project and what I go through as possible, sometimes writing stuff that I may regret but keep anyway. Sharing it into the void of the internet providing some kind of carthasis and keeping this diary square. Moving on, to the 300th and the 1000th post, the projects may change, the ideas may evolve but I'll still be here, fighting the good fight and bringing the news from the front.

Ah, that was nice. I sometimes have to fight the urge to get philosophical and sometimes I lose that fight. It's the 200th post so I'll give myself a pass this time. In actual game development news, I was knocked out by some kind of hideous flu for most of the last week and all weekend. Let me rephrase that, my immune system was destroyed by some kind of alien virus and me along with it. Generally, I can shrug off the most hard hitting of horrors, my white blood cells superpowered like Bruce Banner and making with the Smash. This time, not so much. So I lost a weekend.
Like I said previously the first half of the cliffs level is all mapped out again and in the database so I can play it. Now I've run it a few dozen times and polished out some of the jagged parts that don't work just so. So now it's better than it was. The plan was to move on and get the whole thing into the system, but I'm reconsidering now. I have a good feeling about the level and I'm reasonably sure that it will be great, but I don't want to do even more work I may throw out. So I'm thinking that I'll go ahead and finish out the scripting on the first half as a proof of concept. It'll also provide good practice for the second half, which is more complex from a scripting perspective.
On a basic level, the scripting in the game falls into a few categories.
1) If you're touching this moving thing at a certain time, pain!
2) If you touch an invisible block, change the dimensions of blah.
3) When a timer gets to a certain place, change the dimensions of the thingie.
These basic pieces run all the traps, modifiable environs and other stuff like the scenes and dialog. The first half of the cliffs has 2 and 3 down and will provide a good place to test the concepts and see if there's anything in the next part that may require a redesign.

- Checkpoints are so getting redesigned. I die a lot and it's my own bloody game. Granted it's mostly because I rush to test stuff and get wasted by the stuff in the way, but really, that's a problem. So like I said before, yeah, that's going in. Soon.

- I did manage to work out a table with all of the different enemy attacks in the entire game. There are fewer than I thought there would be, but that's good news. You see, from a balance perspective, they need to have a curve to them. So guards are stupid and have only the most basic of single swings and from there I need to gradually increase the amount of attacks and the difficulty of the patterns up until the last boss, which has 6 different strings. The enemies in the middle and the bosses, have different amounts. The first boss, The Captain (who's in the demo=>) only has 2 attack strings. Later common enemies have more, but he's what a Designer would call a Gate - something that has to be passed through skill or rote to proceed. So beat him and you can handle the Skeletons in the next Stage. The bosses mostly work like that from a design standpoint. So it's good to have it on paper and soon, in the computer.

- On other news, I found another contest to enter. It has a deadline of 10-1. Which is possible, as I had planned on having the game (or at least the assets) all done by them, but that does squish everything a little bit. But I think we can do it. If The Thief's Tale is feature complete and playable at 10-1 then it'll be polished like a gem by 11-1 for IGF. So exciting.

Friday, July 10, 2009

Up

So now I've gotten halfway done with the Cliff Level again, and playing through it, I'm liking it quite a bit. Every few minutes you're doing something different from scrambling up unstable handholds to trying to outrun boulders to avoiding an environment as it falls apart around you. In contrast the last version had a lot of climbing, followed by more climbing and even though the little climbing animation is cute, it's not enough to support an entire level of play. So I'm very happy with it already.

I haven't gotten the scripting started for the level yet, since I want to lay the whole thing out first, but I have made a ton of notes on how it'll work. It's a lot of timers and triggers, and it should be reasonable and natural. What I worry about is sequence breaking. Hypothetically if a player were to get through an area without triggering a script, then the level will start to fail. Each script is dependent on the last one to have happened for it to work. So, even when I'm done scripting I have to go back in an play defense by setting up extra switches to make sure that my stuff happens in the right order no matter what.
I've also been thinking ahead to later levels and planned out traps. Stuff that moves and things that are damaging at certain points of their existence. Since each screen will only have a few of them, I should be able to reuse the scripts for a bunch of levels. If I had more foresight, I would have made them part of the engine and I would if I had more time. Maybe after IGF.
The traps are going to be tied in with the difficulty setting, and I will have a function for how they deal damage. Basically, on Easy or Normal, they just deal damage to you and stun you like an enemy attack. Granted, they may still knock you out of a move and kill you, but it won't kill you outright. Hard and Perfect mode though, the traps will all be lethal. That's why it's called Hard or Perfect mode.

I was having an idea about the Checkpoint System recently, especially after deciding that traps are going to be a common feature in the later stages. The Checkpoint isn't nearly forgiving enough, especially when there are so many things that kill you so hard. So I was thinking of changing it to something better. One of the problems is that the current system uses way points. So when you get to one, that's where you restart when you stop being alive. However, you conceivably could respawn someplace precarious and die again then respawn and die, again, like some kind of karmic reincarnation hell. I'm thinking that if the player is running or standing when they go to another screen it's clearly safe enough to be considered a checkpoint. Fall into that same screen, and it doesn't count. Lose all your lives and it's back to the beginning of the chapter though. That seems fair. I'll add that when I finish the cliffs.

- Early on in the project I had an idea that I wanted there to be a random level option for the game. I had read about NetHack and thought that it would be cool to have randomly generated levels, providing endless play. At the time I couldn't wrap my head around the algorithms and just figured that well polished and designed levels would be better, and I still do. Now it seems that Spelunky has beaten me to it, which is discouraging on the one hand, but at least now I know it's possible.
So yesterday I sat and figured out a method for generating random, yet winnable levels using the Thief Engine. The part I was stuck on was figuring out how to make sure that the critical path would eventually lead to the exit. The breakthrough came when I realized I had it backwards, the exit was at the end of the path. In other words, don't try to connect them, just run a path for as long as you want and make it as random as you want and stick the exit at the end when you're done.
With that, I think that if I had a large table, I could run a random path generator by going a random amount in a random direction and updating the cells that it crosses. With that done I would use some kind of voodoo to place the rectangles. I'm not sure how the voodoo would work yet though, as I only worked out the method, not the mathematic madness.
However, this isn't something that I would put into the IGF build. It's way too late for new kinds of content and features, but it's a very real possibility for the XBI version if it turns out not to suck. Doubly so considering that it would use about zero extra resources other than programmer time.

- The XBI version, or as I think in my head the Game of the Year Edition (it's good to have goals) I would like the following in it:
Story Game
Speed Run (Story Game w/ Story Scripting off)
Boss Rush
Chapter Select
Dungeon Mode
The Dungeon Mode of course being the random levels. I may also call it "ThiefHack" if I'm feeling cheeky that day. It won't be in the IGF version and probably neither will the Boss Rush.

Thursday, July 9, 2009

Spreading Numbers

I'm doing the Cliffs levels again with the basic outline that I described yesterday. It was my intention to make it smaller, but the new design is actually the same size as the last one, but with zero backtracking and with the intention of following the Bungie 30 Second Rule. The level is actually designed as a series of set pieces with the appropriate minor bits in between to link them. It does make the level seem just a little disjointed, but I okay with it. The fun being more important than what the levels look like on a macro level.
Which brings me to the title. When I design levels I first lay them all out using graph paper, an old holdover from m my DMing days. Then I run through the level with a pencil when I'm done to see how it plays and can generally tell if it's crap right off the bat. Sometimes, not so much, but generally if it works on paper it can work in the game. What I then do is build them in ThiefEd, and when I do that, I make sure to line up the platforms and walls, so there is a sense of internal consistency. The floor doesn't move suddenly and the walls don't go all stupid from one screen to the next. It's a necessary polish. To ensure it happens, I write it down on the map, so eventually my entire paper map is covered with little numbers spread from the beginning like a numeric plague. The sign of a complete map, at least to me.
The Cliff level, and the rest of them I assume will be, are also covered in little drawings, notes and semi-scripts describing how parts are going to work. It's chaos, but a kind that works for me. When I'm done with the Cliffs I'll take a picture and post it. Maybe.
Once I get the whole level built, then I'm going back in with the scripting. That shouldn't take too long (HA!).

-While working I discovered 2 bugs. The first is that if you Dash into a handhold, you'll dash though it and into the wall behind it for about a frame, then pop out to where you are supposed to be. Odd, but I think it's an order of operations issue, and by switching the order of the main wall collision and the ledges collision, it should work, or at least mask it.
I also found that ThiefEd runs like ass in Vista if I have the Object Animations running. So I commented out the function to get it to work in a manner that I like. I know it's because it isn't optimized in ThiefEd and so runs the animation for every object that could be there. So it runs all 30 and all the frames available (or at least is thinking about them) each cycle, which slow it considerably. I'll optimize it later and tell it to only run objects that are, you know, there.

Wednesday, July 8, 2009

Here We Go Again

The IGF just released their deadlines again. 11-1 is the day. 11-15 is it if my acceptance to Cal State comes though, again. Middle of September is the last day my ADA will be really available, so we need to be mostly done by then. Time, as always, is of the essence and in short supply. I'm feeling good though. I have 2 months to get it in the can, and then I'll have almost another 2 months to get it polished, feature complete and running like a well oiled machine. All in all, I'm feeling good about what we can do, especially now that the heavy lifting regarding the coding is through.
What I'm working with now is the content. Give it enough stuff to really showcase the mechanics and do some really cute crap. I'm thinking that moving forward, each level could introduce a different kind of play or variation on the basic concept. Sonic 2 did something like that. Each Zone had it own specific thing that it did, be it super speed, water, oil pipes or those rotten bouncing springs. Since the core gameplay was reasonably spartan, the designers made up for it with clever level design and thematic elements. Compare that to Super Mario, where each level is basically a variation of the same stuff, just more complex. I may regret this later, but I'm in with Sonic Team on this one.
Right then, the basic workouts go like this:
The Cliff level is designed around destructible environments with break away sections and some pretty heavy scripted events. The point here is to threaten instant death and make the level seem more frightful that it actually is. In the designs, the puzzles are actually pretty easy, they just don't give you all the parts in advance, while still being square*. So you may jump to a handhold, have the wall collapse around you and drop you down to a different, far more precarious, handhold. Basically, the concept here is evolving the puzzle.
The Wall level has been re-construed to be a maze with a front and back. Basically, you'll move outside and inside the walls, while keeping the same spacial orientation. In other words, a screen may have a doorway that leads to the other side. So if you're inside, you can jump through a cleverly applied Portal Rectangle to the outside and the puzzles will be designed to make use of that. I'm forcing the player to think in 3 dimensions here.
The Castle level is going to be designed with heavy use of scripted traps (like saws and spinning blades) and level switches and locked doors. Oh, and spikes, lots of spikes. It'll be designed to force a certain level of backtracking that works in a game like this. Besides, a two way puzzle gets more mileage. I've always felt that Warrior Within got a bad wrap when it did that so well. It's an open PoP game and all the puzzles are 2 directions. The others don't even try that because it is hard.
Finally, The Tower level is built around the concept of movement and danger. Large parts take place inside a giant clock (cause it's a tower, of course it's got a clock in it natch) with moving platforms and dangerous stuff. Other parts take place outside the Tower and force acrobatics and precision. While enemies crawl all over it. So it have traps like the Castle and inside out stuff like the Walls while also having a bunch of its own puzzle concepts that use moving walls and platforms with the constant threat of being squished.
Right then, with all the hard work out of the way (HA!) I'll get to the nice and easy part of building the levels now.

Speaking of the concept of "Square." It's a carny term and is usually proceeded by regular folk with the words "Fair and..." In carny terminology it means that the game is not rigged. I use it in the sense that the game is above board. I will never kill the player because of something that I didn't tell them. They should know in advance what's going on. So the traps in Stage 5 won't appear just as you're on them and the Cliffs will never give way and let you die outright. In other words, the game will not kill you. Only you and your lack of skill can kill you. It's square.

Tuesday, July 7, 2009

The Star Frog EP

I've come to a kind of realization. I'm finding that I want the next project I do to be, faster. I've been denying myself the immediate joy of a completed thing because I believe in this. Once this is over, I'm not sure that I want to dive right into another giant project. Maybe, I'm thinking, I want to do something smaller, more, personal.
So, the first thought I had was something, small. A small game that I could design and playtest and throw away if I hate it for whatever reason. Really get into some wild experimental crap. Not "art" as I've made my position on that clear, but certainly some stuff that does really odd things with the concept of play and the application of mechanics.
Yet, once I thought of that the completest in me asked, "So what's the point?" Further after reading the blog of another indie's who wrote, "Who would pay for this?" about their own game. Having played it, I don't know. It's not that it's lacking, it just has no context to support the concept of the thing. A larger game avoids that, it comes with built in context and inherit value. Smaller things lack that a little and that's a shame.
So, what I came up with is the idea of making a series of games and selling them, collectively, as a set, an album as it were. A short collection (for an EP) of maybe 4 or 5 games, all tied together by a common theme. It could be something really basic, but something to focus the work towards. So start with something really random, like Hope, Loss, Death, Love and see what kinds of games you can come up with, throw out the ones that fail and keep and polish the ones that work. When you're done, you're created a body of work that conceivably, stands on its own merits, while simultaneously allowing the space to do some really unique stuff. I mean, if 2 are solid, you can use the other 2 to try something new that people will play because it's part of a whole.
The cute bit about this, I think, is that you could come up with an idea and set it through concepting to prototype to game in a really quick amount of time. I'm looking forward to that. But first, back to those ever hateful cliffs.

Sunday, July 5, 2009

Killswitch / Once More With Feeling

Okay then. The hop is done and the different wall versions are done now too. Now you can jump from a wall, scramble up said wall and have an option to do either when you're on a ledge. I'm a little staggered by how much this opens up the movement a little bit. Things that, before, would have taken some extra work to even function work a lot better now. Now the player can focus purely on the puzzle at hand, not the small details that make it up. It enhances the flow without destroying the core gameplay. Instead, it makes it more accessible, so I'm happy with it.
To compensate a little for the new moves, I've made an adjustment to the kill distance that The Thief has to fall before something bad happens. It's a minor change, but he seems a little more fragile now. I'd done stuff that should have killed him and he walked away without a scratch. That's not the point. A 4 story fall should be lethal. I've also nixed a hack that I've been using. An Aerial Dash move previously stopped the fall pain from happening, now it doesn't. Basically if you fell, you could hit the dash at the last moment and survive. I mean, The Thief is good but he isn't that good. You can still avoid quite a bit with the double jump, but the hack is no more. I'd found that I could sequence break using the dash bug and get into trouble my falling into someplace I shouldn't be, and having no way to get back, since it was designed to be a one way switch.
Finally, I re-added the ability to kill an enemy. So I can once again kill them until they die from it. I think the technical term is stab. So that's something.

- The next bit of magic that I'm going to summon forth is control with a gamepad. I think, in some small way I'll have an overwhelming sense of coolness when I get that to work. The game so far has lived in my computer and I consider it to be a computer game. I don't have any kind of special place in my heart for a computer game, since I've built a few (or started a few anyway) previously. However, with a gamepad in my hand and pressing buttons and getting a result, then, in my mind at least, it's an honest to goodness video game. The difference? I grew up playing video games, and hearing about computer games. Yes, I know it's a stupid difference, and really, they're all computer games, but doing it with a control pad is different. It's like the difference between writing a blog and writing an article. They both writing but an article seems, more, substantial somehow. That's the next place to go.

...when I get that controller. Since it's still a few days away at the least, I'm getting back into the damn cliffs level, again. So, yeah, new strip down the old and build another. Why? Because I have to. I will rebuild the damn thing a dozen times if I have to because I want it to be good. Not just good enough, but good. So, yeah, smaller and heavily scripted. I will make fun happen there, and then I will create fun again. It's what I do god dammit.

Wednesday, July 1, 2009

Getting Up

Yesterday I got the new wall hop move worked out. Now when you jump straight up against a wall you do a bonus little hop at the top of the jump. It gives maybe an extra 30% or so. It's not much, but after running through the game with it on, it really works though. It doesn't break anything or make any of the puzzles odd, but it does make certain parts easier. It also seems to make the gameplay feel a little looser, a little less constrained, so I'm very happy with it.
It's set up so that at the top of the jump, if you did a straight jump, to hop and update the hop variable and the jump variable, so at the top of the second little jump, you still stick to the wall like a good little thief. Like I said, I'm quite happy with it.
While I was in there I realized that you couldn't Dash off of a wall. I mean, I would think that you should be able to push the Dash button while sticking and it should do something, right? So I went ahead and added that. The Dash from the wall isn't really much and not really enough to build a decent puzzle with, but it is something that would be expected and hey, I many figure something out to do with it.

- I also fixed an odd bug that made enemies and The Thief hit really hard. It turns out that the main game loop was running the functions for the combat collision twice. So that's better now.

-While I was thinking about the new wall hop (and the reason it isn't orange yet) I realized that I should be able to do it from a hanging ledge. In other words, I should be able to jump to a ledge and then do an upwards wall hop to a different ledge above me. Then, maybe do it again. It seemed to easy at first, but it could open up the puzzles so much. I wouldn't need to put ledges everywhere, I could have vertical surfaces and could use more space for the puzzles themselves. So, I'm going to add another function to the hanging ledges. If you jump, you'll do a wall hop upwards from the ledge. Probably with slightly more oomph than the regular hop. If you press away from the wall and jump you'll do the regular jump that it does now. I'll do that today and then get into designing and building the damn cliff level again.

- I'm still playing Mirror's Edge, probably because I hate myself. It's devolved into the ultimate trial and error game. I can run it, but everything has to be perfect and work just so. I die a lot. Then I try something different, and I die some more. For some reason the designers felt it was important to force me to fight, in first person, with my hands, against enemies with fuggin machine guns. What the deuce?
I get it, you worked hard on a combat system, so have I. But you know, I'm not planning on forcing any fights on the player and not giving them the ability to not suck. Hey, DICE, don't do that. The best enemies I've encountered so far, in the entire game are a group of evil runners that can do all the stuff I can do, but you know, evil. You know how to beat them? Run. That's the coolest part of the game so far. Getting machine gunned like one of Elliot Ness' goons for the 25th time, not so much.