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

Related tags

Spring Boot brainout
Overview

Brain / Out

Source code for Brain / Out, the game.

How To Build From Source

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.

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

On your build environment, for scripts to work, you need to install these.

NOTE: You will need to use the Python 2 pip.

pip install git+https://github.com/desertkun/hjson-py
pip install pycrypto

Notes:

  1. Command line git is required to install hjson
  2. pycrypto on Windows could be replaced with pip install pycryptodome since original pycrypto requires C development environment.

How to build Game Assets

See this readme for how to change Game Assets.

To build them, call ./make_data.sh on Mac/Linux and make_data.bat on Windows.

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

Comments
  • make_data.py TypeError

    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
    
    opened by QazCetelic 2
  • M72LAW Decor xmas skin

    M72LAW Decor xmas skin

    Added a skin to the New Year's container

    M72LAW Decor

    • [X] All png files & icons
    • [X] All txt files for skin
    • [X] Spine animation export
    • [ ] New loco string ITEM_WEAP_M72LAW_DECOR

    414

    opened by levinol 2
  • Add account ID of killer in DeathCameraMenu for Freeplay

    Add account ID of killer in DeathCameraMenu for Freeplay

    Added a small label text showing the account id of the killer only for freeplay. Useful for recorded reports.

    Example:

    https://user-images.githubusercontent.com/30794365/161921465-2fff105f-3687-4bef-a75b-33e0f3631ba2.mp4

    Inspired by a suggestion from the official BRAIN/OUT Discord image

    opened by OcZi 1
  • Change python version of make_data.sh

    Change python version of make_data.sh

    the script syntax seems to come from python 2 and can't be executed in python 3, also in make_data.bat it is executed in python 2.7:

    C:\Python27\python make_data.py client
    C:\Python27\python make_data.py server
    
    opened by OcZi 1
  • Fix max-speed set to 1

    Fix max-speed set to 1

    Avoid server/client speed receive a number higher than 1 (when the game never use it).

    This should fix an internal modification of the client speed desync with server. HOWEVER, it's just a temporary solution for a more complicated problem (server needs more client checking).

    opened by OcZi 0
  • Add troubleshooting document detailing several issues people can encounter while building the project.

    Add troubleshooting document detailing several issues people can encounter while building the project.

    • Added TroubleShooting.md
    • Added ModuleError.png, this is image is used in the troubleshooting doc.
    • Added a reference to the troubleshooting doc in Readme.md.
    opened by QazCetelic 0
  • Lag spike when switching weapons.

    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.

    opened by QazCetelic 0
  • Rebalancing during assault.

    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.

    opened by QazCetelic 0
  • Players can receive damage in safe zones

    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?

    opened by OcZi 1
A Zombie invasion has occurred at the Code Academy Campus and now Alcatrinha has to fight the zombies to death! (2D TopView Shooter)

Hello everyone, welcome to Zombie ACADalypse!! A Zombie invasion has occurred at the Code Academy Campus and now Alcatrinha has to fight the zombies t

Mario Vieria 1 Dec 17, 2021
An 24x7 active repo for your contribution feel free to contribute:)

Hacktoberfest2021 Hacktoberfest is a month-long celebration of open source software sponsored by Digital Ocean, Intel, and DEV. Do push your code in a

Vishnudas 13 Sep 14, 2022
A networking library for LibGDX utilizing Netty allowing easy creation of multiplayer games.

Lunar What is Lunar? Lunar is a networking library for LibGDX. With lunar you can easily create multiplayer games quickly and efficiently. Lunar provi

Vrekt 28 Nov 25, 2022
Mint 0.1.1 public release, HWID System removed. Feel free to use. (Note: for all of u thinking its ratted; its not.)

Mint By: zPrestige_ | ! zPrestige_#1514 | git Kambing | dragonhacker32_#3091 | git FB | FB#7334 | git ZenovJB | Zenov#0603 | git Support no support No

null 17 Dec 2, 2022
This is a simple realization of custom messages pre/post processing in spring-boot HTTP/Stream requests & responses

spring-boot-custom-message-converting-instances This is a simple realization of custom messages converting in spring-boot HTTP requests and responses.

