The Fire Mage: A Vanilla JS Game Engine
The game engine in action, with the proof-of-concept game "The Fire Mage"
Several months back,...
For further actions, you may consider blocking this person and/or reporting abuse
I was building my own open-source video game a few years ago. Feels like yesterday. Work and babies took hold so I have yet to return to its completion.
github.com/omenking/swap-n-pop
I think open-source works when you think "how am I going to build a team who wants to work on this?" Instead of "how do I choose the right technology".
When I built mine it was originally Coffeescript designed to run in the web-browser backed by Rails and then morphed into Typescript with Electron backed by Phoenix (Elixir). I would suggest not to set hard rules.
What helped was having a Discord and doing outreach to social communities about my progress. In short-time I had a team of 7 doing various things where they could to build the game.
It was important to set milestones and then reach those goals and ship them, to create a pattern of trust that the project is going to meet its end goal. If I had no updates for a week people thought the project was dead, over and over again.
If you're building a game with an online component you'll need to ensure the game is deterministic. Anyone who has made any headway with online games knows this truth, and so until you've done so you may have poor quality contributors.
Test code is another large importance. It helps people from stepping on other people's toes.
Documenting how to get the game working end-to-end is the most important.
Thank you so much for sharing your experience! It’s a lot of good stuff to digest—I’m sure I’ll keep coming back to this and bugging you again and again… ;)
First question: any recommendations for testing in a vanilla JavaScript frontend? A little poking around indicates that using Jest is the most painless route, but…I like a challenge? Is purely-vanilla-JS testing (at my level) even possible?
Also: for getting the game going end-to-end in different environments, is that something I can easily mock on a single computer with some virtual machines? (The last time I used a virtual machine was trying to get my Windows games onto my first Linux laptop…)
Thanks again Andrew!! :)
Here's a few thoughts in no particular order :
Try not to do everything at once. The heart of development is continuous refining. There is no bad ways of doing, some are just better than others.
Copy from the big projects. There are so much large scale project on github that nail things right or set the standards.
Don't sweat it. Your few first projects aren't going to be perfect. You learn most from failure, so fail faster.
Keep coding. No matter what other will say (including me), keep doing what you love. Being right by being the same as everyone else is boring.
Thank you very much for your thoughts, Guillaume! I definitely love the fail faster mentality—it was something I used to try to teach my middle school students. Good to be reminded of it now. :)
I’m curious, are there any big projects you think I should look at?
You should check Webpack. It's the biggest, well maintain project I can think of.
I'm not an expert at coding but I really want to be good at a Vanilla JavaScript. Also I used to love Warcraft II, StarCraft, rts games. I'll look for how I can contribute. This may also be a good engine for the tower defense game I've always wanted to make.
I appreciate that Brian, and I’m glad you enjoyed those games too!! As I clean up the code, I definitely invite feedback on how to make the vanilla JS more readable and usable…and also well-documented, lol.
A tower defense game would be an AWESOME direction to take this—I’d love to contribute to that expansion. :)
ISA! You're absolutely killing it, and this is an amazing step!
I don't have too much to contribute at this time, but you know I'll be following the project.
What I'd add is if you're developing your contributing guidelines, consider adding in a code of conduct as well. Only thing is if you add a code of conduct, have a plan for enforcement as well. Not sure if this template would be applicable, but it's one I've used in the past to develop a CoC for events geekfeminism.wikia.org/wiki/Commun...
Awww thank you Aspen!! Good call on the code of conduct, and that’s a great recommendation.
Does enforcement involve calling you in to send stern emails on my behalf? :P
This might be a good fit for the #devjournal tag.
Thanks Jason, took your advice and added it!