Re-Composing

In my most recent Git commit, I added to Re-Hoard an entire song. I already extracted the song from WarioWare: D.I.Y. using the WarioWare D.I.Y. Editor, then converted the song to the Pico-8 format using MIDI2PICO. I then realigned the tracks. (I could have trimmed the song to 3 channels, which would have freed the 4th channel to sound effects, but I wanted to keep all of the source material somewhere in case I needed the original, albeit converted, song.)

The actual song in the actual cartridge is actually a loop of one track, which is itself a loop of one phrase.

The issue is that, when I played the tracks in the Pico-8, they sounded terrible! The only thing I liked was that looping phrase! I mean, that looping phrase not only sounded great, but also fit the theme of the game, whereas the other tracks have poor sound and composition while themselves sounding “tacked on” to the good track… which they were. The only reason why those bad tracks were there was because, when the good track is just one looping phrase, that track by itself would sound repetitive quickly. This is even worse in a  game that can theoretically go on forever.

My embarrassment was my uploading the track publicly. At least barely anyone knows me by the time I am writing this…

Right now, I am considering making the “good” track the rhythm while I add another more varied but minimalist track. I thank my previous music study in this.

Advertisements

A Thanksgiving gift in 2017

I inserted into the Re-Hoard cartridge the algorithms I had adapted and tested. I then pushed those changes into GitHub.

https://www.github.com/tinglar/re-hoard/commit/1f12a29f3512fc131b3504cd5a9501366fd05491

Though there is still a lot of stuff that remains, I feel relieved and accomplished that I managed to leave an experimental phase with something worthy of being put in the develop branch! (In retrospect, I probably should have put those experimental changes into their own branch yet manually add them into the cartridge in the develop branch.)

Happy Thanksgiving!

 

An analysis of two songs

