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. This app is currently under development, and input is welcome.
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. Download Atom Shell: Windows: atom-shell-v0.16.1-win32-ia32.zip Linux: atom-shell-v0.16.1-linux-ia32.zip or atom-shell-v0.16.1-linux-x64.zip Mac: atom-shell-v0.16.1-darwin-x64.zip Extract Atom Shell to a local folder on your computer Download the zip archive of the pahub repository: pahub-master.zip 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 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. Download the following zip archives: Content Hub Plugin Store Mod Store Community Log Viewer Settings 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 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)
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.
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.
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).
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.
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>" } } ] }
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.
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 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.
Quick update, brought to you by: HTML 5 JQuery The <progress> element The "progress" event listener Knockout Collectively, they rule. 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).
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!
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:
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 . 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 ) 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.