ApathyWorks

Development Interlude, Absentee Diary Edition

Posted by Alex Jordan on

What do you say when there's not much worth saying?

My last official Development Diary for Project Squish, #7, was posted at the end of December, almost 6 months ago. Since then, I've made up for it with plenty of Development Interludes, but no proper Diaries, and certainly no in-game videos.

Why?

Because the flashy part of Project Squish's development has been over for a long, long time. The last video that I posted features the Boss Bot, pretty much the last stand-out feature I added to the game. Since then, I've been steadily going through the code, adding minor features here, fixing bugs there, and generally making my way through a list of items that are incredbily tedious and incredibly uninteresting.

Also... about those videos. They're not really serving much of a real purpose. Since the in-game art has yet to be finalized, I uploaded those videos primarily to show off new features and gameplay, not to look pretty. And since the game still isn't pretty, I don't need new videos. Furthermore, according to YouTube, their reach was kind of nebulous. Absent more exposure (like the kind you get by, I dunno, actually releasing the damn game) most of the videos' viewers were either close friends of mine who saw them on Facebook and got curious, or fellow developers in the Penny Arcade forums. The latter group was especially important when I still needed their advice and feedback on implementing features, but that need has fallen by the wayside as the game nears completion.

So: no new videos until the game looks pretty.

To emphasize just how tedious and boring this phase of development is, I've attached my To Do List below the fold. It's a constantly-expanding list, and there's seldom a time spent debugging Project Squish that doesn't add yet another bug or item that needs to be taken care of.

