Code Monkey home page Code Monkey logo

skyofsteel's People

Contributors

finntheturkey avatar forloveofcats avatar redstoneparadox avatar stenodyon 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skyofsteel's Issues

Item drops/pickups

Items need to be able to be:

  • Dropped on the ground
  • Sliding physics
  • Networked dropping
  • Net load on world load
  • Picked up (and added to the player's inventory)
  • Networked picking up
  • Stacked when on the ground (automatically grouped together as a single bundle when close enough together)

And of course this all has to be network safe

Playerlist UI

By holding a key (tab by default) players should be able to see a list of all players on the server. This UI should update in realtime and display usernames from #24.

Add proper main menu

SkyOfSteel needs a true main menu. It should run console commands to perform actions such as hosting and connecting to a server.

Ingame license information

The credits menu should have a submenu with full text copies of the Godot, Roslyn, Newtonsoft.Json, and other's licenses in order to comply primarily with the requirements of Godot's and Newtonsoft.Json's MIT requirements. It should also be mentioned that SkyOfSteel is also MIT and have the full text of SkyOfSteel's license. This is a reminder to myself to make sure this is done before 0.1.2 is released.

World chunks

The world must be split into 9x9 (platforms) sized chunks so that only nearby areas need to be send to new clients.

Precompile item ghost material

On some systems (Linux machines with AMD GPU and recent Mesa such as my own system) showing the item ghost for the first time causes a FPS hitch/stutter. Should be solvable by showing the ghost for a few frames on world startup.

Rewrite player movement internals

The core design concepts are sound however currently the movement code is a mess of spaghetti with several major bugs which are rather difficult to fix with the current code.

World saving

The world must be saveable and loadable at runtime without loosing important information.

Requires #8

Expanded modding API

The core modding API systems are in place and all current ingame actions are piped to the mod scripts. However the function list needs great expanding.

Add items at runtime

There should be a way for gamemodes to add new items to the game. This will be tricky as this should include building. How this should be done it TBD. Definitely a post 0.1.2 thing.

Fly mode

The host and admin players should be able to grant the ability to fly to players. Admins and the host should always have this ability.

Redesign bind system

The current bind internals are a bit messing and have a few areas where failure could be easily introduced in the future. This must be remedied in addition to moving from (FunctionName, Key) to (Key, FunctionName). This has already been done cosmetically with 7c37081 but the internal behavior has not changed. This is important as (Key, FunctionName) allows us (by implying to the user) that multiple keys can be bound to the same action but only one action per key (which is required for controller support as the system should allow the keyboard and controller to both drive the same actions).

Noclip mode

The host and admins should be able to grant players (who already have the ability to fly) the ability to noclip.

Connecting attempt timeout

The connect menu should show a timeout while attempting to connect and when this timeout is reached it should close the connection and alert the user that it could not connect to the supplied IP address.

Ingame nicknames

Players should be able to set their nickname which would be displayed over their head for other players among other uses.

Feature Proposal: Ingame Chat

We should add ingame chat so players can communicate to each other via text. Also I think another great feature would be chat commands!

Electrical power grid gameplay

Currently I'm just thinking of an area of effect from a powerpole type item as the method of powering machines. Would be dreadfully easy to implement but would be difficult to explain way in-universe as well as "leaking" power through the walls of your base for attackers to possibly use. The only alternative I can think of is manually wiring up each machine to a powerline which would be very cool and open up some TUNG/Logic World type things but I can imaging it being annoying on the large scale. Any thoughts or ideas?

Fix player movement sync jitter

Currently other players appear to jitter while moving and rotating. This is present even when connected to localhost. Must investigate further.

GUI theme

The ingame GUI currently uses the default Godot theme. This should be changed.

Liquid pumping gameplay and implimentation

This is a complicated one. SkyOfSteel will have several types of liquids which must be pumped around (water, oil, fuel, molten metal, ect) and we need to figure out how this should be presented to the players and then how to implement it. We could cheap out and simply make them normal items but I feel this could done in a more interesting way with more gameplay opportunities. I'm just not quite sure what or how. Any input is greatly appreciated.

Central Authentication Server

Currently, Sky of Steel does not offer any sort of authentication system to verify your identity. While this is not a problem for playing singleplayer or joining a friend's server. However, people may eventually want to make larger servers and it's harder to moderate servers if there are no accounts to ban/mute/etc. Additionally, any given server requires a way to persistently identify players between sessions in order to store their player data persistently.

I suggest that a central authentication server be created using Azure PlayFab or a similar service and the multiplayer aspect of Sky of Steel should require authentication. Of course, we could also make it so that server owners can disable the auth requirement and just resort to nickname checking if they want.

Side Note: this solve #52

Player identity verification

Players will need some sort of way to prove to the server who they are. Server specific passwords last MineTest does it?

Stretch walls to be full height

Currently walls are shorter on the top and bottom to allow for platforms and slopes to fit together with the walls without intersecting. Now that only collisions with Structures of the same type prevent placing, walls can be resized to full size without issue. This will resolve this odd gap
image

Wall kicking

Wall kicking means to jump off a wall for a boost away from the wall and upwards.

This is already done with 93eb13d this bug is just so I can put it in the Done list.

Player input speed boost

When rotating the controller movement joystick in smooth circles while in the air one can gain a bunch of speed without air strafing, can also be achieved to a lesser extent with WASD. Perhaps normalize WishDir?

Signs

Players should be able to build signs which can then be written on.

Pipe system design community review

This is an overview of what I plan for the pipe system both gameplay wise and implementation.

A pipe collection can have numerous inputs but only one output (same for each segment, for example a T-Pipe can have two inputs but only one output), each pipe segment knows which pipe is the output and how many pipe segments away it is from the output pipe. When an input is fed to a pipe it checks that the endpoint output and connected machine are both ready, gives it to the machine connected to the output, and sets a cooldown on the output based on the input's distance from the output. (This cooldown effects the whole collection as this is what was checked at the beginning when checking that the output is ready.)

Each pipe scene will have specific Point3d nodes designating the connection points, which are to be in the scene under a specific Node for easily being grabbed during the pipe's _Ready method. When a pipe is placed it will check adjacent grid spaces for pipes and see if any of their input connection points match up with the output connection point on the pipe being placed. If so the new pipe will set it's internal distance to be the connected old pipe's distance+1 and it's endpoint output is set to the same endpoint output as the old pipe.

Grant admin as host

The host should be able to grant admin to other players. These admin players would then be able to run console commands on the host.

Gamemode/Mod list in the menu

It would be helpful to have the list of (successfully loaded) mods and gamemodes in the menu,
to verify their correct installation.

Error protect bind system

  • The bind system currently will crash the game when attempting to call a non-existant function.
  • The bind system should prevent duplicated function bindings.

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.