Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Deft Spade

14
Posts
1
Topics
25
Followers
A member registered Mar 02, 2020 · View creator page →

Creator of

Recent community posts

Thank you very much.

No, I’ve become too busy IRL to continue development and have moved on from this project.

Thanks! Although, there probably won’t be a full version since I’ve moved on from this project.

Thanks!

Thanks! Glad to hear the game presents itself well. Controlling the ship is quite tricky; the physics can take getting used to. I’m not a good escort either, mission 2 honestly needs more level design work to balance its difficulty. 😅 That was something that I ran out of time to do before the jam ended.

A well made platformer. I particularly liked how a later section required you to stay out of sight, providing a bit of stealth gameplay. Adds a bit of variety to the game gameplay-wise.

Controlling the ship can be tricky thanks to the physics used in the game. I’ve crashed into the asteroids on mission 2 a lot!

In fact, mission 2 is too hard in my opinion now that I’ve played it a few times after the jam; it needs more difficulty balancing but would have ran out of time in the jam to do so anyway.

I haven’t looked in the code yet (that’s something I’ll do if I get around to doing any post-jam work on the game) but I’d guess from the info you’ve provided that the error has probably occurred in the code responsible for updating the HUD’s displayed values (since division was used there to get the proportion of a value against it’s maximum to know how much to fill the value’s meter on the HUD).

Thanks for the reporting the bug, I’ve added a line to the game’s description on itch.io advising that since Solar Guard is still in development, there’s a fair chance that issues/bugs will be encountered.

Thanks for the feedback, I agree that it’s a bit odd to suddenly stop when hitting the edge but wrapping wouldn’t work for this game since it’d break the intended design of certain missions. For example, mission 5 requires you to fly from the bottom-right corner of the map to the top-left corner and back several times fast enough to rescue the escape pods. Wrapping would cut down the amount of travelling distance required since the player could take a short-cut by flying towards the corner to wrap-around to the other corner rather than having to fly across the map, defeating the intended design of the mission. I’ve just had the idea that maybe bouncing the player off the edge gently might be better than just stopping completely, I might implement that in future development if I get around to doing further work on Solar Guard after the jam.

Sure, there’s a version of the guide on https://rentry.org/ at https://rentry.org/beepbox-gba-music. That’ll be the best version to link to from https://gbadev.net or anywhere else.

Have you imported sound samples (e.g. OpenMPT’s included sound samples at C:\Program Files\OpenMPT\ExampleSongs\Samples) into the song? If you haven’t imported sound samples into the song, it might be worth doing so and seeing if those work instead since OpenMPT by default uses GM.DLS; DirectX’s default soundfont included with Windows for playing back MIDI files. This MIDI sound library might be having issues on your install of Windows (or WINE on Linux). I haven’t had this issue myself though so all this is just my speculation.

Glad to hear you’ve managed to sufficiently mitigate the issue. 👍 I’ve also been enjoying the process of making music via Beepbox and mod tracking, it works pretty well IMO.

(1 edit)

After discussion with GValiente in the Discord about how Butano works with audio sampling rates and updating my guide, turns out the likely scenario here (according to my understanding) is that increasing the Butano mixing rate and making sure the audio samples likewise have a sufficiently high sampling rate would likely reduce/remove the noise.

No problem! 👍

(7 edits)

Hi everyone,

I’ve been able to use Beepbox to compose music tracks, export them to MIDI files, and then import those MIDI files to OpenMPT, finally converting them to Impulse Tracker files for use with my GBA game I’m working on using Butano.

What’s Beepbox?

Beepbox is a web-based application for composing chiptune music tracks made by John Nesky.

To quote the application itself:

BeepBox is an online tool for sketching and sharing instrumental melodies.

It has instructions that provide a quick explanation of its features and how to use it on its webpage.

Why Use Beepbox?

Beepbox is a handy way to make the basis of a track’s composition faster if you don’t have much experience using the pattern editor in mod tracking software like OpenMPT.

Composition in Beepbox

To avoid re-inventing the wheel I shall link to this video tutorial here by ShifterChaos95 on YouTube. I think it’s a well-made quick overview of using Beepbox and it also covers some relevant audio principles involved when one decides to MAKE A MUSIC.

