Skylarks

March 2017 (Week 1)

+ The script interpreter no longer has to live in a dedicated interpreter thread
+ VN content now has its own gameplay scene, and the engine automatically switches from scene to scene when VN scripts begin or end
+ The first scene when you start the game runs a tutorial script instead of dropping you straight into spaceflight mode
+ Fixed the ship spawner (the VN stuff broke it) and made it modular enough to work on both NPC and player ships
+ Planets, stations, etc. are spawned once and stick around for as long as the game runs
+ Text printed from a script is displayed on screen
+ Scripts printing text will wait for player confirmation before resuming execution
+ The input system now works transparently with VN scenes and sends confirmation tokens back to the interpreter
- No support yet for VN background images
- No word wrap yet
- Paragraphs are printed instantly instead of one character at a time
- There's some lock contention that reduces the framerate to about 300 FPS on my laptop from 2009

February 2017 (Week 4)

+ Implemented process spawning, sleep/wakeup, text IO, and about 70% of the message passing subsystem
+ Wrote some demo scripts and set up a (kind of shitty) harness to use them as integration tests
+ Embedded the interpreter in a simple command line interface and fucked around running scripts in text-only mode
+ Embedded the interpreter in my actual engine and wrote a state machine to manage the compilation pipeline
+ Wrote a parser for a lightweight markup language I can hook into at runtime, and added highlighting support to my Vim plugin
+ Fleshed out some storyline treatments and stitched a couple random scenes together into a crude demo reel
- Tracking which scripts I need to load is a pain in the ass and adding this to the asset loader is not fun
- The scene manager doesn't know about the interpreter yet so it doesn't actually run any scripts when you play the game
- Markup tags don't do anything yet
- I had a shitton of work stuff to do, and also wasted about a day on an unrelated side project, so progress was a little slow this week

February 2017 (Week 3)

+ Rewrote the interpreter as a register machine
+ Wrote a pretty-printer to disassemble the bytecode output
+ Implemented the scheduler and got it to launch and run some code
+ Improved the AST transformations
+ Finished implementing AST -> IR translation
+ Finished implementing IR -> bytecode translation
+ Rewrote my README example to actually show some features of the language
- I wrote a register allocator and it's probably the worst one ever

February 2017 (Week 2)

+ Rewrote all IR transformations to be AST transformations instead
+ Made a new, better IR, with blackjack, hookers, etc., after researching SSA instruction set design for about 20 minutes
+ Worked on AST -> IR and IR -> bytecode translation
+ Finally sat down and designed a workable protocol for communication between the scheduler and the rest of the engine so they can coordinate which processes need to be woken up and put to sleep
+ Worked on theme music
+ Wrote a couple of planet descriptions (pic related)
+ Had a LONG discussion about lore with a friend, who decided that the skylark of destruction is his waifu, and subsequently offered to help out with music stuff that I don't know how to do
+ Got new boots and they're COMFY AS FUCK

February 2017 (Week 1)

+ Implemented syntax desugaring for ALL of the complicated flow control stuff in my language
- Said I wouldn't rewrite the parser, then did that anyway, about ten times
- The IR I made is a total garbage fire. It's basically a worse version of the AST, except more of a pain in the ass to work with, and totally useless for writing optimization passes. I might as well throw out all the transformations I've written for it and express them as transformations of the AST itself.
- Discovered a couple of very stupid mistakes in my memory model (that are only a problem because of some details of how I do concurrency) and now I have to rewrite something like half the VM. For fuck's sake.
+ Finally fixed the part of the theme music that's been vexing me for months. I feel good about this.

January 2017 (Week 4)

+ Completely redesigned and rewrote the internals of my scripting language, except the parser (I only rewrote maybe half of that)
+ Improved the Vim syntax highlighting package so my scripts will look cooler in future screenshots
+ Figured out a way to do MUCH more computation inside an individual virtual machine, so the supervisor layer becomes very lightweight and I can parallelize the bejesus out of the bytecode interpreter
+ Wrote a copying garbage collector to deal with the gobs of data flying around whenever a message is received
+ Fixed a design flaw where a message handler couldn't be created from inside any kind of nested scope
+ Wrote a shitton of tests covering every stage of the compiler pipeline so far
- Designing representations for the intermediate translation steps is a colossal pain in the ass
- The LUDICROUS SPEED bug is not 100% solved

