Title Screen

Title screen in Manifold Garden now changes based on player progress throughout the game.

Title Screen

Wanted this feature for years. Finally added it.

The code is still super messy, and I’ll probably want to clean it up soon before it gets to be unmanageable.

The hardest part here is making the title screens scenes as they don’t use the usual scene optimization process, so there’s a lot of manual work involved.

Basic Version of Intro

Lots of progress done on saving / loading system.

Super busy of late.

Anyway, finally got a basic version of the intro, loading screen, quit + fade to start screen going:

Basic Version of Intro

This stuff takes way longer than you’d expect. So much effort for these tiny details, but they really do contribute to the overall impression.

Community Building Round Up

I asked this question earlier on twitter yesterday:

twitter question

I got some really great responses.

twitter response 01 twitter response 02

It’s been known for a while now that with how saturated the game market currently is, you can’t just put your game on Steam and expect an audience to find it.

You also can’t really rely on press to discover your game. They’re bombarded constantly all the time by so many new indie games now.

I decided to take a look at the different platforms,  how I’m currently using them, and what I can do to better my efforts.

Twitter - This is the platform I’m probably the most active on. I post a lot of development updates here (along with a few dumb jokes). More recently I haven’t posted as much visual stuff as I’ve been dealing with saving and loading system, instead of level designing. However, that should change pretty soon.

Twitch - I’m also really active here. I’ve been streaming on average 4 – 5 hours a day, every day of the week. Sometimes even more than that. It’s been a fantastic experience, and the community there has been awesome. I’ve improved so much as a programmer since sharing my process up through streaming. You’re able to have instant discussions about the specific problem you’re facing, which is the best way to learn, as opposed to some abstract example in a textbook.

I’ve also gotten a few tips on how to improve my work pipeline in Unity through this. For example, I learned about vertex snapping on stream because one of the viewers asked me why I wasn’t using it. I just hadn’t known about it then. Since learning it, I’ve been using it all the time.

Streaming also has the added benefit that it helps me keep schedule and maintain focus. I’m in the last stage of the project, and it really feels like a drag a lot of the times. It’s all the boring and tedious details that were avoided early on in development, now coming back to haunt you. Streaming has been really helpful in getting through these rough spots.

Discord - This is really just an extension of the twitch chat. I hadn’t been super active there for a while as I was knee-deep in code, but getting back into it.

Mailing List - I set up a mailing list years ago for Manifold Garden announcements and put up a link to it on the Manifold Garden website. It now has over 3500 subscribers, and I’ve still yet to send a single email there. From William Pugh’s response above, emails seems like a really great way to reach people, so I think I’m going to start sending biweekly updates through the mailing list.

Facebook - I don’t really use facebook in my personal life so I keep forgetting to log in and check the Manifold Garden page. I should post weekly updates here.

Steam Forum - There seems to be a small but fairly active group of people posting on the Manifold Garden steam forum. Considering the game isn’t even out yet, this seems normal. I’m going to start posting weekly development updates there.

Saving Image

Worked on optimizing saving today.

At the start of the day, it was 1000 ms as it was running in the main thread.

Had it run in a separate thread, and also split up texture2D.ReadPixels to happen over multiple frames.

I’m saving a small screenshot of the game to use in the load game screen.

Intead of doing ReadPixels all at once, I read it in chunks over the course of several frames. Much better performance.

Code here:

// Saving by one slice each frame
        screenshot.ReadPixels(new Rect(0, 0, width / 4, height), 0, 0);
        yield return null;

        for (int i = 1; i < 4; i++)
            current_tex = RenderTexture.active;
            RenderTexture.active = renderTex;
            screenshot.ReadPixels(new Rect(width * ((float)i / 4), 0, width * ((float)i / 4), height), (int) (width * ((float)i / 4)), 0);
            RenderTexture.active = current_tex;
            screenshotCamera.targetTexture = null;

            yield return null;

screenshotCamera.targetTexture = null clears the player camera.

Took a while to figure this one out. Without it, the screen kept going black momentarily.