Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411498 Posts in 69373 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 08:53:15 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsForesight Fight - A puzzle game with tactical RPG combat
Pages: 1 2 3 [4]
Print
Author Topic: Foresight Fight - A puzzle game with tactical RPG combat  (Read 21268 times)
ThemsAllTook
Administrator
Level 10
******



View Profile WWW
« Reply #60 on: August 02, 2021, 11:19:29 AM »

Now that I have some idea of what I want to do for music sequencing, I've shifted my focus back to low-level audio synthesis, starting in earnest on an entirely new synthesizer built on the foundation of what I learned from porting sfxr and bfxr. I have a working implementation of the core idea, which is to combine together the output of three curve functions: One for amplitude, one for frequency, and one for wave shape. Being able to separately plug in different functions and parameters for each of these three gives me a rich set of controls for creating any arbitrary waveform.



There was a lot of behind-the-scenes work to get here - beyond just the structural design of the synthesizer and the audio math, I ended up having to rewrite a portion of my renderer to be able to mix UI elements that draw textured quads with ones that draw primitive lines. I didn't have a pop-up menu UI element already built and I needed one, so I ended up taking another detour to implement it.

I spent some time analyzing recordings of musical instruments in an attempt to reverse engineer them into something I could synthesize from scratch. This is something I could potentially spend a lot of time on - I understand how I could make basic piano and bass drum waveforms now, but they're a long way off from sounding like the real thing. I can of course also do my own thing and just come up with original waveforms to use as instruments that aren't attempting to mimic things from the real world, and of course understanding how real-world instruments produce their sounds gives me useful knowledge for how to do this. It's an exploratory process and I'm not 100% sure where I'm going with it yet.

I'll probably be focusing on expanding my synthesizer for a while, but it's already at the point where I could trivially plug it into my music sequencer and start producing interesting sounds with it. It's going to be exciting to start putting together real compositions with this tool, and real satisfying to know every detail about how every part of it works, from synthesis to finished product!



Logged

bayersglassey
Level 0
***



View Profile
« Reply #61 on: August 07, 2021, 07:41:05 PM »



Logged
ThemsAllTook
Administrator
Level 10
******



View Profile WWW
« Reply #62 on: August 25, 2021, 11:54:46 AM »

With some more foresight (hah), I could have made this its own thread, but I guess for now I'll post audiolab progress updates here... These posts have fallen a little bit out of sync with videos, but maybe that's a good thing, since it gives me the opportunity to talk about different things in each place.

My audio synthesizer and music sequencer are getting built out as planned. Both are in kind of an in-between state where I'm able to do some interesting things with them, but they're not quite at the point where I can use them as serious productivity tools yet. As of this writing, my sequencer is theoretically capable enough to write a full song that way I want to, except for being able to load in different synthesizer parameters for instruments. Turns out this wasn't quite as trivial as I'd hoped, so I'm hard at work getting the two halves of my program connected up properly.

I'm thinking it might be worth releasing this as a standalone tool. Even if no one were particularly interested in it on its own, for future scenario authors, I think it would be useful to have as a means of making custom music and sound effects using the same tools I used. This could help keep stylistic consistency in custom audio assets included with usermade scenarios, and since this tool isn't specific to Foresight Fight, this would also be the case for any future games I release with editing capabilities that include custom sounds. The effort I'm putting into the UI is still mostly targeted at making it easy enough to use specifically for me, but I'm keeping an eye toward broader usability just in case.



Logged

ThemsAllTook
Administrator
Level 10
******



View Profile WWW
« Reply #63 on: September 06, 2021, 03:03:06 PM »

Most of my time in the last few weeks has been spent building out the UI for my music sequencing screen. It's come a long way:



My primary focus was on getting this tool to the point where I can write some real music in it as soon as possible. There are a lot of rough edges and unfinished parts of the UI, but with it I managed to make this demo track that I'm pretty happy with: http://ludobloom.com/files/audiolab_firstcomposition.mp3

This feels like a great start, though I was running into a lot of limitations on the instrument sounds I'm currently able to produce with my synthesizer. I think the next logical step is going to be to expand my synthesizer architecture to allow sequencing and layering at the waveform level, so I can combine together multiple wave types in arbitrary ways to make more complex sounds.

