Giter VIP home page Giter VIP logo

rx_launcher's People

Contributors

craige1 avatar jajames avatar schmitzenbergh avatar sevans045 avatar sonnyx avatar zloveless avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rx_launcher's Issues

Bug: Usernames cannot contain spaces

Reproduction steps:

  1. Input a name into the launcher that contains spaces
  2. Launch game
  3. Observe your player's name

Expected behavior: Entire input username should be set as player name
Actual behavior: First word of username is set as player name

Banner Images should adhere to both IP Address and Port

Currently it seems that when a Banner Image is added to the Launcher, any server that the IP Address is hosting gets that banner.

Example:
Click on the AGN Server, see the banner
Click on the CT UK Test Server, see that the banner is the same but should not be.

Investigate Download Performance

Benchmark launcher download performance in variety of environments and compare to a baseline download speed derived from downloading a large file.

All download measurements should be performed over a local network connection to ensure consistency between tests.

Tests:

  • Measure time to download all files onto HDD
  • Measure time to download all files onto SSD
  • Measure time to download all files onto HDD with simulated network latency of 500ms
  • Measure time to download all files onto SSD with simulated network latency of 500ms
  • Measure time to download a large baseline file

Calculate the average network speed of all aforementioned tests, and analyze for potential issues.

Concurrent Downloads

As a user, I want to be able to download Renegade X patch data from multiple sources/mirrors concurrently, so that I can download from multiple sources simultaneously and not be restricted to the bandwidth available by a single mirror.

Acceptance Criteria:

  • As mirrors are added to the mirror queue, pop off mirrors into threads until the desired number of mirrors have been reached
  • Current server selection algorithm should remain otherwise untouched
  • Users should be downloading from up to 4 sources simultaneously

Player List

As a player, I want to be able to see who is in a server so that I can see if anybody I know is in-game.

Acceptance Criteria:

  • Player list is part of server information box at the bottom right
  • Lists players in two columns, GDI and Nod
  • Does not display spectators
  • Retrieves only when a server is selected, and refreshes as appropriate
  • All bots are prefixed with a brown [B]
  • All bots are sorted to the end of player list

Note: This requires some changes to the server list output to expose player names, TeamNum, and bot/human status.

Add update game, and query support to launcher commandline.

As a server owner, I want to be able to automatically update the game from the command line so that I can write better (potentially automated) tools to maintain my server.

Acceptance Criteria:

  • --UpdateGame without any additional parameters results in an update
  • --UpdateGame can still be used to update from a specific mirror
  • Process return result should reflect patch success (0) or failure (1)

Torrent Client

As a user, I want to be able to download Renegade X patch data using a torrent client, so that I can download from multiple sources simultaneously and not be restricted to the bandwidth available by a single mirror.

As a developer, I want to be able to offload cost of data distribution by partially distributing that responsibility to end users in conjunction with the HTTP mirrors.

Acceptance Criteria:

  • Add TorrentPatchSource class and implementation
  • Mirrors should be able to fully support torrent downloads with no/minimal modification
  • Retain WebPatchSource as failover, for instances where client is unable to use P2P protocols
  • Add Seed Torrent option
  • Seed Torrent option should be disabled by default
  • Clients should always seed the torrent when in the patching process
  • Source displayed on UI should be "Peer-to-Peer" when using TorrentPatchSource

Download Limit - suggestion for feature

A download limiter would be great addition to the launcher.
At the moment once it is updating it will try to reach maximum down rate - which is an issue because it interrupt other
programs that require the internet bandwidth as well, such as working with RDP , or playing games.

Add changelog and dev news

As a user, I want to see patch notes and announcements from the Renegade X website

TODO: Acceptance criteria, design

Add log files rotation or cleanup

The log files can get quite large if a user is downloading, updating etc.

Because of this the application should automatically keep only the last six log files and should clean the rest up at application startup.

RxLogger should do this.

