Code Monkey home page Code Monkey logo

ss3d's Introduction

SS3DSpace Station 3D is an open-source resurrection of *beep's original SS3D, which was an impressive demo attempting to give the infamous ss13 an extra dimension.


INFO

About - FAQ - Devblogs GitHub Discussions GitHub Milestones


DOWNLOADS

Latest Release

Latest ReleaseThe latest official build of SS3D (tested on Windows but not other OSs).Latest Release Downloads

Current Project

Total DownloadsThe entire SS3D project in a .zip folder (must be built in Unity yourself).Repo Size

Note: SS3D is still in a 'pre-alpha' phase while we concentrate on core mechanics. So, there isn't much content, systems, or even interactions currently. What you see now is just the beginning to something much, much greater.


DONATE

PayPal

PayPal is where our donations go before distribution to development costs. Use link or send to our email.

Patreon

Patreon is our subscription-based donation platform (currently no unique benefits for different tiers).


COMMUNITY

Discord

Discord MembersPrimary communication (devs & community). Includes helpful people, polls, & more.

Reddit

Reddit FollowersSecondary community, with smililar content to our Discord but not nearly as active.

YouTube

YouTube SubscribersWhere we upload many videos including animations, trailers, and gameplay tests.

Twitter

Twitter FollowersUsed for announcements & memes but we will start using it more for other posts eventually.


CONTRIBUTING

Open IssuesOur Dev Guide outlines setting up the project and contributing to it with various tips and guidelines.Closed Issues

Open Pull RequestsOur Art Guide outlines asset contributions like models, textures, animations, audio, etc.Closed Pull Requests

github

GitHub hosts our issues board and milestones board, both of which help manage technical tasks.

Trello

Trello hosts our task boards for asset types (3D, 2D, audio, etc.) and our management board.


LICENSING

All CODE falls under the MIT license.

All ASSETS fall under the CC BY-NC-SA 4.0 license.

ss3d's People

Contributors

alainx277 avatar binarysudoku avatar cosmiccoincidence avatar david-goru avatar dyhr avatar eikobiko avatar em3rgencylt avatar frimannloes avatar henkhooft avatar iamteapot422 avatar jckling avatar jjthegerman avatar joaoburatto avatar lucasocastro avatar madasski avatar markus-p-l avatar mjboth avatar necromunger avatar notterox avatar nsarrazin avatar onebigames avatar ryan089 avatar seteron avatar singulocity avatar sjerty avatar stilnat avatar taylornalbarnaz avatar timfinucane avatar withwater avatar xk0fe 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

ss3d's Issues

Lighting & Shadows

Static light fixtures only cast shadows on walls. Moving lights cast shadows on objects.

Player has fake shadow to accent player's position on the ground.

Memory leak

There is a memory leak somewhere causing massive unbounded memory increases.

To recreate:

  • Run game (either in unity or build & run)
  • Click LAN Host (so that a map/user is loaded)
  • Watch in task manager or equivalent for memory increases.

It only occurs when actually playing the game, not when in the menu screen.

[Task] Open External Containers

Description
The user should be able to open external containers by clicking on them. This shows the container on the UI, which allows the player to then place items in, or take items out of the container.

Multiple players should be able to interact with this container simultaneously.

Dependencies

  • Relies on #73
  • Design a look for interacting with a body (that is not the players)

Item throwing

Toggleable throwing state.
Toggle and click somewhere to throw an item. State is exited after the item is thrown.
Bonus points:
If something is thrown at you by another player and you are in the throwing state with an empty hand, you catch the item and exit the state.

Basic movement pt.2

Glaring improvements to the present movement include:
Movement needs acceleration, and it should be reflected in animation. Having the leg swing straight behind the player when a movement key is pressed looks less than ideal.
Walk/run states with different speeds and animation. Toggle walk/run with tab.

Camera Control

Camera rotates in 90 degree increments with the player in the center, player can adjust the level of zoom on the fly.

Item pickup

Item pickup animation driven by IK, may need a couple holding positions for different types of items.

[User Story] Tile Saving/Loading

Story
As a Programmer, i want to be able to serialize Tile objects, in the perspective to save them to / load them from disk. The serialization should extend to children objects such as Walls and Lattices.

Issue Link
#51

[Task] Inventory Core 2: Multi-Container Manipulation

Description

  • Have a way of moving items between containers on-screen.
  • Create a container for holding clothing/items that go onto the body.
    • items which go into the container should then appear on the player's body.