Another good next step will be to try writing a piece of music specifically for the purpose of going into Foresight Fight rather than just as a demo for AudioLab. I'm planning to record the process of composing the next piece of music I make with this tool, so look forward to that when it happens!



Logged

ThemsAllTook
Administrator
Level 10
******



View Profile WWW
« Reply #64 on: October 19, 2021, 07:18:54 AM »

Since I haven't written in this thread for a bit, here's a general project update...

AudioLab is getting very close to where I feel like it needs to be to call it feature complete. The most important to-do items on my list are almost all done. I'm really happy with the shape this project has taken, and I think it will be able to fulfill its role as an all-in-one solution for all of my sound effect and music needs going forward.

In terms of using it for Foresight Fight, my plan is to convert all of the existing bfxr sound effects over to my new system once I have parity with all of the synthesis features I used to create them. There are just a few small things my own synthesizer is missing, which shouldn't be too big of a deal to implement. Once this is done, instead of exporting Ogg Vorbis files from an audio tool and having Foresight Fight load those at startup, I'll be able to directly use the parameter files that describe how to synthesize the sound, and just construct the waveform at runtime without ever having to save it to disk. Synth parameter files can be as small as 100 bytes or so. I like small file sizes, so this makes me happy!

I've been hoping to compose a few pieces of music for Foresight Fight, and that the act of doing that would help me establish a vibe and feed into the creative process for scenario design. Inspiration hasn't come to me yet, though, and I'm just now realizing that I'm not doing the best job at creating the preconditions for it to happen. This lengthy detour to give myself a thorough education in audio synthesis has been extremely productive, but not in a way that gets me any closer to having puzzles built for my main project. If I were ready to resume direct work on Foresight Fight, level design would be by far the most important thing to focus on. I'm choosing a slightly different path for now, though...

I've mentioned that the last time I released a game was quite a number of years ago, and what "release" meant to me then was different from what I imagine it meaning now. An idea I had was to work on a tiny side project alongside Foresight Fight as a way to do a practice run at finishing and releasing a small project, so that I'd be better prepared to handle this large one. I've made two attempts at this so far, and both times have resulted in game prototypes that I find super interesting and definitely want to finish, but they've both ended up growing far beyond the scope of "small side project". If you're curious, I show both of these prototypes in their current form in my most recent devlog video:





(also, since I didn't get around to linking it here, here's the previous video:)





Anyway, I'd like to make a third tiny side project attempt, and see if I can keep it within scope this time. I'm looking for something that would take, say, somewhere around 2 months' time from concept to release. It needs to be something that doesn't require me to invent any major new tools to create. I took a hard look at my existing game development toolchain to see where I was on this, and came up with some interesting conclusions...

I have a robust and well-developed game framework codebase already that I've been using for every project I've written in the last several years, so that part is in good shape. AudioLab is very close to where it needs to be to take care of everything sound-related that I would need. The areas where I keep coming up short are in graphics and level design, and I came to realize that what I really need is a tile and graphic editor that functions in a way that fits my workflow.

So, here's my current plan: While I get the last few AudioLab features in, I'm going to be working on a tile editor that I can use for producing visual assets - essentially, something that would be for graphics what AudioLab is for sound. This will once again be applicable to pretty much every project I'm working on that involves pixel manipulation, which means it's once again a way to indirectly help Foresight Fight. Imagine, in the scenario editor, being able to open the AudioLab UI as well as what will become my tile editor, and having direct access to the same tools that I use for all asset creation without having to involve any external programs and file import/export. I really think this needs to happen.

I understand the problem domain for graphics editing much better than I did for audio when I started AudioLab, so my hope is that it won't take nearly as much research and experimentation to get a tile editor up and running as it did for audio. In, say, maybe a month and a half, I could have a tile editor ready to go, at which point I would be able to fully focus on prototyping a jam-sized game to use as my springboard for the work I need to do on my larger projects. I know how estimates go and I know I tend to be optimistic, so I'm prepared for that month and a half to turn into more, but I really believe this is the path that makes the most sense for where I am right now.

Whew! That was a long one. I look forward to seeing how this all plays out! I'm really excited about where I am with game development in general, and I'm getting comfortable with my weird workflow that involves working on several projects at once. Let's see what happens when I really lean into that and take it to its logical conclusion.
Logged

