Git Product home page Git Product logo

beyond-all-reason's Introduction

Beyond-All-Reason

Discord

Open source RTS game built on top of the Recoil RTS Engine

Where to download

https://www.beyondallreason.info/download

How to play

https://www.beyondallreason.info/guides

Development Quick Start

Beyond All Reason (BAR), consists of 2 primary components, the lobby (Chobby - https://github.com/beyond-all-reason/BYAR-Chobby) and the game code itself (this repository).

The game runs on top of the Recoil engine https://github.com/beyond-all-reason/spring.

In order to develop the game (this repository) you first need a working install of the lobby/launcher. There are 2 ways to do this:

  1. Download the full BAR application from the website and run it. This is probably what you will have done if you have previously installed and played the game.

  2. OR if you want to develop the lobby client, follow the guide in the Chobby README. First download a release of Chobby and then launch Chobby, this will automatically download and install the engine and other dependencies.

Once you have a working install of BAR you need a local development copy of the game code to work with. This code will live in the BAR install directory.

  1. To find the BAR install directory simply open the launcher (not full game) and click the "Open install directory" button. This is one of the 3 buttons (Toggle log and Upload log are the other 2). For Windows installs this might be your user's AppData/Local/Programs/Beyond-All-Reason/data directory.

  2. In the BAR install directory create the empty file devmode.txt. E.g: AppData/Local/Programs/Beyond-All-Reason/data/devmode.txt

  3. In the BAR install directory in the data folder in the games sub-directory (create games if it doesn't exist) clone the code for this repository into a directory with a name ending in .sdd. For example:

git clone https://github.com/beyond-all-reason/Beyond-All-Reason.git BAR.sdd

Ensure that you have the correct path by looking for the file Beyond-All-Reason/data/games/BAR.sdd/modinfo.lua

  1. Now you have the game code launch the full game from the launcher as normal. Then go to Settings > Developer > Singleplayer and select Beyond All Reason Dev.

  2. Now you can launch a match normally through the game UI. This match will use the dev copy of the LUA code which is in BAR-install-directory/data/games/BAR.sdd.

  3. If developing Chobby also clone the code into the games directory. Follow the guide in the Chobby README.

More on the .sdd directory to run raw LUA and the structure expected by Spring Engine is documented here.

beyond-all-reason's People

Contributors

avaristimo avatar badosu avatar beherith avatar born2crawl avatar damgam avatar deadlypants253 avatar drivver44 avatar ezahiel avatar forbodingangel avatar fruehling76 avatar fx-doo avatar gyanbasic avatar icexuick avatar jazcash avatar kyleanthonyshepherd avatar lhog avatar pandaro avatar ptaqq avatar robertthepie avatar ruwetuin avatar salinecitrine avatar sprunk avatar teifion avatar thehobojoe avatar thesilverhornet avatar tomjn avatar triton13 avatar watchthefort avatar xehrath avatar zecrus2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beyond-all-reason's Issues

BAR Chobby

Floris has done some work in the past on making Chobby work with BAR

Distribute a Flatpak

It makes it easier to get the game on any distribution and keep it up-to-date.

Fido's are broken

when there is something on a hill, they stay too far with fight command, and wont shoot or move.
Not sure it's only for fidos...

The AF Lobby Plan

The broad stroaks:

  • Build a heavily streamlined lobby
  • React, Redux, React Router for the UI
  • SCSS for CSS
    • Less.js is a bit old now
    • PostCSS seems new and muddles JS and CSS, it might be cool to be able to use Tailwind, but it's a higher bar to entry, I want the project to be maintainable and SCSS is straight forward to learn
    • I like Bulma, it has a nice grid system, some basic components for things like buttons and typography, doesn't overextend itself
  • Use Neutralino JS to host the application
    • electron bundles chromium giving it a large footprint in memory and file size. I have misgivings about chromiums performance
    • NW.js seems better than electron but not as lightweight as Neutralino
    • Neutralino has a simple API and smaller footprint
    • There was another option that was very lightweight but provided just a webview, it would need to have been forked to provide an API to launch spring or read files
  • Completely abandon the existing server infrastructure
    • Battles will be retrieved from a REST API endpoint, no login necessary
    • Debuggable using standard REST API tooling, such as POSTMAN
    • Players will make changes to the battle using the same endpoint and POST requests
    • OAuth 2 based authentication
    • No channels DMs or chat, players can use Discord servers, Slack, Skype, etc
    • Player identity to be managed via the REST API and a federated login, preferably Discord
      • I'm in favour of using WP to manage login and REST API, with no WP frontend or WP interface for users. Headless, purely internal
      • any $1 webhost can be setup to act as a game server in minutes, multisites can be used to partition games/battles, object caching with Redis should make things stupid fast with the right data structure
      • a lot of it can be partitioned into separate projects, Discord login is a highly desirable plugin that others would want who have nothing to do with BAR or Spring, free testers and maintainers ftw
    • Autohosts would just be instances of dedicated spring that are told "go to /wp-json/lobby/v1/bar/1234 and start an instance, then POST to that endpoint to say you've started, let us know at the end who won/lost.
      • A heroku dynamo could be spun up for each battle using the Heroku API and a github repo to auto-scale.
      • Alternatively a docker container that takes an environment variable containing the battle ID and a shared secret for API auth
      • The command should be runnable via npx, e.g. npx spring-start --engine=".." --map=".." --game="..." etc should download the relevant engine if it's not already, then start up a headless spring. Anybody with node could spin it up with ease
      • Autohosts won't manage the battle itself, they're dumb launchers for the spring executable
      • No voting controls
      • The first player in a battle is nominated the host. They can hand the host to another player. If they leave, the first person in the list gets passed the host. They don't necessarily have to literally host the game on their computer. Look at the way Zoom has a person who controls the meeting called the Host, but that person is just the admin of the zoom meeting, the hosting is done by servers elsewhere
    • PRDownloader etc, I'd really like it if that part of spring-launcher was hived off into its own package so that mutual maintenance could happen. I don't fancy rebuilding basic stuff like this from scratch, better to share and improve alike. There should be a lot of small utility packages at the end of this, nice building blocks everybody can use, be they javascript or typescript
  • Ranks are going in the bin. The current system of arbitrary medal tiers for time ingame is silly. Supernoob got a stupid high rank without playing a single game by spectating. Just bin ranks, and have none.
    • When the time is right to do it properly, introduce a ranked ladder for competitive play, define how long a season lasts, etc
  • Nuke flags. When the community is large enough, just ask players if they want the american server or the european server, otherwise they're super unreliable, expose personal information, and add unnecessary information to the UI
  • Singleplayer is more important than multiplayer, multiplayer users are just deafeningly loud in comparison
  • For maintenance and Documentation
    • markdown document in each folder for documentation
    • I want to use jest for testing, in particular snapshots
    • A fetch polyfill for API requests
    • I like the idea of using https://sentry.io/ for automated bug reporting

I've identified these projects will be needed:

  • Discord WP plugin
  • Battle API WP plugin
  • Lobby repo
  • autohost repo ( also on https://www.npmjs.com/ )
  • PRDownloader library repo ( also on https://www.npmjs.com/ )
  • unitsync equivalent library repo ( also on https://www.npmjs.com/ )
    • for this it shouldn't assume unitsync and just provide an interface for maps and games with options, then a default implementation that does spring. I expect other game engines would find this helpful, and that would help enormously with maintenance

Copy radar coverage effect from NOTA

Don nott know where they got it from or if it is an original, but it helps to see radar coverage in sight coverage mode very nicely.

Specially since you do not see the radar shadows cast by terrain otherwise

Openal is missing from appimage

Hey, I'm using the appimage on Linux, but the openal library is missing from the image.

Is there any script that builds the appimage? I would like to contribute the required changes to add the missing library.

Co-operation through npm packages

I think the most realistic approach to any kind of cooperation between the various JS lobbies and launchers is to make npm packages that do most of the hard stuff.

I've written a list of what I plan to produce from spring-launcher.

Luckily I've already written most of this functionality with spring-launcher, it "just" needs to be made into packages other people could use.

I hope someone will write a package for the communication with various lobby servers, (most importantly Uber, and if really bored a ZK one as well and whatever else new comes along).

Would like to hear what everyone has in mind regarding this. I will only be creating these packages if I see there's strong desire for such a thing and if I think this will be mutually beneficial.

Transparant Smoke

I know it's an engine thing, but i would really like to see transparant smoke-shadows, if smoke particle also get more transparent.

Display of potential resource consumption

Due to passive builders and metal converters behaving passively, you have no idea how much you "could" consume vs what is actually being consumed, while build processes are idling in the background.

Lobby Status Quo Research

Before running into choosing an implementation, I think we should first describe the current situation and what we like or dislike about it - only then can work be sensibly directed.

I would like to split this into two parts: User Experience and Technical Concerns, as knowing where the issue is will be critical in determining tech stacks and problem areas.
So without further ado:

User Experience

Chobby + spring-launcher:

  • TODO: Write key pros & cons

SpringLobby:

  • TODO: Write key pros & cons

uberserver & other existing infra stuff:

  • TODO: Write key pros & cons

Technical Concerns

Chobby + spring-launcher:

  • TODO: Write key pros & cons

SpringLobby:

  • TODO: Write key pros & cons

uberserver & other existing infra stuff:

  • TODO: Write key pros & cons

Ready button for 1v1s and FFA games pre-game

Let's add a Ready button as well when startpostype=fixed or random.

It is annoying that the game loads and starts immediately, sometimes you get bored with looking at the loading screen and want to do other stuff, but it forces you to pay attention as the game may start any time. Another big issue connected to it is that you are not able to chose a faction in-game, so ppl using current lobby will always default to ARM, since no lobby-side faction picker either.

performance optimization aircrafts

lets make fighters aa online. hundreds of fighters shooting missiles to the ground doing relatively low damage each can be quite performance heavy for a relatively small gain. sure hundred fighters do some damage in the end but the price for this is high and imo unnecessary also in term of consisteny when thinking seperating task for unit. fighter is already very powerful in his role and and multirole units should be generally less effective. its only for lazyness keeping ag missiles for fighters but its not even fitting the rest of the game mechanics

as a return for the air-ground balance i would increase hp of gunships a bit for not making everything even more ground dominant. they are still rarely used in general and giving them a small incentive for loosing fighter ground attack ability (having the whole picture in mind) would be probably a plus for the whole game mechanics

cheers, Flaka (if anyone wonders who fruehling76 is)

Mouse can't move camera

Hi,

I'm on byar-14688 and I've got a problem with the mouse cam control:
The mouse can't move the camera, the option is not enabled by default on the config. When I enabled it and restart a session (not the full game), the camera work.
But when I do a full restart of the game, the config is overriden and the camera is lock again.

Maybe byar-chobby rewrite the config file with default value everytime it's launch?

Enable tanks to drive backwards on skrimishing

This would make skirmishing a lot richer and realistic. At the same time it would have bigger impact on gameplay for which I would like to have your tentative approval first. @Ruwetuin @icexuick (sorry if I'm missing anyone else on the sign-off list).

I managed to get it working on the stumpy already and know my way around.

  • Get approval
  • Make listing of all tanks in question

barbarian ai - too late on t2

some feedback based on yesterdays games:

AI too late on t2
ai does very good on t1 but suck from the moment it has to go t2. there it gets surpassed by human. only 2 of 5 ai ver going to t2 in a 40min match on delta siege dry. first one around min 23 when human tries to go around min 10-12 there. they already had all over 20 metal income and lots of metal in storage.

solution:

  • lower the trigger for t2 or spread it wider

i wonder also if it is possible in multiplayer games to let ai play sometimes with kind of teching ai, which maybe reclaim com to level up very early and then force economy and build t2 cons for other players which they use them too build some t2 mexes before they level up. comleting that task it should force economy again before going early to t3

Agreement on backend flows and features

Since there is a lot of discussion pertaining new lobbies it might be of use to agree on what the flow and data of "an ideal" backend would look like.

This way lobbies can keep it under consideration regardless of whether they are aiming to support uberserver first or not.

I propose we meet in voice channel one day to talk and create a rough outline we can then hone in on.

Autumn Launcher

Located at GitHub Repository, supersedes #42

The idea behind the whole thing was to create a launcher that offers an interface for mutators for any mod, while standing on the currently existing infrastructure. It has to be;

  • Compatible with Uberserver (for better of for worse, it makes no sense to change everything at once, and the main spring lobby server is running Uberserver so...)
  • Do not marry the Uberserver in the process, We want to switch that to something cleaner and more performant so it scales to what you would get if you publish for example BAR on Steam.
  • Easy to develop and maintain (low entry to contribution barrier)
  • Fast to develop and maintain.
  • Cross platform, with Linux amongst the first class citizens...
  • Reasonably performant (snappy) and not to big in executable size. This point is on purpose at the bottom of this list.

The tooling we went for;

  • Electron
  • Typescript (makes Javascript orders of magnitude more bearable)
  • No frameworking, just plain vanilla ECMA6 and NodeJs in the back

Progress so far;

  • Login, Registration and Confirmation
  • Player Listing (IRC)
  • Battle Listing

Missing;

  • Map visualization and handling
  • pr-downloader wrapping
  • The settings story (not really clear what makes sense here, the experience with SpringLobby is not very good)
  • Game room functionality
  • Game start

Help needed;

  • UI design needs a lot of improvement. Help wanted/needed
  • UX needs ideas to further project itself.

Post-parity TODO's;

  • Torrent support for download infrastructure (pr-download for seeding, torrent for offloading)
  • New backed support for a new lobby server

Radar coverage is very difficult to see

There is practically no visibility of radar coverage (LOS difference - if any - is insignificant). Radar is very important in BAR and it's going to confuse newbie players if such information is hidden

3d Model Bugs

  • cordoom: only one light laser (red) shots from right barrel

404 Not Found on First Update

Hi,

I want to try this game, but I can't install it on my W10. I have not try on Linux.

The updater say: Request Failed: 404

Here is the link to the complete log.
http://logs.springrts.com/logfiles/1251/

Extracted part for the error 404

[error] engine/104.0.1-1553-gd3c0012 maintenance: Failed to download resource: Request Failed.
Status Code: 404

Ps: I've disable my personal DNS before opening this ticket.

Updates are broken on Enterprise Linux distros due to CA cert paths

The in-game updater will fail on Fedora 33 with error on initial run. [Error] ../../tools/pr-downloader/src/Downloader/Http/HttpDownloader.cpp:487:processMessages():CURL error(1:77): Problem with the SSL CA cert (path? access rights?) 0 (https://repos.springrts.com/repos.gz)

Enterprise Linux distros (CentOS, Fedora, Oracle Linux, RHEL) place CA certs in /etc/ssl/certs/ca-bundle.crt and /etc/ssl/certs/ca-bundle.trust.crt (for extended validation certs). The updater should look for these paths in addition to /etc/ssl/certs/ca-certificates.crt. Symlinking /etc/ssl/certs/ca-bundle.crt -> /etc/ssl/certs/ca-certificates.crt fixes this issue on Fedora 33. I did not test on the other flavours of Enterprise Linux, but it likely affects all of them.

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.