Alpha Accesswebsite_badges_steamwishlistwebsite_badges_steamwishlist

Tag results

Check your (real) mailbox!


Hi everyone – hope Summer is treating you well so far!

If you have filled out your Kickstarter survey before April 25th, your physical rewards should have been shipped and delivered by this point (including international orders). If you believe you should have received your art prints and buttons but haven’t yet, please contact me and I’ll get it sorted out. For everyone who filled out their survey after April 25th, those are being processed now and will be shipping soon! I see people posting some tweets about receivingthem, and those are always very happy moments. :)

shipments

As always, those who care about details can view the ongoing development changelog here, but I’ll summarize the noteworthy stuff. I’ve basically completed laying the foundation for localization, so every bit of text in the entire game is now pulled from easily editable external files. This means that making it support other languages in the future will be very simple and just a matter of contracting out the translations. The June update has tons of bug fixes, improvements, and performance optimizations, as well as a lot of work on online play connectivity. Most of the past month has been spent on the new network manager, which unfortunately means there isn’t a lot of new visuals to show off. However I am pleased to say that it is going well, and at the moment I can successfully connect to a remote host, and properly synchronize player selections and match settings. I’ve also resumed work on the AI for the bots, slowly but surely making them more intelligent and giving them motivations for their actions.

On the music front, Ali and I still have weekly production sessions and all the alternate planet tracks are very close to being complete. Here’s a sample of the secondary Glaciarii track (though please note that none of the tracks have gone through their final mixing and mastering phase yet), and also a little screenshot of what one of the production sessions looks like.

musicProductionA

I’m also in the planning stages of having a presence at upcoming conventions later this year. The current alpha has been submitted to the Indie Megabooth, and I really hope it gets accepted for PAX West in Seattle! While I applied last year, it was a very early prototype and was before the Kickstarter campaign, PAX South, the positive press, being greenlit on Steam, and polish – so I hope my chances are much higher this year. The judging won’t be complete until July, so keep your fingers crossed!

In other convention news, I’m happy to say that Invisigun Heroes will also have a booth at the XPO Gaming Convention in Tulsa, Oklahoma (September 23-25, 2016). I met the organizers at PAX South, and they have been extremely accommodating, generous, and supportive – looking forward to it!

I’ll be heading out to E3 next week to check out the madness, and hope to see and meet some of you there. If you’ll be there, drop me a note!

My goal was to get the alpha version of Invisigun Heroes in the hands of the backers in early Summer, and I still stand by that. I’m working on making sure the current build is ultra stable, and I’ve already generated a couple thousand keys for you guys. The first drop will still be local-multiplayer only, but once it’s in your hands, there will be very frequent incremental updates with new features and systems being “turned on” all the time – including online play. I want to make sure everyone gets their copies first, and the basics of the game are working for everyone, then move onto all the new features, testing, and feedback. Following the distribution, it will also be time to start working on the new heroes and maps in collaboration with you guys!

Speaking of the alpha, I’ve decided to give all the Kickstarter backers both DRM-Free and Steam keys. I’ve been integrating the development tools provided by itch.io in my build pipeline, and I love their platform’s simplicity and everything their developers stand for. This means that when you get your copy, it will be a key you can redeem at itch.io, but Itch will also provide you with a Steam key as well. It’s the best of both worlds, and you aren’t forced to choose one over the other, and makes distribution logistically more simple on my end. Note that this is only for the backers, and all purchases post-launch will just be single keys from whichever site they buy it from.

This also means that once it’s in your hands, I can explore adding a purchase widget to the website, which many of you have recommended. Itch has an interesting new Refinery program to solve the problems that plague Steam’s early access system, and some developers are giving it a go – including Finji’s new title Overland. In fact, I believe Finji chose to publish Overland exclusively on Itch, which is a pretty big vote of confidence.

In other gaming news, Paper Unicorn has just launched a Kickstarter campaign for their awesome-looking sci-fi game, Transmission. I’ve met up with the art/creative director Nathaniel West several times, and there is nothing but passion and hard work poured into this project so far. The aesthetics and design are fantastic, and reminiscent of the tones from 2001: A Space Odyssey, Alien/Prometheus, and Blade RunnerCheck it out and show them your support!

Physical rewards shipping soon


8acfd7fb0d35ff296b3693f5c751e575_original