January 2017 (Week 3)

+ Rewrote the warp system with lots of improvements to the autopilot state machine
+ Added all kinds of nice scene transition effects
+ Rewrote the weapons system
+ Added a particle system
+ The damage system now ties into the particle system. When killing things, they explode into confetti
- Fixing some stupid bugs also broke the hacks I was using to center splash screen images, so now I have to go back and add explicit support for doing that
- Ships come out of hyperspace at ABSOLUTELY LUDICROUS SPEEDS and before they can turn around and stop they're like a million pixels away from whatever planets they were hoping to visit

January 2017 (Week 2)

+ Modified the new scene system to better model a pushdown automaton
+ Rewrote the entire display system
+ Rewrote the entire physics system
+ Rewrote the entire input system
+ Rewrote the entire ship maneuvering system
+ Rewrote all entity spawning/killing systems
+ Rewrote the collision system
- Weapons, landing on planets, warping to other systems, and AI all need to be rewritten or retrofitted onto all the other stuff above
- The new collision system is exactly as bad as the old one, except that it literally does nothing right now because nothing is using it
- There's currently very little logic to the order these rewritten systems fire in, resulting in very strange bugs and possibly lock contention

January 2017 (Week 1)

+ Rewrote the representation of "scenes" (menus, gameplay modes, etc.) along with the parts of the input system that use it. The new way is much less error prone because combinations that are supposed to be impossible are no longer allowed by the type system.
+ Rewrote the asset loader to work with the new scene model. Now if something goes wrong it will show an error screen instead of just crashing the program. It's also fewer lines of code than the old version thanks to macro magic and Rust's new error-throwing syntax.
- The actual game part doesn't work right now

December 2016 (Week 5)

+ Updated a couple of old ship designs and was pleasantly surprised at how much progress I've made in the past six months or so
+ Tracked down a ragtag band of reclusive 3D art experts who turned out to be a friendly bunch with lots of advice on improving my pathetic modeling abilities
- Invoked the names of the thirteen dark lords, who are now on their way from some volcano in Iceland to flay the skin from my bones

December 2016 (Week 3)

+ Found a cloud-based database editor and imported ALL of my textual notes on characters, factions, storylines, etc. into that format
+ Fleshed out a bunch of character descriptions with appearance broken up into facial features, hairstyle, and so forth
+ Made more spaceships
- 90% of my designs look like one thing in my head and something completely different when I make the model

December 2016 (Week 2)

+ Wrote more lore
+ Constantly chipping away at my spaceship modeling skills
+ Started building a tool to wrangle all my worldbuilding factoids so I don't have to keep them in a fucking spreadsheet
- My keyboard seems to be havvving issues

November 2016 (Week 4)

+ Compiled a bunch of notes on characters and gave names to some of them that didn't have any
+ Dicked around with menu music some more
- I'm a little stumped on how to transition between two parts of the melody

November 2016 (Week 3)

+ Spent a total of like 10 hours chatting with other devs about the theory behind my core mechanics
+ Worked on menu music and somehow made a breakthrough on the main melody
- I still have no idea what I'm doing

October 2016 (Week 4)

+ I got the design to look way more detailed just by messing around with the topology and separating random pieces into a different mesh and turning random edge loops into actual visible features
- I still have 4 million more ships to make and I'm goofing off writing about the fucking skeleton war

October 2016 (Week 3)

+ More lore. LAYERS of lore. I have more goddamn lore than I know what to do with. Looking forward to hiding bits and pieces of it across different storylines so you have to play the game multiple times to even begin to make sense of it all.
- Discovered exciting new ways to make spaceships look absolutely terrible. Seriously, there's something I'm not getting. I'm about ready to bite the bullet and ask for help with this shit.

October 2016 (Week 2)

+ Constantly learning all kinds of useful Blender shit
+ Improved some of my particularly stupid ship designs
+ Refactored some boring engine stuff
- Been busy with work