Wednesday, August 30, 2017

Kiki, and dealing with the past, for my own sake

"Have you ever waited for something so long, you thought it would never happen?

I'm not sure how to explain how I feel right now, but that this is both an end, but also not an end.  A beginning, too.  I guess, it wouldn't even matter how it happened, to be honest.  Only that it did.  That it happened at all, is a miracle.  That, by itself, is...

Oh, how time has passed.  And if I could, I might give you that time back.  But perhaps, it's better to look forward, and not back.  I always looked back, hoping I could find you.  But just maybe, if I turn around, I would catch a glimpse of you in the road ahead.  I don't know if I would ever meet you.  Perhaps I wouldn't.  But that would never stop me from calling out.  Even if I knew you wouldn't hear.

I told you once, that there's no meaning in a letter not read.  But that's not true.  Not true at all..."

I wrote the above 3 years ago, in November 2014.  It was after I had received a letter from the person who I refer to here as "Kiki".  It is the last letter I have ever received from her.  Before that I had last seen her in January of 2013, and before that in September of 2012.

Throughout the years Kiki has come to symbolize much more to me than the actual relationship I had with her alone.  I began to saw the relationship with Kiki as the representation of bonds that had been lost through time.  She was so important to me; I loved her very much, and yet, as with so many other things, she slipped out of my life and into some other time, some other place, some other life that I was not a part of.  And despite my efforts to reach out, I could do nothing to bring her back into my life.  Over time, this became apparent to me, and it became increasingly clear that I would not be able to reach the same place, same time, and same life as her.  Yet, I could not accept that loss.  Had I simply not tried hard enough?  What could I do?

Would I simply have to accept the fact that sometimes, no matter how important something is to you, it can disappear into the sands of time, with you powerless against it?

I think that is something that I have never wanted to accept, even to this day.