Current simplified item movement should be by click-drag, and/or by clicking an empty container slot. For players only an item currently being held can be placed anywhere.

The body container should be heavily based on the existing HandsContainer, and in fact the HandsContainer should be generalised (e.g. to VisibleContainer) so that it both containers can be based off of it.

Basic nutrition

Stomachs are beakers which contain and metabolize (over time) reagents they consume.
For now, let's just focus on nutrition. Your nutrition level effects character speed by a small percentage. Foods have a reagent called nutriment in them, which increases your nutrition when metabolized.

[User Story] Ragdoll Anchor Bones

Story
As a developper, i want to be able to define a given position for a given ragdoll bone, so that the rest of the bones can act accordingly. e.g pulling a cadaver by its hand, pulling a cord, throwing a toilet paper roll.

Issue Link
#56

Basic User Interface

Interface that shows the contents of the player's inventory. #12

UI scaling, if implemented, might look weird with normal raster images. Large images scaled down get heavily aliased, and small images scaled up look blurry. To fix this, consider alpha-tested magnification, which, according to *beep, is less complicated than it sounds.

Naive Ragdoll

Description
Create a component that makes a bone react to its environment in a coherent way.

User Story Link
#57

[Task] Ranged Item/Inventory Interaction

Description
User may only pickup/put down items, and open containers within a given range. The range should be specified in the player's Hands component.

Dependencies

  • Relies on #75

[Feature] Basic Tiles

Short Description
Tiles are the individual elements that compose the map of the station. They can be composed of multiple distinct systems that depend on it to render, synchronize and save correctly.
For this first foray into tiles, we will try to get only basic tile functionnalities going.

Hard Dependencies
None.

Soft Dependencies

  • Furnitures
  • Pipes
  • Damage System
  • Building System
  • Walls

Ragdoll Manager

Description
Create a component that manage a group of ragdoll bones, it should :

  • contain a list of its children bones
  • contain a reference to an animator
  • have a function to set the ragdoll interpolation level SetRagdollLevel(float newLevel) Note : (as the interpolation of the ragdoll is in another task, if it is not done just enable ragdolls when newLevel >= 0 )
  • permit to flag bones as synchronised, and if they are sync them across the network

User Story Link
#57

Ragdolls

Short Description
Ragdolls are an important part of the game, used in most situations where a character lose control and trips, becomes unconscious, or even suffer severe knockback.

Soft Dependencies

  • Combat
  • Movement

Label issues

Issues need labeling, be sure to do it right.

Ragdoll Anchor

Description
We should be able to define a specific GameObject or Transform that the ragdoll bone must always do its best to attain.

User Story Link
#60

[User Story] Ragdoll Manager

Story
As a developper, i want to be able to enable and disable the ragdoll of a group of bones from their parent RagdollManager.

Issue Link
#56

Ragdoll Documentation

Description
For each User Stories completed, a small guide on how to set up and use the feature should be made on Github Wikis

User Story Link
#57
#58
#59
#60

Creating documentation

There needs to be documentation for existing features and code, in two parts:

1. Code docs
Public members and functions of scripts must be listed and described in very brief detail.

2. Feature manual
Here, features are described in more detail. This is where you would put guides for how to use a given feature in code.

Character equipment

Player character can equip clothes, clothes inherit shape key values from the player character.

Movement

Characters move WASD, direction is dependent on camera angle.

Item storage

Items can contain other items -- might require a size flag to prevent infinite storage.

Ragdoll Interpolation

Description
Make it so the individual Ragdoll bones can interpolate with a given animation/animator, in the RagdollManager.

User Story Link
#57
#58

Code cleanup for warnings

Variables need to be initialized in a certain fashion, otherwise they will produce useless warnings. These warnings might lead to developers missing actually important warnings, and overall contribute to a 'messy' project.

image

Damage

Characters becoming hurt due to trauma, needs support for limb-based damage. Brute, burn, suffocation, and toxin.

Collision

Small items do not collide with each other, but do collide with large objects.

[User Story] Ragdoll-Animator Interpolation

Story
As a developper, i want to be able to set the RagdollManager to interpolate with a given animator, permitting partial animation with ragdoll properties. e.g drunken walking, combat hit, getting up from a ragdoll state.

Issue Link
#56

[Task] Custom Transform

