1. Kabonk!
  2. News
  3. Update 017 - Accepted!

Update 017 - Accepted!

[p]We've submitted our game for review, and after a round of feedback, Kabonk! has been approved! We're ready to smash that big ol' release button![/p][p]But hold your bricks: we're not launching just yet. The official release is still set for October 10th, giving us time to play-test relentlessly. Each iteration brings us a better version (or at least fewer bugs).[/p][h2]What is new in this iteration?[/h2]
  • [p]Improved translations for smoother global brick-breaking.[/p]
  • [p]Generated a shiny new font for our 3D in-game text*.[/p]
  • [p]Revamped pause menu layout to better support localization*.[/p]
  • [p]Increased the mass of physics bricks for more satisfying collisions.[/p]
  • [p]Enhanced sticky-effect to work across multiple shapes.[/p]
  • [p]Reduced tiling in Jungle levels for a cleaner look.[/p]
  • [p]Improved collision detection in the default level layout.[/p]
  • [p]Fixed issue where splitting bricks were splitting twice (oops).[/p]
  • [p]Fixed ball respawn bug, no-one likes to out of balls in a brick-breaker.[/p]
  • [p]Paused all effects when the game is paused.[/p]
  • [p]Removed cheats: no shortcuts.[/p]
  • [p]Refactored code for better readability (future us says thanks).[/p]
  • [p]Fixed level 50 for not showing up.[/p]
  • [p]Improved jungle lighting for that extra tropical vibe.[/p]
  • [p]Added game pause on controller disconnect and Steam overlay activation.[/p]
[h2]*Fonts, localization, characters, unicode (warning: a rant)[/h2][p]At the start of this project, we had a wild (and very, very stupid) vision: create a fully immersive "in-game" experience with:[/p]
  • [p]No interface (like game menus).[/p]
  • [p]No written text (because who needs words, right?).[/p]
[p]We thought this would make Kabonk! accessible to everyone, including non-English speakers. Technically? Easy peasy "We’ll just make a literal exit door to quit."[/p][p]Theoretically? Even easier "What text does a brick-breaker game need anyway?"[/p][p]Oh, how wrong we were.[/p][p]Players want to quit games fast. No one’s hunting for cryptic signs. And if the music is too loud? You’ve got about three seconds before players are annoyed enough to jump ship.[/p][p]Remember this horrific monstrosity?[/p][p][/p][p]You even had to search for the "settings"-menu. Yikes.[/p][p]Fast-forward to today. Our menu is now quick and straightforward: press a button (Esc, right mouse, or "B" on a controller), and you can tweak music, effects, overall sound, mouse sensitivity, exit the game, continue, or adjust game quality. Basic, but effective. Sounds simple, right? Well, behind the scenes, there were some technical challenges but I wont bore you with that. The biggest headache? Fonts and localization. These are even more boring, so here is the rant.[/p][h3]The Font and Localization Fiasco[/h3][p]Every sensible developer would’ve done what sensible developers do:[/p]
  • [p]Use existing tools.[/p]
  • [p]Build a menu with standard interface widgets.[/p]
  • [p]Use the engine’s built-in pause functionality.[/p]
  • [p]Pick a runtime font with multi-language support.[/p]
[p]Not us. We went rogue:[/p]
  • [p]Built a custom pause system that loops through all objects and pauses them individually, each with custom code behind it.[/p]
  • [p]Created a 3D menu using the engine’s 3D toolset.[/p]
  • [p]Ditched fonts entirely and generated a material from a font for a 3D text renderer in the menu.[/p]
[p]Oh boy.[/p][p]Did you know we translated all text into every language supported by Steam? That includes Chinese (Simplified and Traditional), Thai, Arabic, Japanese, Vietnamese, Korean, and more. Did you know Chinese alone has over 100,000 characters? Yeah, neither did we. Why would that matter, right?[/p][p]Oh jeez.[/p][p]When you combine all those languages and turn them into a material, the engine generates every character as a texture and maps each Unicode character to a position on that material.[/p][p]Oh fiddlesticks.[/p][p]Impossible? Pretty much.[/p][p]So, what now?[/p]
  • [p]Scrap translations?[/p]
  • [p]Ditch our custom code and use the engine’s tools?[/p]
  • [p]Skip some languages?[/p]
  • [p]Revert to icons instead of text?[/p]
[p]Each option could ripple through the game. Fun fact: we spent two weeks making translations work across the game and Steam (store page, trailer text, achievements, you name it). Throw that away? Sometimes you have to... Sometimes.[/p][p]It’s complicated, but we did:[/p][p]We gathered all translated characters, stuffed them into a material, let Unreal work its magic, and now we have a material with only the characters we need for localization. See? Not that hard, right?[/p][h2]Gameflow[/h2][p]A little extra. Here is a simplified flowchart of our game. Pretty basic but it gives a good indication of all the things happening.[/p][p][/p][p]As always, until next time![/p]