Day 3: Kinda naive development
Today, I am presented with several branching options to work on:
- An XP meter.
- Custom messages based on some condition, such as a milestone.
- Correctly decoupled events.
- Animating text to appear per sentence.
I have decided, in addition to "kinda naive code", I will also follow a "kinda naive project management" approach. This means I'll just work on whatever I feel like. A horrific concept in the interconnected world of development. Without structuring a program, it is common to "work on whatever" only to realize it affects this other part of the program somewhere down the line, until all you're doing is backtracking and refactoring. When we don't plan our tasks ahead, we don't identify what X features are required for Y. Nor do we know what features actually supercharge others. And yet, knowing all of that, the monster I am trying to kill is demotivation, analysis paralysis, fear of the unknown. As Vincent in the movie Gattaca says: "I never saved anything for the way back."
I'd like to think that this naive coding experiment is a New Game+, where my experience evens the odds. I should have some instinct, some understanding of bad production smells. At least, I hope so.
On this third day I have:
- Set up git (private repo for now).
- Decided to try GSAP (Greensock animation platform) for text animations – downloaded but not yet used.
- Began a rudimentary function/class separation.
- Began a rudimentary skill tree and skill interaction with the game world.
- Cursory look at data serialization formats: YAML, JSON, Protobuf. JSONC wins for now but I intend to autogenerate it (and support comments in the interface that get ported into the file). We'll see how this works out.
Some guidelines I've been following for myself that I haven't formalized:
- Spend only 1hr per day that I decide to work on this project.
- Don't take too long to make decisions.
- Avoid node.js for now (whatever library I develop with, ships with that library for now – this is not good modern web app practice due to security issues arising from 3rd party libraries and shows the difference between the old distribution model for physical media and today's online media – I will have to find a way to easily update 3rd party libraries due to vulnerabilities)