Welcome to the GitHub repository of the game SkyOfSteel!
SkyOfSteel is a work in progress game built on the Godot game engine with C#, currently builds with Godot Mono 3.1.1 Stable The current stable release can be downloaded at Itch.io
Contributions are welcome!
Table of Contents
- SkyOfSteel - Welcome to the GitHub repository of the game SkyOfSteel!
- Table of Contents
- A functioning installation of Godot Mono 3.1.1 Stable
Performing the Build
- Clone the git repo (or download as zip and extract)
- Cd into the project root and run
nuget restore SkyOfSteel.sln(This will pull in Newtonsoft.Json and Roslyn)
- Open the Godot editor to the project and let it reimport all the assets then hit "Play" near the upper right corner (play icon)
- The editor will proceed to build and launch the project
SkyOfSteel is a sandbox building game set in the sky. Envisioned to be a game where one can build intricate factories and sprawling supply chains while engaging in a PVP turf war with your fellow server inhabitants. Enjoy highly fluid movement while destroying others with highly powered weaponry. Fight for technological superiority as you race through a deep tech tree constantly edging out your opponents. When you tire from the vanilla game, the custom gamemode and modding support adds even more depth and content.
Currently we are remarkably far along in achieving this goal. However we are admittedly not there yet. At the moment we have a fully functional building system, chunk based world save and loading, highly stable multiplayer, Quake/Source engine style air strafing, automatic bunny hopping, wall kicking, and a rudimentary yet extremely flexible system for adding user created gamemodes.
SkyOfSteel has a gamemode modding system utilizing Roslyn to provide runtime C# compilation. The intention is to allow for fully custom gamemodes to be developed with full access to internal game APIs both server side and client side. In addition there is a full ingame REPL console.
The gamemode API has a concept of game events. Whenever something occurs ingame it is processed as an "event" which can be filtered and discarded by gamemode scripts programmatically. This allows for a great deal of flexibility before even touching the normal API.
Read more here: https://github.com/ForLoveOfCats/ModsOfSteel
Player Input Handling
All player input is routed through the binding system which depending on the input will call
a console command passing in a
float ranging between 0 and 1 (up to infinity in some cases
such as mouse movement). Key input pass in a 1 for keydown and a 0 for keyup while analog
inputs such as mouse motion pass in a 0 for no movement on the specified axis and a number
greater than 0 for motion on that axis (the number is the amount of motion).
Note: This is not restricted to built in movement and player control console commands. Any function declared in the console REPL can be bound to any key or input.
SkyOfSteel is built up of a number of singleton "libraries". Each one of these libraries deals with a portion of the game's actions and has a number of public static methods in order to be called from other libraries and classes.
Beyond these "libraries" the project directory is split up into pretty self explanatory folders
which are almost like "modules" in that they (under most conditions) contain everything related
to the folder name (ex: the
UI folder has alls GUI scenes, script, and textures). Note that
these folders are not self contained but instead all source files are pretty much entwined though
the folder names are a good indication of where to look when trying to find the implementation
of a specific feature.
This is an ambitious project with much work left to do and you can help!
Feel free to contribute in the following ways:
- Test and report bugs
- Much work has already been done and there are doubtless many bugs which remain undiscovered
- Fix reported bugs by getting down and dirty with the source code :)
- Much work is left to be done and if you feel up to it you can help!
- Contribute art and sound skills
- The term Programmer Art describes the temporary art and sound assets created hastily by those untalented in those fields in order to continue the development of a game. If you are talented in with modeling, texturing, or sound design please do contribute!
- Suggest new features
- Are you an ideas man? You can still help!
- Spread information about SkyOfSteel
- All projects need good PR :)