Disk space check

The launcher needs to check if there is enough disk space, before downloading the game files (first install or update).

Instructions:

  • Download 'instructions.json'
  • Check how many bytes needs to be downloaded
  • Check how many disk space is available.
  • Optional: Give feedback to user

Change 'patch_urls' from array of strings (URLs) to array of "mirror" objects

As a user, I want to be able to read a human readable string instead of a URL to denote which mirror I am downloading from, because it would be easier to read may include more useful information such as where the server is located.

Change patch_urls from array of strings (URLs) to array of "mirror" objects, each with a URL and a human readable string denoting the name of the mirror.

Before example:

        "patch_urls": [
            "http://rxp-atl.cncirc.net/"
        ],

After example:

        "patch_urls": [
            {
                "name": "CNCIRC (Chicago, USA)",
                "url": "http://rxp-atl.cncirc.net/"
            }
        ],

and then for "source" on the update view, display name instead of url.

New map preview vids

We are missing the preview video of the new map: Daybreak.
Does someone know if this task is already been assigned to someone?

Acceptance Criteria:

  • Name: CNC-Daybreak
  • Format: MP4
  • Length: ~10 seconds
  • Quality: 320x180
  • FPS: 30

Dependencies

As a developer, I want to have a dynamic list of dependencies so that I can control dependencies in a generic way.

As a user, I want to be able to reinstall dependencies, in case there is an error.

Acceptance Criteria:

  • "Reinstall Dependencies" button in Settings menu
  • UE3Redist.exe be removed as hard-coded value
  • Add "Dependencies" array of objects in version JSON file under "game", including UE3Redist.exe
  • Each dependency object includes: Name, URL (Relative)

Download speed incorrect when resuming downloads

When resuming a download, files which were already downloaded are accounted for as part of the download phase.

Reproduction steps:

  1. Start installing the game
  2. Cancel game installation
  3. Restart the launcher
  4. Start installing the game

Expected behavior: Already downloaded files do not count towards download progress and total
Actual behavior: Already downloaded files count towards download progress and total, causing incorrect download speed calculations.

launcher crash due to unhandled exception during install.

From the event log
Application: Renegade X Launcher.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Exception
at RXPatchLib.DirectoryPatcher+<>c__DisplayClass13_1+<b__3>d.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()

Add a very minimalistic chat client to the launcher

As a user, I want to be able to communicate with other users directly from the launcher to better organise games and meet with friends.

The chat window must simply contain two boxes, one which is for the chat itself and the other is for the user to be able to speak.

The user should also be able to see how many other people are 'online' within the chat room.

This should use IRC.

Instant Launch

As a player, I would like to be able to immediately launch the game client when I startup the Renegade X launcher.

Acceptance Criteria:

  • Functionality can be toggled via "Instant Launch" launcher setting
  • Functionality is disabled by default
  • Command line option to forcefully disable this option

Add README.md

Add a README.md file that explains:

How to setup build environment:

  • WiX Toolset (required to build installer)
  • Ubuntu on Windows (required for publish.ps1

Explain general architecture:

  • Launcher (WPF, class interactions, etc)
  • Updater (RXPatchLib)
  • Self Updater (SelfUpdateExecutor, SelfUpdater.cs)
  • Logging (RxLogger)

Game patch building

  • Pull any useful information out of /doc/rxpatch.docx
  • Explain how to build a patch
  • Explain version file scheme and patch publishing

Launcher patch building

  • package.ps1
  • publish.ps1
  • Explain version file scheme and patch publishing

Kill background/ghost processes before patching

Occasionally, a user may have multiple instances of the launcher open or have ghost processes in the background while trying to patch. This causes errors because some files (such as launcher videos) are in use and therefore unable to patch.

We should kill all duplicate processes in the same directory before proceeding to patch Renegade X. Launchers in other directories as part of other Renegade X installations should remain unaffected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.