Programmable computers for Stardew Valley. Fourth attempt.
Make processing of Stardew's resources a configurable function pipe-like process by introducing programming.
-
Add computer bigcraftable (can be placed anywhere) which
- is interactable by player
- has screen and input console
- supports some interpreted programming language (python? lua? - undecided)
- has apis that allow it to interact with other storages/machines..
- auto-discovers machines indirectly connected to it (meaning that machines may form a group by attaching to each other and computer)
- has peripherals
-
Add monitor bigcraftable (can be placed anywhere) which
- will have its own api to display requested data
- will be of different sizes
- will have to be connected directly to computer to operate
-
Add peripherals:
- Wireless stations - allows communication with other computers on a limited distance
- Machine controller - discovers and drives a group of adjacent machines and chests
- Weather station - reads time, day, season, weather, forecast and luck, pushes day/season/rain events
- Player sensor - detects player/NPC presence within radius, pushes proximity events
- Mailer - shows HUD toasts and queues in-game mail from scripts
- Shipping controller - sells items from adjacent chests through the bin, queries prices
- Speaker - plays game sound cues and music from scripts
- Switchable devices - controllable sprinklers and lights
- Item transporter - moves items between chests over the network, so distant storages can feed each other
- Computer - placing computers, disks, how programs run and the JS environment
- Console and commands - the console, JS evaluation, piping and every command
- Storage - the layered file system, external storage and Startup.js
- Networking - the LAN wire protocol, router firmware and peripheral command tables
- Peripherals - setting up routers and using every peripheral
- Testing - the unit suite and the e2e harness that drives the real game
- Multiplayer - what farmhands can do, the player channel and screen casting
- Add bigcraftable type
- Add craftingrecipe type
- Add support for functional redux-like store
- Create dataStore for patcher
- Add support for figuring out the next ids for mod's bigcraftables
- Add dictionary (Data/BigCraftablesInformation, Data/CraftingRecipes) patching
- Add tilesheet (TileSheets/Craftables) patching
- Make computer bigcraftable interactable on use action
- Make computer interaction display centered window
- Make drawable window
- Make a set of custom draw primitives commands
- Make draw stack with merging last drawn image to one
- Make displayed window render custom graphics in batch using commands
- Make an abstraction over stardew's code
- Add support for interpretable language in-library
- Add VMs (sandboxes) for each computer instance in world
- Add save state mechanism for computers, make them movable and attach id tag for any obtained computer
- Add basic console interpreter for each computer
- Add basic stdlib apis for computers
- Add per-save state for computers
- Add support for file system (storage encapsulation)
- Add support for custom packages loading
- Add support for public networking
- Add support for layered file system
- Add support for separate core libraries
- Add peripherals support with event-based communication
- Add support for computer-to-computer communication
- Add possibility of auto-discovering machine groups with computer as controller using peripheral
- Add CI with build + tests and tagged releases
- Add e2e test harness driving the game over a control channel
- Move subscribe/event-push handling into shared peripheral code
- Add weather station peripheral
- Add player sensor peripheral
- Add mailer peripheral
- Add shipping controller peripheral
- Add speaker peripheral
- Add switchable device peripherals
- Add item transporter peripheral
- Add monitor driven by computer over the network
- Add multiplayer context syncing so farmhands can interact with computers and peripherals, entities stay host authoritative and clients proxy screens and input to the host
- Add package-based libraries
- Automate mod for Stardew
- OpenComputers mod for Minecraft
- Graphics from Stardew Valley (original computer design recycled)
- HomeVideo CC0 font from https://ggbot.itch.io/home-video-font
- Monogram CC0 font from https://datagoblin.itch.io/monogram
- Jint library from https://github.com/sebastienros/jint
- Stardew Valley modding guide from https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started
This mod does use LLM-assisted tools (i.e. Claude code with local models) for coding. Every artifact produced by an LLM is carefully reviewed and iterated upon many times. None of other assets are generated, including images and text, unless specified.
The technology itself should empower users, and bring our world to a better place than it is right now. In some capacity it already does automate a lot of boilerplate and manual work, while allowing one to iterate on ideas faster. I truly hope that one day the bubble will pop, and malicious actors in power would bear the consequences of their choices.
Please read: https://humanstatement.org/
