Jan 29, 2010

After twiddling a few days with the animated ragdoll / biped I decided the whole thing simply is not worth it. I managed to create a controller which is able to stay pretty stable, walk on even terrain, turn around and recover from falls from low heights. But that's possible only when it's run on a decent computer. As soon as the fps drops below say 20 it falls on it's nose. The approach I used was very similar to Simbicon. There clearly would have been some aesthetical benefits from the system and it would have made the gameplay feel more dynamic. If it had worked. There are way too many problems that would take too much time to solve. It would be totally game-breaking if the player had to all the time focus on keeping the characters from falling.

I'm still considering using the ragdoll system only for animation and making the actual movements based on simplified but still physically simulated objects. That would allow for seamless and dynamic animations. The player would still be able to physically interact with the world and it's objects. The main disadvantage would be that the animations weren't as dynamic as they could be but it's hard to say if that really is an actual disadvantage. What matters more is that the player can focus on the game instead of being constantly disturbed by unresponsive characters falling over. If even that wouldn't work I'd stay with the old pre-rendered graphics and just polish them. Apart from character animations there are things much more important that also need to be done.

When Things Go Wrong

Ragdoll IK facepalm

I made a tool to easily create animations for ragdolls. The following sequence is a preview of what is coming:

However there's a problem. How should the characters be rotated when they turn 180° around? They are simulated in 2d which is the main problem. It would be pretty easy to simply mirrorize the pose but the picture below illustrates a problem coming from that approach:


The main idea of making the characters completely physically simulated is to make them act according to that. A hand stuck inside a concrete wall isn't too nice.

Another approach would be to morph the character to the opposite side by rotating the limbs towards their angles in the flipped pose. When a limb was halfway it's rotation the graphics and rotation constraints would be flipped around. It'd be quite complex and would probably cause other problems.

Any other ideas?

Jan 22, 2010

While fine-tuning the character movement and other related stuff I found some very nonsense code related to ragdolls. I replaced it with something not so stupid and suddenly there could be at least 4x more ragdolls on the screen with no frame skipping. The slowest part of the code is actually the ragdoll creation which is pretty hard to optimize.

To simplify things the alive characters are currently simulated as rectangles which obviously makes some things unrealistic. Realism isn't my main goal but sometimes it can make games much more enjoyable. At the moment I'm seriously thinking about making characters *completely* physics based (read: animated ragdolls). That would be something really cool but also very time consuming and hard to create. It could also probably turn out completely hilarious:

Another concern is the fact that as long as our computers are what they are there's no way to ensure that a complex physical simulation runs the same way  every time it's being run, even on the same computer. That would be a big problem in multiplayer and likely to make it totally unplayable. There are techniques to sync physical simulations over network but.. http://gafferongames.com/game-physics/networked-physics/ ..For multiplayer I'd probably stay with the old movement/animation system.

Animated ragdolls are something I got to try. Just my words of warning: don't expect anything yet..

Jan 19, 2010

I thought the game would enjoy some speed benefits from the new character movement code but I newer knew the code would be ~3 times faster. It still needs some polishing but I can already see tons of new puzzle ideas coming.

Jan 15, 2010

Got bored of fixing glitches with duct tape. I'm rewriting the character physics in The Swapper to use a real physics engine.

Vram optimization

Following just boring tech nonsense about a very simple thing that makes things simpler.
The Swapper is a game with many lights. Even a small area involving one or two puzzles can contain up to 20 static lightsources. Rendering lights is a math-heavy progress so the static lights are rendered only once to a "surface" in the graphics memory. And each and every light takes lots of memory.

Previously that would have meant that it is impossible to create heavily lit big maps as the lights eventually and pretty soon would have taken all the memory in the graphics card. That's no longer a problem as the lights are removed from the memory as soon as they get outside the screen bounds. When a lights enters the players field of view it's again rendered into the graphics memory.
I'm also thinking about other similar optimizations.

Whoa! That means big maps and lots of light!

IGF feedback

