Update  ·  March 7th, 2023

Boxing Beta gets a new loading screen

Hi all,

We’ve recently added a new loading screen in Boxing Beta! You can, of course, skip the loading screen by clicking twice or pressing space twice. You should see this loading screen coming into our other titles as time passes on.

About the design

We know loading screens aren’t the most exciting technology or gameplay, however, we did do some interesting design work for this loading screen. We considered how each game should feel, in this case, the transitions were programmed to feel like exciting action things. We also had to rewrite some additional technology.

One issue we ran into is that Roblox’s preload async code doesn’t really work. So in certain scenarios the actual image may not have fully loaded by the time we’re showing it to you.

We’ve included both the platinum logo in the bottom, and Boxing’s logo too.

Why even have a loading screen

We’ve included a loading screen because it helps showcase our brand. The other reason is because there’s some flickering and other things as you first load into a game. The loading screen helps cover this, but since it’s skippable experienced players won’t really have any issue getting into the game.

Technology deep dive

Here’s a deep dive into the actual strategy for composing loading screens. I ended up implementing a transition object and API which implements the following API surfaces.

This lets us generalize playing each logo back in an asynchronious way that can be cancelled.

function LoadingScreenPlayer:_promiseSustain(maid, doNotAnimate)
    local promise = maid:GivePromise(self._transitionModel:PromiseShow(doNotAnimate))

    for _, item in pairs(self._logos) do
        promise = promise:Then(function()
            return maid:GivePromise(item:PromiseShow(doNotAnimate))
                :Then(function()
                    if item.PromiseSustain then
                        return maid:GivePromise(item:PromiseSustain(doNotAnimate))
                    end
                end)
                :Then(function()
                    return maid:GivePromise(item:PromiseHide(doNotAnimate))
                end)
        end)
    end

    return promise
end

In the future, we may apply this same API surface to attacks and other in-game effects, so developing this was actually really useful.

This part of the code is open source and can be found here on Github.

Future improvements

We’ll be integrating a tip system into the screen, as well as motion graphics at some point. Additionally, we plan to expand the loading screen into more games and areas in the future.

Additional updates

This weeks updates also include a premium payouts AFK system, some tips when you get knocked out, and Let us know in the Discord if there’s any issues or anything.

Thanks you all,

James (And the Studio Koi Koi team)

Studio Koi Koi Newsroom

The latest updates from Studio Koi Koi

Read more