1. TopplePOP: Bungee Blockbusters
  2. News

TopplePOP: Bungee Blockbusters News

TopplePOP | Developer LiveStream

[h2]Welcome to The Jumble![/h2]


TopplePOP is a physics puzzle party where bendy animal acrobats on bungee cords race to rescue their pals from a clutter of colorful blocks known as The Jumble! It reinvents match puzzles with freestyle physics, team battles, co-op speedrun challenges and more! Our brand new FREE DEMO is live during Steam Next Fest! Play solo, co-op, in team battles or challenge the speedrun leaderboards!

[h3]Meet ArkimA[/h3]
4 indie devs from Sydney, Australia - we co-op to make games you can play co-op!

[h3]Come join us for a game! [/h3]
Come say hi, post in chat if you'd like to join the fun - we can play a co-op puzzle together or level the playing field for a fair competition. Join the TopplePOP Community discord to find teammates and opponents and let us know what you'd like to see in the full game!



ONLINE BETA ACCESS + PAX INDIE SHOWCASE Q&A

Starting this week, we'll be giving out TopplePOP Online Beta keys via the TopplePOP community discord - come join the fun and share your feedback to help the devs!
TopplePOP Community Server: http://discord.gg/zRNbqtx

Right this very moment, you can ask us anything at the PAX Indie Showcase Q&A - discord.gg/CWJDPKda


Progress update 2020-11

Art Asset Optimisation (Puzzle Blocks)


Up til now we’ve been focused on getting core features in and making sure the game is fun. We believe it’s rarely a good idea to pre-optimise, especially when you’re not sure if the feature you’re working on is going to fit nicely into the game.

We’re now at the point where the core features are in, the game is fun, and now we want it to run on as many platforms as possible making it possible for you to TopplePOP wherever you want!
Lots of platforms means lots of difference in hardware specs. While Unity does a decent job of allowing you to build to most platforms it still falls on the developer to optimise their game to not just run, but run well.

Our game before optimisation was quite cpu heavy & we wanted to look at moving some of that load over to the GPU as on most of our target platforms the GPU is proportionately more powerful than the CPU. I (Tim / t3rmi) have been working on Arena Environment art as well as Block art in this regard but for this devlog we’re going to focus on Blocks. The block prefab it the most heavily used in the game, We have one for each block/obstacle type in game.
I figured any cleanup done here would affect in-game the most, Shown Below is our prefab pre-optimisation. It was great when testing and prototyping new ideas as we could just drop in the new bits and see if we liked it, however as you can see below it made for quite a hefty pile of GameObjects.

[h2]Block Hierarchy Before[/h2]


Note: I’ve enabled and staggered the different layers so you can see the composition of the prefab, normally they’d be disabled/enabled as needed with most of the layers sitting at the same z depth.

We have a textured mesh showing what material type comprises the block(think wood/metal/stone), Thick outlines, Thin outlines, Intermediate outlines, Bold outlines, Some Fire/Ice/Bramble and other coatings we add to blocks as well as special effects particles & scripts to make the gameplay associated to all these bits possible.

Each block in game held all this info, all these meshes etc. and we figured we could do almost as much with much less.

We decided to move almost everything visual to the gpu using custom shaders, so instead of toggling GameObjects We could just fire value changes to the shader, This should reduce draw calls and definitely cut down on the GameObjects, triangle count and general scene complexity

[h2]Block Hierarchy After[/h2]


Here we have our optimised block prefab, it has a the majority scripts that used to be throughout the prefab now sitting on the root gameobject and a couple on the block_mesh itself, unseen here is a coating_mesh which is now created at runtime only as required by the blocks, Impbox also found savings to be made on the code side of things too including some bits that were redundant due to changes in approach.

Even before building the new shader, we noticed marked improvements in performance on our benchmark just from stripping away most of the GameObjects and moving to a much simpler base mesh, We settled on using a distance field texture for our block outlines, as it would allow us to change their thickness quickly and easily as well as being super cheap to get looking good

What is a distance field texture you may ask, For a more technical understanding you could read this but in regards to how we use them they look like a simple gradient shape as seen here
The interesting part is what it represents as data, brightness in this texture shown as a range from 0 (black) to 255 (white), with 127 being middle gray, if we color the middle grey with a red tint it shows us the original shape, each pixel value tells us the distance from the edge of the shape (127 = edge of the shape, 0 = far from the edge on the outside, 1 = far from the edge on the inside).


If we walk up and down the brightness values it gives us more indicator of how we can use a distance field for everything from exterior outlines to interior glows


The step cutoff is middle grey