Exporting/Importing a MIDI to/from Beepbox/OpenMPT

In Beepbox’s menu there are four options for export:

  • WAV: Use this for a typical audio file of your song that uses MiBs of disk space carefree.
  • MP3: Use this for a typical audio file of your song that bothers using compression so it takes less space.
  • MIDI: Exports song’s note information to a MIDI format file. This is the one we’re after.
  • JSON: A way of saving a Beepbox song to a file to import back into Beepbox to edit again (an alternative to saving the URL).

Now the saved MIDI will have the song’s notes (when they play, how long, what pitch, etc.) but doesn’t include sound data or Beepbox’s exact instruments. When you import this file into OpenMPT, chances are it’ll sound very different since OpenMPT will have to use whatever standard samples it has on hand to try to match what instrument was used in Beepbox but this doesn’t always result in the song successfully retaining it’s intended demeanor. However after converting the MIDI to IT format, you can replace the sound samples in OpenMPT to change how the music sounds.

Converting from MIDI to a Mod Tracker Format

OpenMPT supports five different mod tracking file formats:

  • MOD: Format used by the Commodore Amiga.
  • S3M: Format introduced by ScreamTracker 3.
  • XM: Format introduced by FastTracker 2.
  • IT: Format introduced by Impulse Tracker. This is our target format (or at least the one I recommend/used).
  • MPTM: Format introduced by OpenMPT.

Impulse Tracker Being the Target Format

In short, IT is the format I went with because it is the most advanced of the formats that Maxmod (middleware for playing mod tracker music on the GBA and DS, which is used by Butano for handling audio) supports. MPTM is more advanced but this is not supported by Maxmod and is not needed anyway since IT is adequate for the purpose of using music made in Beepbox in mod tracking format. The OpenMPT Wiki has more in-depth information about the mod tracking formats if you’re interested in reading about them.

Obtaining the Correct Music Speed on the GBA

I’ve noticed when a MIDI track exported from Beepbox is imported to OpenMPT and them converted to IT, the Initial Tempo is set to 300 and the Ticks/Row is set to 6. In my experience, this results in the music not playing at the right speed once in a compiled GBA game (a Butano project to be precise). Changing the Initial Tempo to 250 and the Ticks/Row to 5 maintains the appropriate speed in OpenMPT and results in that speed actually being achieved once in a running GBA game.

Replacing Sound Samples

In the left pane of OpenMPT you’ll see instruments and samples. In the case an instrument is tied to one sample, just replace the sample with a sound sample of your choice to change how that instrument sounds in the mod tracker version of the song. Sometimes a single instrument (corresponding with an instrument row in Beepbox will have multiple samples, I modify the instrument to use one sample and replace that sample in that case.

OpenMPT has a bunch of included sound samples located at C:\Program Files\OpenMPT\ExampleSongs\Samples.

Once you’ve replaced the samples and the music sounds as you intend it to, just save the IT file and throw it into your project. I’ve only tested this with Butano but I imagine this would work with anything that uses Maxmod for music playback.

Adjusting Audio Mixing Quality in Butano

Music is typically used with a reduced sample rate to reduce the amount of the GBA’s CPU spent processing audio playback. However this may result in noticeable levels of white noise in the audio. For mixing audio for playback, Butano defaults to a sample rate of 16Khz. Other sample rates of 8Khz, 10Khz, 13Khz, 18Khz, 21Khz, 27Khz and 31Khz can be selected using #define BN_AUDIO_MIXING_RATE_16_KHZ replacing 16 with the desired sample rate for audio mixing. A higher mixing rate will increase audio playback quality at the cost of more CPU usage, a lower mixing rate will cost less CPU but result in lesser audio playback quality. However, keep in mind that the actual quality of a given audio sample will depend on the audio sample’s own sampling rate, specifying a higher audio mixing rate than a given audio sample’s rate will not improve that audio sample’s quality; an audio sample’s rate must be equal to or better than the audio mixing rate to play at the level of quality of the audio mixing rate.