Git Product home page Git Product logo

unitystation / unitystation Goto Github PK

View Code? Open in Web Editor NEW
705.0 705.0 642.0 2.98 GB

The original unitystation

Home Page: https://unitystation.org

License: GNU Affero General Public License v3.0

C# 96.35% PowerShell 0.03% Dockerfile 0.01% Shell 0.11% Python 0.91% HTML 0.05% JavaScript 0.65% C 0.01% ShaderLab 1.59% DM 0.09% Smalltalk 0.01% GLSL 0.04% HLSL 0.17% Batchfile 0.01%
hacktoberfest ss13 unity

unitystation's Introduction

unitystation

Codacy Badge Tests GitHub last commit Discord License: AGPL v3

CONTAINS BUILT WITH

Unitystation has been active since late 2016

Visit us on Steam:

Support us on Patreon:

Also, Check our progress on our blog and changelog page.

Join the community

Talk to us on Discord:

Feel like getting involved?

Read our Quick Start guide here

  1. Get Unity Hub
  2. Install editor version 2023.2.13f1
  3. Fork the repo
  4. Add your changes
  5. Read the contribution guidelines
  6. Submit a pull request

Warning

It is highly recommended to run the Unitystation project on an SSD in the editor.

Note

The first-time import process will take a while. Depending on your system configuration, This process could take up to 1 hour or 15 minutes. Subsequent launches of the project should take a maximum of a minute.

LICENSE

All code after commit 44695c862d6d84cfc99354d6dfba1f0b70f20407 on 2017/03/12 at 11:39 PM CET is licensed under GNU AGPL v3.

All code before commit 44695c862d6d84cfc99354d6dfba1f0b70f20407 on 2017/03/12 at 11:39 PM CET is licensed under GNU GPL v3. If you have committed code to this repository before this time, please contact us if you want your code distributed under GNU AGPL v3 instead (Including tools unless their readme specifies otherwise.)

See LICENCE for more details.

All assets including icons and sound are under a Creative Commons 3.0 BY-SA license unless otherwise indicated.

cc-by-sa

unitystation's People

Contributors

actions-user avatar akbadain29 avatar aranclanos avatar atnernt avatar autumnnova avatar bobtheapple avatar bod9001 avatar chairbender avatar corp-0 avatar dooblynoobly avatar dvanwart avatar fomalsd avatar fortune117 avatar jesterx666 avatar jibbajabbafic avatar krille90 avatar macoron avatar maxisjoe avatar moonthebird avatar necromunger avatar noooneydude avatar perfecttangent avatar petmudstone avatar ranzarth avatar raptorizer avatar redlinetriad avatar reiderjack avatar ruzihm avatar thatdan123 avatar vlandemart 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

unitystation's Issues

Turn down the sound IG

The sound for all the doors is way too loud and so is the station hum ambient sound.

  • Go into soundmanager and turn down the sounds to around 0.35 / 0.45f

Player Move [Physics?]

  • Develop move method on player control using some kind of pseudo physics move functions
  • Snap character to tiles
  • Improve the node targeting so player does not snap backwards or sidewards when they are halfway between a tile when input is stopped

Current WallConnects needed

  • catwalk.png (the walk ways in space) SpriteSheet root: textures/obj/smooth_structures/
  • shuttle.png (shuttle walls) SpriteSheet root: textures/turf/
  • carpet.png (chapel, library and various command floors) Spritesheet root: textures/turf/floors/

Syncing

  • Shutters don't sync on player join

Please add more, if you find something that needs to be synced.

Nested Prefab updates

Currently if you update a prefab with changes it will not change any of the instances of that prefab if it is nested in another prefab (that was a tongue twister).

So we need to implement our own prefab manager.

BoxCollider2D trigger on items, overlapping with other items

To overcome this; instead of using 3x3 sized triggers we should reduce the trigger size to the size of the object itself and check the distance between the player and the object before allowing actions. This will eliminate the overlap problem.

Game Manager

To monitor ingame progress, generate realtime reporting, load and save player prefs and to provide global functionality to other modules

UI basics [Bottom Section]

  • Tie all onClick events to methods in ControlUI.cs
  • Add selector highlight feature to left and right hand buttons (to indicate which hand is active)
  • Finish intent button (cycling through Help, Disarm, Hold, Attack sprites)
  • Finish (resist, drop, throw) selector
  • Finish Walk / Run selector

Create a Ballistic Longrange Weapon PREFAB

Create a Ballistic weapon using the sprites and set as a prefab:

  • Handle weapon attributes: Brute damage, firing rate, ammo type, weapon states
  • Handle inhand sprites
  • Create a condition that checks if the weapon is in the current hand when clicking the mouse fire1 button (to shoot the weapon)
  • Handle weapon animations or sprite states
  • Create the ammo type for the weapon and save the ammo as a prefab (this will need to be photon.instantiated on each shot if connected to photon)

