Game Design Document WIP. Updated 2025-03-18.
Appendices for personal reference.
- Appendix A: Resources. Updated: 2025-03-26.
- Appendix B: Inspirations (games). Updated 2025-03-23.
- Appendix C: Inspirations (non-games). Updated 2025-03-15.
- Appendix D: YHL’s taste in games. Updated 2025-03-16.
- Appendix E: The VST Hoard. Updated 2025-03-17.
Development Blogging
- an interruption to serviceby YHL
Note: I had a concussion Sunday (March 9) and outpatient surgery Tuesday (March 11), so if I’m not tracking well, that’s why. (If this is a mild concussion, I don’t want to know what a bad one is like…)
Recently accomplished:
- Defold: working through tutorials. I’m intrigued by MatchaNovel! The demo (runs in your browser) is super helpful.
- Godot 4.4: Working through Godot 4 Game Development Projects, 2nd ed. by Chris Bradfield. I know printed books date quickly in the realm of coding and are…difficult to update, but I prefer to have a paper reference I can mark up and look at.
- Research reading: cryptology, steganography; number theory; game design; paper crafts and papert arts; typography.
Yesterday, what brought me cheer while recovering from surgery was the arrival of the first part of A Fancy Edition of Shing Yin Khor‘s The Bird Oracle.
The tea, phoenix teacup/saucer, and Bonne Maman jam were stuff I brought out, not included! Also, a weirdly appropriately liminal casting with my own oracle set based on the game.
Hope all’s well; I may be scarce for a bit, and/or posting randomly about things like energy market intelligence analysis or pianos while I recover.
Yours in calendrical heresy and birds,
YHL - tiny art and other habitsby YHL
I may have committed Ninefox Tarot art since I’m going to need to wrassle pixel “card art” down the road. From left to right:
- Art Toolkit‘s Demi Palette, for which I use eighth pans for preference (I usually have to fill them myself as eighth-pans aren’t standard most places). I don’t do a ton of watercolor, sadly, so I don’t use up pans quickly. My big maximalist palette is a Robax, but for my backpack I want something tiny. 🙂 The watercolors are:
- First row: PR144 (Roman Szmal azo red), PR254 (Greenleaf and Blueberry pyrrole red), PO65, (Old Holland Golden Barok Red or benzimidazolone orange), PV19 (Greenleaf & Blueberry quinacridone magenta; I like the Daniel Smith PV19 for this too).
- Second row: PBr7 (Daniel Smith burnt umber), PO49 (ProdigalSonsPigments [Etsy] quinacridone gold; no, that pigment code is not a typo), PY154 (Winsor & Newton Winsor yellow), PB16 (Greenleaf & Blueberry phthalo cyan).
- Third row: Daniel Smith jadeite, PG7 (Greenleaf & Blueberry phthalo green blue shade), Daniel Smith amethyst (we all know it gets its tinting power from something like PV23), PBk26 (MaimeriBlu neutral tint, which is an odd name for an extremely inky black in mass tone).
- Lebenzon Paintbrushes‘ 1″ silver fox wangji brush because I have a twelve-year-old’s sense of humor.
- Knight of Wands: General Shuos Jedao.
- Queen of Cups: Captain Kel Cheris. I’ve decided her animal is carp/dragon instead of raven, not least because carp and dragons are much easier to draw and it works better elementally since I associate Cheris with the sea.
- Magic: the Gathering card for scale.
- Sailor x Ca Crea Pro Gear Slim Starry Sky fountain pen, although I ended up inking with a Papier Plume “The Blues” fountain pen with Stylosuite Xwing Harpoon XF flex nib mod. Both are loaded with De Atramentis Document Black, which is my go-to for ink-and-wash work for fountain pens. I need to get my Waterman 52V fixed again as the sac died, which is the issue with old-school lever fillers!
You could not unreasonably conclude that I hate blue! In reality, it’s one of my favorite colors but when I’m out and about I just don’t reach for it often. If you’re wondering about the weird placement of the eight-pans, especially the right side, that is designed to put the CMYK-ish pigments in easy reach of each other (PV19 for magenta, PB16 for cyan, PY154 for yellow, and PBk26 for black). On the other hand, I rely on red (and own more red watercolors than this…).
I prefer doing tiny art to larger art because I’m lazy. /o\ Signed, I realized that instead of angsting over MOQs at a card printer, if I only want one (1) fake DIY Tarot deck and I prefer natural media anyway (I love watercolor!), I…have a paper cutter and some Arches paper that needs to earn its keep? When I’m done, I figure I’ll fake-gild the card edges using that Kuretake mica paste I have lying around.
things accomplished:
- card art (see above) since I’ll want it for the battle system, and cards seem doable for 2D implementation. (Placeholders will be regular Tarot card art and/or standard poker cards.)
- paper prototype of battle system: more progress. I see how to screw around with affine ciphers. I’m still mulling Vigenère ciphers and/or some kind of asymmetric encryption, likely RSA [PDF] for simplicity since we’re…not going to be working with cryptographic-strength integer sizes lol.1 I may have messed with random.org for testing even though it’s overkill because it’s funny. 🙂
- asked my husband Joe about Monte Carlo simulations for the battle system and he confirmed that implementing that in Python with one’s (pseudo)RNG of choice would be pretty straightforward.
Also he’s great for tech support!😀 That’s probably next, just to test the subsystem. - Learn GDScript to acquaint myself with Godot (I installed Godot 4.4 yesterday). I got past for loops in the intro to CS 101 and basic control structures, and have moved on to arrays. 🙂 Fencepost errors, I did not miss y’all!
- VN opening prototype ported to Ren’Py just to refresh my memory of the scripting. I literally got stuck at “no really, how do you include Ï€ as a text character without crashing the interpreter?!” :p
- reading: Gabe Barrett’s Find the Fun: Learn How to Go from Idea to Published Game. (Yes, Gabe Barrett of Board Game Design Lab!) This is terrific, and slow going only because I’m taking notes as I go as that helps me retain the information better. I almost never go back and look at said notes; it’s the act of note-taking that’s most helpful. This is aimed toward board game development, but game design is game design! I am, admittedly, skimming some of the words of wisdom regarding e.g. physical component layout in boxes since it’s not immediately applicable for this use case.
1 I reiterate that I will worry about the sky falling with regards to Shor’s algorithm when someone verifies having reliably factored a number larger than 21 with a quantum computer without classical preprocessing or other chicanery! Realistically, even if that were a thing right now, I personally am in zero position to make a useful contribution.
I’m currently ping-ponging between Unity, Ren’Py, Godot in between working on CROWNWORLD, and likely to attempt bare-bones implementing the battle system by itself in Godot to see how that goes. Rather than implementation specifics, getting the core design up and running from an algorithm standpoint for testing is more important right now. All three themselves run on macOS and Windows so I’m set there.
Pros and cons as I see them at this point, having delved slightly deeper:
Godot: The newer kid on the block. Open source and free for commercial use (MIT license). At this point, there are resources for Godot, but there’s also a very “DIY” vibe, so it’s much likelier that if you want something specific, you’ll have to roll your own. There are dialogue management packages (e.g. Dialogic) that ease the work on the VN end. The node system is new to me and takes some getting used to. On the other hand, could be a great opportunity to dive in, learn the system, and do something customized.
Audio: I’ve seen people say FMOD works well with this. Haven’t heard of people using Wwise?
Builds for: Windows, macOS, Linux; secondarily, Android, iOS; in beta, web/browser in HTML5 (but right now Godot 3.5 is recommended itself if specifically targeting HTML5?).
Ren’Py: Designed specifically for VNs, and probably the most common engine for English-language VNs. Open source and free for commercial use. Also pretty mature with a ton of resources for learning. Hooks into Python for other game things; I only have beginner familiarity with Python specifically, but guess who has been coding Python for decades for work! :beams at beloved husband: This does mean that the VN stuff is super easy to script but other game things are more of a PITA.
Audio: built-in audio; theoretically supports Wwise via Python via WAAPI, although I haven’t tested this yet.
Builds for: Windows, macOS, Linux; secondarily, Android, iOS; in beta, web/browser.
Unity: There are a ton of assets and resources for learning for this, including e.g. Naninovel for VN work. Commercial framework; that said, it’s unlikely I’m going to get anywhere near the sales threshold where I’d have to care about paying lots of money. It’s pretty mature! It’s not designed specifically for VNs, but by the same token, other game things will be easier to implement.
Audio: built-in audio; supports Wwise and FMOD.
Builds for: Windows, macOS, Linux, Android, iOS, WebGL (I’m told there are, unsurprisingly, efficiency issues), and pretty much everything.
Yours in calendrical heresy,
YHL - Art Toolkit‘s Demi Palette, for which I use eighth pans for preference (I usually have to fill them myself as eighth-pans aren’t standard most places). I don’t do a ton of watercolor, sadly, so I don’t use up pans quickly. My big maximalist palette is a Robax, but for my backpack I want something tiny. 🙂 The watercolors are:
- waiting for Godotby YHL
Sorry, I couldn’t resist. 🙂
recent progress:
- more abstract algebra review for nefarious game design purposes, this time via Thomas W. Judson’s Abstract Algebra: Theory and Applications (open source textbook; I have it in PDF)
- animation: additional storyboarding
- music: working on syncing the acoustic piano recording with the MIDI version in my DAW for nefarious sound design purposes
- exploring Godot + Dialogic and Ren’Py as possibilities, and playing more with Ink; remember, I’d rather do the R&D up-front!
I may concede defeat and move to Ren’Py with Python, not least because Ren’Py is comparatively simple, specialized for VNs, and for the minigame/tactics component, my husband codes Python for his job so I have in-house tech support, poor guy. :3 I want to figure out whether integration of WWISE into Ren’Py via Python and WAAPI is straightforward-ish, or failing that, whether I can use FMOD with Ren’Py. Ren’Py does have some built-in audio handling and I’m sure either WWISE or FMOD is wild overkill, but I’d like to find out!
For even more wild overkill, I’m contemplating implementing a real-time audio transport effect in C++ into Python via ctypes (see also: Python bindings overview) (see also: T. Henderson and J. Solomon, “Audio Transport: A Generalized Portamento via Optimal Transport” [arxiv.org]), mostly as proof of concept. I have books on coding audio effects VSTs in C++! I’d love to give it a whirl! For troll mode, I am dying to play with Csound again!
Game music composition and audio implementation seems to have wildly bifurcated perspectives for, probably, historical reasons:
- Western music notation/theory
- the coders/devs :3
- digital music production in a DAW [digital audio workstation] (whether involving recordings of live instruments, MIDI + VSTs, or similar)
- mixing/mastering and audio engineering
- DSP (digital signal processing)
I’m legit mad at myself for not investigating DSP earlier! “Sheet music” composition is very familiar to me, but doesn’t (currently) integrate well with digital music production. I’m not a dev as such, and both DAWs and audio engineering have wild amounts of jargon. DSP comes (more) from math (it looks like a lot of Claude Shannon and Fourier analysis/transforms from casual inspection?), and math also has wild amounts of jargon…but my B.A. is in math so math jargon tends to look homey, familiar, and learnable as opposed to “what do you mean, ‘loudness,’ ‘gain,’ ‘levels,’ and ‘volume’ kind of all mean the same thing except they don’t really?!”
Meanwhile, Godot is fun and I may continue playing with it. I’ve seen some delicious Balatro and Slay the Spire quasi-clone implementation tutorials that look fun!
…apparently I’m That Pedant who observes that technically the health of the robot would increase if you used -= or health = health – amount if you passed a negative value for amount. Once a math B.A., always a math B.A.? (Type checking and typing variables haven’t yet been introduced other than a brief note that it can be done—observation, not complaint—and in Godot it appears to be optional. The coding languages I’ve used recently require type declaration, so it’s been a while!)
More seriously, the tutorial series Learn GDScript from Zero is delightful, and not just because I have turtle graphics nostalgia. I decided to start from the very beginning, which is pitched toward people with legit zero coding experience. Pedagogically, this is beautifully constructed, with clear explanations of concepts that won’t be obvious to newcomers, regular quizzes you can self-test with, and small coding exercises run through some kind of web-based built-in interpreter, which also checks for correctness. I was chuffed that they thought to explain radians! (I don’t need the explanation, but a lot of people never use radians!) I think you could point a ten-year-old at this and they would be able to have fun with it.
If you’re wondering why I was messing around with Godot that day, I woke with a migraine and had a doctor’s appointment that day (and another this week), so I’m on loafing self-entertainment mode. :]
Meanwhile, coding has driven me to drink: Irish Breakfast tea with white chocolate syrup. 🙂
Yours in calendrical heresy,
YHL - favorite types of inkby YHL
Screenshot Ninefox Gambit VN: Prelude: text-only prototype, some cuss words, about 5 minutes to play (“choose your own adventure” or “hyperlinked game” style), with NOTES to myself in bold + italics. Drafted in Inkle Studios’ Ink (narrative scripting language).
I do have some graphics, sound/music, but for prototyping purposes, it makes sense to separate them for now.
Comments/feedback appreciated: please send to yoon@yoonhalee.com – also let me know how (if at all) you’d like to be credited for testing/feedback.
Progress lately:
- animation: firearms research (poses etc). Jedao is going to have a revolver, because Reasons. Cheris, as a Kel officer, is going to have a semi-automatic. That kind of thing.
- game design: calendars and narrative scripting (see above), with thanks to Chris Chinn for brainstorming help!
- music: more piano tomfooolery, with special thanks to Baton Rouge’s game store Little Wars and its delightful piano. :3 Also abuse of innocent VSTs.
When I’m scoping a project in a new- or newish-to-me endeavor, I think a lot about extensible design.
Have you ever taught a lesson, especially to a group of people? Not necessarily in the context of a classroom class—cooking, knitting, religious study, how to pet the catten.
One thing I struggled with as a student teacher (for secondary math education), and that I suspect many teachers do when we’re just starting out, is knowing how long each part of a lesson will take students to complete. Sometimes I could make an educated guess. Sometimes I wildly underestimated and sometimes I wildly overestimated. I’m good at improvisation (a useful skill for teaching high school math anyway!) so I could compensate, but I was often taken aback by what students figured out instantly and what they spent all hour unraveling. Sometimes the deficiency was my teaching or lesson preparation, but sometimes it was just inexperience. Every group of students is different, but after a few runs with a specific lesson, we get a better general sense of this.
When I scope a project in a new- or newish-to-me endeavor, in some sense I’m both teacher and student. I don’t know what will take a lot of time, what will be difficult, what will be nothingburger easy mode, problems that I didn’t even know to ask about, fun (or terribad) side quests. Fortunately, for a personal project, I can be lenient!
My main goals include “therapy” (in the sense of a fun hobby) and learning. For these specific goals, a certain amount of “inefficiency” is not only expected, but generative. Among other things, as I’ve said before, I’d rather be doing the R&D/exploration early in a project, not when I’m 73% “done” and dealing with sunk costs. I imagine people are all over the map on this, but for creative projects and processes, I’ve rarely found a straight-line algorithmic learning path to work well for me. I also like to give myself permission to ditch something for a better idea!
I get bored if I don’t have a specific goal or thing I want to make/produce. I envy people who are more process-oriented, but one positive of having a goal is that it provides a clarifying lens. I can organize my learning and/or planning and/or work around: Does this get me closer to the end product? Sometimes I decide I just want to explore something fun (again, remembering that this is a personal project) and that’s all right! But that lens enables me to self-direct my efforts.
I also prefer goals that are more ambitious in scope—there really is no rush like bringing a twenty-year plan to fruition—but I probably only have one more twenty-year plan in me at best because, y’know, human lifespan. :3 So I want to set a target that’s high enough to feel ambitious yet is theoretically within my grasp with hard work.
And this is where extensible design comes in: I want to leave room in the plan to expand the project in ways that are doable, if it serves the project and/or my goals, as well as room to shrink the project where I see scope creep or obstacles that I’m not able to surmount with my current resources and/or knowledge and/or skill. This will shift over time, and that’s okitty!
My experience from writing is that the best way for me to do this is by editing structure. I mean, there are things one could do to scope up or scope down that don’t involve the equivalent of structural edits (e.g. “placeholder piano soundtrack played by me” vs. “piano soundtrack as performed by a highly paid concert pianist”). For narrative, though, I’m looking at a structure that can be made more or less fractally complex. For example, if you’re creating a 5,000-word short story that’s in some sense encapsulating two hours of television (or the scripts thereof), you’re not just “cutting spare adjectives” anymore. You will have to change the narrative structure. This is a real example from a work-for-hire job I did in short-story-izing the four-episode Umbara Arc from Star Wars: The Clone Wars, by the way! (For starters, I chopped everything down to a single POV, Rex, because 5,000 words was a hard limit and there was no room for anything else.) For a more mundane example, one reason my first IF (interactive fiction) game, Moonlit Tower, was a tower: if I had time, I could add more levels; if I didn’t, I could get away with fewer. (As fantasy settings, dungeons also have this property!) Or one can structure an episodic story with mini-arcs, that kind of thing. But if one’s going to do this, I want to plan in the accordion nature of the structure right from the beginning.
That’s one reason I enjoy this kind of work: designing, manipulating, and revising this type of overarching structure is something I’m comparatively good at seeing and that I love digging into. A visual novel can be technically scoped up or down (…I could ditch the graphics entirely and write a text adventure, come to that) as well as narratively scoped up or down in ways that feel satisfying and play to my strengths. Also, I needed another hobby?
Oh, and favorite inks:
- India inks generally (dip pens)
- J. Herbin’s Emerald of Chivor and Vert Atlantide (fountain pen shimmer inks)
- Diamine Syrah (fountain pen ink)
- Colorverse Gravity Wave (fountain pen ink, which I obtained because my husband works for LIGO!)
- Montblanc Alfred Hitchcock (fountain pen ink, sadly long since discontinued)
- De Atramentis Document Black (fountain pen ink, reasonably waterproof)
Yours in calendrical heresy,
YHL - math is bestby YHL
game design notes with cockamamie calendars and/or abstract algebra, especially the Sieve of Eratosthenes Little Wars piano Latest progress over the past several days, achieved doodling during Gundam Seed (“Bad Anime Date Night” with my husband Joe, which is often not bad, not always anime, and not at night!) or other interstices between working on a novel.
- git repository setup, initial commit with Joe’s help. I might have been able to figure this out on my own, but not on two hours of sleep…
- game design noodling (see first photo in this post, above). Need to review Euler’s totient function and Vigenère ciphers, sorry not sorry.
- narrative script outlining. I want to go back into Inkle Studios’ Ink to prototype that. (I love Ink’s IDE!) This and WWISE are where I’ll focus my next efforts, when there’s time.
- prologue music both in my DAW as well as preliminary recordings using Little Wars‘ venerable acoustic piano (see the second photo in this post, above!) with its beautiful rich tone, by arrangement with Little Wars (thank y’all!); and my Yamaha Arius YDP-103. The Yamaha is an entry-level digital piano (a discontinued model), but that suited me: I could afford it, and I play for personal enjoyment and composition sketching rather than performance. I’d like to grab some more takes and experiment with EQ and sound design! I also have Plans involving different orchestrations of the same theme.
- animation progress in ToonSquid.
- background and splash screen progress in Procreate. I’m pretty happy with the palette I generated!
I promised I’d talk about the iPad Air and Apple Pencil I’m using!
ThinkSpace Education apparently sends out periodic? surveys to students about the experience. I’m usually active on the postgraduate Discord but was alarmed that I was getting mentions because I hadn’t poked my head in for a couple days due to Circumstances and I was wondering if I was in some kind of trouble. (You can tell what kind of grade schooler I was…)
No—I was startled to learn that I’d apparently won the iPad Air drawing that one got entered into for returning the student experience survey. Startled and very grateful. I am one of those people who names their devices, so I named it ThinkSpace Fren. :3 (I hope they forgive me the jokey spelling…)
The punch line is that, in a spirit of helpfulness (or helpiness, depending), I returned the survey before they announced the iPad Air incentive. So I really wasn’t expecting this!
I had a rather older iPad + Pencil, which was still perfectly functional, and which was the reason I hadn’t upgraded! In a spirit of paying it forward, I passed that on to a friend who wanted to learn digital art. :3
Yours in calendrical heresy,
YHL