New blog domain: kula.blog

It's still work in progress but new posts will be published on  https://kula.blog/ Thanks to 11ty base blog RSS is working from the start so it should be easy to add to your reader if you still use any :) If now then I hope you can sign up to the newsletter where I'll be publishing new posts and interesting articles to it from time to time. Please use  kula.blog  from now on.

My Game: Canon Defense


If you know about #js13kgames contest you might be interested in my small game created for it.



I called it Cannon Defense, but the sole purpose of creating it was to learn in practice how to create a game. You can say that it looks ugly, or is small, but for me it was great co create it.

My submission is not yet online so if you want, play it at: http://krzychukula.github.io/js13k/

Code is on github: https://github.com/krzychukula/js13k

What I have learned:

User constructor and prototype inheritance for game objects.

function Bullet(x, y){
   this.x = x;
   this.y = y;
}
Bullet.prototype.draw = function(ctx){
   ctx.drawRect(x, y, 10, 10);
}

It will be more memory efficient.

Do not use translations to move objects
For me it was hard to manage bullets flying at various angles and the first idea was to translate all bullets to cannon position, then add some offset variable and just move bullet on one X or Y angle using offset.
It worked :)
Until I had to check for enemy/bullet collisions...
I had to refactor the whole thing to have my version of velocityX and velocityY and just draw bullets without transformations.
But I still use scale for red blood ovals after enemy dies. I think it is ok.

I don't have it in my game but I should:


Object Pools
I don't have this in my game for for all objects like bullets and enemies. However, it would be much wiser to use some pool that could manage them and prevent from running GC all the time (in next game I will use it).

Time Diff
I should have used time diff in calculations of movements, when running on slower device the whole thing feels slow... With time diff it will move bullets at one speed on all devices (maybe will introduce "teleportation" of bullets but it's hard to say).

Interval/Timeout
I use them for many purposes and I think that they can cause problems. At this point I think that it would be better to add enemies after certain count of requestAnimationFrame instead of fixed time, but I don't know how it would work in lower than 60FPS environment...




Comments

Popular posts from this blog

How to use NPM packages from private repositories on bitbucket

How to simulate slow connection (developer proxy in Node.js)