Snail racing in Steam VPK
image

Report on progress of steam-vpk, and its backend steam-vpk-server.

Today I’ve pushed some new commits to steam-vpk and to steam-vpk-server. This is one step towards implementing the Import from Workshop feature. Specifically, steam-vpk-server can now create metainfo files and index entry for an add-on item.

Of course, the journey will be long. Next will be to implement the AddonStateChanged signal. It’s unfortunate that progress has been slow.

Context

Since this is informally the first blog post of SteamVPK’s development, here’s a brief history.

  • Project started in April.
  • Around the start of August, the MVP version, unofficially known as version 0.6, was released. This version runs on GNOME 43. It’s called MVP because it’s functional: you can download add-ons from Workshop and install it to the game. Lots of bugs, doesn’t have good UX, but try a bit and it works even to this day.

    Steam VPK 0.6 on GNOME 45, UI has not been adapted to new GNOME release.

    Steam VPK 0.6 on GNOME 45, UI has not been adapted to new GNOME release.

  • A week later I embarked on version 0.7. Nicknamed Portal, this versions separates the project into the frontend steam-vpk and the backend steam-vpk-server as it is known today.
  • However, a side effect of this is that the back-end is now being reworked. Not only had the backend separation broken it, but the system design was also inherently flawed and my DX was horrible.
  • That journey to version 0.7 continues to this day. Version 0.7 will feature new and improved front-end design, enhanced back-end performance, and just plain better system layout and code organization.

    Steam VPK 0.7 on GNOME 45.

    Steam VPK 0.7 on GNOME 45.

The Situation

Recently, a rework of the add-on store component removed the AddonsChanged signal in favour of AddonsStateChanged. AddonsChanged was not descriptive enough to be used in the front-end.

Both AddonsChanged and AddonsStateChanged are emitted when store membership changes. However, AddonsStateChanged will detail content changes as well. Its parameters are the id of changed add-on, and a vardict of changed props (prop name, new prop value).

Reflections

I made a bundled commit to steam-vpk-server. It’s a bad habit when I modify files too much without proper work categorization, leading to messy changes that cannot be split because they depend so much on each other.

Have mixed feelings about removing AddonsChanged, usually a deprecation flag would be enough. Now, the add-on lists in the front-end no longer works. This is supposedly a hard way of forcing changes.

Post-script

The tag 0.6 is new, literally today. This is because the MVP has been broken for a while for using a revoked Steam API token, cannot download add-ons from Workshop. I’ve recently (and rather reluctantly) traveled back in time to fix the issue and now it works again.

Check out Steam VPK here! Follow this blogging site for more updates in the future!

Cheers. :-)



A weblog of Le Nguyen Gia Bao.
Powered by Jekyll. Forked and heavily modified from jekyll-theme-WuK.