forloveofcats / skyofsteel Goto Github PK
View Code? Open in Web Editor NEWGit repo and bug tracker for SkyOfSteel
Home Page: https://skyofsteel.org
License: MIT License
Git repo and bug tracker for SkyOfSteel
Home Page: https://skyofsteel.org
License: MIT License
Items need to be able to be:
And of course this all has to be network safe
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.
SkyOfSteel needs a true main menu. It should run console commands to perform actions such as hosting and connecting to a server.
Right now, when one cancels connecting, the game goes back to the main menu. I think it would be an improvement on user experience to have the game go back to the connection menu, with the IP remembered.
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.
The world must be split into 9x9 (platforms) sized chunks so that only nearby areas need to be send to new clients.
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.
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.
The world must be saveable and loadable at runtime without loosing important information.
Requires #8
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.
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.
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.
This is just for the todo list
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).
The host and admins should be able to grant players (who already have the ability to fly) the ability to noclip.
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.
Players should be able to set their nickname which would be displayed over their head for other players among other uses.
We should add ingame chat so players can communicate to each other via text. Also I think another great feature would be chat commands!
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?
Currently other players appear to jitter while moving and rotating. This is present even when connected to localhost. Must investigate further.
The ingame GUI currently uses the default Godot theme. This should be changed.
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.
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
Veryyyyyyyyyyyyy long term
Players will need some sort of way to prove to the server who they are. Server specific passwords last MineTest does it?
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.
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?
Players should be able to build signs which can then be written on.
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.
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.
It would be helpful to have the list of (successfully loaded) mods and gamemodes in the menu,
to verify their correct installation.
Just a reminder to myself to fix this after merging the CsharpScripting branch
Basically add a dynamic
variable called Gm
to API
which the gamemode can set the instance of with a custom class. Then users can call the methods with Gm.MethodName()
Game currently has zero audio files and/or effects.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.