Giter Club home page Giter Club logo

regalis11 / barotrauma Goto Github PK

View Code? Open in Web Editor NEW
1.6K 38.0 394.0 1.48 GB

A 2D online multiplayer game taking place in a submarine travelling through the icy depths of Jupiter's moon Europa.

Home Page: http://www.barotraumagame.com/

C# 61.32% Makefile 0.84% HLSL 0.23% Shell 1.12% Rich Text Format 0.11% Batchfile 0.01% HTML 0.11% C 28.49% C++ 6.22% Python 0.14% Processing 0.06% Perl 0.34% Assembly 0.75% CMake 0.11% M4 0.10% CSS 0.04%
monogame game multiplayer-game

barotrauma's Introduction

Barotrauma

Copyright © FakeFish Ltd 2017-2022

Before downloading the source code, please read the EULA.

If you have a question or an issue to report, please check our Contribution Guideline.

If you're interested in working on the code, either to develop mods or to contribute something to the repository, you will also find instructions in the Contribution Guideline.

Links:

Official Website: www.barotraumagame.com

Steam Forums: https://steamcommunity.com/app/602960/discussions/

Discord: https://discordapp.com/invite/undertow

Wiki: https://barotraumagame.com/wiki/Main_Page

Prerequisities:

Windows

  • Visual Studio with C# 10 support (VS 2022 or later recommended)

Linux

macOS

barotrauma's People

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

barotrauma's Issues

Server queue

A way to automatically wait for a slot to free up when joining a server instead of having to spam refresh and join.

UI editor + UI configs

Configuring UI layouts in code is a huge pain in the ass and makes it impossible to do any modifications to the UI without recompiling. It might be a good idea to make the game load the menu layouts and whatnot from XML config files and make a visual editor that could be used to create and modify those XMLs.

A toggle gate with output

Currently, only way to have a toggle function in wiring mechanisms is to use a door, or tons of elements, and neither solutions are acceptable when working with a small space on sub. What I would like to propose it to add another output for state on toggleable gates like light and relay gates, and perhaps a dedicated gate with only toggle, reset and state inputs and output.

Translate the game

Hi. I am from Ukraine and i obviously like Barotrauma. I would like to translate it to Russian, but I keep getting errors, what should I do?

Saving job preferences

The order of the job preferences should be saved, and captain probably shouldn't be the first option by default because it tends to lead to newbies being assigned as captains.

Banning improvements

  • Ban reason (should visible at least at the servers side to make it easier for hosts to manage the banlist)
  • Timed bans

Steamworks integration

Matchmaking
= Listing available servers and connecting players to them using Valve's servers. The old master server could still be preserved as a legacy option for a potential non-Steam (GOG?) release and as a way to allow players to host their own "master servers".

Achievements
Self explanatory

VAC?
Investigate whether Valve's Anti-Cheat has any features that could be of use in the game.

[Suggestion] Radio chat hotkey

Let's face it, having to type r; every time and fucking that up in various ways, especially when panicking, is not very fun, really counter-intuitive and extremely frustrating if you're drowning or being choked by a traitor.
If there was a keybind to use the radio chat it would improve the chatting and make it less of a pain in the ass.

Campaign map redesign

