GithubHelp home page GithubHelp logo

desertkun / brainout Goto Github PK

View Code? Open in Web Editor NEW
130.0 8.0 33.0 214.91 MB

Brain/out is a multiplayer shooter with a nostalgic post-soviet feel

Home Page: https://brainout.org

License: MIT License

Java 99.64% Batchfile 0.03% Shell 0.02% GLSL 0.06% Python 0.25%

brainout's Introduction

Brain / Out

Source code for Brain / Out, the game.

How To Build From Source

OpenJDK 11 is required.

First, clone this repo.

Use Gradle Wrapper: ./gradlew <command> on mac/linux, or gradlew.bat <command> on windows

To obtain project, use ./gradlew idea to generate IntelliJ IDEA project. Once project is generated, open brainout.ipr within IntelliJ IDEA IDE.

Do NOT let the IDE "load gradle project", just stick with ipr.

Make sure you build your data, call ./gradlew make_data

Then,

  1. ./gradlew desktop:dist to build desktop client
  2. ./gradlew steam:dist to build steam client
  3. ./gradlew server:dist to build server

For either of those to work, Game Assets has to be built.

Look at the troubleshooting document, it includes several common issues and how to fix them.

Dependencies

Setup SDK for IntelliJ IDEA:

  1. Click Project Structure
  2. Select SDKs
  3. Click "+", Download JDK
  4. Select version 11
  5. Download it and rename to "1.8"
  6. Run ./gradlew idea again

On first install, or after any assets changed, make sure to call ./gradlew make_data

How to build Game Assets

See this readme for how to change Game Assets.

To build them, call ./gradlew make_data

NOTE: the client digitally verifies the built data! So by default, the client won't be able to start up with locally built data, since the private key is not present in this repository. Pass --unsafe command line argument to the client so it would ignore non-signed packages. Offline Unsafe IDEA configurations already do this.

Offline build

By default, both the client and the server are trying to participate into the Alpha game network. Since no keys are present in this repository, for locally run builds please pass --offline command line argument both to the server and the client. Offline IDEA configurations already do this.

Run configurations

Server Lobby – server hosting "Main Menu". Offline version is offline, Alpha version participates in the Alpha network.

Server – server hosting active game phase. Offline version is offline, Alpha version participates in the Alpha network.

Server Editor – server hosting old non-steam editor. Offline version is offline, Alpha version participates in the Alpha network. Important to note that client looks for Home User folder brainout-maps by default to upload any map, use BRAINOUT_MAPS environment variable to point client to <this repo>/bin/server/maps.

Desktop Local Offline Unsafe – a client that tries to connect to server on localhost. It uses --connect brainout://bG9jYWxob3N0OzM2NTU1OzM2NTU2OzM2NTU3 argument which is bas64-encoded localhost;36555;36556;36557

You might also see there's Desktop Local 2 * configurations, these are copies under different user, e.g., you can launch those two in parallel and run two instances of the game on same PC.

Desktop Alpha – a client that tries to participate Alpha network.

Testing

The project has a CI system in place: on every new commit, it builds a new version of client/server and deploys it automatically. There are two environments available:

  • main, which is built on every master commit
  • test, which is built on every pull request. A new pull request wipes out the previous one, as it is intended to verify the correctness of the pull request.
  • dev, which is build on every dev_* branch commit. Contributors with collaboration permissions could push there directly and skip PR requirements to check things quickly.

The clients of those builds are deployed on Dropbox, to get invited there, please join the Dev Support telegram channel below and ask for invite link.

Community

If you have development question, please join Dev Support group on Telegram.

Otherwise, feel free to join the Official Discord Community Server

brainout's People

Contributors

artemking4 avatar desertkun avatar levinol avatar oczi avatar qazcetelic 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

brainout's Issues

Players can receive damage in safe zones

The server can block players from attacking with their weapons in safe zones but nothing prevents to attack outside of the zone to others players.

Some people have reported that under recent hacks (A.K.A speed hack) they can kill people in the lobby (safe zone).
This could be solved canceling damage in chunks with flag shooting disable?

Pasting nothing on a guitare makes the game crash (Free-play)

Hello !
I am just a simple player in B/O and i am still learning C language and many more.
When going through the game i particularly enjoyed the use of the guitare and playing some songs in the safe zone, and i noticed a bug concerning the item.

  • Whenever i launch the game without having anything on my clipboard and i click "paste" in the UI of the guitare , the game simply crashes *
    Ps : I already reported the bug in the discord channel #bug_report

make_data.py TypeError

/usr/bin/python2 /home/qaz/Programming/Java/brainout/scripts/make_data.py
Warning: no private key, making data without signing!
Building for platform client
Executing script 'Copy binaries'...
Executing script 'Prebuild packages'...
Copying package 'base' for platform 'client'
Processing smart package '../data/packages/base/smart'
Traceback (most recent call last):
  File "/home/qaz/Programming/Java/brainout/scripts/make_data.py", line 35, in <module>
    config.make_data(platform)
  File "/home/qaz/Programming/Java/brainout/scripts/config.py", line 40, in make_data
    script.call(platform)
  File "/home/qaz/Programming/Java/brainout/scripts/config.py", line 27, in call
    self.method(self.src, self.dst, platform)
  File "/home/qaz/Programming/Java/brainout/scripts/scripts.py", line 143, in prebuild_packages
    process_smart(path, contents, platform_filter_rules)
  File "/home/qaz/Programming/Java/brainout/scripts/scripts.py", line 449, in process_smart
    pieces = [process_piece(file, piece) for piece in text.split(u"--------")]
  File "/home/qaz/Programming/Java/brainout/scripts/scripts.py", line 436, in process_piece
    return hjson.loads(text, cls=CustomHjsonDecoder)
  File "/usr/lib/python2.7/site-packages/hjson/__init__.py", line 188, in loads
    return cls(encoding=encoding, **kw).decode(s)
  File "/home/qaz/Programming/Java/brainout/scripts/scripts.py", line 339, in __init__
    super(CustomHjsonDecoder, self).__init__(*args, tfnns_hook=self._parse_tfnns, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'tfnns_hook'

Process finished with exit code 1

Players can reload weapons without needed

Some weapons (not all) are available to reload on the first use, even if they are not needed

  • Weapons can lost ammo if you reload it without unreload
  • Some unaffected weapons are the shotguns, pistols without ammo, etc
bug.mp4

(Initally reported by nashe#5656 in BrainOut's discord)

AssetManager: sound assets take half of loading time

all the assets load with a regular time of milliseconds except sound assets, which take a long time to load (half of loading time).

Sound loading duration is approximately 18 seconds (starts at 0:09)

brainout-2022-03-23_19.49.51.mp4

Tested with processor AMD Athlon 3000g, Ram: 6 GB

Rebalancing during assault.

Players can suddenly be killed during assault due to a rebalancing, normally this is only an inconvenience but seems unintended for the assault gamemode.

Lag spike when switching weapons.

A lag spike occurs, freezing the game when switching weapons. This does not happen reliably, and it is therefore hard to reproduce which specific switch from which weapon actually causes it.

Test Env

Is there any way to build up test envirement locally? I mean, master server, player data saving and other.

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.