For reference see the Longarm Ballistic TG reference: https://tgstation13.org/wiki/Guide_to_Combat#Longarm.28Ballistic.29

Character movement

you are pressing down for example
and as you are pressing it
you press left
you're now moving left but from where your last position
so if you were in between two tiles
you'll keep moving that way

Going to the kitchen then going back to the lobby then back to the kitchen causes you to be invisible

2blob:http://doobly.izz.moe/24ca7536-1596-4651-b256-cf7f13272432:1 CHECK IF SPAWNED

(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/WebGL/runtime/DebugBindings.gen.cpp Line: 51)

blob:http://doobly.izz.moe/24ca7536-1596-4651-b256-cf7f13272432:1 Unloading 5 Unused Serialized files (Serialized files now loaded: 0)

blob:http://doobly.izz.moe/24ca7536-1596-4651-b256-cf7f13272432:1 warning: 3 FS.syncfs operations in flight at once, probably just doing extra work
blob:http://doobly.izz.moe/24ca7536-1596-4651-b256-cf7f13272432:1
Unloading 2 unused Assets to reduce memory usage. Loaded Objects now: 24394.

blob:http://doobly.izz.moe/24ca7536-1596-4651-b256-cf7f13272432:1 Total: 46.639999 ms (FindLiveObjects: 4.395000 ms CreateObjectMapping: 4.630000 ms MarkObjects: 37.310001 ms DeleteObjects: 0.240000 ms)

Basic blood

Create a component that will handle all things related to blood.

  • Blood is either splashed or dragged on tiles and on playersprites including clothes. For the purpose of this milestone we will only focus on blood splashes
  • Determine at what point of brute damage should blood be splashed
  • Create a blood splash prefab and photon.instantiate the blood splash when required

Later on this component will be expanded to handle blood types, toxicity, viruses, enhancements etc

Basic Health

The basic implementation of player health:

  • There are seven different ways to be hurt: Suffocation, brute, burn, toxin, cellular, brain damage and bleeding.
  • For this TODO the focus should be on the brute damage (to achieve the combat milestone) we will expand the other health components at a later date.
  • The Health statuses: 100% = Full Health, 0% = Critical (laying on ground gasping for air), -100% = death

For reference see the TG wiki on damage: https://tgstation13.org/wiki/Guide_to_medicine#Seven_types_of_damage

Assemble item and machine prefabs

This is the first basic run of item and machine prefab assembly.

Basically you just need to find a kitchen or bar related sprite, create a GameObject, add the sprite as a child and turn this into a prefab. Create any folders that are needed to organize all the items / machines.

Then we will go back and work on each item specifically as needed with some items sharing components etc. This job will be assigned to everyone, if you have a spare 10 minutes then please help by contributing to the item/machine prefabs.

Snap prefabs to grid in Editor

The idea here is to be able to build the map in the editor and then drag that map into the maps folder as a prefab. This way map creation/editing and loading will be greatly simplified.

  • Research and implement the EditModeGridSnap script found here: http://answers.unity3d.com/questions/474418/make-grid-and-snap-to-it-in-unity-editor-2d-game.html
  • Attach this script to all of the prefabs that currently exist (floors, tables, doors)
  • Either (modify the script so each tile will attach itself automatically to a parent obj when bought into the editor scene or just create a parent object and drag the tiles across manually when done)
  • Map out the kitchen of box station and drag the map into a maps folder to create the prefab

Disposals

Disposal units aren't classified as machines, but instead as walls

Tidy up

Before we can put the "Done" stamp on the prototype, everything must be cleaned up so it's presentable to the public.

  • Scripts
  • Prefabs
  • Scenes
  • Managers
  • Plugins
  • Project Structure/Assets
  • AssetBundles and cut down of Resources folder (Please note Photon requirements)

Atmospherics

Looking to build a really simple area based atmospherics system.

  • Implement a standalone module to simulate movement of gasses between zones
  • Add proper maths to work out rate of flow
  • Write a wrapper to translate between game zones and simulation zones
  • Major tidy up to ensure the module is reusable and is easy to extend/maintain

Game Matrix - Discussion

We need to develop a realtime collision matrix of our own that knows where collide-able tiles and objects are at all times so that we can check if our player can move into that space with our player move components. Or if two players are trying to occupy the same grid co-ordinates then the matrix should move both the players so that they are side by side.