I finished the first part of “Hotel Gomaden” from the Hackers game in the Shin Megami Tensei series. (The second part is, to my surprise, actually a slowed-down cover of Johann Bach’s “2-Part Invention #13”.) Before that, I managed to transcribe “Backstreets” from Boktai 2: Solar Boy Django.

The reason behind these transcriptions was because, not only did I like those songs a lot despite their spooky feelings, but those songs also happened to fit the mood of my game Reckless Abandon. I wanted to make my own song inspired by those two songs, which means that I need a lot of control in what song comes in the game. The result was a lot of time in and a lot of breaks from the Record MakerMatic in WarioWare: D.I.Y.

My Analysis

In terms of mood, “Backstreets” is mostly melancholic, though with a spooky undertone. In fact, the song implies a long-lost land from your past but is just not “there” anymore, whether that be because our lost land is in ruins or is just gone. Meanwhile, Hotel Gomaden has a feeling of “Welcome to my haunted land!”, that haunted feeling being front and center. This time, the implication is that you are entering the front room of someone’s haunted building. However, both songs end up being inviting: “Backstreets”  has stimulates your curiosity on what was that long-lost land; “Hotel Gomaden” stimulates your curiosity on what is the rest of the haunted building. (Strangely, the cover of “2-Part Invention #13” sounds to be purposefully made a sequel to “Hotel Gomaden,” sounding far more inviting while keeping the haunted mood and its instruments in the background. Hearing this after “Hotel Gomaden” implies that you moved farther in the imaginary haunted building.)

Speaking of instruments, analyzing these songs gave me, a newbie in music, taught me that instruments matter. Before my analysis, I thought that the functions of instruments were interchangeable. I suspect that they still are in a sense; otherwise, covers would not have their current flexibility. However, “Backstreets” would not have its long-lost melancholy if the harmonica was not there, while the organ gives “Hotel Gomaden” its haunted introduction. Both use a “haunted chorus” in providing that spooky backup that the songs and settings have.

In terms of structure, both of these songs have an “aided simplicity”. “Backstreets” plays mostly one instrument at a time while either of two rhythms play in the background. While a stringed instrument plays a looping, “quick-stepping” rhythm in the background, the harmonica plays first, then the chorus. After that, the chorus turns into a sparser backup role while one string instrument plays, then another before not playing any “main” instrument at all, leaving the backup chorus and the rhythm. The ending shifts focus to the rhythm; a lone harmonica melody plays while a new brass/chiptune rhythm gets more involved with the melody. The rhythm switches to a different chiptune instrument before going back to the brass/chiptune. Despite these supplements, there is only one main “instrument spot” where several actual instruments take turns.

“Hotel Gomaden” shifts this structure somewhat: the rhythm is actually one organ playing a note, another organ playing 2 notes, both alternating their parts in a single, regular tempo. The notes themselves do vary throughout the song, though the notes of one instrument do not stray far from the notes of the other instrument. The instruments take a backup role, that is, reverse of a normal song when the instruments are at front while the rhythm is at the back. After the rhythm establishes itself alone, a drum roll ends in a type of clap that introduces a sparse violin. After a cymbal note, another drum roll that starts and ends with a clap cuts the violin at the end, letting the rhythm re-establish itself. A slightly denser chorus takes advantage of the “cleaned up soundscape” after this. The climax breaks the conventions that the song has in both the front rhythm and the back instruments. More specifically, the first organ adds 2 premature notes during the climax while the rhythm fades out at the end of the song. Meanwhile, the chorus stops in the middle of the climax, letting the violin gets some notes before the chorus returns. Despite this pattern-breaking, everything, even the drum rolls, follow the mentronomic rhythm, albeit in varying levels of strictness.

The rhythms themselves have a special property: they imply steps. “Backstreets” has a quick tiptoe; “Hotel Gomaden” is more a march or a creep.

On the note ranges, they seem to differ per instrument in “Backstreets”. The harmonica has a general falling slope from the high notes to around the middle-high ones. When taking the main roles, the female chorus does the middle notes while the male chorus is around the low part. When taking the backup role, the female chorus goes to the middle-high range while the first stringed instrument plays high notes. The second stringed instrument, meanwhile, cycles a rising slope from an already borderline high range. Upon returning, the harmonica starts at the high range before gradually getting lower while playing around with slope directions before preferring downward slopes. The backup brass/chiptune start high, but go through a longer falling slope, straighten up a little, rise a little, go silent, then go back to their falling slope. During that pause, another instrument does a series of falling slopes, though the series shifts the pitch of the slope a bit every time the instrument plays a slope. In contrast, the instruments at “Hotel Gomaden” tend to stay at the mid-high range without any real slopes.

They both have a feeling of you being alone. “Backstreets” has that lone harmonica. “Hotel Gomaden” has a couple of organs that set a mood but sound from “nowhere”. All of the other instruments in both songs merely reinforce these main, “lonely” instruments or otherwise the “stepping” feeling.

 

A song in aided simplicity where one (or two) instrument plays at a time, other instruments (including a chorus) sparsely supplement the main instrument(s), all following a stepping rhythm and tending to stay within the high and mid-high notes… outright implying an actual place of spooky invitation… the only problem is translating that chorus into Pico-8 instruments.

Re-Starting Fundamental Algorithms

I have been looking into how to do the fundamental algorithms that run Re-Hoard:

  • Some way of generating a maze
  • Some way of drawing a maze
  • Some way of directing the opponent’s movements whether they be patrolling or hunting while respecting collision
  • Some way of generating fully-functioning opponents

Though I looked for several maze generating modules already written in Lua, especially accounting the tight restrictions the Pico-8 has, I ended up coding the Recursive Backtracker algorithm that Jamis Buck wrote in his presentation on algorithms. (What really confused me way how to iterate over a 2D table in Lua.) However, I still needed some way of implementing queues in Lua. I ended up with the Deque module. I only put the specific functionality the game needed, though. I ran the code, but I ended up stuck today on some odd syntax error when dealing with this line:

 if dungeon[(current_cell.1) - 1][(current_cell.2)] == nil then

current_cell holds a table (a list, actually) that simply holds the “current” coordinates ({x, y}). Out of some reason, though, Pico-8 keeps saying:

‘)’ expected near ‘.1’

…even though I already put a closed parenthesis.

Thankfully, I already made a quick code that draws the map, which is actually a table full of “true”, “false”, or “nil” values.

On the opponent AI, Scathe at the Lexaloffe forums suggested repeatedly directing the opponent to a specific point in the map. His posts use a Pac-Man-style algorithm while the Pico-8 Zine used the A* algorithm, instead. I picked A*. This requires some careful attention from me, though I realized that the pathfinding algorithm also solves the issue with collision: pathfinding algorithms are designed to find the shortest path to a goal while avoiding obstacles, that is, the same obstacles that motivate me putting in collision detection in my game!

I already have the actual collision detection algorithm fully understood and coded, by the way.

On actually generating these opponents, I found Entity-Component Systems which not only promise to be more efficient but also do away with the need of object-oriented programming (in theory), making them a good fit to Lua, which does not have native support of OOP.

I would push these changes to GitHub, but I put all these algorithms on a separate cartridge because I want to focus on understanding and testing those algorithms specifically.

Reckless Foresight

When I formed my goal of releasing Re-Hoard and Reckless Abandon on September 10, I was thinking only on coding, graphics, and music.

I realized recently that there are more steps after that.

I am not only talking about testing or even translation. I want to give these games their own mini websites, advertising (with stellar art), and, in all, a proper release. That requires not only more programming, but also skills in how to use CSS, how to draw skillfully, and so on. I would also have to make the websites fascinating yet skillfully coded and designed. I would also have to add new features, including a guestbook and privacy policy.

In all, I need to give the games the respect they deserve.

I knew that making September 10 a mere goal instead of a promise was wise.

Release goals of Re-Hoard and Reckless Abandon

Please excuse the news blackout. Since July, I needed to rest, first. Afterwards, I got a new computer that replaced my old one which had a malfunctioning keyboard. After that, I spent my time setting up my computer to my liking and getting used to a new keyboard layout based on the 2nd ANSI Keyboard variation of the DH Colemak mod.* I am still yet from fully used to this layout, but I am reasonably competent here. Besides, I should not be putting off development of my games so long.

How does September 10 sound? I am not making any promises, but I should be getting back to work.

Reckful Spriting

I managed to do almost all of the graphics of Reckless Abandon. I was actually out of ideas by the time I stopped, but I thankfully got almost everything done there. Other than that, I still have to do the bonus exhibit and a secret or so.

I stopped temporarily because I both wanted to rest and celebrate. I wanted the ideas to come, but that needed me stepping away from the game. Even coding would not give the rest my mind needed in gathering ideas.

I think I got almost all the ideas I needed since then now.

I feel accomplished that I did so much. I hope that I can release both Reckless Abandon and Re-Hoard by the end of this month.

A Human-Sized Wall

Recently, I started working on Reckless Abandon again. Weirdly, my problem was that I had trouble figuring out how to draw humans in sprite form. I think the reason behind my hesitation was because I am going to do a big number of human-based designs in both Reckless Abandon and Re-Hoard, yet in theory, there are several ways of drawing humans. There is a lot hanging on this base concept.

I decided to take my time in loosening up my human designs.

humans

The one I like the most is the purple design due to its reasonable compactness while still being recognizable and animatable.

Abandoning a Reckless Pace

Neither Re-Hoard nor Reckless Abandon are going to be released by Comi-Con this year.

Ever since my last post, I took my time both recovering and considering my needs. I realized that I would not be able to deliver a good product (or maybe any product) by that deadline. My health and other kinds of energy trump any business opportunities.

That does not mean that I would stop. I just needed to recover from the deadly pace I took. In fact, a couple of days ago, I reoriented myself on listing what both games still needed.

However, I fear that, given that this is my second delay, I am setting up an image of lazy unreliability.

Reckless with my Energy

Yesterday, I was stuck on how to represent the countries when designing the exhibits. Thankfully, I got the ideas going at night. I think I just needed to let my brain work out this stuff by itself and respect the time my brain needs on working on stuff in general.

The problem is that I had little energy for working on the game today. I do not have the will of working on stuff immediately after I wake up; I need to “buffer”. I only start getting that will at noon, but, even after 1:00 PM, I still had no desire to work on this. I played some electronic games, thus recovering my emotional energy. I then slept, yet, 3 hours later, I still felt tired. I decided to just work anyways. I added enough notes and started drawing the props. However, I just… want to sleep more. Besides, I am typing this sentence at 10:33 PM.

I want to get this game out before Comi-Con, but my health may require me to postpone those plans.