Where were we?
After close to a year without updates it’s a little strange to be writing this again. The last 11 months have involved a large number of (good!) personal changes but as far as pkmn has been concerned I have done a fairly poor job of staying on top of things – it feels like I’ve been struggling to keep pace with the changes from the projects’ dependencies (seemingly a constant issue in software development: you must continue to do work to stay in the same place) to the point where I just gave up last month in the midst of moving, employer pressure, and several international trips. Thankfully, to quote from my about page:
While I occasionally get pulled away or lose interest working on Pokémon for one reason or another (and haven’t actually played the game in over 15 years…), I expect I will always find my way back as I am just as excited about the potential of various projects and ideas as I was when I started.
Getting all of the pkmn projects back building and up to date with upstream proved challenging for a number of reasons:
- Zig 0.16.0 was perhaps the biggest overhaul of the language in the last few years
- TypeScript 6.0 released in preparation for a large breaking TypeScript 7.0 rewrite
- ESLint 10.0 shipped, seemingly always the most frustrating dependency
- Pokémon Champions released
- Smogon rewrote its usage statistics implementation entirely, silently introducing breaking changes
- Pokémon Showdown has seen a large influx of mechanics development, in no small part thanks to André Bastos Dias
At the same time, the software landscape has changed dramatically over the last year – LLMs and “agentic development” are everywhere, enabling projects to ship awful code and cause churn at speeds previously only achievable by the ESLint ecosystem. I’m not sure how I feel about these changes – I find I still prefer writing code by hand, but am excited about the possibility of judicious use of models helping to remove the onerous aspects of programming.
While I am declaring victory on getting the pkmn ecosystem back up and running, that is mostly just an important milestone inasmuch as my GitHub notifications now are “somewhat” meaningful again (unfortunately GitHub’s flaky service means notifications are never 100% meaningful). My immediate term priorities are to:
- continue to keep on top of the normal maintenance and release schedule for the projects
- add Champions support to pkmn/ps
- get pkmn/engine synced with upstream, improve documentation, and fix Disable
Following these, actually finishing the Gen 1 engine (the remaining Haze + durations support feels like it’s something that could be debugged and prototyped by an LLM?) and getting Olympus Mons up and running seem like reasonable goals. It’s been very interesting watching the Foul Play development on Discord and it seems like it would be very fun to be more directly working on a Pokémon AI of my own at this point…
— pre