The graphics need to be redone, and the whole UI in general could use some more work:

  • The biome and/or level type could be displayed somehow.
  • Icons that show the missions on the map (so the player doesn't have to click through all the adjacent locations to see what kind of missions are available).
  • Maybe some animation when transitioning to the next location (e.g. submarine indicator moving from a location to another).
  • Letting the player pan the map view.
  • What else?

Multiplayer bots

A way to include AI-controlled characters in the crew and to give them commands

Overhaul client permissions to be command-based as opposed to hardcode

Due to this line of code, changing what the client is allowed to do on serverside beyond kicking and banning is impossible:

#if !DEBUG && CLIENT
            if (GameMain.Client != null && !IsCommandPermitted(splitCommand[0].ToLowerInvariant(), GameMain.Client))
            {
                ThrowError("You're not permitted to use the command \"" + splitCommand[0].ToLowerInvariant() + "\"!");
                return;
            }
#endif

at least, without having all of your admins use your custom Barotrauma client.

I propose that the permissions system is overhauled to support not only adding "ranks" besides admins, but also customized server-side commands should the server host decide to fiddle with things.

For example, you might want to have moderators that can kick and cannot ban (already possible), while admins could kick, ban, access server logs, revive, heal and force-kill people. And then you'd have Super Admins who would be able to do everything a Host can do, save for some really abusive stuff.

Heck, maybe it could be implemented in vanilla game where you'd define ranks and permissions in a simple .txt file and the game would parse that to decide which ranks exist on the server?

Let clients dl content packs directly from server

It's kind of annoying to see your player counts plummet because majority won't even know where to find the content pack you're using.

I suggest that the client can choose to download the content pack the same way he can download the custom subs, perhaps letting them see the supplied content pack name and description.

Tutorial improvements

The current tutorial is too slow, long and difficult, and should be redesigned completely.

In addition to that, there should be multiple tutorials. One compact "basic tutorial" similar to the current one that teaches the absolute basics, and several additional ones that focus on a specific game mechanic. That way we can have one quickstart tutorial for those who just want to learn the basics and get playing right away, and more in-depth ones that explain some specific aspect of the game in more detail.

Сложности с переводом игры./Difficulties with translation of the game.

У меня возникли проблемы с неработоспособностью некоторых предметов. К примеру, гарпунная пушка заряжена, но всё равно требует копья. Подводный скутер уже имеет аккумуляторный элемент, но всё равно его требует и т.д. / I'm having problems with the inoperability of certain pieces. For example, the harpoon gun is loaded, but still requires spear. Underwater scooter already has a rechargeable item, but still it requires, etc. Sorry if something is unclear. I'm tired now and decided just to use a translator.
654

Item equip, unequip, drop, denied, etc. sounds are 2d and global

It's kind of annoying when you hear item fiddling sounds when on the opposite side of the sub.
They either need to be clientside or quiet enough that you can only hear them when right next to the person (except for denied sound. that sound should totes be clientside-only)

Don't kill the person on disconnect

Basically, have the same "braindead" system SS13 has.
when someone disconnects out of a body, label them as (AFK). Once they reconnect they'll be back in their body like nothing happened.
Sometimes, I get force-reconnected for no reason and then have to sit out the entire rest of the round because of bugs. Desync issues can also be a huge pain in the ass.

Character/creature editor

A visual tool for creating and editing creature configs. The game currently includes a very unfinished editor (see the "editcharacter" console command), but it's still far from usable.

Event system bugs

  • Conversion to husk seems to cause the characters IDs to not sync up properly between the clients and the server, causing the server to read incoming messages incorrectly until everyone is eventually kicked because of desync.
  • If two events for the same entity occur within a short time of each other, and a client hasn't received the first event yet, then the client will receive an event with an incorrect state. (I propose we save the data to be sent into the event rather than the entity it corresponds to, so the server will be sending out previous data)
  • Unique events are sometimes not possible to sync for some reason, causing all new players to be kicked for desync until the round is ended. (I propose that we just get rid of the unique event system in favor of just syncing states in the first packets)

Loading failure with no specific error message

Crash after launching the game.

Barotrauma crash report (generated on 31.05.2017 21:54:33)


Barotrauma seems to have crashed. Sorry for the inconvenience! 
If you'd like to help fix the bug that caused the crash, please send this file to the developers on the Undertow Games forums.


Game version 0.6.0.0
Graphics mode: 1920x1080 (Fullscreen)
Selected content package: Vanilla 0.3
Level seed: no level loaded
Loaded submarine: None
Selected screen: None


System info:
Operating system: Microsoft Windows NT 6.1.7601 Service Pack 1 64 bit


Exception: Object reference not set to an instance of an object.
Target site: Void Draw(Microsoft.Xna.Framework.GameTime)
Stack trace: 
at Barotrauma.GameMain.Draw(GameTime gameTime) in E:\Subsurface\Subsurface\Source\GameMain.cs:line 390
at Microsoft.Xna.Framework.Game.DoDraw(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at MonoGame.Framework.WinFormsGameWindow.RunLoop()
at MonoGame.Framework.WinFormsGamePlatform.RunLoop()
at Microsoft.Xna.Framework.Game.Run(GameRunBehavior runBehavior)
at Barotrauma.Program.Main() in E:\Subsurface\Subsurface\Source\Program.cs:line 43


Last debug messages:
31.05.2017 21:54:33 - Loading was interrupted due to an error

Why UDP ?

Why use UDP, when you have a master server who can setup TCP connections with players ?

Railgun HUD

A HUD that shows the charge of the connected supercapacitors and how many shells there are left in the loaders. + Some sort of fancy aiming reticle

blurshader and damageshader broken after update to MonoGame 3.6

Coroutine Barotrauma.GameMain+<Load>d__55 threw an exception: HRESULT: [0x887A0005], Module: [SharpDX.DXGI], ApiCode: [DXGI_ERROR_DEVICE_REMOVED/DeviceRemoved], Message: Unknown at SharpDX.Result.CheckError()
http://undertowgames.com/forum/viewtopic.php?f=21&p=117082

This appears to be an issue predominantly on old NVIDIA and Intel GPUs. It may be a bug introduced by the MonoGame or SharpDX updates introduced in v0.6.1.0.

Since watershader still works on systems affected by this bug, it's possible that the other two shaders use some feature that doesn't work properly on these old systems, though this is unlikely since the shaders have gone unchanged since at least v0.6.0.2.

Switching to the HiDef graphics profile does not seen to make things any better, it breaks compatibility with other systems.

Since I don't happen to have access to any systems that have this issue, making sure a solution works is not possible on my end, so any testing of the current in-dev branch on affected systems is appreciated.

New netcode is really buggy

I haven't played for awhile and am just getting back and seeing version 6 released. The game feels to have gotten much more rubber band-y. Almost always dropping items and the server thinking i'm way farther behind than i actually am and getting stuck on invisible things. It is very annoying to have to do things over and over and backtracking 2-3 times just so that the server can finally catch up with me. Making the servers authoritative is what killed Space Engineers multiplayer with the insane server-side lag causing clients to snap back to where the server thinks they are making the game nearly unplayable unless the server was hosted on a Supercomputer with gigabit fiber internet. This same issue is happening with this cool game, i don't want to see this game ruined by bad netcode. I suggest doing a p2p sort of system like the old actually playable Space Engineers netcode did.
This is NOT client side FPS lag, i have a GTX 1080 and get way more than 60fps stable.

Client's sub/shuttle lists empty after joining a server

Client's sub and shuttle lists are occasionally empty after joining a server, and the client fails to start a round because the correct submarine can't be selected. No known steps to reproduce, but I'm guessing the clients fail to receive the initial lobby update for some reason. After disconnecting and rejoining everything seems to work fine.

Aiming inaccuracy

The server calculates the cursor positions of the clients based on the angle they're aiming towards. The angle is calculated from the position of the character towards the cursor, but the characters actually aim from the position of their shoulder towards the cursor.

Give respawning characters ID tags for the shuttle

Respawning characters get the ID tags they would have gotten if they had spawned in the main sub. This is not an issue in the vanilla shuttles, but custom shuttles may require some additional ID tags.

Monsters can only get damaged when you're near the main sub

This is an issue not only if you try to solo-kill the monster, but also a pretty major one if you're on the right side of the Search and Destroy PVP mission.

All monsters are invincible if they are too far from the main/left sub while being able to damage the hull of the ship, though I'm not sure if they can damage the players as well.

XML-based missions

Instead of hardcoding the criteria for each mission, we should be able to assign certain starting conditions and goals that each mission type should have.

For example, the salvage mission requires an artifact to be onboard the main sub and the main sub to be at the end waypoint. So, it would be possible to represent that criteria like so:

<MissionType name="Salvage">
    <StartingConditions>
        <Spawn itemType="Artifact" location="Ruins" name="objectiveItem" />
    </StartingConditions>
    <VictoryConditions>
        <IsOnboard target="objectiveItem" />
        <AtEndWaypoint />
    </VictoryConditions>
    <FailureConditions>
        <CrewIsDead />
    </FailureConditions>
</MissionType>

HumanoidAnimController crash

Barotrauma crash report (generated on 03/06/2017 13:39:20)


Barotrauma seems to have crashed. Sorry for the inconvenience! 
If you'd like to help fix the bug that caused the crash, please send this file to the developers on the Undertow Games forums.


Game version 0.6.0.0
Graphics mode: 1280x960 (Windowed)
Selected content package: Vanilla 0.3
Level seed: PPQvA0qz
Loaded submarine: Vellamo (BCAB318A6486271B9BC4DD96F57F846D)
Selected screen: Barotrauma.GameScreen
Server (Round hadn't been started)


System info:
    Operating system: Microsoft Windows NT 6.1.7601 Service Pack 1 64 bit


Exception: Object reference not set to an instance of an object.
Target site: Void Flip()
Stack trace: 
   at Barotrauma.HumanoidAnimController.Flip() in E:\Subsurface\Subsurface\Source\Characters\Animation\HumanoidAnimController.cs:line 1114
   at Barotrauma.HumanoidAnimController.UpdateAnim(Single deltaTime) in E:\Subsurface\Subsurface\Source\Characters\Animation\HumanoidAnimController.cs:line 186
   at Barotrauma.Character.UpdateAnimAll(Single deltaTime) in E:\Subsurface\Subsurface\Source\Characters\Character.cs:line 1269
   at Barotrauma.GameScreen.Update(Double deltaTime) in E:\Subsurface\Subsurface\Source\Screens\GameScreen.cs:line 175
   at Barotrauma.GameMain.Update(GameTime gameTime) in E:\Subsurface\Subsurface\Source\GameMain.cs:line 355
   at Microsoft.Xna.Framework.Game.DoUpdate(GameTime gameTime)
   at Microsoft.Xna.Framework.Game.Tick()
   at MonoGame.Framework.WinFormsGameWindow.RunLoop()
   at MonoGame.Framework.WinFormsGamePlatform.RunLoop()
   at Microsoft.Xna.Framework.Game.Run(GameRunBehavior runBehavior)
   at Barotrauma.Program.Main() in E:\Subsurface\Subsurface\Source\Program.cs:line 43
Last debug messages:
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name
   03/06/2017 13:39:20 - OpenAL error: Invalid Name

Wire highlighting

When the player highlights a wire in a connection panel, the physical wire and the items connected to it aren't highlighted

Reactor issues

Reactor seems to be working, even with emptied uranium tubes

Particle editor

An editor that shows a live preview of a particle effect and allows editing the parameters. Having to edit the xmls "blind" and restart the game to see the results is really tedious.

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.