ThemsAllTook
Administrator
Level 10
******



View Profile WWW
« Reply #65 on: November 08, 2021, 08:09:15 PM »

My last three weeks of work were split up pretty evenly between three major audio synthesizer features. I believe these are the last major changes to the core of the synthesizer, and from here on out it'll be mostly UI polish and filling in the smaller bits and pieces that are missing.

Feature 1: I added a mechanism for applying modifiers to the base waveform used to construct a sound. This lets me layer on effects from relatively simple building blocks, feeding one into the other to produce a much broader range of sounds than I was able to do before. Being able to apply harmonics to any shape of wave seems especially useful - before, I was using a hacked-together specialized sampler that could only so it with sine waves, so it wasn't great.



Feature 2: Every parameter that has a slider I can move to affect synthesis (save for a few that don't make sense) can now be bound to an automated control object, which can vary the setting over time.



Feature 3: I have a bunch of sound effects from previous and current game projects in sfxr/bfxr formats. Since I have an sfxr port under my control, my work is preserved, but I wanted to go one step further and see if I could somehow convert these files to use my custom synthesizer and still produce the same final output. After a lot of digging through the internals of sfxr and working out several types of data conversion math, I now have a button I can press that translates from one representation to the other as losslessly as I could manage. This one isn't 100% done yet - there are still some features missing from the data conversion code, but all of the remaning ones either already exist in the audiolab synthesizer and I just have to work out the math to configure them to match, or they'd be fairly trivial to implement. Once this is done, I'll be able to completely break away from my dependency on sfxr, and use my own more capable synthesizer for all future audio work.

In addition to all this, I made a decent start on my tile editor program. It doesn't do a whole lot yet, but basic pixel editing and tile placement works, and I have a pretty good idea of my next steps with it. I had a lot more momentum on audiolab, so that was still my primary focus, but I'm making sure to allocate time to the graphic editor to get things rolling there. I don't think this program is as generally useful as audiolab, so I'm not currently considering it for public release - it's just going to be an internal tool for me that helps with a lot of various graphical needs that I have.



Logged

ThemsAllTook
Administrator
Level 10
******



View Profile WWW
« Reply #66 on: November 29, 2021, 05:18:50 PM »

After months of work, I've reached a fairly significant milestone: Every sound effect I've made with sfxr or bfxr across three different game projects now converts acceptably to my new system, and Foresight Fight is now synthesizing all of its sounds at runtime instead of loading Ogg Vorbis files that had been exported from bfxr.

This means I'm finally done dealing with legacies of the past, and can focus entirely on the future. I'm trying my best to empty my to-do list on AudioLab so that I can potentially make a release. In the meantime, since it's a good enough tool now for my own use, I'll be doing new audio production in AudioLab and working out any kinks in the process as I run into them. I haven't been comfortable making any new sound effects for Foresight Fight since I decided I didn't want to rely on bfxr anymore, and it needs a soundtrack as well.

I tried to write a new piece of music in AudioLab, but the result wasn't nearly as good as my previous attempt and I kind of ended up hating it. Music composition is something I've never really learned to do on purpose... Sometimes the right inspiration comes to me and I end up with a song I really like, but just as often, I'm not able to make it work. I'm hoping this gets better as I gain more experience and learn more things about music theory. Either way, I just need to work to create a lot of material, and eventually at least some of it will be good.

I suspect that one of my next major focuses is going to be figuring out what to do for instrument sounds. Being derived from sfxr, my synthesizer is more geared toward non-musical sound effects than instruments, and I don't know a huge amount about instruments in the real world. Although I have a few synth configurations that make some serviceable musical sounds, there's a pretty narrow range of instrument types that I'm currently using for composition. I'm thinking it might be a useful exercise for me to go through some existing library of instruments meant for general use and produce my own interpretations of them before doing too much sequencing work with my limited existing palette. It's sometimes hard for me to get out of programming mode and actually use the tool I've been writing for its intended purpose instead of continuing to build it out, but it's something I'm going to need to learn to do!



Logged

Pages: 1 2 3 [4]
Print
Jump to:  

Theme orange-lt created by panic