notes dot txt
merch stuff
- tapes due 29 july (1-2x 40cm clear tape, 1x die-cut tape)
- 40mm x 350mm with 1.5mm
- die-cut tape template is in manu templates folder
- sticker tin due late july (1x tin design, ~20 small stickers (to be mirrored))
- planning to do clear stickers, so hopefully doing the cut lines won't be too annoying
- the white ink WILL be annoying
- insp: gba/famicom game boxes (more specifically gba in style, but probably don't actually have to use this exact palette for print...)
- 3x bottle cap buttons (received) (note these took about 3 months to arrive so planning required for future orders...)
- full clear sticker sheet(s) ? (depends on if there's time, which there sure doesn't seem like there's much of...)
- more cats
- drinks theme
terraria todo
- get angler for quests
- underground exploration
- get some lava
reset days
17/6
9/6
1/6
24/5
16/5
8/5
30/4
22/4
todo:
- raid unlocks after my numpad arrives
- get new soil and moss...
chococro todo:
- custom css
- probably ditch the graphs bc none of these pages are connected anyway
Lorekeeper oekaki
https://adevait.com/laravel/how-to-create-a-custom-package-for-laravel
Thinking of making this a package rather than the traditional method of making an extension.
Things to ponder:
- Ability to submit/link an oekaki submission to a prompt and/or gallery post
- I feel like it would probably be easier if I didn't, since I don't want to touch the existing code too much with this
- Using the existing comments system for oekaki comments?
- Ability to create multiple boards
- Permissions to view/draw/comment on specific boards
- Uploading to board?
- I personally think this one isn't really necessary; it feels like a feature that was a product of its time when there were few other places to show off pictures
- It might have utility in allowing users to draw on a picture though...
- The other thing is that this makes it quite spammable
- Config
- Ability to bump posts (bump button)
- Whether commenting bumps a post to the top
- Auto deletion settings (how many posts to store)
- Save animations and animation storage (this one depends on the drawing apps, need to do research)
- Available apps (PaintBBS NEO, ChickenPaint, Klecks)
Right now my main concern is figuring out how to handle the drawing apps and editing pictures...
- App updates
- Not sure how I'd handle this...these are javascript so I'd expect them to be managed by...idk...npm or something
- The thing is that I...don't know how I'd do this in a package.....????? It doesn't seem right to do this in a Laravel package, this is definitely a whole plugin thing but I want to make this work
- So the next best option is to manually include a particular version of each app, which I don't want to do in the Github repo
- This means probably an extra installation step...? I could require the user to create directories to place a downloaded version of the app
- Then to update a specific app they'd just redownload and replace the files
- The problem with this is that I'm actually not 100% certain how this will interact with the package code (will I be able to refer to these files? I guess, if they're in the public directory?) but I guess I can figure it out
- The other problem is that klecks doesn't provide a prebuilt release version, so I can't really include it here...I could make it compatible but it'd be up to the user to provide the files
- It kinda sucks but I'd still have this same issue with including the app code even if I did this the other way wrt extension installation
- My hope is that the only other requirements for installation (aside from package installation ofc) is for the site owner to manually add links to the oekaki board hub/user oekaki profiles to the navigation/user profiles by themselves.
- This is because I don't want to touch the website base code, and I think it makes sense for the owner to decide where these links go anyway. I would put the board hub as a top level link but maybe they'd rather it go under some other header.
- Displaying the app
- PaintBBS NEO: https://hp.vector.co.jp/authors/VA016309/paintbbs/document/Readme_Shichan.html https://github.com/funige/neo/blob/master/README-params.md
- This will probably take a while to go through but I will do it for the love of PaintBBS
- I'm not sure about the others but as they're more modern (and actual Javascript) I think they'll probably be easier to set up
- PaintBBS NEO: https://hp.vector.co.jp/authors/VA016309/paintbbs/document/Readme_Shichan.html https://github.com/funige/neo/blob/master/README-params.md
- Data returned from each app
- PaintBBS NEO has an external palette manager (DynamicPalette) as well
- Should I try saving this configuration per user? It seems like a handy tool to have
- If it's saved, I might be able to implement palette import/export as well
- DynamicPalette already has a feature to output a string containing all the current palettes, I could simply save/load this
- Translations
- PaintBBS NEO especially has a lot of translatable text
- I'm not sure how to combine this with updating the app to the newest version while preserving the translation strings
- POTI-board seems to have a workable English translation - not perfect but I think it's enough for understanding? This includes DynamicPalette
- I...don't know where DynamicPalette comes in? Is this bundled with PaintBBS NEO or is it with POTI-board?
- DynamicPalette is really quite powerful, but some things are not terribly intuitive
- The matrix selection type 追加 is not used with 取得 but only セット (it appends the current data to the palette list)
- On that note DynamicPalette's palette list really needs an upper bound on its height of maybe 300px
- IDK I think I will probably have to write a guide on this
- PaintBBS NEO especially has a lot of translatable text
- Adding more drawing apps
- I don't actually know how this can be set up. I kind of have an inkling of how to do it, but I also feel like there are going to be complications that make it difficult to maintain separation with the website code itself.
- Basically have the option to publish views to the main app - this I would already do anyway, since it will allow people to customise the views
- Each app has its own identifier string that will be used to shunt requests to the correct route
- For the built-in compatible apps they'll post to routes provided by the package - each app has a different destination to handle any differences in file formats. User can add their own routes for a custom drawing app.
Features
-
Admin
- Ability to create boards
-
Ability to create board ranks for users
- This is separate from user ranks - a user having a board rank doesn't give them admin panel access
-
Board rank permissions
- Create/delete boards
- Edit board settings (see settings)
- Edit board permissions (see permissions)
-
Edit board header (see header)
-
Board settings
- Name and description - self-explanatory
- Header image - also self-explanatory, displayed in the hub and also at the top of the board itself
- Visibility - hard overrides any viewing permissions, only "edit board settings" permission can view this board. Can be used to shut down a board in case of an emergency.
- Maintenance mode - hard overrides any posting/editing permissions, only admin can make any edits to this board and the posts on it. Can still be viewed.
- Comment bumping toggle - a comment bumps a post to the top
- Edit bumping toggle - an edit to a drawing bumps a post to the top
- Allow bumping - displays a button for the sole purpose of bumping. Must also have "bump a post" permission to see and use.
- Storage - how many posts will be kept (0 for all of them)
- Minimum drawing time - user must have drawn for this amount of time to post a picture. Admin account ignores this requirement.
- Colours - will have to look at the app styling to see how these can be applied. NTS to give each board a unique CSS identifier based on the board id so that they can be styled individually.
- Minimum dimensions - minimum size for a drawing
- Maximum dimensions - maximum size for a drawing
-
Board header
-
This is a text section at the top of the board where someone with "edit board header" permission can write some text that is more frequently updated than the board's name/description. Intended for a lower-level moderator to be able to run some activities and etc. without having access to more destructive powers.
-
-
Board permissions
- Permissions here are specific to each board rank's experience with each board, while rank permissions are universal/on a higher level.
- View board
- Draw on board
- Delete posts on board (all posts; for moderator use)
- Delete own posts on board (self only)
- Bump a post
- Drawing cooldown - must have not posted a drawing for this amount of time to post again
- Comment cooldown - same but for comments
- Default board images
- Board header image
- Censor image
- User sanctions
- These override board permissions associated with the user's rank - used to put specific users in timeout
- View board sanction - user cannot view this board until given date
- Drawing sanction - user cannot draw on this board until given date
- Comment sanction - user cannot comment on this board until given date (note that these 3 are all mutually exclusive)
- Drawing cooldown - user must have not posted a drawing for this amount of time to post again
- Comment cooldown - same but for comments
- User
- User oekaki settings
- Last drawing at (used for sanctions)
- Last comment at (used for sanctions)
- Drawings per page
- Display censored pictures - don't hide pictures basically
- Default drawing app - QoL setting for choosing the default selected app in the dropdown before drawing
- User oekaki profile
- Lists some basic stats - board rank, number of pictures drawn, link to their main profile
- Shows a list of recent pictures that are still in existence
- Bookmarks
- Allows user to bookmark pictures on the board - all private
- Bookmarks can be sorted into folders
- Bookmarked pictures can be tagged with characters that the user owns?
- This will cause the picture to show up on a tab for that character's page
- I'm pondering this bc I'm unsure if this can be used to grief someone's profile/posts
- Frankly you could just submit the picture to the site gallery and/or prompts and that would work fine, so this seems unnecessary
- Bookmarks are deleted if the picture is deleted
- Posts
- I think people should be able to ping people in posts
- Each post should also have a permalink
- I don't want to implement likes - dislike them from a user perspective and also from an implementation perspective. If it's for collecting images, bookmarks already do this.
-
Divided on using existing comments vs. implementing a separate comment system. On one hand I could hook into the existing functions, on the other it might encroach upon site code to implement viewing permissions. Have to look into this.
I think it's about time to rewrite loader...if I still feel like doing this when I'm free...
Loader
- Basic features
- Images
- Ability to create/rename/delete folders
- Folders can be nested
- To avoid discoverability, only the current folder name is shown in the URL (actual image folders are not nested)
- Upgrade this by allowing folders to be sorted
- Ability to manually upload via dropzone
- Upgrade to give uploaded images a simple name field (just the image's filename by default) - this is for stash view
- Ability to edit an uploaded picture
- Reupload (fix without breaking the link)
- Edit description
- Edit name
- Ability to upload by posting data to an endpoint
- This will always be from ShareX
- Upgrade this by further generating year/month directories
- Ability to move images between folders en masse
- Generate thumbnail
- Generate direct link/img src/bbcode (frontend)
- Generate palette for image + thumbnail
- Upgrade this by saving the generated palette image rather than on page load
- Honestly I don't use this that much but it might be worth keeping
- Show exif data
- Permissions on directory viewing
- But make it only public or private, the middle permission never got used
- Can ditch:
- Image/folder descriptions
- Seemed useful but as I never
- Directory size calculations
- Or at least, cache this data
- It's only been useful to me like, right now, when I'm trying to figure out how to back it up and potentially move servers
- Browse by date
- This was a good idea but in practice, I already name my files by date and screenshots are also sorted by date
- Tagging
- This was also a good idea but I never use it
- Image/folder descriptions
- Upgrades:
- User reg w/ invite code (just for friends; stressing that this is personal uses only and not an image host for things that get a lot of bandwidth)
- Stashlike view page
- Probably accessible from loader.(domain)/stash
- Shows all recent uploads - can select a folder to filter out specific pics
- The drag-drop upload comes with an additional dropdown to select target folder for uploading (remembered in browser)
- Note that moving to a diff folder breaks the link, so this is a push to be mindful of where stuff is getting uploaded
- Drag and drop an image onto another image to create a stash
- This does not move the original images anywhere, only create a collection of images
- Stashes can also be dragged onto each other to nest them
- Each stash has a hash used for a url
- Images or nested stashes can be popped out of the current nest
- Stashes have a name and description
- Images in the stash also have a name and description
- Actually you know...I could just make this an entirely separate app lol...hang on let me write the specs
- Ability to create/rename/delete folders
- Texts
- Ability to create a text on the page
- Various display features
- Upgrade by adding a code editor
-
Thumbnail image
- Ability to create a text on the page
- Images
Not-stash
- Standalone image/file host app
- The idea is that you can create one of these on a server - like, an instance of this, and use it out of the box just like stash
- However I also want this to be able to host some other files, such as text and audio
- It's not intended to be an archival system, just a quick way to upload images and put them into groups to link to people, but will have to think of ways to manage and find existing images
- Login stuff and all that
- Library management
- Library - the entire collection of a user's uploads. All private. The storage volume is tracked when a file is uploaded or deleted.
- Folders
- Folders are very rudimentary, they're just collections of stuff that you organise so that you can find them more easily to make stashes with. Kind of like GDrive folders, but you can't set viewing permissions (they're always private)
- Create/rename/delete - renaming and deletion does not move or delete uploaded files (files in a folder are simply moved to the folder above them)
- Files
- Can be renamed. Not sure if I want this to break links.
- API
- Can take a simple post request with an API key to upload a file (for use with ShareX or what-have-you)
- Stash nodes
- A reference to each file - generated when a file is dropped into a stash
- Nodes don't have to be in a stash...or perhaps it's more accurate to say stashes are just nodes that are collections of nodes
- Created and manipulated by dragging and dropping similarly to the stash interface
- Has to check that it's a valid tree when dragging and dropping...
- Have name/description/thumbnail URL
- Even for files - for editing separately from every instance of that file
- The thumbnail URL is optional
- Image nodes crop the thumbnail from the image
- Audio nodes display the thumbnail like album artwork, otherwise it just shows the title
- Text nodes without a thumbnail show the title and part of the text (tags stripped), scroll on hover
- Nodes that stash nodes just uses the thumb of the first image (hover flips through the thumbs in the stash)
- Can be duplicated (useful for creating slightly different sets of information for different commissions)
- This makes a deep copy of the node tree (while keeping the referenced files the same)
- You can go down a node, but you can't go up a node (unless all this stuff belongs to you)
- Can be password protected :)
- By default, stashes are public to anyone who has the link
- Nodes inside nodes can also be password protected
- Link to generate a zip file of the included files - I don't know how to do this, assuming it can password protect the interior folders too lol...
- A reference to each file - generated when a file is dropped into a stash
-
Frontend
- Library page
- Simple view of folders and the files in them
- Upload to a folder here
- Create a text page (has a dropdown for target folder before submission)
- Click + drag to select multiple files
- Option to put all selected files into a new stash
- Stash page
- Also has a drag and drop upload with a dropdown for target folder, and link to the text page creator
- Doing this here automatically generates a node for that uploaded file
- Click + drag to select multiple files
- Single files or multiple selected files can be dragged onto each other to combine into a stash
- Also has a drag and drop upload with a dropdown for target folder, and link to the text page creator
- Some miscellaneous notes
- Personally don't like the silent update when editing text. I think there should be a submit button to confirm destructive changes and an unsaved changes prompt
- This includes when updating names and descriptions, not just the text files
- For text files, a fixed bar w/ a prominent save button would help I think
- The inline wysiwyg editing is fine I don't mind keeping that, although I think images are best added w/ the image urls rather than dragging and dropping them in
- Personally don't like the silent update when editing text. I think there should be a submit button to confirm destructive changes and an unsaved changes prompt
- Library page
-
Admin panel
- Open/close registration w/ invites
- Set user tiers - for giving users different allowances
- Maximum upload size (note that server's post/upload size properties should also be checked)
- Permissions for uploading certain file types
- Max storage capacity
- Permissions for deleting other users' files/stashes
- Character/byte length limit for text (hhhmmmmm should this be stored in db or actual text files)
- Max tree depth (to prevent people from being obnoxious with duplication)
oc roleplay, browser-based japanese online games
source: Rの手記 https://rs-game.link/
Rの手記 (henceforth RS) - a blog dedicated to scheduled online games.
- I haven't felt around these games enough to get a feel for what these games are going for/have in common so this is subject to revision
- There also isn't (to my knowledge) English terminology for this genre of games, so I will be coming up with names as I go. It's quite hard to grasp the system without having played anything like it before, and RS uses the terminology with the understanding that readers also understand
- The primary targets of my interest are commercial PBW (Play By Web) games and 定期更新型ネットゲーム (scheduled games)
- PBWs - this refers to roleplaying on the Internet in general. These are primarily run on old-school BBSes and chatrooms, sometimes email, but I've seen at least one that runs on Discord.
- http://playbychat.jpn.org/ - A website that collects PBW links. Just by looking at the platform search options, there are a lot of variations to this. Interestingly, what I think is the English analogue of this kind of thing - RP forums - isn't on this list...instead, you have BBSes, which are much more pared-down. A lot of these websites look very 2000s in how basic they are, but are still active in the year 2023.
- As much as the community-run PBWs are interesting to look through, I don't want to bring too much unwanted attention to any particular ones, so I won't be talking about them in detail. In any case, my focus is on systems they have that the English-speaking community doesn't; even though the platforms they're run on are different, it's more or less what we already have, though maybe with more of a focus on first-person roleplay.
- Instead, I'll be looking at the large-scale commercial ones that are supported and run by companies, as they have certain features that involve hiring artists and writers, and this clearly seems to be working as a means of generating profit off amateur creativity without diluting the interest in creative activities, as these games have existed for many years.
- 定期更新型ネットゲーム - Regularly scheduled online games. As I understand it, many of these are run by hobbyists. It refers to a type of online game that processes game world updates intermittently as opposed to immediately, also known as 非同期型ネットゲーム (asynchronous online games). RS puts both these scheduled games as well as AP-based games under the same umbrella. Unlike regular online games, there's a "bring your own" element to the player character/graphics, and they're usually text-heavy/text-based.
- Scheduled games (定期更新型ネットゲーム) - Rolls over on a regular schedule, usually a week, not necessarily on a cron (I gather that some of them are manually rolled over). You choose your gameplay actions any time before rollover and receive the results afterwards. Every character is updated at the same time.
- A little note on the wording is that choosing your action commands is called "registering" (登録) them, and so this leads to such terms as lit. "continued registration" (継続登録) which is really just command selection on an existing character for the next cycle.
- AP-based games (AP制ゲーム) - Updates are processed immediately, but your actions are gated by a regenerating point system (AP) instead. It should be familiar to mobile game and petsite players.
- The actual gameplay varies drastically from site to site. For example, Fairytale Sketch is built around visiting nodes on a map and engaging in battle. Simgaia requires only 1-3 minutes a cycle to choose actions, primarily clearing missions with various objectives. Yurikagami is also battle-centric, but more similar to an RPG video game in that your character's location does affect the actions they can take (the website and interface design are also very 2000s in contrast to how much content there is).
- The appeal of these games (especially during the downtime when you're waiting for an update) is that there's a strong focus on being able to build your character. Most or all of these allow you to upload a picture of your character - usually also includes expression icons, maybe even a "cut-in" banner that's displayed in turn-based battle. Typically there's also support for players to communicate and roleplay with each other.
- Note also that the game systems are developed enough that you CAN join these games for the primary purpose of playing them!
- Some of these games are monetised - examples I've seen are pay to play (pay to gain updates for an amount of rollovers, much like a subscription system), and pay for game rewards. The latter, notably, is rarely anything that would give you an unfair boost in game, but largely rewards like extra icon slots and roleplay items. Some games also reward art donations (for NPCs/enemies/environments/etc.) with in-game rewards.
- Many of these games run on a long-term schedule with an ending in sight. Some are based on number of rollovers/just a duration of x months, but not necessarily; for example, Yurikagami ends when the demon lord is defeated (thus far it has restarted 5 times). This scheduling is, of course, based on the availability of the game moderator(s).
- Is there an analogue to this in the English-speaking side of the Internet? I don't think I know anything like it, but if I were to try and explain: imagine if you were to play something with Kingdom of Loathing's website layout and expectation of adventure, with the story and progress rate of a free-to-play mobile game, and the visuals of a Dragonriders of Pern roleplay. Ideally you get hours of entertainment out of the Gaia Online boards attached to it; the real treasure is the friends you made along the way. Also there are a whole bunch of these with the kind of variance you get in petsites - compare Neopets to Flight Rising to Mycena Cave to Wajas, and so on.
- It all sounds extremely appealing, except that the existence of something like this is very heavily reliant on there being game programmers who are interested in running a multiplayer game regardless of profit, and can (for the most part) rely on the goodwill of the community to not abuse the image uploads.
- Scheduled games (定期更新型ネットゲーム) - Rolls over on a regular schedule, usually a week, not necessarily on a cron (I gather that some of them are manually rolled over). You choose your gameplay actions any time before rollover and receive the results afterwards. Every character is updated at the same time.
https://pbw.daynight.jp/basic/
Modifications needed to lk to add major systems
On characters…
- job system (proficiency levels and exp, job unlocks, refreshing data)
- ascension system (ascension levels and exp)
- titles
- attached frames, graphic parts
- attached minipet
- character locked cards (skills/card inventory)
- stats system
- personality
- dungeon log
- busy flag (to restrict activity when something is in progress)
On images…
- masterlist framing system (masterlist image and thumb)
- additional graphics generation (card image)
On users…
- mine levelling system
- card album - battle cards are voluntarily registered to this album, making them usable in battle
- The card album can hold a maximum of 3 copies of each card (thus limiting each card to a max of 3 instances in battle)
- This is permanent - cards cannot be removed from the album
Cards and battle (new system)
- new item type that can be attached to characters, used for character-locked cards
- card effects - a way to flexibly extend card and battle effects
—-
Card battle system thoughts
- battles should allow an arbitrary number of battlers with at least one enemy, one player and 0 supports
- battles should allow an arbitrary number of card slots for all battlers separately (this should be denoted by types enemy_id (specific enemy id), enemy (only enemy), player (the player’s main character), support (extra non-player characters))
- when there are multiple enemies, the enemies must be distinguished from each other in AGI at least. auto target will target the slowest enemy first.
- of course, for normal battles this is restricted to one enemy, one player, 3 cards each - the provisions are for special battles
- when a battle is started, the main character is put into busy status, and the battle setup (enemy, enemy cards, enemy stats etc) cached into a battle instance table
- player cards are not cached - this does allow the user to obtain cards/stats out of battle and return to it but I don’t feel this is a loophole that needs patching (as I want to be lenient). however due to ownership consistency and other concerns the character needs to be put into busy status and they must leave the battle to be traded/job changed/start another battle etc.
- the battle resolution is calculated when the user submits their cards. if they fail they can try again as many times as they want (so it’s more like a simulation), but if they can’t win they have to leave the battle to continue doing activities with that character.
- cards effects are defined in referenced functions which can take in parameters
- the more unusual cards can modify the function queue as it’s being resolved, so functions should receive a copy of the function queue
- cards may reference temporary variables (e.g. card 1 generates 2 stacks of energy, card 2 consumes one stack to take effect) so there should be a way to manage these created variables as well
- for wider gameplay purposes, some cards are able to apply modifiers on drops; these should not have any battle effects
- cards may have subeffects that always happen out of order (e.g. this card always takes priority) that may take place before the entire function queue is resolved
- I suppose the resolution phases are
- Obtain turn order and participant stats
- Loop through cards to retrieve any subeffects/reward modifiers
- Apply subeffects (pre-processing), generate function queue
- Apply function queue
- Apply subeffects (post-processing)
- If battle is won, apply reward modifiers
- the important thing is that card effects cannot have RNG effects as players are allowed to try repeatedly to clear a battle; exception is for effects that affect the drop rates as the reward is only calculated on a win
- I suppose the resolution phases are
- also, I want to be able to show a replay, so there has to be a way to pass the calculation to the frontend and parse the temporary variables
- raid type battles - not immediately resolved, focus on total damage dealt, but need to defeat opponent in the stat comparison step. can be redone while raid is active but rewards are given only once at end of raid
- not an immediately necessary feature as this requires a playerbase for the raid to be won, just something that I want to allow for in the future
- encounter battle settings - encounter type (sentinel, dungeon, raid), encounter zone, card slots (for enemy/player/support), enemy list, drops
- encounter zones are split into multiple depths, with higher player level allowing access to deeper depths with stronger enemies
- enemy settings - stats, card list, reward pool, reward slots
- the card list can define a pool of cards grouped by minimum level, with specified (or unspecified) slots for those cards
- reward pool can also define rewards by minimum level and win/loss
- autobattle allows you to win any encounter battle 5+ levels below your own (dungeons still require you to fight)
- consider doing a battleset system where player can define a set of cards that can be selected for a quick battle, like a macro
—-
Card effect brainstorming
- add/remove atk/def/compared stat to self/enemy
- multiply atk/def/compared stat (self/enemy)
- the above but applied to the minipet (the above ones apply to base stats)
- steal opposite card slot’s effect
- negate opposite card slot’s effect
- swap self/enemy’s compared stat
- choose opposite compared stat (if atk is selected, choose def instead and vice versa)
- convert % of atk/def/agi to add to compared stat
- add a burst stack to character, with post effect that each burst stack adds x to the compared stat
- add an elemental stack to character, which can immediately remove opponent’s losing elemental stack, remainders processed as post effects
- add a debuff stack to opponent, with post effect that character's compared stat is multiplied based on number of stacks or opponent's compared stat is debuffed
- this cannot apply to stack damage since that would imply a resolution order
- remove specific stacks from enemy/self
- convert types of stacks on a character to different stacks
- invert the remaining function queue
- copy opponent’s stats/copy self’s stats onto opponent
- nullify opponent’s minipet boost
- increase/decrease effect based on current slot
- swap card slots with self or opponent
- (enemy only, for a very weak opponent) invert win condition subeffect
- increase loot drop slots
- reroll loot drops and pick the rarest drops to fill the drop slots
- increase rarity of drops
- capture opposite card (if possible)
Subeffect restrictions
- for player cards, these cannot be effects that affect turn ordering
- example of use: apply a stat reduction before the opponent does a stat multiplier
- subeffects should not rely on turn ordering to resolve - adds additional complexity to steps that aren’t meant to be complex
- there was a cosmic entity like a god that had latched onto the steorling planet and devoured steorlings (and other life) at regular intervals
- similar to thread (pern), it would basically rain disaster on the planet and the steorlings assumed this as a fact of life
- however every time this happened it caused major casualties to the population
- also a possibility that the disasters would not stop until a certain amount of lives were claimed (calamity went on longer during times when the steorlings were more prepared)
- "regular intervals" is about maybe a couple of decades in human years? short enough to be a problem, long enough to be like "eh but we can just deal with it..."
- they didn't know what was causing these disasters for the longest time and thought this was like...just part of living on this planet...until they discovered the god living beyond the sky and wondered if it could be destroyed
- eventually some brilliant minds and brave souls put together a god killing machine
- probably involved crystal lasers
- whatever it was, it was expensive (perhaps costing several lives for the single shot) and not feasible to use terrestially but the cost was deemed worth the result
- the god was killed
- it died but did not go away
- instead it started to decay and fall to the planet
- its parts landed in the sea, on land, and began to spread a pestilence
- these are the hives and its minions are the remnants of the god's mind left with only the instinct to feed without cease
- and the steorlings have to deal with the fallout until the last fragment of the corpse has fallen to the planet
- the stars are the extensions of another god similar to the one that was just killed
- these and the dead god are similar to TLT's resurrection beasts in vibe - they have minions as extensions of their being
- of course, no one knows where the stars come from
- what they do know is that in the wake of the hives dropping they had nothing to defend themselves with, nothing so strong as a god-killing laser
- and there were these stars that promised them the power to fight in exchange for life force - not all at once, just a little at a time
- the cost was deemed worth the result
- and so the steorlings took up the offer of a living god to fight against a dead one
- technically speaking, the dead god is finite, but it's also unfathomably large
- eventually it will run out and the steorlings will no longer have need for the stars
- but this will be, essentially, eternity for the steorlings
- the source of the hives is, actually, not very confirmed on the steorlings side - it is assumed that the god dying had something to do with it, but they think of it as being more of like, divine retribution rather than a direct cause and effect thing, or maybe the god isn't truly dead
- thus, they don't know how long they have to contend with the hives, but at the moment the general sentiment is that the existing ones have to be excised first, and then preparation and training can be done to deal with future hive drops before they can take hold and spread, and that will be their long term plan
- perhaps less bold than attempting to find out and deal with the root cause, but many are understandably reticent about making another move on the same level of the god-killing attempt after the last one had dire consequences for them, and with all this going on they don't have a lot of resources anyway
rules of chopsticks
- assume you have 2 hands, each with at least 4 fingers
- this game is played against an opponent also with 2 hands and at least 4 fingers on each hand.
- both players start out with a value of 1 on each hand (hold out your index fingers pointed at the opponent)
- the fingers indicate the value of that hand so basically just show that number of fingers
- the maximum value a hand can hold is 4. if the value is 5 or above, that hand is dropped.
- you win if your opponent has no more hands to play with
- players take turns to make moves (decide on who starts first however you want)
- there are two kinds of moves you can make
- use one of your hands to tap any other hand in play, to add the value of that hand to the tapped hand
- you cannot add the value to the same hand
- you can use this to intentionally drop one of your own hands
- clap your hands to add both values together and split them between your hands however you like
- the primary use is to revive a dropped hand if you have more than one finger on your remaining hand
- I actually don't remember if you can resplit e.g. 1/3 into 2/2, but I seem to have the reflex for doing so, so I assume you can
- similarly, I'm not sure if you can split swap to "wait" one turn e.g. 2/3 to 3/2, but I might have experienced this before?
- the issue with this is that if you and your opponent both do this to try and force the other to move it's going to be endless
- but I guess there isn't a situation where this is going to be the optimal play anyway (in the 2/3 case there's almost no reason to wait a turn that wouldn't be better dropping the 2 hand)
- I do know you definitely cannot do 1/0 to 0/1 though, so I think it's better to disallow this
- use one of your hands to tap any other hand in play, to add the value of that hand to the tapped hand
a few strategies emerge:
- if you can get your opponent down to 1/0, you only need to get yourself to 3/0 to secure a win
- conversely you don't want to get down to 1/0 because there's a high chance you will lose, so having at least 2 fingers on both hands means you can't lose immediately
Fields in Big Cartel's CSV:
- Number - this is the reference number
- Buyer first name
- Buyer last name
Buyer email
Buyer phone number
Date
Time
- Status
- Payment status - I don't think there will be issues with these two, but just add a sanity check for "completed"
Transaction ID
Shipping status
Shipping methods
- Shipping address 1
- Shipping address 2
- Shipping city
- Shipping state
- Shipping zip
- Shipping country
Currency
- Items - formatting described below
- Item count - this is the number of quantities all added up - use for consistency check
- Item total - total price of all items added up - use for consistency check
Total price - this includes shipping
Total shipping
Total tax
Tax remitted by Big Cartel
Total discount - unsure how this will interact with everything else. I think it can be ignored though since this parser is just for filling in the form
Discount code
Source
Note
Private notes
Item formatting
This comes in a string, no double quotes, all concatenated together, e.g.
product_name:Tiny Posters - Stickers|product_option_name:Butterflies (holographic foil, glossy)|quantity:1|price:4.0|total:4.0;product_name:Tiny Posters - Stickers|product_option_name:Star chart (holographic foil, glossy)|quantity:1|price:4.0|total:4.0;product_name:Admit One - Washi Tape|product_option_name:|quantity:1|price:12.0|total:12.0;product_name:Milk - Bottle Cap Buttons|product_option_name:Moonlight Blue|quantity:1|price:10.0|total:10.0;product_name:Milk - Bottle Cap Buttons|product_option_name:Morning Mist|quantity:1|price:10.0|total:10.0
Fields are separated with a pipe and items are separated by a semicolon.
Fields are:
- product_name
- product_option_name - this is important for distinguishing between things like the tins with or without stickers
- quantity
price
total - I actually don't think I need either of these pricings due to aforementioned tins
Singpost formatting
Send to business name line 1 (Max 35 characters) - ,
Send to business name line 2 (Max 35 characters),
Send to address line 1 (Max 35 characters) - ,
Send to address line 2 (Max 35 characters) - , - Some addresses don't have a line 2. Previously split the house number/road name into 2 lines and this worked (or no one complained they didn't get their package), but this looks awkward and I worry it may cause problems. Try hacking with a special space or something?
Send to address line 3 (Max 35 characters),
Send to town (Max 30 characters) (Please spell in full),
Send to state (Max 30 characters) (Please spell in full), - Fortunately, Big Cartel already provides this in full
Send to country (Max 2 characters) - * (Refer to Country List sheet), - Country list sheet has been taken down. Will try to use ISO country codes instead...which, Big Cartel already does. Long live Big Cartel
Send to postcode (Max 10 characters),
"Sender VAT/GST number (Max 50 characters) - Sender IOSS number for European Union (EU) destinations, or VAT/GST number for specific destination where applicable.",
Sender Reference (Max 20 characters),
Type of article - Please type in either LL (for letter) or AS (for small packet) - (Max 2 characters) - ,
"Size - Please type in either RG (for Regular), LG (for Large) or NS (for Non-standard) - (Max 2 characters) - * ",
"Category of Shipment- Please type in either D (for Document), G (for Gift), M (for Merchandise), S (for Sample) or O (for others) (Max 1 character) - ",
"If ""Other"", please describe (Max 50 characters)",
Total Physical weight (min 1 gm) - , - Value in grams
Item Length (cm),
Item Width (cm),
Item Height (cm),
Service code - Refer to Service List sheet (Max 20 characters) - , - I don't know where the service list sheet is, it may have been removed. Previous attempt used IRAIRA in this field.
Currency type - for all item values (3 characters) -, - Previous attempt used SGD.
Item content 1 description (Max 50 characters) - ,
Item content 1 quantity,
Total content 1 weight (min 1 gm), - Value in grams
Item content 1 total value (in declared currency type),
Item content 1 HS tariff number (Max 6 characters),
Item content 1 Country of origin (Max 2 characters) - * (Refer to Country List sheet) ,
Item content 2 description (Max 50 characters) - ,
Item content 2 quantity,
Total content 2 weight (min 1 gm),
Item content 2 total value (in declared currency type),
Item content 2 HS tariff number (Max 6 characters),
Item content 2 Country of origin (Max 2 characters) - * (Refer to Country List sheet) ,
Item content 3 description (Max 50 characters) - *,
Item content 3 quantity,
Total content 3 weight (min 1 gm),
Item content 3 total value (in declared currency type),
Item content 3 HS tariff number (Max 6 characters),
Item content 3 Country of origin (Max 2 characters) - * (Refer to Country List sheet)
Delineators and etc. can be edited but by default:
- Comma delineates columns
- Double quotes delineates values
- Backslash escapes double quotes
Surprisingly there's no total value field.
Plan of attack
- Split into two steps:
- Upload the Big Cartel CSV and do some basic processing to fill in as much data as possible.
- Any processing to remove shipments that aren't supposed to go out yet, etc. should be done at this stage in the CSV!
- Basic processing retrieves all products in each order, and loops through them to produce a list of packable items.
- Manual step to fill in certain details:
- Packaging type (radio select (maybe even with default values) any of my existing packaging types + height if necessary, or custom packaging)
- Package weight
- This step also produces a list of items sorted by narrow category and bonus stickers that I need to get out, which will help me with packing. A total list of items would also be helpful.
- Output a CSV based on all these. Any other custom editing can probably be done after this CSV is downloaded
- Upload the Big Cartel CSV and do some basic processing to fill in as much data as possible.
- I think I should categorise my items extremely broadly - ideal if I could get them all within 3 categories
- First, sort all items into their most specific item type
- If there are 3 or fewer item types in the order, continue with their specific categories
- If there are more, switch to the broader category instead
- The broader categories are supersets of the specific categories - e.g. washi tape will always be under stationery, pins are always under accessories, etc.
- This may cause unnecessary constraints down the road but I'll deal with it then
- 3 categories:
- Stationery - tapes, stickers, paper products
- Accessories - enamel pins, buttons, metal products
- Toys - stuffed products, acrylic charms, tin boxes
- Need some basic data. This is all loaded in the first step as a sort-of database.
- Product data should have
- Name that is an exact match
- Options
- Names that are an exact match
- Output items for each option
- Output items - a single product should be able to put out more than one item (this is in the case of stickers + tin). Can be a list of IDs. Maybe a bit of an abstraction here since currently listings don't refer to the same items separately...but this is just in case I eventually offer combo sets as separate listings.
- Output items should each have:
- Narrow category
- Broad category
- Weight
- Quantity (sticker packs output a lot more stickers than the item)
- Country of origin - the final country of origin for each item should ideally be the one that applies to most items inside the category
- Minimum packaging (for an educated guess of which packaging type I'm using)
- Packaging data should have
- Name for the type
- Length, width, height (height is at its flattest for variable ones)
- Is height fixed?
- Size priority (determines which packaging type is bigger)
Todo:
- Replace tea set with sandwich basket (owned)
-
check all windows are snow white rather than pure white
-
[ ] Planter Partition: 1 (alc 39 craft or marketboard kinda expensive)
Something like a place dream that got interrupted quite a bit because of my alarms...
Some stuff happened prior to this but was in a kind of barebones-looking place that was something like...a small room that could be used as a practice theatre...long blocks of staggered steps for people to sit on, next to an empty space? I'm not sure why I was here but I was also with some other people who weren't my own acquaintances but probably friends of people I knew (possibly family). I think my brother might've been there. I'd dug up a knitting project to continue with because I was...restless or bored, perhaps? Maybe we were going somewhere, and I didn't want to throw it away? It was nothing like hand knitted fabric, though - more like spandex for some reason. I didn't have my glasses or shoes or anything, was completely disorganised and extremely unusually did not know where all my stuff was, and when I lamented this, one of said non-acquaintances mentioned he might've seen my shoes in a building we were in earlier.
So, at around this point I was faintly aware this was a dream, but didn't put that in words, just knew that it wasn't real and that wherever I wanted to go, I'd have to gently create a scenario where I could plausibly arrive at that destination. So I ran out of this building (on all fours, as I seem to do a lot in dreams), constructing similar-looking passages of theatre practice rooms, until I got myself out of the building. It was a random urban street. I vaguely knew the cardinal direction the other building was supposed to be, but it was pretty far off, and the longer I took to get there, the more likely it'd be that I'd lose track of where I was/lose the thread of the "story". So I did an awkward front flip to teleport myself there (reasoning being that it would disorient me enough to reconstruct my surroundings) and landed on another random urban street. I also realised here I didn't know what that building looked like anyway, decided this probably wasn't the place since I didn't see a building that looked like it'd work, and did another front flip. Found a suitable building and entered it...well...entered an elevator with a bunch of other people...I don't actually remember what happened next.
I think this one was just funny with the manipulation of rooms and such.
黑
银
白k
咖啡
红铜
红
红金
深金
kc金
浅金
金
黄
浅绿
草绿
绿
天蓝
浅蓝
孔雀蓝
蓝
蓝紫
紫
浅紫
浅粉
粉
玫瑰
深玫瑰
for testing purposes:
- standard M2 screw into 3 layers of acrylic, capped with a nut / 9mm material depth
- 11-12mm M2 screws, normal colour (silver or black)
- M2 nuts (dark blue)
- standard M3 screw into 3 layers of acrylic, capped with a nut / 9mm material depth
- 11-12mm M3 screws, sky blue
- M3 nuts (sky blue)
- standard M2.5 screws
- tube with 2 screws on each end / 9mm material depth (M2)
- 3.5mm diameter tube (M2), 8mm or 10mm length (8mm will probably be the better choice, but testing here) (dark blue)
- 5-6mm M2 screws, normal colour (silver or black)
- M2 washers (2mm depth)
- tube with 2 screws on each end / 9mm material depth (M3)
- 5mm diameter tube (M3), 10mm length (sky blue)
- 5-6mm M3 screws, normal colour (silver or black)
- M3 washers (2mm depth)
- thread tapper
- M2/M2.5/M3
- allen wrench (for screws)
- M2/M3
- can probs get this locally
- regular wrench (for nuts)
- M2/M3
- can probs get this locally
-
clamp
-
my test objects use M2 screws, but if M3 screws are an acceptable size, it would be ideal bc it will be easier to obtain coloured ones as well as coloured tubes
- however, an alternative for the tube one will be to use black/silver screws and coloured washers, which are also nice
- I was initially going to just attempt to screw in the screws raw, but then felt it would be sensible to cut the channels first, especially since I don't have that many samples to play with (don't want to accidentally crack them)
- I wanted to go with thinner acrylic, but most of ponoko's acrylics are 3mm thick, so I'm experimenting with that
- the M2.5 screws are for testing with the spare broken charm I have as that's the hole size here
- this printed charm has a layer of acrylic on top of the print, so I want to see the interaction with the screw here (will it crack the cover layer/separate it from the charm)
- the best way to join these would probably be the tube + washers + screws on both ends though - would need to specify cut holes of at least 3.5mm to do this
- due to the extra acrylic layer, these are slightly thicker tham 3mm
- notes on sources:
- m2 and m3 coloured tubes are from different shops - the m3 one has more colour variety
- coloured screws have hexagonal holes - an alternative with a philips head exists, but requires a 500 moq (about $30). I would test this, but it's a lot of money to commit to a lot of screws, so it's more of a consideration for the future
- hai de lun has most of the coloured ones available - not the cheapest source, but most complete colour-wise and quality seems good