Even though I've not posted anything here for a while the development is still in progress. I've just mostly been doing boring stuff (like data validation, modding support, level editor, polishing) many players never really even directly notice (and been a bit lazy, it's been a holiday after all)..

However The Swapper was submitted to the Indie Games Festival a few months back. Unfortunately and a bit expectedly the game didn't make it to the finals. The submitted builds were basically very rough, mostly presenting the basic gameplay. Still, even in this form IGF was a very interesting experience in it's overall and the received support and criticism surely helps crafting the game. Thanks to the submission The Swapper also got featured on Kotaku.

Today I received the judge feedback which is below completely uncensored (at least by me). If you read it just be sure to take into consideration that the game was and is still very much unfinished. There are some sentences that could be considered spoilers but they mostly don't really matter as they are all about a prototype/early beta. I've also placed some notes among the feedback.

The Swapper scored best in: Game Design
And scored worst in: Visual Art
^ I actually thought the worst score would have been in Audio as there were only three different sound assets at that time. It seems quality matters more than quantity. Anyway, both the graphics and audio were very minimalistic.
I wish this had been slightly more advanced before being entered into the competition, as it feels a little rough right now. However, it has great aesthetic sense, both visually and aurally, along with decent checkpointing, and a concept which I feel was genuinely interesting. I was shocked the first time one of my clones died, and the ability to generate an emotional response there was noteworthy (although I don't doubt as you continued to play you would become inured to this, much as there's a world of difference between slaying the first colossus in Shadow of the Colossus and slaying the tenth - you quickly don't care).
It still needs some work, I think - blind testing is recommended. I got to the "Ledges are to be hanged from" (I think you mean *hung* there) and got stuck. Talking to another judge, it used to have a hint here that the swap beam can penetrate a short distance into red light when the torch is on - the player needs both these pieces of information at this point in order to proceed!
^ This was the part in which all my friends betatesting the game also got stuck. It's probably presented way too early in the game.
However, I am nominating The Swapper for the Nuovo Award - it's the only game I saw in this first round that I thought was generally pushing the form in an interesting an artistic direction. Best of luck in the competition!
The Swapper was creepy and effective by the end (managed to get through all ten or so levels), but the level five puzzle was a little rough before it got creepy, which hampered the enjoyment a bit (I noticed the hint on that one changed between versions). It was funny and disturbing to see that you could have hundreds of clones die without removing a red outline, and that sometimes death was necessary (I think) to solve puzzles.
^ Again he was talking about the same puzzle. 
The graphics are okay, maybe just a tad too transparent and hard to see at times. The music was fun -- especially the up and down of losing and creating clones.
There are some distracting issues -- sometimes clones get stuck on top of each or stuck on boxes and can't be moved, which shouldn't happen. It would be better just to let clones walk by each other than letting them get totally caught up like that.
^ Yes there was a bug that made them sometimes stuck on the boxes but the clones can't get stuck in each other. That's impossible. They don't collide with each other. Maybe he meant the overlapping clones which seem almost like they're one.
I loved this game. It brings together a lot of neat ideas in a way that makes the game feel less like a brain twister and more like an action game.
^ Interesting :)
Wow! I was pleasantly surprised by your game. It kind of has the same brainf*cking quality as Portal. Which is why it's a shame that it ends so soon, the potential of the ruleset were just starting to get really interesting :/ I realize this is just a prototype, but I would have liked to have seen some more advanced puzzles. Right now I'm not sure if this was how far the ruleset will go or if it's possible to make truly amazing puzzles with it.
^ The ruleset is expanded later in the game. Also it's actually easier to create lot's of very hard  puzzles than lots of the easy ones.
As for constructive criticism; you have created a beautiful atmosphere! The song and it's 'warping' is a stroke of genius -- keep that and is possible expand and develop it. I felt at unease every time I used the ability, which I think is a great thing.
You wrote 'artsy fartsy' in reference to the story. I realize some people will call it that, but don't be dissuaded. Take the prose seriously and go with it!
I thought it was great, it was relevant and not at all pretentious. Can you expand on this as well and keep the 'story' and the thoughts interesting throughout a full game?
^ At the moment I've got some ideas on how to make the game both more enjoyable and also make the story an actual goal in the terms of gameplay.. I'm not gonna reveal those until I've made sure they actually work.
The character controls are okay but could use some work. I realize changing the character movement could break a lot of puzzles, but you might want to adjust the jump, for one, before you continue making more levels.
^ It would be interesting to hear what "adjusting the jump" means.
The graphics are totally fine but they could be excellent! Team up with an artist -- or try to find a compelling, moody and different art direction yourself. As of now it looks a bit dull and without character. Also, the silhouette look has been done to death.
^ It's sad the silhouttes have become such an indie cliche. Still they surely help creating the atmosphere the game currently has and they are also part of the gameplay. But I'm thinking about that..
All in all a great prototype with huge potential! I'm looking forward to see what you make of this.
There were bits of the game that were poor (character design for example) but overall the game had been designed to take advantage of the things that the team were able to do well and these minor irks became excusable.
^ The character design is a thing with which I've been experimenting lately. Hopefully it turns out better. The animations in the IGF builds were pretty bad. I also don't consider myself a team..
The pacing was a little slow, and the controls felt a little clunky at times, but overall I enjoyed the game.
^ Slow pacing is part of the atmosphere. The game actually runs in 1/2 slowmotion all the time. I still need more feedback to decide what to do about that. To me it just doesn't feel right when played on normal speed. I still  could be just me.
With some polish this could be an outstanding game.
This game had a strong sense of atmosphere and interesting mechanics. The gameplay was intriguing and I was compelled to see what the next level would bring. I think the clarity of the mechanics needs to be worked on. I would often get stuck with no hints or anywhere to go and have to ask another judge what to do. If I was playing this as a player and not I judge I would have stopped very early not knowing what to do. I was confused about when I can make a clone and when I couldn?t. Do they all have to die in order to make more? I often had to restart an entire level causing needless frustration. The lights are beautiful but don’t make for good solid clear boundaries.. It was very hard to see a clone in the red light particularly. I had a really hard time getting clone to catch the ledge in 6... I know what I have to do but the game is not letting me do it... this is when puzzle games get frustrating. I also find it rather annoying when I have to flip my mouse around to get my clone to turn around; this makes some of the jumps and ledge grabs needlessly difficult. Overall this game is very intriguing and compelling but need some fine tuning to really shine.
^ This is partly negative but also a very helpful piece of feedback. Some of the issues mentioned are already  fixed but the game mechanics clearly need to made more obvious to the player. On the other hand I'd like to make a game where the player is not forcefeeded with tips on what to do. Personally I enjoy games where the player can have a-ha experiences and obvious clues tend to break that. That doesn't mean that the game mechanics should completely be discovered by the player on his own. I'm also thinking of making the game partially nonlinear as that's one and perhaps one of the best ways to solve the problem of frustration from difficulty in puzzle games, without breaking the experience for those who would be bugged by too self-guiding gameplay. Also, there's no need to turn the clones around to make them move in certain direction. They can move and jump backwards as well.

I've been in a bit of a stealth mode lately but I'm starting to post progress again more frequently. Stay tuned!