Hi! It's been a while since I was active here, but some of you might know me.I've been playing a little bit with some code, and am putting it here just to get some general input from you guys. This is what it looks like so far:

Pixel characters are most often a square moving against other squares, with fluid animation painted onto it. However, you can still somewhat feel that the character is a box, mathematically. I have tried to create a character that looks like pixel art, but moves much more fluently, and has a body thatactually is affected by the surroundings. I still want to keep the levels blockyand grid based though, to create an interesting contrast and put emphasis on the softness of the character. Please tell me what you think.

Everything is under construction, so I apologize for the weird stuff you'llsee. The (probably completely unorthodox) psuedo-3D code I use for thelevel is a bit off still, and some of the character animations aren't finishedyet, such as the wall gripping and the climbing on vertical beams.

What helped you the most? I've been ponding movement algorithms recently but it seems very hard to find good articles about it, and since I've just started out in game design, 80 hours of self learning so far, it'll be a long time before I start implementing and understanding such advanced stuff such as yours.

Thanks! Since I'm self taught or "rouge" or whatever I don't know much of the terms, but if you by algorithm simply mean method, I can give you a few tips. The fact that my code is self-developed and made for only myself to read also means that it's extremely unorthodox and ugly, I go with a solution if it works, even if the code looks like ****. However, if you're interested in how I reached this result the keyword is trigonometry.

TechnobabbleIf you have to mathematical points, each with their velocity vectors, you can easily create a "stick" with different elasticity. You do this by locking the distance between the points. If the points are further away from each other than your set distance, you move their positions and velocities towards each other, if too close you separate them. By making the force they're bound to each other with weaker, you get an elastic "rubber band", and you can also let one point do 70% of the movement and the other 30%, creating different weights for them. What you need is a function to determine the distance between points, and a function to create a vector pointing from one point towards the other. This is the basis of what you see in my demo(the creatures are mathematically boxes moving like this). From there I just improvise, and fine-tune the numbers like crazy.

If you are interested I can produce some more in-depth explanations with psuedo-code.

@XRA: Thanks! I've really tried to make the control and the animation flow together, to make it feel like whatever the creature does it does at your command. Did you find the control intuitive? Are the transitions from different movement types such as running, tunnelcrawling, climbing, jumping smooth enough and easy enough to follow? I get terribly home blind with my projects, so spotting problems is hard for me. Any parts you'd change?

@Sevn: Alright, I'm making the text small because it should be in the technical forum and people here might not be interested.

Technobabble #2I won't go into how to make a box collide with rectangles, beacuse I know that you can find a lot of stuff like that all over, and my solutions for this are a bit horribad. I will also assume that you know what a vector is, and that you know how to implement gravity and stuff like that. What I'm going to show you is how to create "atoms" or whatever you want to call them, that is points that are connected to each other to create a simple physics simulation.

So, assume that you have two points, Ax, Ay and Bx, By. These points also have velocity vectors, sAx, sAy and sBx, sBy. By adding the vectors to the positions you get movement, as you probably know.

