Initial Week of Development
It was the first week after receiving the outline and deadline for the first big project. A 2D game in Phaser. My initial reaction to the lack of constraints was excited. I had so many ideas for what kind of game I wanted to make and how many cool things I could shove into it. But the reality of a couple week development period, followed by playtesting and a written report, limited that scope quickly. That constraint put on the project was a good exercise in limiting scope in order to see a viable finished product for the project.
I wanted to make something simple, but interesting enough to not be boring. I decided to make a Mega Man styled boss battle, albeit less pretty graphics and far fewer interesting mechanics. The basis of the idea still there though. A 2D arena where the player will platform and shoot at an AI enemy with a few finite states (stages) and must knock down a health bar to win. Simple enough.

The deadline has a been a great motivator thus far. Whenever a new feature sounds like it could add to the project, I am quickly reminded that any time spent on that new feature will ultimately push me further away from the goal. So, I am steadfast in keeping this simple. Making the features I do have outlined well implemented. I was excited when I cracked how to get a shooting mechanic for my player all set. Using a few Phaser functions and some basic trigonometry, I was able to fix a bug I had left off for a couple of days. Instead of having a few decent enough attack mechanics, I have one very solid shooting mechanic.

As with any project, there are walls that I have encountered throughout the initial stage of development. Whether it be a feature that is just not quite working correctly, or an animation that looks horrendous, or just in working within the Phaser framework in general. Several of my initial bugs have been not fully understanding the JavaScript language and how it “should” be used.
this.scope?
A consistent theme is having to stop from the project and looking something up about the language. Why isn’t this function working like a function? What the heck is the scope of “var” and why is it giving me weird results? And on the topic of scope, the “this” keyword in JavaScript does not function how I think it would function…to say the least.
Ultimately, all these problems are good problems. It just gives me a chance to look something up, learn more about it, then go back to my project with a fundamentally better understanding of how I should continue. A big breakthrough was treating everything in JavaScript as an object, other than primitive data types. Functions are objects, methods are objects, etc. This means accessing, and assigning properties is possible in such objects. This is a very different approach and practice to what I’m used to. Still getting a hang of it.
Side Work
I can’t say too much side work has been done this week. Aside from the occasional reading on subjects and watching documentaries and tutorials, most of my efforts have been focused on the project. Not just development of the project, but the organization. I decided early I wanted a clear and outlined workflow throughout the project, so I decided to do this before doing any substantial work as not to suddenly become lost. As can happen on a larger project. I am using an application called Obsidian. It is a note-taking app, with the great feature of having community-built plug ins. So not only can I have all my notes in one place, but I can also have Trello style cards that have all my tasks organized, links to documentation for Phaser, and even a drawing application to have visual representations of where I want to go next.

It’s been mightily helpful in staying organized and motivated this week as I always know where I am, where I left off, and if I ever decided to take a break to work on something else within the project, implement that into the previous features I already have.