Detailing the implementation of each effect into our block master shader could be a smaller devlog in itself as we employ different tricks to get the look we’re aiming for eg. We use a texture that looks like this (right) to make the blocks flash and pulse at the right moment to alert the player, We use screen-space coordinates on the ice overlay effect to fake the reflective sheen on icy coated blocks, we also use distance field texture quite a bit to mask features of the block as needed and to delineate between outline and inner (fill) of the block, the best part ? We can accomplish all of this on a few materials with a single mesh.



So with all these changes we’ve reduced render time, triangle count & draw calls as well as marginally increasing visual fidelity! The minimum system requirements are considerably reduced since the Demo release.



Overall we found great results in making these changes, allowing us more room to breathe on the CPU, allowing us to jam more fun stuff into the game, Regardless of platform you choose to play on :)

Let us know

[h2]How do you most want to play TopplePOP? [/h2]

[h3]
  • solo, chill
  • solo, competitive (leaderboards)
  • local co-op, chill
  • local vs. competitive
  • online co-op, chill
  • online vs. competitive
[/h3]

Pick one - Join our Discord and let us know:
https://discord.gg/4Ajzqepr

Progress Update 2020-09

We've been quiet for a while since the demo release, but no longer! We're lifting the lid on TopplePOP development with a series of dev logs.

[h2]Physics Performance on low end devices.[/h2]

TopplePOP is good fun solo or with friends, on smartphones or the big screen - we’d like to make it available to as many people in as many ways as possible. To this end we want the app to run smoothly on any platform from next-gen consoles right down to low-spec smartphones.

TopplePOP is a block puzzle inspired by decades-old classics Tetris and Puyo Puyo, so this shouldn’t be difficult, right…?

In most aspects yeah, TopplePOP is not a resource-intensive game - but the gameplay is built entirely on a physics sim. Stable performance is the cornerstone of the game.

Multi-player interactions with potentially hundreds of interdependent physics objects every frame update - quickly adds up to max-out low-end CPUs.

[h3]Good game physics is hard[/h3]

Many games involving physics will, when under strain, cap the number of calculations (lowering physics fidelity) to ensure smooth framerates at the cost of minor physics glitches. Normally these glitches are imperceptible, but they can cascade out of control.
(otherwise a great game with a poignant story - worth playing!)

In most games, capping physics to prioritize framerate is the way to go - smooth fps is worth the tradeoff, and resulting physics glitches aren’t too heinous with mostly minor impact on gameplay - but for TopplePOP, this is not an option.

Our core gameplay is entirely reliant on glitch-free physics. No matter how chaotic the game may appear on the surface during intense puzzle-battles - under the hood it must maintain physics fidelity at 60 fps. Puzzle pieces must always behave in line with expectations so as to support pro-level competition which is great for players / spectators, but this can strain low-end CPUs, especially when stuff gets real in 4-player battles.

[h3]Our Goal: [/h3]
Reduce our physics CPU time so we can maintain 60 FPS on low end hardware in 4 player VS mode without losing what makes TopplePop fun.

On some of our target hardware our physics CPU cost was using up our frame time (about 16 ms for 60 FPS)

As physics is a hugely important part of TopplePop we needed to find a way to reduce our physics cost, ideally without making huge gameplay changes like reducing the number of blocks on screen.

[h3]Our solution: [/h3]
Combining stitched blocks into “Block Groups”


Number of blocks on screen: 192
Number of dynamic physics objects:
- before new block groups system: 187
- after new block groups system: 63


What we do is merge all the blocks that are stitched together (represented by the same coloured cube in the center) into one physics object with many colliders, and groups that are stitched to the walls or floor can become static physics objects which are far cheaper.

This results in us having far fewer physics calculations per game update.
When a block is popped we remove it from the group and potentially split the group into multiple new groups.


For example, here if we pop the orange block, we create a second group for the two right blocks which are now disconnected. (stitching only occurs along block edges)


[h3]Gameplay changes:[/h3]
This means stitching between blocks is now rigid and won’t be bendy as it was previously.

While this is a gameplay change, we think it improves the gameplay offering a more predictable experience to the player. Large stacks of blocks balanced on a ledge are less likely to fall over without the player intentionally toppling them and it also allows our game to be playable at 60 fps on more low end platforms even in 4 player VS mode.

This has been a really big job to implement with many edge cases to handle, but with this change and other optimisations[h3] we're now confident we can maintain 60 FPS gameplay on low end devices and the game still feels great to play.[/h3]

As always we’d love to know your thoughts on this - play the free demo now via the steam page, join us on discord and feel free to ask questions! :)

TopplePOP : PAX Online Developer Livestream

https://steamcommunity.com/broadcast/watch/76561197966447198





Chill with the TopplePOP developers, join our discord and ask us anything in #general !

http://discord.gg/8aGGgWx

We're showing off extra features not included in the demo - like the Stadium, Temple and Volcano zones! Rising lava, bombs, gem-blocks and more!