GithubHelp home page GithubHelp logo

space-wizards / robusttoolbox Goto Github PK

View Code? Open in Web Editor NEW
520.0 50.0 395.0 36.33 MB

Robust multiplayer game engine, used by Space Station 14

Home Page: https://spacestation14.io

License: Other

C# 98.92% Python 0.29% GLSL 0.12% Shell 0.01% Fluent 0.58% CSS 0.08% JavaScript 0.01% PowerShell 0.01% Batchfile 0.01%
space-station-13 game c-sharp ss13 game-design

robusttoolbox's Introduction

Robust Toolbox

Robust Toolbox is an engine primarily being developed for Space Station 14, although we're working on making it usable for both singleplayer and multiplayer projects.

Use the content repo for actual development, even if you're modifying the engine itself.

Project Links

Website | Discord | Forum | Steam | Standalone Download

Documentation/Wiki

The wiki has documentation on SS14s content, engine, game design and more. We also have lots of resources for new contributors to the project.

Contributing

We are happy to accept contributions from anybody. Get in Discord or IRC if you want to help. We've got a list of issues that need to be done and anybody can pick them up. Don't be afraid to ask for help either!

Building

This repository is the engine part of SS14. It's the base engine all SS14 servers will be built on. As such, it does not start on its own: it needs the content repo. Think of Robust Toolbox as BYOND in the context of Space Station 13.

Legal Info

See legal.md for licenses and copyright.

robusttoolbox's People

Contributors

20kdc avatar acruid avatar clyybber avatar comicironic avatar damianx avatar drsmugleaf avatar efruit avatar electrojr avatar h3half avatar harikattar avatar ike709 avatar juliangiebel avatar metalgearsloth avatar mirrorcult avatar moonheart08 avatar paulritter avatar pjb3005 avatar psykzz avatar shadowcommander avatar spoogemonster avatar sweptwastaken avatar tayrtahn avatar tyler-in avatar visne avatar volundr- avatar wrexbe avatar ygg01 avatar yotaxp avatar zoldorfthewizard avatar zumorica 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  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

robusttoolbox's Issues

Rebase SFML as the master branch

No work is being carried out in the master branch. There is nothing left in there that is really going to live through the changes that have already been applied to SFML.

We should nuke Master and rename SFML.

Any object near by you when you click ANYWHERE will be triggered as if you clicked on it properly

Rabbit hole starts at GameScreen.cs#666 MouseDown()

Basically from my tests as long as you are in range of the clicked object you will trigger it regardless of where you actually clicked.

I went down the rabbit hole and I think the click check for if you actually hit anything literally doesn't exist.

At the bottom of the rabbit hole in (Animated too) SpriteComponent.cs#177 the necessary check literally doesn't exist.

DllNotFoundException when running

Exact message.

An unhandled exception of type 'System.DllNotFoundException' occurred in sfmlnet-graphics-2.dll

Additional information: Unable to load DLL 'csfml-graphics-2': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

The issue happens when it attempts to add the 'base_font', in the LoadBaseResources method, in the ResourceManagerZip class.

_fonts.Add("base_font", new Font( _stream));

Everything builds fine but this doesn't work. I don't know where to post this since the website and irc seems to be down...

Tile Selection is not rounding properly

  • Tile selection doesn't round properly on both axis in specific quadrants of the screens. To be specific, up/down works perfectly in the bottom right corner for example. I've also had left/right working perfectly in another case, but it doesn't work properly and jumps at about 0.5/center otherwise

Rendering segfault on OSX

https://pastebin.com/m5hcMJAd

Everything works, until you hit ready in the lobby. You can see for what I assume is a frame or two before the segfault happens.

Screenshot taken by breakpointing in Xamarin before the crash happens.

Trying to step through with a breakpoint seems to have the crash happen completely at random, somewhere in network manager code during cluwnelib idle. Maybe the GC is causing SFML.NET to do something during the debugging and that thing in SFML.NET is the issue?

Atmosphere Simulation

I am beginning to work on the atmosphere simulation. Before I go any further I just want to know what level of fidelity we want in the simulation. One way which would be less accurate is partitioning the tile collection into rooms and having a set of properties describing the gases in each of these rooms. Another way would be to simulate the transfer of gases between adjacent tiles simulating more fluid-like dynamics. Which do you all think is better for this project?

I want to contribute Space Station 14 development

But I really confused. What repository I must to choose. For now I see that space-wizards/space-station-14 repository is outdated and the lastest commits from Silvertorch5/space-station-14 not merged into it. Thanks for help. I see that volundr- has own fork.

Discussions

Is there any chat systems used for discussions?
Slack / Discord / IRC or something else

Starting server with empty config file causes crash.