You now need to create two functions, one to determine the distance between two points(I'm going to call mine diag, from diagonal) and one to create direction vector pointing towards a point. That is a vector with a total length of 1.0, only indicating direction. This can also be used for a lot of fun stuff, such as gravity wells and so on. I'm gonna call mine moveToPoint. These functions are heavy on the processor, so use them sparsely.

What you see is, separated by the empty rows: Adding the velocities to the positions, applying air friction and gravity to the velocities, retrieving the data necessary for the "binding" of the two points, and finally applying the bond. The points are now freely moving, but will always keep the same distance to each other, and forces applied to one point will realistically transfer into the other. As long as you draw the points after this has been done, they will always be displayed with the correct distance between them.

You see the "0.5"s after each row in the last section? Those mean that if there is a difference between the desired distance and the actual distance between the points, this point will stand for 50% of the movement made to correct the distance. If you tilt those numbers, so that for example point A stands for 85% of the movement and point B for 15% it will appear that B is significally heavier than A. If you make it so that the sum is less than 100% you will get an elastic bond, like a rubber band. You might want to tone down the movement of the actual positions in this case, and focus on the velocities. Other interesting choices you can toy with is to only affect the points if they are further away from each other than the desired distance, or only if they are closer.

Once you get the basics to work you can start connecting bigger structures of dots together, playing with the parameters. This is created with this technique only. For example you can create an array of dots, each connecting to the next one, and you have a rope! Fix the first node at your mouse position and whip away. This is also the tech behind my unfinished mega project freethinker, which brings me to another very important piece of advice; never start a mega project!

I hope this is helpful to you, and that I hit the right level (don't really know how much 80 hours is, it depends a lot on what you're using). Please do not hesitate to ask further questions.

I really like this. The movement looked smooth and everything had a proper sense of feedback. I think jumping could use a little bit of tweaking, though, although it depends really on what you want to do with this.

My main problem with jumping is that, while there seems to be wall jumping, it only works if you're pressing the arrow key towards the wall in question. However, if you're against the wall, visually you're sliding down it whether you're pressing towards it or not, so there's not really a visual connection between pushing towards the wall and wall jumping. I think as long as you're sliding down a wall, you should be able to wall jump.

However, all the other movement felt really good and intuitive. I love the feet animation as it tries to scamper up tough pathways. Nice job.

I really like this. The movement looked smooth and everything had a proper sense of feedback. I think jumping could use a little bit of tweaking, though, although it depends really on what you want to do with this.

My main problem with jumping is that, while there seems to be wall jumping, it only works if you're pressing the arrow key towards the wall in question. However, if you're against the wall, visually you're sliding down it whether you're pressing towards it or not, so there's not really a visual connection between pushing towards the wall and wall jumping. I think as long as you're sliding down a wall, you should be able to wall jump.

However, all the other movement felt really good and intuitive. I love the feet animation as it tries to scamper up tough pathways. Nice job.

Thanks for the feedback! I've worked a little on this issue now, the main change being that the character is now animated with a special wall grabbing animation when you press towards the wall, hopefully making it clearer to the player that there is a difference between just being close to a wall and actually grabbing it. After I've done some other stuff I'll reupload, and hopefully you'll like the new system better. Also adressed some conflicts when the player slides down a wall and contacts the ground.

I have a question for you guys, and that's simply what direction I should take this? It started out only as an environment for testing this movement system, but it would of course be fun to make it a real game. The original idea that was lingering in the back of my head was a simple myltiplayer maze game where you'd steal some objects from each other and try to keep three of them in your base for a certain time to win, much like the multiplayer of Matt Thorsons excellent "An Untitled Project". A skeleton for these game mechanics is present in the uploaded version.

However, my last project was a multiplayer game, and I feel that maybe I missed some of my potential audience because of this. So I'm thinking about making it a puzzle-platformer or something like that instead, or maybe some kind of single/multiplayer hybrid...

What kind of game would you like to play this character in? I'm not making an explorational platformer, as I already have a project like that, only something small and quick but fun.

Where should this game go? You can implement something where the player is controlling both mice-things with the same input, and together solve a maze puzzle. You could leave it at two mice-things or expand to three or more. That would take full advantage of their unique movement abilities and the stage designs you've already made. Boy and his Blob (Wii re-imagining) touched a bit on that and it was pretty neat

I really like the feel of the movement and how you can climb freely in narrow passages. Makes for some unexpected navigational options.

Animation-wise I think I would have him turn around if you go far enough backwards, unless you assume there isn't enough space (in screen depth) to turn around in. Though in certain situations (like if there's a threat outside the tunnel) it would make more sense to keep going backwards.

Very good start on the movement. Cute and funny!

My first association with this was hamsters so maybe you could make it about escaping one of those hamster-mazes with tubes and things, except the level continues into the outside, the room, the house, etc... (though maybe that's too much like exploration)

Just wanted to say that now I, as many others I guess, enter finals mode and won't be doing much else, but I'm coming back to this. Next up I'm gonna start working on a level editor, which I have some ideas for and which will be useful whatever direction I take this.

I randomly jumped out off one of the ledges and managed to jump across stuff in an very smooth way, and that got me thinking that it would be very cool if you would implement stuff like autograbbing ledges and such, to make it feel a bit like Assassins Creed when you're scampering across rooftops.

The movement in this is pretty much perfect.The controls are smooth and the characters feel very soft and alive. If your still looking for suggestions on which direction to take this, I think it would be pretty neat to have two players working cooperatively to get through some sort of lab rat maze. Whatever direction you choose to take this I really hope you keep working on it and develop it into a full game, it's awesome so far!