The Game matrix will do this by returning the grid co-ordinates to our player move component while doing all of the necessary checks before hand to see if it is:

  • Passable (like walls and tables, in which case we don't allow our player to move into that grid)
  • Is another player (In which case if both players are trying to stop on the same tile, then move them apart)
  • Our current intent (if it is harm or grab then we need to push the other player out of the tile)

I'm hoping to remove the player from being moved by the rigidbody2D component and using a transform.move function instead and then having a separate object that will follow the player with a rigidbody to do all of the trigger stuff like opening doors, detecting if you are in space etc)

This matrix then could form the foundation for lighting and the atmos tile graphics.

I've opened this issue so it could be used for discussion on how to best create a matrix as this could end up being pretty complex..

UI Manager

To handle UI events, actions, access to the inventory and chat

Bullet move and damage register

Move the bullet over the network using either transform move or physics move methods. Apply client side prediction for the bullet and create methods to handle bullet hit on players.

  • Choose a method to move the bullet after it is instantiated in the direction of fire (based on mouse click world position in relation to the player)
  • Detect collisions with players and walls and react accordingly
  • Apply damage to players that are hit and update health stats across photon

See ballistic weapon ref for ammo types and attributes: https://tgstation13.org/wiki/Guide_to_Combat#Longarm.28Ballistic.29

Network Manager

Handle connection, game creation, player accounts, chat, monitoring and more

Sound Manager

To store the soundbank of sources and provide general sound functions

Basic Player Skeleton (With Player_Controller)

  • Develop the start of the Player GameObject
  • Start work on the Player_Controller script
  • Start work on the basics, like SpriteRenderer, WASD control, CameraFollow etc
  • focus on player cook sprites for the prototype, changing sprite based on player facing

Sprite Manager

Item, machine and tile prefabs will reference their sprites directly from file. But what needs to be created is a Sprite manager that can remember the relations to other sprites for player movements etc.

For example, when a player picks up an object then there are 3 different sprite sheets in action here.

  1. Is the normal sprite from whatever sprite sheet it came from E.G. Kitchen_items.png
  2. and 3. Is the inhand sprites that comes from either sprite sheet based on what hand the sprite is in E.G. Lefthand_items.png or Righthand_items.png these sprites are shown on the playersprite as the player moves around.

These sprites also change depending on if the player is running North,East,South,West so these need to be calculated in the sprite manager somehow. From what I've seen in the sprite sheets, everything is related in the Left and Right hand sheets in a mathematical way.

Please see how I have prototyped it in a basic way with picking up the knife in the kitchen. ATM I am just passing around a sprite but later on this will need to be evolved into a GameObject that holds the properties of what the item actually does.

Map Manager

This will be the Controller of all the maps

Update: Eventually map loads will be handled by photon, at the moment everyone just appears in the kitchen-construct scene and this is fine for the prototype.

Pete the Goat - basics

  • Implement basic pete controller
  • very basic random movements from square to square
  • left and right check

reduce scene file size

I think, we should find a way to reduce the file scene.

It's now above the recommended size for github

Latest WebGL build fails to start

Hello, the latest WebGL fails loading for me when starting it up on the provided link. After opening the site, it outputs an alert with the error, and then stops loading. I'm running Vivaldi 1.6.689.46 on Arch Linux with kernel version 4.9.6.

TypeError: Cannot read property 'length' of null
    at Uint8Array.set (native)
    at Object.mmap (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:1:111838)
    at Object.mmap (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:1:147103)
    at ___syscall192 (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:1:204302)
    at Array.E$n (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:730823)
    at Object.dco [as dynCall_iiiiiii] (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:25:42966)
    at invoke_iiiiiii (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:1:321485)
    at sWn (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:635775)
    at Array.FBn (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:359560)
    at Object.yeo [as dynCall_ii] (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:25:58903)
    at invoke_ii (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:1:346777)
    at EXn (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:645032)
    at Zhn (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:74827)
    at mmn (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:153867)
    at Von (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:19:202171)
    at xha (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:7:1122964)
    at Object.tha [as _main] (blob:http://doobly.izz.moe/f4927874-d0f2-4c7a-aeb3-86875ebbd06d:7:1118501)
    at Object.callMain (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:3:29319)
    at doRun (blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:3:30025)
    at blob:http://doobly.izz.moe/68f8db2d-f529-4e7a-8070-a1bfdd256de2:3:30175

IsPassable on doors returning false

Doors are returning False for IsPassable while the floor below them is returning true. This results in random blockage for the player at the doorways

UI DamageZone selector

  • Place buttons over individual body parts and set color alpha to 0
  • tie buttons to new DamageZone selector script
  • public bool to tell which body part is selected. Maybe a public enum?
  • control highlight sprites

Item Manager

To catalogue game items and associated properties

  • research on best way to approach this problem
  • create a static item manager controller on a new GameObject and add it to the managers hierarchy
  • experiment with the small amount of items that are created already (by creating an item component and placing it on the item prefabs, atm there is only the knife but more are being created)
  • develop a public function to access the item and instantiate it with a given Vector2 position
  • develop a way to allow other devs to easily add new items to the item list (maybe just a public array that we can just drag and drop the prefab into the interface of the component for the time being)

Here is some suggestions on how to approach this using a dictionary: http://answers.unity3d.com/questions/155003/item-database.html

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.