[WIP] PA Community Hub

Discussion in 'Work-In-Progress Mods' started by Raevn, August 25, 2014.

  1. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Planetary Annihilation Community Hub

    The PA Community Hub is intended to be the PA App that brings together all aspects of the community - Players, Modders, Clans, Tournaments and more! The hub is an atom-shell based application (similar to PAMM, so its compatible with Linux & Mac) that is extensible via plugins to provide functionality for any type of player - Players who prefer single player could manage their mods, while the more competitive players can get involved in tournaments, ladders and clans, and all players can easily join in a global chat while waiting for a game or browsing the forums.

    upload_2015-1-11_22-51-35.png

    This app is currently under development, and input is welcome.
    Last edited: January 11, 2015
  2. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Installation
    For those adventurous people who want to see/test/develop for the PA Hub before it is completed, here's how you can get it. The version presented here is an earlier development version, but is the latest publicly available. The below post lists bugfixes & features that have been added since this version.

    Install PA Hub
    This will install the basic client.
    1. Download Atom Shell:
    2. Extract Atom Shell to a local folder on your computer
    3. Download the zip archive of the pahub repository: pahub-master.zip
    4. Extract the app folder (/pahub-master/app) from within the archive, into the resources folder of Atom Shell.
      • Windows & Linux: the resources folder will be in the root folder of atom shell.
      • Mac: the resources folder can be found at /Atom.app/Content/Resources
    5. Proceed to install the plugins below.
    Install Plugins
    Additional plugins are required to add functionality to the PA Hub. In future, these can be downloaded from within the client (or will come packaged in the installer), but for now this needs to be done manually.
    1. Download the following zip archives:
    2. Within each of these is a <plugin id>-master folder, extract the folder under this (should be just <plugin id>) into the following folder:
      • Windows: %userprofile%\AppData\Local\Uber Entertainment\Planetary Annihilation\pahub\content\plugin\
      • Linux: $HOME/.local/Uber Entertainment/Planetary Annihilation/pahub/content/plugin
      • Mac: $HOME/Library/Application Support/Uber Entertainment/Planetary Annihilation/pahub/content/plugin
    3. If you have already run PA Hub at least once, then the pahub\content\plugin folder should already exist. If not, just create them first.
    Usage
    To launch PA Hub, just run atom.exe (Windows), atom (Linux) or Atom.app/Contents/MacOS/Atom (Mac)
    Last edited: January 31, 2015
  3. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    To Do/Bugs/Requests
    PA Hub

    • To Do: Formatting/design pass
    • To Do: "Help" tab in about section
    • To Do: Set focus to text box when switch to account tab
    • To Do: Remember login option
    • To Do: Option to specify whether launching PA should log you in automatically if you are logged into PA Hub
    • To Do: Windows Installer
    • To Do: Update linux/Mac installer
    • To Do: Command line parameter handling & API
    • Bug: PA Hub does not resize images from profile pictures after user login
    • Request: Change Streams drop-down to radio buttons.
    • Request: Have option for separate Play buttons for each stream
    • Request: Remember window size
    • Bug: PA install location detection, for steam and various PA exe scenarios.
    • To do: Check for newer builds of PA than what is detected as installed.
    Content Hub
    • To Do: Install content from the command line
    • To Do: Upload functionality
    • Request: Spotlight tab lists to automatically show a given number of items based on window size
    • To Do: better interoperability with PAMM
    • To Do: Add "Clear Filters" button.
    • To Do: Add Enable / Disable selected
    • To Do: Fix up spotlight tab (CSS broken since re-design).
    • To Do: Add news button for content
    • Bug: Refresh only checks for new content; it does not detect changes to existing ones
    Game Plugin
    • To Do: Add your ladder position & details as an additional sub-tab
    Mod Store
    • Bug: Switching between streams does not re-load the built-in mods for that stream
    • To Do: Add standard tags to mods, based on scenes
    Community Hub
    • To Do: IRC Chat Plugin
    • Request: XMPP Chat plugin
    • Request: Auto IRC login
    • To Do: News comments
    • To Do: Single item view
    • To Do: Easier content selection for new news items
    • To Do: News pagination
    • Bug: Link styling
    • Request: Automatic login to forums
    • Request: Make news fixed width
    • Request: Move Chat to it's own section
    • Request: Alerts from chat
    • Bug: Chat & Forum don't resize if the window is resized when the tab isn't active.
    Settings
    • To Do: Add sliders
    • To Do: Add value verification
    Implemented for next Release
    PA Hub

    • UI: Banner Title changed to take up less vertical room, and header reduced
    • UI: Side bar width reduced
    • UI: Section titles now scroll out on hover
    • UI: Added notification & prompt system
    • UI: Added toggle to side bar
    • UI: Download notification now includes current / max downloaded amounts.
    • Bugfix: PA install location detected failed when the most recent log file was a server log
    • API/Framework: Added a task system for queuing and handling of sequential actions
    • API/Framework: Atom Shell updated to v0.21.0
    • Misc: Removed some deprecated code
    Content Hub
    • UI: Redesign of local & online content tabs
      • Content tiles now more closely resemble those in PAMM
      • Filters, Sort & Display merged, and tabs removed
      • Filter area is now permanantly visible (eg., it does not scroll with the page). Can still be collapsed.
    • UI: Download tab removed
    • UI: Enable/Disable, Install, Update & Uninstall and version/date/downloads/prerequisites now appear as an overlay on hover.
    • UI: Prerequisites are now color-coded, green is installed, orange not installed
    • Feature: Will now prompt to install prerequisite content, and if accepted will queue these up for installation also.
    • Feature: All content now supports categories (and the filtering of them)
    • Feature: Filter re-implementation, and additional filters added:
      • Local: Needs Update, Enabled, Disabled
      • Online: Installed, Not Installed, Needs Update, Newly Updated
    • Feature: Additional Display options:
      • Show Icon
    • Feature: Text Search - searches Name, Description and Author fields
    • Bugfix: Various bugfixes for cyclic dependencies
    • Bugfix: Uninstalling a local content item now correctly causes the online item to stop being greyed out
    • UI: Dashes and underscore in tag names are now replaced with spaces
    • UI: Categories are now sorted alphabetically
    • Feature: Added a "Hide Unique Tags" option
    • Bugfix: Removing content now removes categories from the filter list if it was the only content that it applied to.
    • Bugfix: Content without a specified date no longer shows "Undefined".
    • UI: Local Content renamed to Installed Content
    • UI: Install button is now shown as grey when content is already installed
    • UI: Removed Select All / Select None from Online Content tab
    • UI: Renamed "Find Content" to "Online Content"
    • UI: The Install button on online content now reads Update when one is available for the
    • UI: Removed Build information for content
    • UI: Available version is shown for installed content if update is available
    • locally installed version
    Community Hub
    • Bugfix: Forum & Chat changed to <webview> from <iframe>; the forum should now be able to be used to post comments & threads.
    • Bugfix: Spamming enable/disable no longer causes errors.
    Game Plugin
    • Feature: Added Stats tab - shows rank distribution and total players in each rank
    • UI: Re-ordered ranks from Bronze -> Uber.
    • UI: Ladder position shows overall position, rather than position in current rank.
    • Bugfix: Plugin now unloads correctly
    Mod Store
    • Feature: If build field is found, it is added as a dependency
    Map Store
    • Bugfix: Disabling the map store no longer causes mod functionality to fail
    Wishlist & Longer-term
    • Themes / Custom background
    • Plugin - Unit Store for single unit mods. The plugin will use an intermediate mod to collate the selected units together to all multiple additional units at once.
    • Update PA via PA Hub
    • Browse lobbies, queue for matchmaking and host games from within PA Hub.
    Last edited: February 3, 2015
    Ksgrip, dom314, CryFisch and 3 others like this.
  4. Clopse

    Clopse Post Master General

    Messages:
    2,519
    Likes Received:
    2,849
  5. reptarking

    reptarking Post Master General

    Messages:
    1,320
    Likes Received:
    1,577
    #raevn for world leader. This will be the best thing to hit PA and something that will last ages.
    squishypon3 and stuart98 like this.
  6. cwarner7264

    cwarner7264 Moderator Alumni

    Messages:
    4,460
    Likes Received:
    5,390
    Android release pls.
  7. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Need puppies.
  8. cwarner7264

    cwarner7264 Moderator Alumni

    Messages:
    4,460
    Likes Received:
    5,390
    K

    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    [​IMG]
    [​IMG]
    xankar, dom314, reptarking and 2 others like this.
  9. LavaSnake

    LavaSnake Post Master General

    Messages:
    1,620
    Likes Received:
    691
    I'd be VERY interested in working on an Android release. I have a decent amount of experience with Android development and already have access to a Google Play dev account. The only issue is that rare substance we call time. Right now I'm busy getting my main computer back up and running after my hard drive started giving me write errors and I still need to update my other mods...

    Anyway write me down as interested in either helping or leading the effort to port this to Android once the main version is stable enough to count on it not changing much in the near future.
    cwarner7264 likes this.
  10. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    I had a quick look to see if it was easily portable to android: https://github.com/atom/atom-shell/issues/562
    Doesn't seem to be the case :( Strictly speaking though, most of the features that aren't just HTML wouldn't be applicable, so it would just be chat & few other things that would be useful - these might be able to be ported as a more static client.

    Edit: Just finished a refactor so that the UI is now entirely in Knockout. Makes things much easier (and more responsive), and gives free callback/subscription ability, so I won't need to add that in anymore (unless people feel a need for a more formal API than using the native KO functionality).
    Last edited: August 26, 2014
  11. LavaSnake

    LavaSnake Post Master General

    Messages:
    1,620
    Likes Received:
    691
    I was thinking more along the lines of building a native app from the ground up that supported the core features (mainly chat and UI) combined with a browser frame to view mods and news. That's just a rough idea though.
    Raevn and squishypon3 like this.
  12. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Now that the groundwork is out of the way, it's time to talk about Content & Content stores (store in the storage sense, I'm not looking to add payment systems here).

    Content Stores
    The idea of content stores is to separate different types of content, and be able to define a number of different characteristics and behaviours about them, including:
    • Required attributes specific to the content type
    • Behaviour & actions on enable/disable of the content type
    • Location of database online repository of content to download
    • Location of local files
    Content Item
    Content items are the individual pieces of content you download & install from content stores. There are some basic rules to content items; after which additional information can be added as defined by the content store.

    The basic common elements are:
    • Each content item has it's own folder in the local directory defined by the content store
    • Within the folder is a file called "content-info.json", which stores the metadata for that content.
    Common metadata:
    This list is subject to change. Additional parameters can be added for use by content stores.
    Code:
    {
        "content_id": "<Unique id of the content>",
        "content_store": "<ID of content store>",
        "display_name": "<Name of content item>",
        "description": "<Description of content item>",
        "author": "<Author username",
        "version": "#.#.#",
        "date": "YYYY/MM/DD",
        "loc_data": [
            {
                "locale_id": "en-us",
                "data": {
                    "<content_id>_display_name":"<value>",
                    "<description>_description":"<value>",
                    "<additional_loc_keys>":"<value>"
                }
            }
        ]
    }
    Last edited: August 28, 2014
    thetrophysystem and proeleert like this.
  13. cola_colin

    cola_colin Moderator Alumni

    Messages:
    12,074
    Likes Received:
    16,221
    I am really interested to make a PA Stats/Matchmaking plugin for this once that is possible :)
    Raevn and proeleert like this.
  14. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    upload_2014-9-4_9-34-46.png

    Lots of back-end work to get content management up and running. Coming along nicely.

    And yes, the Content Hub, which manages the loading of plugins, is itself a plugin. Ninja.
  15. thetrophysystem

    thetrophysystem Post Master General

    Messages:
    7,050
    Likes Received:
    2,874
    You look really far along already! Can't believe it is already a physical thing.
  16. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Latest progress
    • Implemented internal logging, plus a log plugin to view it from within pahub. Wanted to do this before working on meatier things like downloading, for obvious reasons :p
      [​IMG]
      Note: I plan on having a "location" parameter when adding sections; this would be side (current), top and bottom. Log & Settings will be at the top.
    • Resource loading functionality. Asynch downloading, but loaded (and executed, in the case of JS files) one at a time in the order they are queued.
    • Added plugin API
    • Added log API
    • Lots more under-the-hood work, error checking and validations added to existing functions.
  17. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Quick update, brought to you by:
    • HTML 5
    • JQuery
    • The <progress> element
    • The "progress" event listener
    • Knockout
    Collectively, they rule.

    upload_2014-9-10_22-24-15.png

    Working download progress bars! (and they update very smoothly). If it can't determine content-length from the server, it gracefully falls back (eg., ##.##MB / Unknown).
  18. thetrophysystem

    thetrophysystem Post Master General

    Messages:
    7,050
    Likes Received:
    2,874
    I don't know how you find the time for this. I can't even feel urgent about this in relation to release which snuck up by suprise, because this is literally the best progress I could have hoped for and unbeatable quality detail.

    When it IS public, it will kick so much arse in the field of serving the community and the individuals that do wish to try to stay with the game and can search out the proper community tools to do so.

    Blessed be those who use this to keep with PA, and blessed be you for making it!
    Fr33Lancer likes this.
  19. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    Still very much plugging away. A lot of behind the scenes work that I can't really show, so here's something you can see:

    upload_2014-9-22_17-0-52.png
    Fr33Lancer and cola_colin like this.
  20. Raevn

    Raevn Moderator Alumni

    Messages:
    4,226
    Likes Received:
    4,323
    News functionality

    The news functionality for PAHub is almost complete. This was one of the weakest areas of PAMM - my implementation there was only really meant as a temporary one, but it didn't end up that way :oops:. But it is important for visibility and for the community that the news is as accessible (and active) as possible.

    In PAHub, news is database driven (and retrieved as JSON rather than being a static HTML file), and anyone can submit a news item. It's also included in the API, so plugins can submit news items too. One idea I plan on implementing is having an option to submit a news item alongside the content upload functionality; eg., you can submit a news item at the same time as you upload a mod.

    To ensure news quality, submitted news item will not be immediately visible to the public. However, on submission an email is sent (initially just to myself, but other moderators can be added) with a link to approve the news item, making it visible to all.

    Styling is still under consideration, but it'll do for now. I plan on adding pagination, which should be easy thanks to knockout (Have I mentioned I like knockout? Well, I do :))
    upload_2014-9-23_14-4-44.png

    Other work done:
    • Faster start up, and should no longer block in some cases while loading resources
    • Additional information & functionality regarding downloads. Here you can see exactly what is currently being downloaded while a download is in progress.
      upload_2014-9-23_14-9-41.png

Share This Page