Precipice: Post Mortem – Entity Component System Library
![]()
Here are some links:
Short version:
The jam went well, because I because of a library I made called e – which is a functional Entity Component System library in Javascript and because I knew my limitations. But if I had have slept more, I would have got a lot more done, instead of staring at my screen for 10 hours like a zombie.
Choose your battles:
Before I started I already had two ideas that I wanted to try. The first was a top down stealth game, the second was an arcade minimal touch shooter.
I decided against the top down stealth game because I didn’t have a lot of experience with path finding, and AI. And if I was going to do that game justice I would probably need more than 48 hours to complete it. A few Ludum Dare’s ago, I wouldn’t have made that decision, I would have just gone for it and missed the target. So I am happy that I am more aware of my limitations and what I can reasonably achieve – that means I am definitely learning.
The touch arcade idea was a lot more pure than what I ended up with. Retrospectively, I think I simplified it because it was harder to communicate exactly how those mechanics were going to work, without iterating constantly. So I made a more conventional game. I will definitely revisit the original idea, but the idea is so abstract that, again, trying out wasn’t going to do it justice.
As I am writing this, I can hear a devils advocate’s position, which is: I shouldn’t be aiming to make a more “complete” game, I should be following my instincts. And I am very aware of that perspective, but I think it is actually more balanced for me to think in the “finish something” mindset for the next few jams. Because honestly, if I make any more half baked prototypes, I would probably burn myself out.
The more jams I do, the more I understand that I have so much more to learn. The more I come up against my own limits, and just choosing one weakness to focus on and improve is more productive for me, than learning on all fronts and not making any progress. Life is short, and you really only get to make so many things in life.
That all said, this jam went pretty swimmingly and here’s why.
Why did it go so well?
I stumbled across Entity Component Systems 6 months ago, and I’ve had enough time to allow my head to get around the concepts. I did a lot of research and read everything I could find on the topic, and often came up against a lot of bad advice.
I ended up writing a library, which I call e, that has completely changed how I work, and made my jam code very neat and extendable.
In fact, there is nothing I would really change about the existing code, which challenges the myth of prototype code needing to be redone for production.
After working as programmer for a few years now, on fairly large projects, I am more familiar with the tools and having great tools really helps.
I tracked down this horrible collision bug using the Chrome debugger, I hosted my game using the gh-pages of github and I used Light Table to be able to inject changes to my game code without refreshing the page. All in all, it was fairly joyful.
What went wrong?
There was a stretch of 10 hours at the end of the jam, where I just was completely unproductive due to being so tired. I should have slept for 2 hours and came back. It would have made the game so much better. And because I was so tired I stopped working on the game 4 hours before I needed to.
That time could have been spent on a tutorial, different levels, better animations, a menu system you name it. Sleep is important.
So far I have had a great time judging games, and I would like to a round up of my favourites so far. I’d also like to do a post on why this library was so great.
-James
Comments