Behold my drudgery!

  • Particle fx occasionally disappear, also causing no decals
    • Occasionally passing null ParticleEmitters
    • Causes levels to have a null error and crash on restart after enough restarts
    • Move Emitter reset cycle prior to level.Activate()?
    • Should be fixed. Keep an eye out.
  • Zapper seems to be reluctant to zap critters on Perturb-ulence
    • Can’t recreate this on PC. Xbox only?
  • Something unrelated to particles seems to cause a slowdown in Burn Your Bridges
  • Bomb button in the REDACTED, UNANNOUNCED FEATURE levels keeps making multiple bombs at the same time
  • Changing the AddButtons method now causes LevelEditor messages/buttons to not show up correctly
  • Other messages draw over the Message Box (and the quick fix killed the framerate...)
  • Zapper Boss Robot’s zap length occasionally doesn’t reset when it’s shortened
  • Elongate saving/loading notices and move them to the Campaign Menu
  • “Loading” message after Press Start is hit
  • Game status messages for Xbox Live
  • The Oil Drums randomly detonated by themselves in Oil Drumbeat. Keep an eye out for this repeating itself.
  • Identical DrawModifiers sorting errors still prevalent
    • Because DrawModifiers are reassigned after each new level load?
    • Only an issue in Level Editor
  • ANYTHING pushed into walls makes infinite impact noises. Needs a LevelObject or PhysObject-level fix.
  • AudioManager occasionally sets the wrong menu music volume on load
  • Explosion flashes turn fire ripples pure white. Undo premultiplied alpha, need better alpha control.
    • This also screwed up Bubbles
  • Burn Your Bridges needs to be updated
  • Hitting the Guide button causes an ungodly amount of noise and makes the Pause menu flicker
    • Should be fixed
  • “Must Beat all 9 Levels in Stage” message is too persistent from main menu to campaign menu
  • Resetting a special level (or any level?) will open a Message Box if you hit the A key while hovering over an Info Point
  • New Emitter issues:
    • Visual inconsistency w/particle textures
    • Decals occasionally appearing in the wrong place (where a rain decal is supposed to hit occasionally will produce a decal from another particle type, like blood or oil)
      • Make sure NewParticle resets also reset ParticleImpactType
      • Seems tied to Restarting levels
  • Shenanigans with backing out of Special levels vs. Custom levels menus
  • Oil Spray powerup has weak flow and dribbles at the end
  • 6 minute-timed Multiplayer levels lead to an insta-tie when started
  • Players holding opposite menu-scrolling directions in the Multiplayer Lobby makes a horrible noise
    • Should be fixed. Does it also apply to horizontal movement?
  • Add Super Scroll to MenuSystem
  • Investigate errors when pre-storing 2,048 particles (on hiatus since return to singlethreading)
  • Solid particles occasionally collide with the bottoms of solid objects instead of the tops (on hiatus since return to singlethreading)
  • The Fuck Stops Here seems to think you can save 4 critters in it. Need to recreate the error... select Level 1, then try to scroll to Level 60?
  • Game crashed on Trail Blazer when I hit “B” to delete an open Message Box
  • Add Level Restart handling for standard MP levels and custom MP levels in CTHUD
  • Message Boxes
    • Occasionally, button prompts don’t show up
  • Turn gaussian blurring of selected objects into one pass on one texture
    • Currently in one pass, test to see if 360 performance improves
    • Player 2 selection blur shows up in the wrong place
  • Can’t pause in multiplayer
  • StorageDevice not detected errors
  • Multiplayer Madness
    • Insufficient Bullseye issues
    • No elevator placement issues
    • Ammo can hit two bullseyes at once and replace neither
  • Boss levels are unlocked. Again.
  • Creating a new level w/o a profile logged in should provide a MessageBox to warn the player that it can’t be saved
    • It also shouldn’t add an entry to the level list
  • Storage-related Message Boxes need to be more fine-tuned
  • Message Boxes’ messages can’t overlap
  • StorageHandler.OpenContainer has no error checking for pulled or missing memory cards
    • Should be fixed. Double-check
  • OK-Only MessageBox issues
    • Blank one appears if you start the game w/o signing in
    • Hitting the A button to close it counts as a button press for whatever menu the MessageBox is open in
    • Trying to load a non-existent (“Empty”) level gets the MessageBox stuck in a loop
  • Flapping in the Breeze and Walk and Chew Gum need their light schemes modified
  • Optimize rain
  • Create ingame notifications for thumbstick sensitivity changes
    • Also, create some sort of ingame Info Point. Probably in level 2-1
  • StorageHandler relies on opening a new container to load Singleplayer levels, which shouldn’t be necessary
    • Should be fixed. Double-check
  • Looping sound effects need to be shut off in case of level end or level restart (persistent fire keeps playing as long as there’s fire on the screen)
  • Optimize Spike collision
  • Optimize Oil Drum collision
  • Delay in loading Player High Score data causes message overlap for approx. 1 second on the Campaign List
  • Limit on terminal velocity
    • I have no fucking clue why, but this doesn’t seem to be an issue!
  • Sometimes high-velocity springs shoot through their PhyObj targets and keep going
  • Fix Reset bar jittering
  • Deleting the only remaining custom level causes the new “(Empty)” menu entry to reposition at 0X, outside of the TitleSafeArea
  • Sparks can’t have premultiplied alpha
  • Spamming Save, Load, or Delete commands tries to open a new StorageContainer before the old one is first disposed, causing a crash. Rely more heavily on IsSaving and IsLoading
    • This should be taken care of
  • Give greater enable/disable control to Button Lights
  • A-Button presses Restart levels/End levels/open Info Boxes all at once
  • Certain Powerups don’t launch with an at-rest Right Thumbstick (should default to 0 velocity with an Up angle)
  • Filename protection: File Saves need to strip out incompatible characters (“unicode”?)
  • Loading and Saving level colors is screwed up
  • No overwrite protection for creating new levels
    • Add “(1)” style numerical indicators with a Do/While check.
  • Level issues
    • Oil Drumbeat needs to be redone
      • Needs 1 more Critter
    • Bleep of Faith uses electricity before it’s formally introduced
    • Shoot Them Down needs an Expendable critter
    • What a Shock has an oil barrel for no reason
    • Open and Shut Case consistently misbehaves
    • Dia-Gone-Al is not what you think it is :P
  • Quitting at the tail end of a level’s Iris Out uses the Iris effect to disable drawing to the screen everywhere else in the game. (This should still apply to LevelEditor previews.)
    • Fixed?
  • Path/Storage Container file checks on Load or Delete (CTLevelEditor line 339) cause crashes if a storage device is not assigned
  • Make sure Zapper draws over electricity
  • 100% critter death notification should:
    • (A) prevent the Pause menu from being used
    • (B) show its own Abort/Retry/Fail prompt
  • Hate Float’s boss bot Attachment won’t go away upon the Boss’s death (fixed? try in campaign)
  • Fix non-functional Sparks on Live Wires (confirmed in Quick Dip, probable in Oil Drumbeat)
  • Storing light masks on level reload occasionally causes the Xbox 360 to crash. Need a more efficient way of doing it. Light mask storage is now 100% GPU-powered.
  • Blood spray particle FX doesn’t appear on slicing death
    • Turns out that lots of particle FX aren’t appearing properly, including powerup Bomb explosions
  • Sometimes Critters continue to flail in an Elevator instead of contacting the ground
  • Some Critters catch on fire instantaneously
  • Resetting levels screws up the Light Mask
  • Fire heat effects clip over other fire heat effects. Need to fix the do-not-create-in-proximity code
  • The Iris In on the Xbox 360 doesn’t appear during the first-time loading of new levels
    • Fix for this issue accidentally destroys level instancing. Whoooooops.
    • Okay, everything is multithreaded now. Be on the lookout for issues.
  • Pausing (and input in general) shouldn’t be allowed until the Iris In is finished
  • Menu unlock bounces should only go off/freeze menu activity if the unlocked menu entries are in view.
  • Pause Menu functions need to be finalized
  • Restarting level needs to be one-touch, not Hold
  • Quitting out early treats saved Critter counts as a successful level end
  • End Level fade out jitters at the start of the anim
    • Does this still exist? Haven’t seen it in awhile (only when doing a force Quit, which won’t be available in the final version)
  • Bubbles render incorrectly during End Level fade outs
  • There needs to be an Out Of Bounds box for directly above to correct for critters that float away on Bubbles
  • It’s possible to get Divide by Zero/NaN errors on really fast, repeated flicks if the TargetAimList isn’t populated with more than 3 values
  • Flaming critters that fall to their deaths leave behind the heat effect
  • Spike boundingboxes need to be a bit lower so Critters don’t get stabbed to death on an adjacent block
    • Detecting penetration must account for fast-moving objects
  • Critters die while walking horizontally onto spikes
  • Spikes should be background-level graphics
  • Pressure button bounding boxes should not move (causes jittering)
  • Collision with disabled LevelColoredObjects sometimes kills forward momentum
  • New highlight drawing code causes DrawOrder flickering (noticeable with dead critters on spikes)
  • Finicky collision with Elevator prisoner boxes
  • Shortest uncollide route often causes a warped bounce in an impossible direction
  • Particle Managers update while the restart level bar is up
  • Fix disappearing MP ammo when the ammo is highlighted
    • Switches between P1 and P2 on restarts
  • MP Sorting issues
    • Ammo creator
    • Elevator ropes
  • Auto Target creation sets Target at 0,0
  • First new frame after level fadeout is of the level’s last image
  • GameState changes not turning off non-persistent Messages
  • Final word in many text boxes runs off the window
  • If an object is being dragged, flicking should flick the dragged object, not the highlighted object
    • If an object is being dragged, the highlighted object should not change
  • Button Lights drawing over elevator
  • 64x64 block at 0, 0 automatically created by level serialization
  • Critter sorting errors/resorting doesn’t work

Pretty grim, huh? Yet, judging by all the crap that's been crossed off lo these many months, I'm getting there. Slowly but surely.