Version Info

0.5

Since I wasn't keeping track of anything before, this is version 0

Inside of 0, there exists

Plans for the future...

The Beginning

In the beginning, there was nothing.

Then Noah said, "let there be sheep". But no sheep appeared.

Noah saw the lack of sheep as displeasing.

Noah then decided that physics was a better place to start, and so he started to work...

Starting off on this project, physics was the first thing I worked on. It's not that hard too. Just have vectors to keep track of position, velocity, and acceleration and then you're good. Enable functions that execute at 100 Hz to change the position and velocity of an object and you have physics! Put in the good ol' 40px by 40px block and it'll start moving around. It wasn't a very elegant version of physics, and I would later completely get rid of it, but it would do for the start.

I got the whole idea from watching Chris's video https://www.youtube.com/watch?v=vyqbNFMDRGQ for about 20 minutes. It looked cool and I wanted to make a game. The main thing I picked up from watching the video was the way Chris did animation. He didn't do anything sophisticated for a simple, 2D, pixel art, game. He just needed images. The simplicity of it inspired me. Before, I shyed away from anything involving games because I didn't know how to animate. Poor man's animation gave me a chance to make games that might actually looked good.

The first working version of Sheep Game had one character, Dmitri, running around. He could jump, fall, and do one attack. I implemented a multiplayer soon after the game worked and tried my hand at p2p. The game then was a fraction of what it is now. You could jump around and hit other people and boing them around the screen, but that was about it.

Over the next week or so, I would implement bouncy walls, life bars, multi-multi-player (so more than one multiplayer game could happen at the same time), proper hit and attack boxes, the second attack animation, and a fainting animation.

At this point, the game was working. Multiple people could play together, they could hit eachother, technically die, use multiple attacks, and I thought all that was cool. But I lusted for more...

There were several issues I had with the game at this point

Plus there were several things I wanted to add. So I went to the next version.

I'm gonna talk about the way I solved the lower end devices problem, cuz I'm proud of it. I did two things. I created a better animation system and optimized the canvas for my game and I redid the physics system.

In the physics system prior, I was performing calculation 100 times a second on every character to update their locations and velocities. This wasn't very well optimized nor was it very consistent due to Javascript's wonderful timing system. The new system I created doesn't use any of that.

The system I have now does not do calculations every second, but instead does them once every... just once! The new system generates a physics equation each time a value changes in a character's physics. The position of that character will strictly follow the equation until its physics change again. And this looks much faster! Calculations need to be done repeatedly outside of this equation still, but those are for collisions and can not be optimized as simply as this can. It's also just exciting because I think it's cool.

The animation system had changes in its logic and changes to the way I was drawing the characters onto the canvas element. It also looked at the equation for the character's position instead of trying to guess based on the previous physics frame data. In reality, these changes probably didn't speed the game itself up by much, but they did make it look a lot smoother. The real game speed came from code cleanup and optimization.

Up until 0.5, the game went through these changes.