Yujin Choo signing some chibi prints

Hi all! Gallery Nucleus has wrapped up production of all the art prints, and all the pins are also finished and ready to ship. Yujin and I have just finished signing them, and Ali will be adding his signature this week. Once that’s done, they’ll be ready to start sending out in batches, so be expecting yours soon!

Work continues briskly on Invisigun itself, and you can view a pretty active changelog that I try to keep updated daily here. Most notably, there’s been a lot of progress on the new game modes (Land Grab and Treasure Hunter) as well as experimentation with some new character abilities, and a completely new planet (Arenae, the desert temple world). I’m really excited about the potential of some new environmental interactions in Arenae.

Arenae, the desert temple world

Arenae, the desert temple world

Ali and I have also been working on filling out the soundtrack, which means adding secondary tracks for each planet. Here’s a preview of the alternate Arx-515 track:

I’m extremely excited to say that at this point, Microsoft, Sony, and Nintendo have all accepted Invisigun Heroes into their development programs and I can publish on all three platforms, barring any unforeseen issues. I’m working on acquiring development kits so that I can start experimenting with console builds, but the desktop versions still take priority. I don’t want to derail the promised schedule, and it’s best to take everything one step at a time. But it will be nice to test on consoles once in a while just to address any major technical showstoppers early, since that’s much more difficult later on.

In life news, we had to move since the place I’ve been renting will be up for sale, so I was scrambling to find a new place amidst all of this. Luckily we found a place and will be moving this weekend, so I’ll be splitting this week between development and packing. That’s all for now!

AudioMixerSnapshot transitions independent of timescale


Unity Audio Mixer

One of the great new features of Unity 5 is the overhauled audio system, including the fancy new mixer and audio mixer snapshots. As a sound designer, this was one of the major selling points that pushed me to upgrade from 4.6. In particular, the AudioMixerSnapshot class lets you define a bunch of settings (for example submixer settings, filter effect values, etc) and transition between them – either instantly or over time. For example, one classic and emotionally-effective use is to low-pass filter your music when in a pause menu or item selection screen that takes you “out” of the action.

The only problem is that many people set Time.timescale to 0 when pausing their game, and this actually prevents the AudioMixerSnapshot.TransitionTo() function from transitioning smoothly. I was tired of waiting for a native solution to this, so I wrote a coroutine in my AudioManager class to handle snapshot transitions, and this is not affected by Time.timescale. Here’s the sample code, easily adaptable to your own class:

private Coroutine transitionCoroutine;
private AudioMixerSnapshot endSnapshot;
 
public void TransitionSnapshots(AudioMixerSnapshot fromSnapshot, AudioMixerSnapshot toSnapshot, float transitionTime)
{
        EndTransition();
        transitionCoroutine = StartCoroutine(TransitionSnapshotsCoroutine(fromSnapshot, toSnapshot, transitionTime));
}
 
IEnumerator TransitionSnapshotsCoroutine(AudioMixerSnapshot fromSnapshot, AudioMixerSnapshot toSnapshot, float transitionTime)
{
        // transition values
        int steps = 20;
        float timeStep = (transitionTime / (float)steps);
        float transitionPercentage = 0.0f;
        float startTime = 0f;
       
        // set up snapshots
        endSnapshot = toSnapshot;
        AudioMixerSnapshot[] snapshots = new AudioMixerSnapshot[] {fromSnapshot, toSnapshot};
        float[] weights = new float[2];
       
        // stepped-transition
        for (int i = 0; i < steps; i++)
        {
                transitionPercentage = ((float)i) / steps;
                weights[0] = 1.0f - transitionPercentage;
                weights[1] = transitionPercentage;
                audioMixer.TransitionToSnapshots(snapshots, weights, 0f);
               
                // this is required because WaitForSeconds doesn't work when Time.timescale == 0
                startTime = Time.realtimeSinceStartup;
                while(Time.realtimeSinceStartup < (startTime + timeStep))
                {
                        yield return null;
                }
        }
       
        // finalize
        EndTransition();
}
 
void EndTransition()
{
        if ( (transitionCoroutine == null) || (endSnapshot == null) )
        {
                return;
        }
       
        StopCoroutine(transitionCoroutine);
        endSnapshot.TransitionTo(0f);
}
©2017 Sombr Studio LLC