Innopolis University Java Team 1 Jul 22, 2022
A simple blog post api made with spring,mysql.Following tutorial by @FadatareRamesh(Java Guides)

blogAPI A simple blog post api made with spring,mysql.Following tutorial by @FadatareRamesh(Java Guides) Frontend server(made using Angular) can be fo

null 1 Feb 2, 2022
Source code of the standalone multiplayer server software of the game "Celaria"

Celaria Server This is the source code of the standalone multiplayer server for the Game "Celaria". (https://www.celaria.com) of modding the server si

Lewa 3 Nov 14, 2021
This repository is totally dedicated to Hacktoberfest 2021, feel free to add your project.

push-it-hacktoberfest This repository is totally dedicated to Hacktoberfest 2021, feel free to add your project. HacktoberFest21 Hello Hackers, Contri

Muhammad Bilal 3 Oct 31, 2021
Live video out from your DJI FPV Goggles via USB.

DigiView is an Android app that allows you to get a live preview from your DJI FPV Goggles (V1 & V2). Working with Android 7+ and devices supporting U

Fpv Out Club 235 Dec 19, 2022
A distributed lock that supports the use of Redis and Zookeeper, out of the box, fast and easy to use

lock-spring-boot-starter A distributed lock that supports the use of Redis and Zookeeper, out of the box, fast and easy to use 一款基于 Redis 和 Zookeeper

Pear Stack 9 Oct 15, 2022
Cardsystem - Digital card sign-in/sign-out system for the Indiana Academy

cardsystem Digital card sign-in/sign-out system for the Indiana Academy Requirements: Create system for inputing destination, companion, and estimated

null 1 Feb 23, 2022
An example spring boot app to try out with a Parca Agent deployment.

Spring boot example This repo is an example for how a Java application can be profiled with Parca Agent. First deploy Parca and Parca Agent as usual,

Parca 1 Mar 9, 2022
Find out what the sign is from a specific day and month

WhatMySign Find out what the sign is from a specific day and month Preview How to use To run it is simple, first download the file of the program by c

null 1 Feb 3, 2022
Program that allows employees to clock in and clock out of work. Employees who are managers can add, edit and delete employees and shifts from the database.

Clock-In-Clock-Out-System Created by: Kennedy Janto, Taylor Vandenberg, Duc Nguyen, Alex Gomez, Janista Gitbumrungsin This is a semester long project

null 6 Nov 5, 2022
Duel Threads - Concurrency techniques duel it out for the championship (and bragging rights)

Duel Threads Concurrency techniques duel it out for the championship (and bragging rights) Phases: Argue over rules, challenges and the grand prize Se

Jason Sipula 2 May 9, 2022
The open source CyborgFlow project is an out-of-the-box (OOTB) solution to perform load test on your online system.

CyborgFlow CyborgFlow provides an out-of-the-box (OOTB) solution to perform load test on your online system, powered by Apache APISIX, Apache SkyWalki

SphereEx 70 Nov 30, 2022
NeverScapeAlone! Instantly match with other players and take the hassle out of finding partners for bosses, minigames, skills, pking, and more!

NeverScapeAlone An Old School RuneScape Matchmaking Plugin on RuneLite! Tired of having to scour friend's chats, discords, and forums to find friends

null 14 Sep 2, 2022
Jetserver is a high speed nio socket based multiplayer java game server written using Netty and Mike Rettig's Jetlang.It is specifically tuned for network based multiplayer games and supports TCP and UDP network protocols.

Note New version of Jetserver is called Nadron and is in a new netty 4 branch of this same repo. JetServer is a java nio based server specifically des

Abraham Menacherry 1.2k Dec 14, 2022
We have created a techblog website where a user can post technical posts and edit and update the post accordingly.

TechBlog Introduction - In this project we have created a technical blog website where we have provided functionalities such as 1) SignUp 2) Login 3)

Riya Vijay Vishwakarma 2 Jan 23, 2022
A Zombie invasion has occurred at the Code Academy Campus and now Alcatrinha has to fight the zombies to death! (2D TopView Shooter)

Hello everyone, welcome to Zombie ACADalypse!! A Zombie invasion has occurred at the Code Academy Campus and now Alcatrinha has to fight the zombies t

Mario Vieria 1 Dec 17, 2021