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!

 

Paralyzed Progression

(I though Homework Paralysis Syndrome only happened with homework…)

These days, I had a lot of difficulty progressing in development. I can only really focus on one thing at a time, but if that one thing feels difficult, I get stuck and repelled. I have difficulty even changing to a less obstructing task; even when I do, I feel compelled to do that task that gave me the difficulty in the 1st place.

I have got to break out of that mentality.

These few days, I essentially wrote the A* algorithm a 3rd time. Then again, the1st time was because I wanted to learn how to do the algorithm, the 2nd was because I was actually putting in the algorithm in Re-Hoard, the 3rd because I not only had difficulty in understanding this version but also because I wanted to take account the structures that were already in the game. (Al of them are in an experimental cartridge that is separate from the actual cartridge in GitHub.) Before that, I ended up taking months (not including the hurricane-induced blackout) in transcribing 2 songs in WarioWare: DIY because the task was so difficult, but I knew that this was the best way I could study the songs that inspired me so.

…then again, I did spend that time looking at entity-component systems that would make an excellent fit to Re-Hoard. I also looked into how to make my games using C++ and Libretro. I guess I was doing less obstructing tasks after all…?

I’ll test the code tomorrow. After everything works, I should implement the entity-component system then push those changes in the actual cartridge in GitHub. Meanwhile, I should try to compose the main song in Reckless Abandon.

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.

Lua to the End?

From the beginning of my game career, I intended to make games that use Libretro, a C/C++ library that can be used in writing emulators and standalone games. The reason why I learned Lua in the first place was because, compared to using straight C or C++, writing games in Lua and relying on the Lutro core seemed to be the more comfortable option. Indeed, because Lua programs do not need to be compiled, I ended up saving myself plenty of precious time in my last two college projects back when I took my Master’s Degree. Developing my final project using LÖVE instead of trying to understand the Libretro library, especially given the one-trimester deadline, spared me from a lot of grief. That knowledge of Lua also helped me develop games for the PICO-8, an all-in-one platform that not only helped me get used to normal game development but also has several channels of delivery, my favourite one being uploading the game itself in image format. You can even play these games in your browser with little fuss!

However, I am starting to feel the limitations Lua has. While Reckless Abandon has simple code, Re-Hoard has a game plan that needs object-oriented programming when generating random anti-hoarders, each with their own patrolling and hunting styles, per stage. Lua does not have any object-oriented functionality; other people fake that functionality using metatables. Even with that fake functionality, I fear that I would be better off relying on the real thing. Besides, if Lua lacked true object-oriented functionality, then what else would Lua lack? Other consideration include less layers of abstraction that might interfere with my wanting to interact with Libretro itself, the bigger maturity of C++ tools and libraries, and practice in a language that is still in high demand in the workplace. In fact, the more advanced aspects of Lua actually use a C library!

On the other hand, the gains from the lack of a compilation time proved to be an assets when I debugged my college projects. Also, LÖVE games store their assets as-is instead of they being baked directly in the program; I can edit a sprite or switch around a song and see the effects when running the game anew.

Despite these benefits, I am seriously considering working on my new games with C++ from now on. In fact, though Reckless Abandon would stay a PICO-8 game, I might move Re-Hoard to C++.

I just need to figure out how to display and move .png sprites and implement collision detection while I use Libretro.

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.

72 hours…

I earlier mentioned that, because both Re-Hoard and Reckless Abandon are half-developed, I can follow eevee’s lead on developing these Pico-8 games in 72 hours.

The issue is that eevee developed her game in 72 dedicated hours (save necessities, of course).

…I can dedicate myself that much, though, to some extent, but this is a flash of perspective that I missed when I wrote my last post.

I should get to playing around with the demos today.