Current NetworkTransform doesn't allow for teleportation, and so looks bad when on objects that e.g. need to be placed, as the component will attempt to interpolate between the two positions (and then give up and teleport anyway after too long a time).

Create or rewrite the NetworkTransform to allow teleportation. Could look at the original Unity NetworkTransform for inspiration, some options are:

  • Apply teleportation when the new position is very far from the old one
  • Have a public method that can be called to perform the teleportation

Clothing Containers

Description
Clothes may have containers on them, e.g. pockets, suit container slot, etc.

Containers on clothes must be accessible to the player. If on the player they should be accessible through the hotbar (for pockets) or body ui element (anything else). Yes, this means that multiple containers will appear in that element.

UI Slot Elements therefore need 3 states - not present (no container), present but holding nothing, and present and holding something. The appearance of these is to-be-discussed.

This task does NOT deal with looking at clothing containers on another body.

Dependencies

  • This task is dependent on #73
  • Designs of the look of all possible pockets on the player's body UI element
  • Appearance of item slots when there is no container for them (e.g. when player isn't wearing pants)

[User Story] Ragdoll Visual Networking

Story
As a developper, i want to be able to set specific bones up for networking synchronisation. only their position and rotation should be synchronized, and the rest is extrapolated.

Issue Link
#56

[User Story] Health

Story
As a user, I want to have my life threatened, so that SS3D isn't just a walk in the park. I need a health system that lets things damage me, and this health system must be faithful to SS13.

Issue Link
TBA

Atmosphere

Gas presence in the air.

ADDITIONAL NOTES: (as worded by Connie)

-the solution i've been most pleased with was that atmos should essentially be a gaussian blur filter running on a grid
-this way it can be run under a compute shader
-i'm assuming the atmos information from tiles will need to be exported to / held in a seperate array from the tile system for use with filter stuff
-from there, a "getAtmosAtTile(Vector2 pos)" function can be implemented or something to grab information from the computeShader

Turfs

Description
A turf defines what a tile's physical contents, it should be an abstract class or an interface permitting multiple kinds of turfs to exist and be built, themselves containing custom data about their contents.

Floor Construction

Floor needs to be able to construct. Steps:

To create catwalk:

  1. Rods + empty space = lattice

  2. Lattice + rods = catwalk

To create station floor:

  1. Rods + empty space = lattice

  2. Rods + floor tile = ground floor

  3. Ground floor + floor tile = covered ground floor

  4. Covered ground floor + floor tile = complete floor

We can go about the actual floor object in two ways.

  • Ground floor, floor cover, and floor tile all as separate objects.

or

  • Three variants of ground floor that transform into each other. (Alternatively, the top tile is separate to be interchangeable with other types of tile.)

The second option might be better for performance, especially considering the number of tiles in the station. 10,000 objects as a single object vs 30,000 objects as separate objects.

Contact me (Eiko) to let me know what you decide on so I can finalize the floor.

Botany Interactions

Just a growing process, object morphs from one thing to another.

Basic operation:

  1. Seed is planted into eligible location, (Hydroponics tray, mound of dirt, etc.)

  2. Plant will grow into different phases.

  3. Plant yields a harvest-able product at the end.

Full operation:

  1. Seed / plant holds information such as crop yield, lifespan, potency, etc.

  2. Seed is planted into eligible location, (Hydroponics tray, mound of dirt, etc.)

  3. Plant checks planter for required elements. (Water, fertilizer, no weeds.)

  4. If conditions are met, plant will grow into different phases. If conditions are not met, it will stop growing and eventually expire.

  5. Plant yields a harvest-able product at the end, inheriting properties from the plant.

Refer to this link for all the stats of plants.

Tile Map System

Any independent station, shuttle, or association of tiles constitute a TileMap.
The TileMap should be able to manage and synchronize itself between clients.

A TileMap should Contain an array of Tiles, and their associated data.
A TileMap should also provide a way to get the atmos levels at any position on itself.
A TileMap can and will move, and the objects in it should behave accordingly.
Finally, Two tilemaps should be able to connect and fuse between themselves.

TileMap collisions are not expected at this stage but should be thought about while designing the system.

Each Tile should contain none or one furniture item, the tile itself, and all the differents tile based systems (Atmos Pipes, Cables, Air Atmos, etc...).

Targeting

Aiming to hit a location on a target's body.

Ragdoll Forces

Description
We should be able, through a specialized function, to apply a force to a ragdoll bone, and have the rest of the bones react accordingly.

User Story Link
#60

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.