CHANGELOG


All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Todo

  • Everything!
  • Tons more animations... anyone... anyone?
  • Harden the networking code to prevent short disconnects from killing the game.
  • Improve smoothing on clients when bending it.
  • Support joysticks on gamepads.
  • Lots of physics and sprite tuning.
  • Limit joins to 24 players.
  • Allow late joins (keep lobby alive).
  • Return to lobby at end of game.
  • Much more lobby stuff.
  • Stoppage time.
  • Headers.
  • Toggle hands for throw ins.
  • Injuries and injury faking (aka: simulation).
  • Team color selections. Back half is done. (Skin, hair, face, height, gender, etc... way down the road.)
  • Rules-play mode.
  • Auto-direction fine-tuning of passes and tackles; maybe running.
  • Add option for AI goalkeepers (and/or defenders).
  • Consider tearing up field... locally instead of transmitting this as state... thus, each player's view will differ slightly, with the host being the official screenshot.
  • Add artificial latency to the host player to match guest average.
  • Team roster and stats loading (in like...... version 2?).

0.3.1 - 2021-12-04

Added

  • Better handling of repeated lobby joins and exits.
  • Reconnection is working for one use case. I currently do not know how to reliably simulate various connection issues. Until then... this will be a hard task.

0.3.0 - 2021-11-18

Rewrite from Phaser to Godot

  • As to the game, this rewrite doesn't bring much in the way of new features. But, just because, I did add a few. Godot also helped me break many things. I eventually worked around most of those, but not all.
  • I upped the version to 0.3.0 mostly because of the rewrite. Not features. Features, however, should start coming quicker now that this big lift is done.

Added

  • Sniper Mode! In this mode -- which defaults to "on" because, well, what did you think "send it" meant? -- when you "send it," the ball essentially becomes a bullet and knocks down anyone in its way. It will go through them as well (except for goalkeepers -- it should bounce off the goalkeeper while knocking them down [when I get around to making goalkeepers]).
  • Gamepads are now supported (as well as browsers can support them).
  • Better disconnect handling and notification... maybe.
  • Some super-secret surprise I'll let you discover.

Changed

  • Much nicer menus (with back buttons even!). "Thanks, Godot, you kicked Unity's butt on this front!"
  • Godot's scripting performance is also somehow really bad compared to JavaScript, so palettizing the sprites takes forever and a day now... so I had to put up a progress bar for it. You would think that after export to JS and Wasm, this would catch up with JS but... whatever. I think it is something about Godot's dictionaries. I should try dumping them for more arrays.
  • Fewer characters allowed for player names due to using a raster font atlas instead of TTFs. Latin extensions for all of Europe should be included. A few other interesting characters included. I may try to add Hangul and the kana next. We'll see.
  • 22 players max changed to 24 max (just because).
  • Minor art tweaks.

Fixed

  • Certain characters in the name field and/or certain names were bombing connections.
  • Something about tackling. I forget what exactly. It was a long haul.

Broke

  • I just noticed (because it only happens on itch.io, not locally) the keyboard doesn't work in full-screen mode UNTIL YOU SCROLL THE MOUSE. Very weird, Godot. Very weird.
  • The game window steals all the browser keys, failing to pass them through (and this Godot post was entirely unhelpful regarding that). This makes sense given how the engine works... but the workaround, if any, should be mentioned somewhere.

0.2.2 - 2021-01-03

Added

  • Tackles! ... with foul calls and cards! I created tackle art but not tripped art yet. Thus, tripped currently uses tackle art. Very rough guesses on the foul and card odds right now. The internal logic of what gets called when is too complicated to care to try to explain here.
  • Can kick ball if within 1m (center to center), even if not the dribbler.
  • Ball resets to center field with Alt+0.

Changed

  • Aftertouch time changed from 1/2 to 3/4 sec. Rate of change in bend adjusted to match this.
  • Initial bend value increased.

Fixed

  • Player sprites on guest browsers could face other directions while kick button is depressed, and during aftertouch.
  • Circle-on-circle-collision velocity randomness fixed by dumbing the physics down, for now. Weird engine issue with the masses I was using.
  • Play SFX on guest browsers whether late or not.

0.2.1 - 2020-12-14

Changed

  • Direction code redux with improved sensitivity to diagonals.
  • Run and sprint are now 20% faster to move a bit beyond sim and into arcade (original plan).
  • Increased sprint time from 3 seconds to 4 (2 while dribbling).
  • Minor menu changes. Can't start a game until at least one player chooses a team (yeah, bummer eh?, I thought a camera on a lonely soccer ball was pretty zen -- especially with several players watching).

Fixed

  • Kicking direction from standing always works correctly now. Why are the dumbest mistakes always the hardest to find?
  • Prevent arrow key repeats from scrolling the page when not fullscreen.
  • Start with sprite 0 instead of 1 from standing.

0.2.0 - 2020-12-06

Added

  • Can now bend it! Left/right/up/down. I tried a different direction than first anticipated (and diverged a bit from Sensible Soccer). Instead of using aftertouch to set one of nine kicks at some moment during or after the kick (or however they do it), I give you 1/2 second after the kick for "steering" the direction of the bend to whatever degree you want. The result can look a bit funny but, well, it's a game with simplified controls. WARNING: I may change this.
  • Sprint bar turns red when low.

Fixed

  • Screen edge ball tracker positions correctly when player not in center of camera due to field extents.

0.1.2 - 2020-12-03

Fixed

  • Spectator player mode now working again if no choice was made.
  • Can no longer steal host player's name.

0.1.1 - 2020-11-30

Added

  • Proper resizing to full-screen mode. After wrestling for, like, twenty-ish too many hours with the resize features of the game engine and the full-screen feature of itch.io, I think I finally found harmony between the two. No thanks to the lack of any documented best practices for either. I blazed my own trail and we'll see if I got it right. In the end, however, I totally overthought it and it was as simple as window.inner*. I expected that to be the answer for full screen, but not sub screen. I should have just started with basic trial-and-error testing. Ugh. Still, it was a bug in the latest builds of the game engine that slowed me down most.

Changed

  • Some minor UI and palette tweaks.

0.1.0 - 2020-11-26

Added

  • Invented new prediction/smoothing algorithm with decent smoothing without sacrificing latency.
  • Basic kicking and dribbling.
  • Ball tracker on screen edge.
  • Goal colliders with scoring display, and clock.
  • Diagonal standing in spite of sloppy keyboard key releases.
  • Improved ball handling... with losing ball on sharp turns.
  • Sprint meter.
  • Palette swapping for customizable team colors (need a UI for this still).
  • Bird Game with terribly minimal art.
  • Simple kicking game working for free-play mode only.

Changed

  • Expanded lobby from 8 to 24 players.
  • New placeholder art. (Sigh, this takes a ton of time... and I'm only somewhat good at it.)

0.0.1 - 2020-09-28

  • First public release of what I could build during the 48-hour New Mexico Game Jam 2020.
  • Basic lobby code working for multiple players (with P2P connections made through a free online database).
  • Signaling code working for controller input and player and ball states.
  • Sprite animation foundation built for multiple character sprites even though I have only a free spritesheet from Kenny.nl plugged in at the moment.
  • Only one game mechanic built on top of those basics: Sprinting for a few seconds and sprinting recharge.