When I wrote above that "this is both an end, but also not an end", I meant that hearing from Kiki again was a sort of closure for me.  In June 2014 (an aside, I don't actually remember all these dates offhand!  But my log of "people making my day" really helps here) I realized after a lot of thought and some conversations with my best friend that my way of coming to terms with that loss was simply to "keep trying", even despite knowing that it was "futile" in that it would never bring Kiki back, but it would be a way for me to keep her in my life, even if I could not truly reach her.

It wasn't until January 2016 that I finally saw Kiki again.  It was a surreal feeling, really -- I couldn't believe it was happening.  If only I could trace that moment back, and keep it with me forever...  Before we said goodbye, I talked to her a bit, about our relationship.  I asked her, too, what I should do about it.  I asked her if I should keep on sending letters to her, and whether it was ok to be like this.  She answered -- something more or less the same as always, some thoughts that I knew were nice but not practical.  And I realized later that it didn't really matter what Kiki thought about it -- that what was more important was how I felt about it, and what I was okay doing.  Of course, if she had said "I know you have been trying very hard, and waiting very long.  I am sorry that I cannot be a part of your life anymore...and I could make promises to you, but we both know that for now, this is the way that things will be.  But if it helps you to cope, please continue writing to me.  At the very least, I will receive your feelings."  Well, besides the fact that that would have been amazing, that would also have strengthened my resolve a bit.  But if she instead had told me, "Timm[ie], I fear that you are only bringing yourself pain by continuing to hold onto me.  I wish I could be a part of your life too, but I have things I need to do, and places I need to go.  I think it's better if you say goodbye to me for good.", then what?  Would I really be able to say goodbye to her, move on, and try my best to not dwell on past memories?  I don't think so.  How could I throw away something that was once so important to me?

One of the reasons that I think it is so important to hold onto connections and to hold onto the past is simply because I desire that from others.  It's not just that I don't want to move on -- it's that I don't want others to leave me behind either.  For a great deal of my life, I have believed in a world where connections can survive the passing of time, if we will it with our continued and dedicated effort.  Not only that, but I believe that is how things *ought* to be.  And if I believe in "forever", it has to start with myself, too.  I must be the absence of change I wish to see in the world.

Of course, nothing can actually last forever.  But the act of believing in that, and trying in my own way, forms a large part of my human condition, I think.  And so it became more about what I wanted, what I needed for myself to move forward, rather than anything that Kiki needed from me.

Every once in a long while, though, something from the past comes back to visit me.  Even a small thing, can make a big impact on me, when it's something like that.  It's an amazing feeling.

Wednesday, August 23, 2017

More Rhythm Quest progress, cooking, gendered dance

Despite this being our busy week at work (deadline!), life is going surprisingly well.  This also despite a pretty myemie day on Monday my attempt to fix the washer didn't work and, even worse, I cooked a pretty poor meal for dinner.  It doesn't happen too often, but sometimes dinner really just doesn't go right...this time I had some miso black cod which I cooked in the toaster oven, but it really didn't sit well with me.  The fish was relatively fresh, so not sure if it was just something that didn't jive with my stomach that time, or because I hadn't marinated it very long, or what.  I ate it with some pickled radishes (those at least, were fine), rice, and some premade rolled egg/tamagoyaki thing which was...meh.  But yeah mostly something about the fish.  I feel like I cooked it well enough so I don't really know.  But I'll pass on black cod for a bit before trying it again.

I haven't had that much success with unagi at home actually -- they have been "ok" but not really super great (using the pre-packaged vaccum-sealed ones, of course).  I have been wanting to try umaki though (unagi rolled in tamagoyaki), so I'll give it a go the next time I stop by Nijiya for food.

Anyways despite all that, as I said, life is going pretty well.  I've returned back to working on my side indie game Rhythm Quest in full force, which has been great fun and extremely motivating -- I've basically been doing that for my train rides to and from the city, which is especially great because I don't really have any games to play on the train at the moment.  Haven't decided what I'm going to play next, but it could be Mother 3 (!), or maybe something I'll buy on Steam like Flinthook.  Or maybe I'll go through Undertale's "Hard mode" segment, since I never ended up doing that?

In any case, Rhythm Quest has gotten a bunch of work done.  Last time I worked on it I added both flying and double-hit enemies, and now I've added a lot of extra visual feedback for elements reacting to the beat as well as working on better particle effects, and cool visual effects for when you successfully hit a note/obstacle.

Most recently I rearchitected the whole audio syncing system and I'm now using Unity's AudioSettings.dspTime absolute timeline and scheduling all of my music segments precisely.  My previous solution relied on taking the current music playback time and having all of the elements of the game be based on that...except, if you do that naively, it's really jerky because the music playback time isn't updated smoothly at all.  So you end up having to track your own time, and do your best to sync your timeline to the music playback time.  That actually worked reasonably well, to be honest, but it wasn't perfect.

I was adding a feature similar to bit.trip runner on death such that when you die, a background loop plays such that there's still a persistent beat going through your respawn -- and when you finally reach your respawn point, it's downbeat-aligned, so it all snaps into place.  Very nice, very bit.trip runner, no breaking of flow or anything.  I had that all working with the old system actually, and it wasn't too bad, but I wanted to see if I could go the extra mile and use the audio scheduling functions to get sample-perfect playback.

It definitely took some work, but it's all working well now!  I've split my track into multiple segments, which are queued up and scheduled according to an absolute time.  I still detect drift between the "game time" and the audio dsp time, to ensure that the two sync up within some error margin.  When you die, the background track is already looping, so I just have to set its volume to 1 and stop the playback of the current music segment.  Then I do a bunch of magical calculations in order to figure out how long to let the background track play (for the respawn) -- and I schedule the new music segment to kick in exactly on time at the beat at which you respawn.  I also schedule the background track to stop playing at that same time.  So the music transitions are totally aligned, totally synced, and it's wonderful.  At some point I'll do a test with some sine waves or something just to make sure that it's actually sample-perfect.

Now there are some limitations though.  I did lose one of my features, which was playing and pausing the song willy-nilly and even changing playback speed for slowmo and rewind during debug play.  None of that works if I want to use the absolute audio timeline, so I dumped those features for now.  Sad because going through the song in slowmo and being able to rewind it was super cool, but ultimately those aren't really that necessary, and if I end up needing them I can do some sort of workaround.

The only remaining issue is that because audio latency and buffering is still a thing, *game*-related sounds that are supposed to be beat-aligned won't actually be played on beat.  This is simply a problem by nature and there's not that much you can do about it -- if your player presses attack perfectly on beat, you'll end up queuing your sound to play on that frame, but it won't be until some milliseconds later that you end up hearing the song because of audio buffering and latency.  In some cases you can try to be predictive and queue up the sound beforehand -- I will probably end up doing something like that for my checkpoint sounds, for instance -- but for sounds that depend on player input you can't really predict if/when the player is going to press the button.

So there's still some work to do there in terms of having coin sounds / checkpoint sounds be scheduled using the same audioDsp mechanism.  I also could be a =little= smarter about catching drift between game time and audio dsp time -- use some sort of adaptive heuristic or at least some smoothing in an attempt to find the best relation between game time and audio dsp time, but that doesn't appear to be a huge issue at the moment.  I also would like to try and clean up the code now that I've finished the refactor for the most part -- see if I can split off the new audio scheduling/timing logic away from the rest of the main gamestate logic.

So that's all cool!  One thing that is NOT cool is how disproportionately gender affects our social dance community and experience, though (as it does with the rest of our lives too).  I know this might be coming out of left field, but yeah.  I'm over it today, but I remember yesterday while walking back home from the station I had some thoughts about it and I ended up just feeling upset.'s just really sad.  I don't think we are doing nearly enough about it either.  I should try and be more proactive about setting a better example, if I find it in myself.

Wednesday, August 16, 2017

I've been firing up SNES chiptunes at work for a change of pace, listening to SNES music to get me through the day.  It's been great so far!  I actually listened to the Kirby's Dream Land 3 soundtrack and wow, it's actually really legit, despite me not remembering the game much.  I remember not being super impressed with the game itself, you know, especially compared to the golden shining purity that is Kirby Super Star, but yeah, I'm digging this.

Monday, August 14, 2017

JaSmix 2017, Perseids, etc.

The past week or so has really felt like a rush of activity for me.  But it was satisfying to work through it all and have enjoyed it a lot.

Work has been getting steadily busier as we approach our deadline for getting a demo build out for PAX (which is at the beginning of September).  There is plenty to get done and at this point it's mostly a matter of working hard and making sure that we are prioritizing the right things, as well as pacing ourselves and making smart decisions.  The pacing part is especially important for myself, as I learned from experience about half a month ago that it's really unsustainable for me to try bringing work home with me.  That kind of thing always tends to sneak up on you before you even realize it was happening, but it's important to be cognisant of it.  Since then I've tried to be better about setting boundaries for myself and understanding (through experience) my own limits and what works best for me.  After all, if you aren't the one who is going to understand that, then who is?

I also had a brief stint keeping an "energy log" of sorts where I was tracking physical/mental/emotional energy over the course of the day -- not very rigorously or anything as I wasn't aiming to get much quantitative data, but more just general observations to understand the kind of things I need to stick to or avoid to make sure that my days are closer to the way that I would like them to be.  It probably comes as no surprise, but I figured out that I basically need to keep in mind 4 pretty important things -- #1 is not taking work home with me, #2 is getting enough sleep, #3 is not eating heavy meals, and #4 is a more general not getting distracted by "junk" type activities.  Out of those the first three are really the most important as without those in place it's really hard to have good habits anywhere else.  Again, no real surprises here, but perhaps it was at least helpful for me to see the more direct correlations between things here and there.

We went again to go watch shooting stars (the Perseids meteor shower) this year!  Viewing conditions were a lot further from ideal this time and we didn't get to see nearly as many as a result, but it was still a good time for sure and I was glad to have good company for it.

JaSmix finally happened and it was a smashing success!  I actually barely had enough time to prepare for everything, due to multiple factors all compounding together...I hadn't been getting a great amount of sleep that week but still had to make sure I was prepared to teach both my WCS and waltz workshops, as well as help co-dj.  Except, last minute it turned out that I had to be the only DJ, whoops!  We went to go see the Perseids the night before (and thus stayed out really late) so I slept in the day of, and I actually basically did nothing else for the entire day besides JaSmix stuff, lol.  I woke up and set to work preparing 2 extra sets worth of music, then after that I wanted to run through my WCS class one more time to make sure I had it under my belt...then we packed up everything, picked up food, and went off to campus...

Despite all the minor snafus that happened along the way (including the brief stint of time where we were just teaching WCS out in the courtyard since we couldn't get inside) I really couldn't have asked for a better event.  The classes went well, a lot of people showed up (a surprising amount of people showed up on time too!), I saw people having a lot of fun, and everyone seemed to like the music too.  Definitely checking this one off as a success in my book.

Teaching the classes was pretty fun, though of course stressful in terms of preparing (especially for Intro to WCS) as well as a bit nerve-wrecking.  Before this I've actually taught two other waltz classes -- a class on waltz musicality last year at JaSmix 2016 (which I also ran), and then a class on role-reversal variations (a.k.a leading from the follow position) a few years ago at JaSmix 2014.  I've come quite a long way since 2014 -- I remember teaching that class and feeling quite stiff about it, though I think it still went "more or less alright".  It's also a weird feeling (and kind of sad) that so few people at JaSmix this year were around for that class -- I could probably could them on a single hand...

Anyways, these two classes were quite a bit better (improvement, yay!).  I think part of that is due to having better class structure -- especially for the WCS one, where I really tried to think about what order to go over things in (there's a lot).  The other part of that I think is just my own skills having improved a lot in the intervening 3 years.  My WCS is still very sloppy but it's at least somewhat improved since then (...I think...), but especially in waltz I feel so much more knowledgable about how the dance functions than I did before.  Nowadays when I dance together with someone or even watch them dance I think it's very easy for me to understand what is going on with their dancing and what (if anything) they should be working on improving, whereas before I could probably sense it on an intuitive level but could never pin it down.  I also understand a lot more about really what goes into the physics of leading and following and that has immensely helped me in becoming a better waltz dancer.  WCS actually has done a lot to help me in that regard, as things like prepping, connection, acceleration/tension, and being relaxed are really emphasized a lot more in WCS instruction and are super applicable to the social waltz that we do.  One of my weak points as a teacher is that I find it really difficult to adapt and react to how people are doing when I teach to a large group -- it pretty much takes all of my mental focus to remember what I'm supposed to be saying and teaching so I don't have a lot of bandwidth to watch people and try to analyze how they are doing, but this time I actually felt like I was able to do that a few times, which was quite helpful.

As for specifically how the classes went, I think WCS was a "valiant effort" at instilling some good fundamentals in people, but of course it was difficult since there was such a wide range in experience levels -- there were some people who had never done any social dance before, so there's only so much you can expect from them, really.  Nevertheless, I think at the very least people were having fun and at least trying things out, which was the most important part (it is an intro class after all), and hopefully some of the more experienced dancers at least walked away from the class with some better understanding of anchoring or technique or footwork or...anything really.

The waltz class was a blast I think, and it seemed like everyone really enjoyed it, despite again there being a wide range of experience levels.  I think I had a better "spread" of concepts in that class where there was a lot to soak up for the more experienced dancers but there were also some low-hanging fruit for newer folks to digest more easily -- I'll have to remember to keep that in mind if I ever end up teaching again.  The most difficult part of the class was actually getting everyone to be quiet and pay attention so that I could keep the class moving along, but since I was moving along at breakneck pace I actually managed to cover a *lot*...looking back on it, there were only like...3 figures that I didn't end up going over, and I don't think those would have been a particularly great fit for the class anyways (though they are still very cool).  If nothing else, I'm at last satisfied that I was able to do my rant about pattycake->free spins because that has been a pet peeve of mine FOREVER now and I am tired of seeing that mistake be made over and over again.  It seemed like that concept really clicked with people so here's hoping that at least that alone will have done a little bit to raise the proficiency of our lead/following...

One thing I forgot to do is ask if there were any students who were interested in forming an organization to host workshops and practice sessions in order to work on more stuff like what I taught.  You might remember that I was turning that idea around in my head quite a while ago but in the end after pursuing it further decided that there was no point in considering it until some student stepped up to make a VSO of some sort.  Of course, now that I'm thinking of it more, maybe a regular weekly practice session isn't quite the best format after all -- maybe I could just randomly host a workshop + practice again, like a mini-JaSmix of sorts during the year -- more like a waltz weekend-type thing.  But that is neither here nor there...I'm ready to be done with dance planning for a good bit now.

Ludum Dare rating has been continuing to go on and there's still about a week left -- I've been going through games here and there and have rated 24 so far (our game has gotten 32 ratings).  People have really been enjoying our game and its style/character which has been great!  Despite almost killing ourselves on Sunday night while making it, it all came together really well and I'm pretty happy with how it all went.  I'll be writing the postmortem either sometime this week, or maybe after voting ends and results come out.

Things have been a bit slower on the music front recently as I've been busy with other things (namely, preparing for JaSmix and everything), but we've still got half the month left, and I hope to come up with one or two more "Potpourri" mashups to finish off my album, so that should be good.  I'll be reaching out to a fan artist pokemon007 soon to see if I can get them to help out with the album artwork for that -- would be awesome if that actually ended up happening!

We are finally starting to get a little bit of glorious fall weather now and I'm happy that we made it through another summer.  I can't tell you how excited I am to be walking to the train station in the morning under cloudy weather again, hahaha.

I've definitely been slacking on letter-writing (and connecting in general) lately, so hoping to spend a little more effort on that, I think.  It seems crazy (probably because it is), but in just a handful of weeks it's already going to be time to start thinking about Christmas letters again.  Yes, it's that time of year again already, hahaha.  I actually have a special letter project that I'd like to try doing before all that though, so I guess that should be my next goal as far as writing is concerned.  Then I can also try to take care of the birthdays between now and xmas, and after that, start on xmas 2017...

This week is a fresh start and it feels like I actually don't have a lot weighing me down right now.  Let's all do our best!

Tuesday, August 1, 2017

Last night I made progress...I don't know how it happened or what caused it, but...
I was having another band dream, I'm pretty sure it was concert band not marching band.  Except this time I wasn't actually at rehearsal or anything at the time.  My memory is pretty foggy, but I just remember thinking to myself "gee...why am I even still doing this? -- I really don't feel like doing this anymore."

And just that simple thought feels like a huge breakthrough for me.  Unseating these past feelings has proven to be really difficult for some reason, but somehow I've taken a step in the right direction.  That even when my mind thinks it's back there in that stressful situation, I'm now able to check myself and realize that I don't have to be there.


Ludum Dare 39 was a success!  We made it out alive and with a game.
I'll be catching up on life and posting about it later...