System.InvalidOperationException was unhandled
  HResult=-2146233079
  Message=There is an error in XML document (0, 0).
  Source=System.Xml
  StackTrace:
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
       at SS14.Server.Services.Configuration.ConfigurationManager.Initialize(String ConfigFileLoc) in C:\Users\Simon\Documents\SS13 Repos\space-station-14\SS14.Server.Services\Configuration\ConfigurationManager.cs:line 25
       at SS14.Server.SS14Server..ctor() in C:\Users\Simon\Documents\SS13 Repos\space-station-14\SS14.Server\SS14Server.cs:line 100
       at SS14.Server.EntryPoint.Main(String[] args) in C:\Users\Simon\Documents\SS13 Repos\space-station-14\SS14.Server\Program.cs:line 24
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
       HResult=-2146232000
       LineNumber=0
       LinePosition=0
       Message=Root element is missing.
       Source=System.Xml
       SourceUri=""
       StackTrace:
            at System.Xml.XmlTextReaderImpl.Throw(Exception e)
            at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
            at System.Xml.XmlTextReaderImpl.Read()
            at System.Xml.XmlTextReader.Read()
            at System.Xml.XmlReader.MoveToContent()
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPersistentConfiguration.Read6_PersistentConfiguration()
       InnerException: 

Piss easy fix but still I'm gonna report it.

There is no todo list

If you guys don't have a todo list, how are people interested in contributing to this wonderful project going to know what to work on?

TODO: Server Config

Currently the config is being copied into /bin/Server but if the config is missing the server will crash.

Project: SS14.Server

  • Implement error handling to correct this
  • When it checks for the config: if it is missing then it should write a default config to the config file.

Note: Server stack overflows for spooky reasons if you try to XML serialize the new config file

Issues with movement and rotation when being stuck

  • If you are walled in, you can still make moving animations, you can't turn however. You don't move in both cases. This will probably be an issue once "being unable to move" becomes a part of the game

Embedding scripting for the actual content.

Yes I'm aware this is basically dead but it's worth a shot I guess?

So I suggest we embed Python for handling content. Low end stuff like atmospherics, rendering, whatever... stays C#, but the actual meat of the game gets created in Python.

This has a couple of advantages:

  • Python is easy to learn: SS13 doesn't have insane contributor counts without reason.
  • It allows easier and safer syncing of server specific code with clients.

Scripting language?

Which scripting language to go with?

There's a consideration of whether we need sandboxing so the client can safely download code from the server and run it.

Python is an option, and somebody can probably write a PyPy <-> C# thing though I've got no idea how P/Invoke works. Can't sandbox it though (PyPy does support sandboxing but it kills performance)

For C# it's easier to get to work but again, no sandboxing it without killing performance. Though you might be able to wrap the entire installation in an AppDomain but then you'll be restricted with file access. Gonna need looking.

Lua is another option but personally I think it's disgusting and not something that can handle SS13.

Then finally there's Javascript (maybe with TypeScript), I found a V8 binding called ClearScript which can probably work, and I assume it'd be sandbox able.

So really, if we drop sandboxing then having the client load a C# assembly from the server (or C# script files, that exists) would definitely be best.

C# extension assembly loading

An Assembly.LoadFrom("SS14.Server.Content.dll") should probably enough.

Types will be discovered through reflection over the assembly.

Compiling the C# extension assembly.

Probably best to just drop it next to the server executable for now.

Name'll be SS14.Server.Content

Should probably be dependent on SS14.Server.Services, SS14.Server.GameObjects and SS14.Server.Interfaces, all the shared modules, but not SS14.Server itself.

Lots of projects

Is it really necessary to have several projects or can we instead rewrite the code to have 3 projects and have them subfoldered?

SS14 TODO

Overall goal: Create a platform independent of BYOND that can be forked into different stations.
[Reworking this section]

Interface Issues for May 9th 2017

  • There's no button or keyboard shortcut (ex: ESC) to go back to the Main Menu from the Job Selection interface (first after Connect)
  • OverridePlacement in Entity Spawn should default to "AlignFree", not "None", it prevents spawning until you set it properly
  • You can't select the chat by clicking on the text bar, only on the box itself, which is a bit odd
  • The scrollwheel in the Entity Spawn menu prevents selecting anything if it's moved out of its original position
  • Clicking anywhere outside of the chat window doesn't deselect it, this is not intuitive. Even ESC doesn't unfocus it
  • "Quit" ingame is maybe a bit too literal. It crashes the game immediately

TODO: GUI Fixes

Client
Screen does not resize.
Scrollbars are rendering black
Spawn Entity menu renders the background of the items black

tilebuildoverlay sprite missing "_south" suffix

After trying to use the tile building tool an exception is thrown inside AlignTileAny.Update. Client.Services.Placement.GetDirectionalSprite(string baseSprite) is being used to get the UI sprites but the problem is the UI sprites dont have a direction. In my case the sprite that was trying to be accessed is "tilebuildoverlay_south" which should just be "tilebuildoverlay".

Why Appveyor is broken

SonarQube requires an auth token, and Appveyor lets you securely put them in a config to later be decrypted by the CI server. Since I don't own the build, I can't encrypt the SQ token, and the build can't run successfully - yet.

Move away from XML

A lot of the definitions are in XML.
Can we move to something a little cleaner? YML or even JSON?

Contribution Guide?

I was wondering if I should work on a contribution guide: setting up project, building, testing, etc.. I just wasn't quite sure what should all go into this. Maybe I could get some insight as well as things I need to make sure I take into account?

Localization?

This is something that's been on my mind for a while: should we have localization?

It may be hard to uphold in the SS13 ecosystem, but if we can I think we should go for some engine-level support.

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.