greetings haystack shareholders, today I would like to talk about my work for ghost jam 2024. yes I am doing this six months late. don’t worry about it. I intended to do it immediately after ghost jam while things were fresh on my mind but uh. I did Not do that. but I’ve still been thinking about it in the months since so I decided to still write it.
my first ghost for ghost jam 2024 was long leg bird (with top hat). long leg bird is an oc in the loosest sense of the word. they’re a little mascot character I doodle sometimes to loosen up my hand for drawing. I knew for a long time that I wanted to put them in an ukagaka, since a while ago I drew them for a personal template ghost that I intended to use to make further ghosts, but I stopped development on it. so, instead I reused them for a ghost jam ghost.
my goals for ghost jam 2024 was to Keep It Simple. with previous ukagaka I am very much prone to scope creep and adding more and more features that bloat down a ghost. not that there can’t be a feature heavy ghost that’s good, but I often put writing on the backburner for my ghosts when adding more features to them so they feel flat outside of the utilities. and, I hadn’t released any ukagakas in a while because most of the things I had in progress were things that needed a Lot of work for me to consider them ready for release. so for ghost jam, I intended long leg bird to be an Extremely Simple gimmick ghost.
initially I had intended for long leg bird’s gimmick to be that they smoothly increase in height until they grow out of bounds of the top of the users screen. however, I realized that I couldn’t scale individual parts of the shell, so my initial thought of scaling the shell in code as opposed to creating individual surfaces wouldn’t work… I had thought I could scale the legs and then just put the body on top of the legs, specifically. so, with that not an option I accepted the responsibility of making many, many surfaces with long leg bird getting incrementally taller.
I decided on increasing the height by 10 pixels every 15 seconds. The height of a 4k monitor is 2160 pixels, so I decided that making the max height somewhere around 2300-2500 pixels was a good idea to give the body plenty of space to clear the top of the screen. I managed to make an auto action in clip studio paint that (mostly) automated the process of making the surface. I drew the body and legs separate, and then gradually moved the body up the legs and exported the surfaces that way. I did make some mistakes with saving the files, but automating the action of making the bird taller did save a lot of time. see below:
all that was left after that was to make a few extra surfaces for animation [sparkles, blinking animation], add some dialogue snippets for boot/shutdown/clicking on the bird, and tie everything together. I completed long leg bird on the third day of the event, mostly because I wanted to get the 72 hour completion challenge done.
my memory is a bit fuzzy at this point, but I recall before ghost jam chatting with one of my friends (deco) and convincing them to provide shell art for me, since I had done art for all of my ghosts previous, and with the knowledge that I would be making one ghost already I wanted to offload the art onto someone else so that I could focus on writing for the ghost. I knew that I wanted to do a writing only/story based ghost for a while, since all of my previous ghosts are Not writing heavy. I ended up leaning into the theme for the jam, celestial, and came up with the idea of a rabbit on the moon. I made a shared google drive for assets with deco and then I ended up sitting down and writing all of his random talk for the jam in one 8-ish hour session. honestly I probably took lots of breaks during those 8 hours so maybe it was like half that actually writing.
I like writing my dialogue for ghosts in spreadsheets for some reason, haha.
with SSP angel where I was on the shell artist side, Zi gave me a list of emotions to draw for the ghost using emojis + short descriptors, and I thought that worked well so I gave deco a list of different emotions I had in mind while writing the dialogue. the next step for me was moving the dialogue from the spreadsheet I was writing in to the actual ukagaka template, along with writing some bits of booting/closing dialogue. I didn't want to get bogged down in the weeds with writing flavor text for every single ghost function, so I mostly focused on bits the user would see the most often.
while I was doing this, deco was drawing and refining the shell! I wanted to give my shell artist for the jam free reign to just Go Crazy and while we did ping pong back and forth a little bit about the details of arneb’s design, his final look is like 95% deco’s concept. I got arneb’s base implemented into the ghost to do a quick prototype test of him in motion, so to say, and then deco finished up with frames for the blinking and talking animations. I did a few tiny tweaks to the shell just to add a little more variety in the expressions (adding a head tilt pose) and then coded up the actual surface.txt code as well as adding the expressions to the dialogue.
1) secret that lies underneath arneb's face. 2) arneb ended up not having that many expressions, surprising for a ghost from me.
all that was left was polishing and cleaning up template bits! with my ukagaka projects I like to take the extra step to replace template bits like the favicon, the menu styling, and the thumbnail. I also finally named him… the ghost name, lunar leporidae, has fairly obvious origins, with leporidae being the scientific family name for rabbits and hares. the characters name, arneb, is taken from the brightest star in the lepus constellation, which is often represented as a hare being chased by Orion or his dogs. arneb itself comes from “arnab”, which means hare in Arabic. it's rabbits all the way down… also I did misspell leporidae in the GitHub repo for arneb and it frustrates me but not enough to commit to the somewhat arduous task of moving a ghosts repo, so please just ignore it!
with all that finished I submitted arneb on the last day of the jam! very delighted to have now not one but TWO ghosts completed during a jam, since my previous ghost jam entry was disqualified (due to tartaglia using lines directly from genshin impact). I don’t think I would have done anything differently this jam, aside from maybe carving out some time to make a custom balloon for one of them, but I wanted to move away from making the art portion of ghosts for this jam, so I’m happy with what I got done. I think also I could have blocked out some more planning time prior to jam instead of making decisions on the fly.
what did I learn? delegating the shell art to someone else is the way to go for ghost jam, at least for me. don’t get me wrong, I love drawing for ukagaka. however, art is undoubtedly the most time consuming part of making ghosts for me, because I tend to render them like my full size pieces which takes time. I might use a freeshell next time, or loop in another artist for jam. I think next time I might either limit my 72 hour challenge ghost to 24 hours and make another silly gimmick ghost like long leg bird, or eschew the challenge entirely in order to focus on polishing one ghost during the week of the jam. I had listed some stretch goals for arneb that I didn’t get to in the time of the jam that would have expanded him a little bit past “guy who sits on your desktop and says stuff.” I want to add a little something extra to my next jam ghost that’s not a purely utilitarian feature. something like a menu showing items to the ghost to get their reaction, or a notebook that is gradually filled with notes as the ghost cycles through randomtalk. I want it to be relevant to the ghost’s story, so what exactly the feature will be I can’t say right now.
I think it’s also important to have a solid idea of the character of the ghost before writing it. I did have concepts for both long leg bird and arneb, but I did the majority of planning for the ghosts either a few days before or during the jam. the theme for the jam was released two weeks prior to the jam’s start, so if I had thought about it I would have done some brainstorming/outlining prior to jam for arneb. but! I’m still pleased with what I managed to make for the jam, and look forward to next year’s jam.