1. PogoChamp
  2. News

PogoChamp News

Weekly Progress Report #14

This week was mostly more menu improvements and bug fixes. The menus work pretty well now, but there are still some things to fix with the graphics settings (namely, making them appropriate for the user's machine).

Bug of the Week

This weeks bug is a strange Unity issue. Using Unity's built in navigation allows you to move between UI elements with a controller or keyboard. This works pretty well for the options menu:


The options menu is a Prefab, so that it can be used in several different places. Interestingly, if you open the prefab in Unity's Hierarchy view:

and then try to use controller navigation, the following happens:

You can see that the selection disappears as I try to navigate from Resolution to Frame Rate. I think that Unity is trying to jump to the prefab's version of the resolution item, instead of the one that actually exists in the game view. It's a very strange and highly specific bug, that doesn't actually matter when the game is being played. I just thought it was interesting. It also might be fixed in new version of Unity, but I haven't checked.

Changelog
  • Improved menu code organization.
  • Menus now return to the previously selected button when closing nested menus.
  • Ported several old menus to the new menu system.
  • Replaced the old Main Menu scene with the new one.
  • Deleted several outdated menus.
  • Fix a bunch of C# warnings.
  • Prevent clicking "Play" in the main menu from instantly loading you into a level (instead of level select).
  • Speed up various menu animations.
  • Fix options menu buttons looking bad when animating in.
  • Disable exiting replay list after clicking on a replay while it is still loading.
  • Fix close buttons for stats and replay list menus not working.
  • Camera settings changes now work and allow changing FOV.
  • Pausing inside levels works again.
  • Pause menu is fully featured again.
  • Changed all options menu sliders to pickers for simplicity of implementation.
  • High Scores Only mode now properly connected to the options menu option.
  • Fix bug where the player could no longer pause after crashing.
  • Fix various circumstances where inputs could pass through the pause / options menus (you could blow up or restart the level while paused).
  • When a replay restarts after beating a level, the camera not teleports to the start location instead of interpolating there.
  • Fixed incorrect right wall size in "Get Me Down" level.
  • Clicking on / near Options Picker arrows not changes the value of the picker.

Weekly Progress Report #13: Options Menu

I spent this week pretty much entirely working on a redesign of the options menu. It's going alright, but there are still some bugs to fix, styling to do, and some of the settings aren't implemented yet.

Bug of the Week

In this gif, you can see that the first time the options menu is opened, it properly selects the "Graphics" tab, and you can navigate through the options using a controller. When you close the menu and then re-open it, it no longer automatically selects the first tab. I haven't fixed this bug yet, but I'm pretty sure it has to do with the lifecycle of the menu GameObjects.

Currently the options menu exists permanently, and is just hidden when not in use. I'm going to see if destroying and recreating the menu instead works better, but I haven't gotten around to it. I'll also be re-implementing the Pause menu UI eventually too, and that will probably have the same issue.

Changelog

The changelog this week seems small because working on the Options Menu took almost all of my time, and I figured listing out partial fixes to that wouldn't be very interesting.
  • Lots of changes to the options menu (basically reimplemented the entire UI and logic, added new features, implemented graphics settings, etc).
  • Disable See through camera during level completion replays.

Weekly Progress Report #12: Some Style

Revamped Main Menu

This week a friend of mine made some example art / menu mockups for me that I think are pretty great (much better than my placeholder stuff). One of those was the Main Menu screen, so I immediately went to implement it to see if I could / how it would work in the game. I think it looks pretty good! This style could become the style for the game, if I can figure out how to make the game actually look like it.

The background image there is a blurred version of some art I commissioned from a freelancer, but the menu design is based on the work from my friend (thanks Kathy!)

More Dev Time

This week is the beginning of my transition to "80% time" at my real job, which means I'll be taking every Friday off, and be able to work on PogoChamp instead. I didn't make the decisions to switch to 80% time entirely for PogoChamp, but it's going to be very nice to have an extra day every week for personal projects / rest. Since I'm posting this on Friday morning, I haven't been able to use that extra day yet this week, but having an extra free day should help me get more done.

Changelog
  • Added a new level w/ tilted platforms.
  • Added new level (downhill with uphill conveyor).
  • Increase upper body physics material friction.
  • Experiment with new main menu design.
  • Some organization of screen assets for the main menu.
  • Main menu button expansion animations now happen from the middle.
  • Experimenting with lighting in sample level.

Weekly Progress Report #11

Mouse & Keyboard Controls

So this week I did a little bit of experimentation with keyboard & mouse controls. The game already had WASD and arrow key support, but something I've been thinking about for a while is whether using the mouse to control the character's tilt angle would be a reasonable way to control the game. I whipped up a quick prototype of the controls that you can see here:


It..... sorta works? I'm still trying to figure out how to tune it so it's more intuitive to control. As it is now it's very finicky and difficult to use. If you want to play this game, you really ought to get a controller, but I'll do my best to make keyboard & mouse as good as I can.

Bug of the Week

I don't have an image for this week's bug of the week, but I'll do my best to explain it. This week I got the raw 3d files for a mockup that I commissioned. The files were made in Cinema4D, which Unity doesn't natively support. The company that makes Cinema4D has an asset called Cineware that allows you to import the files into unity after saving them in a specific way. The scene in Cinema4D involves many different colored light sources that shine on the walls & floor to give them cool color gradients. I've tried both importing with Cineware, and exporting the scene as an FBX, but in each case something goes wrong. Sometimes the materials don't get exported correctly, and end up as weird defaults or non-URP compatible materials. Sometimes the light sources are imported with default settings instead of the settings they have in Cinema4D. Sometimes the level geometry is wonky, or has different dimensions depending on how I imported it. It's a bit of a mess. After a decent amount of investigation I've decided to just not bother trying to import it. I think I've got a decent understanding of how to recreate scenes like that using the unity tools directly (using area lights, and baked lighting).

Work/Life Update

Starting next week, I've decided to transition my real job to 80% time instead of full time, which means I'll have an extra day off every week to work on PogoChamp! Being able to work on the game outside mornings and weekends is a big change, and one I am looking forward to.

Changelog
  • Updated the email links on the website to use the new "pogochampgame.com" domain.
  • Experiment with replicating & importing mockup art
  • Lower water level on Zig Zag
  • Tweak Goal Zone on Long Jump to be more of a cyliner at the bottom.
  • Remove walls from Long Jump
  • Remove physical platform under Bouncer goal.
  • Add 2 new levels.
  • Update main menu for better performance on lower-end graphics cards.
  • Fix build compilation error.
  • Prototype Mouse-tilt controls.

Weekly Progress Report #10: Level Select Improvements

Level Quick Select

During playtests, two specific problems came up in relation to the level select:
  1. "It's hard to figure out which levels I am missing stars in."
  2. "I don't want to have to spend 30 seconds walking from one level to another if I want to go back to the beginning."

So in order to deal with both of these issues at once, I present: The level Quick Select menu.

The UI needs some tweaking, and it doesn't support controllers yet, but the basic functionality is there, and I think it works very well.

Improved Level Order Tooling

This week I managed to finally make a change I've wanted for a couple months now: Adding difficulty information to the Level Order configuration list. I use the Unity Reorderable List package to make adding and swapping levels very easy. It's a very good package, but I had some trouble getting more information beyond simple level names to display in the collapsed view. This week I finally figured out how:

The trick to it was switching from the [Reorderable] attribute, to using the ReorderableList class. Once I made that change, all I had to do was add an element name callback:
[CustomEditor(typeof(LevelOrder))]
public class LevelOrderEditor : Editor
{
ReorderableList otherLevelsList;
private int maxLevelNameLength = 0;

private void OnEnable()
{
otherLevelsList = new ReorderableList(serializedObject.FindProperty("orderedLevels"));

maxLevelNameLength = 0;
foreach (LevelInfo info in LevelOrder.Instance.Levels())
{
maxLevelNameLength = Mathf.Max(info.name.Length, maxLevelNameLength);
}

otherLevelsList.getElementNameCallback += GetElementName;
}

private string GetElementName(SerializedProperty element)
{
string name = element.FindPropertyRelative("name").stringValue;
int difficulty = element.FindPropertyRelative("difficulty").intValue;

string paddedName = name.PadRight(maxLevelNameLength, ' ').Replace(" ", "\t");
return $"{paddedName} \t [{difficulty}]";
}
}

There's a little bit of logic in there to try to get the difficulty to a somewhat consistent spot. It works fine, and is as good as I need it to be given that the labels don't use a monospaced font.

Bug of the Week


Normally when you restart a level, the game instantly resets your character, as seen in this gif:


But when you completed a level successfully and then retried, the game would do this weird fly-over instead:


The fly-over effect was due to Cinemachine transitioning between two cameras. I changed the transition style to "Cut", but that resulted in a single frame where the camera was in the wrong place. In order to deal with that, I decided to just add a quick screen wipe effect when resetting after a completion. I'd been planning to do something like that for a while, but never really had a reason to until now. I think it's the "proper" effect, because when you reset after a completion, the game will clear out all the attempt ragdolls and reset the replays it's recording, so it acts much more like initially entering a level than retrying a failed attempt.

Changelog
  • Remove distant walls from some levels
  • Added new level using Rings (this time it's not underwater).
  • Level order list now includes difficulty ratings.
  • Added new falling level.
  • Add another ring level
  • Show a message when you automatically explode due to "High Scores Only" toggle.
  • Fix bug where restarting after a completing a level caused a camera fly-over or weird clipping.
  • Added level quick-select menu.
  • Update level quick select with all the level entry points.