Search Unity

  1. Unity 2019.1 beta is now available.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. We're looking for insight from anyone who has experience with game testing to help us better Unity. Take our survey here. If chosen to participate you'll be entered into a sweepstake to win an Amazon gift card.
    Dismiss Notice
  4. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  5. Unity 2018.3 is now released.
    Dismiss Notice
  6. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice

Assets [WIP] Sci-Fi Ship Controller - Beta Registration Now Open

Discussion in 'Works In Progress' started by sstrong, Dec 7, 2018.

  1. sstrong


    Oct 16, 2013

    Discord Channel

    From the makers of Landscape Builder, and LB Enviro Pack 1, comes a brand new asset full of technical know-how and goodness.

    Popularized by the Star Wars saga, complex space planes which can move between planet surfaces and space with ease, are now the staple diet of gamers worldwide. The maths is extreme, which is why we take care of this for you.

    NASA would call this a Space Plane controller. It can control a "craft" like an airplane while inside a planet's atmosphere, but can also act like a spaceship while in space.

    What is Sci-Fi Ship Controller?
    Sci-Fi Ship Controller is an asset that allows you to quickly and easily turn your ship models into fully-functioning, flying ships.

    How do I use it in Unity?
    Currently, it consists of two main modules: The Ship Control Module and the Player Input Module. The Ship Control Module is a script that can be added to ship models to turn them into flyable ships, complete with all the parameters needed to tweak their behaviour to your liking. The Player Input Module is a script that can be added to any ship with the Ship Control Module already attached to map inputs from the Unity input manager and other input sources to the Ship Control Module in order to let a player control the ship.

    Why should I use Sci-Fi Ship Controller instead of another asset?
    One of the main things we've worked really hard on with Sci-Fi Ship Controller is its ease of use. All the parameters in the modules are arranged logically and have headers describing their functionality. In addition to this, every editable parameter has an associated tooltip, so if you're unsure about what something does you can simply hover your mouse over it and get a brief description. We've also tried to write Sci-Fi Ship Controller in a way that makes sense to all game developers, not just ones that have a degree in aerodynamic engineering or physics. We'll continue to work on this aspect throughout the beta: Your feedback matters to us.

    One of the other strengths of Sci-Fi Ship Controller is its versatility. It isn't an asset JUST for arcade spaceships, JUST for aircraft or JUST for hover-ships: If it flies, then there's a good chance you can make it with our asset (and if you can't, feel free to let us know so that we have to opportunity to improve Sci-Fi Ship Controller in that regard).

    As well as this, Sci-Fi Ship Controller is completely physics-based. All movements are driven by Unity's built-in physics, which provides a great feel for players and ensures you won't encounter any strange behaviour caused by our asset fighting with the physics engine.

    Finally, Sci-Fi Ship Controller is designed from the ground up for performance. We've tried as much as possible to follow best practice and avoid expensive allocations and function calls, so Sci-Fi Ship Controller should only comprise a minimal part of your performance budget.

    OK, but why is there a beta for this thing, and why should I sign up for it?
    As mentioned before, we really want your feedback on Sci-Fi Ship Controller: What works, what doesn't and what needs improvement. Since we designed Sci-Fi Ship Controller to be used in games, we want to test how it works in actual games, and see how it can be improved to suit the workflows of game developers.

    As for why you should sign up for it, you'll be able to use the early versions of Sci-Fi Ship Controller in the beta for free! There will also be lots of opportunities to let us know which of the planned features you want us to implement first, as well as any other features you think would be useful. You'll be able to provide feedback on systems that don't work as well as they could and suggest improvements for the features that work well.

    When is the beta coming out?
    The beta is available now. Private message me with your name and email address to sign-up.
    Last edited: Dec 30, 2018
    rubble1 and antoripa like this.
  2. Dave_2000


    Oct 17, 2015
    Currently implemented features (will be available in the first beta):

    Wide range of supported ship types, for a variety of games
    - 6 degrees-of-freedom spaceships
    - Limited degrees-of-freedom spaceships (i.e. always oriented upwards)
    - Physically realistic aircraft (aeroplanes, fighter jets, etc.)
    - Anti-gravity futuristic racing craft (such as in the Wipeout and F-Zero series)
    - Ground-based endless runner ships
    - Spaceplanes
    - And more!

    Physics-driven controller
    - All motion is completely driven by physics, resulting in a smooth and natural feel
    - Two selectable modes: physics-based and arcade
    - Physics-based allows you to create physically realistic craft, only exposing realistic options to the developer
    - Arcade maintains the same physics-driven control while exposing a number of options to allow for different gameplay styles

    Configurable input system
    - Easily configure inputs from the keyboard or the unity input system to pass to player ships using the player input module
    - Intuitively map inputs to thrusters with just a few clicks
    - Control surfaces and arcade rotation inputs are automatically configured correctly from the player input module

    Extensive suite of control modifiers to suit your game
    - Rotational and translational flight assists to make flight a more intuitive experience for players
    - "Limit pitch/roll" feature: Ship is limited to a certain range of pitch and roll. Roll can either be controlled by yaw (turning) input or strafe (moving) input
    - "Stick to ground surface" feature: When a ground surface is detected underneath, the ship attempts to maintain a certain distance from the ground surface and orients itself to the ground surface
    - Behaviour can easily be tweaked with a small number of parameters

    Realistic aerodynamic simulation
    - Profile drag and angular drag properties calculated from your ship model
    - Editable profile drag and angular drag coefficients
    - Ability to add any number of wings to a ship, with basic lift and induced drag simulation
    - Stalling effect (adjustable in arcade mode)
    - Ability to add any number of control surfaces to a ship. Current control surfaces available are ailerons, elevators, rudders and air brakes

    Visual interface for faster development
    - Thrusters, wings, control surfaces and centre of mass all visible and adjustable in the scene view
    - Intuitive editing processes fully integrated with the usual Unity tools (move, scale, rotate etc.)

    Prioritised ease of use for developers
    - Tooltips for all editor parameters, along with headers in the editor explaining features
    - Doesn't have lots of difficult-to-use technical parameters

    Features that will be developed during the beta:

    Weapons system
    - Ability to add any number of configurable weapon components to a ship
    - Configurable inputs for weapons (i.e. primary and secondary fire)
    - Standard and guided projectiles
    - Pooling system for projectiles

    Damage system
    - Health/shields for ships
    - Respawning

    User support
    - In-depth documentation of all features
    - Tutorial videos
    - Lots of demo ships/scenes with example setup and gameplay

    - Rewired integration
    - More control surfaces (i.e. air brakes for steering, custom control surfaces)
    - Scripting API for scripted inputs, modification of values at runtime and runtime creation of ships
    - Editors to make setup of ships easier
    Last edited: Dec 8, 2018
  3. sstrong


    Oct 16, 2013
  4. Dave_2000


    Oct 17, 2015
    Hello, fellow Unity developers!

    I'm David, one of the developers of Sci-Fi Ship Controller. As mentioned previously, we are about to release a beta version of the product for people to test, so I thought I'd write a post to talk a bit more about what the workflow of Sci-Fi Ship Controller is like, specifically the Ship Control Module. It won't be an exhaustive rundown of all features, but it should give a bit more information about whether it's something applicable to your game.

    Getting Started

    With Sci-Fi Ship Controller, we've tried really hard to make the ship setup process as simple and easy as possible. As such, to convert one of your existing objects to use the ship flight mechanics of Sci-Fi Ship Controller, you simply add the Ship Control Module as you would any other script.

    Adding Ship Control Module.png

    Once the Ship Control Module script has been added to the ship, the ship's behaviour can be tweaked using the four tabs: Physics, Control, Thrusters and Aero.

    The Physics Tab

    Physics Tab.png

    The physics tab (shown in the screenshot above) is usually a good place to start when setting up a ship, as it contains a lot of the basics. Here you can specify the mass of the ship, as well as the strength and direction of gravity acting upon the ship. You can also specify whether Unity should set the centre of mass of the ship automatically or if you want to set it manually. Probably the most important value to start with is the one at the top, however: The physics model. The physics model determines what options are available for ship control and behaviour. There are two options currently available: Physics-based and arcade. Physics-based mode is best employed for games aiming to achieve a large degree of realism, or at the very least evoke a sense of realism from players. In general, only physically realistic options are available. Arcade mode, on the other hand, provides a number of extra options to enhance ship feel and gameplay while removing certain behaviours entirely in order to make ship setup and control easier. For example, the screenshot above shows the pitch/roll/yaw acceleration and turn acceleration options, which are only available in arcade mode. Pitch/roll/yaw acceleration values directly determine how quickly the ship rotates on each axis - in physics based mode rotations can only be achieved indirectly via the use of thrusters (more on that later). Turn acceleration adds force inputs to a ship based on its motion in order to make the ship's velocity more in line with the way it is facing, which is common in a lot of flight games as it makes flight control and movement a lot more intuitive for players.

    The Control Tab

    Control Tab.png

    The control tab (show in the screenshot above) is typically the next stop in the setup of a ship. For some ships, the control setup is very simple, while in others (such as the classic hovership shown in the screenshot above) the control setup is more complicated. Essentially, the control tab is used for used for setting up any input control that the computer will do instead of the player. This includes input assists (such as the rotational flight assist) which make flight easier for players, as well as control modifiers that allow more interesting behaviour to occur (such as stick to ground surface, which controls the pitch, roll and vertical inputs of the ship to allow it to orient itself to the ground surface and maintain a given distance from it). The control tab determines a lot of the behaviour of the ship related to gameplay.

    The Thrusters Tab

    Thrusters Tab.png

    The thrusters tab (shown in the screenshot above) is exactly what it sounds like: It's where you set up your ship's thrusters. Each thruster has a vector direction and a force amount specified, and is linked to the various player inputs via the selection of which force direction and (in physics-based mode) moment directions (read: rotations) the thruster is able to move the ship in (this can be set up automatically using the auto-populate forces and moments button). An effects object can also be specified for each thruster to link it with effects to be triggered when the thruster is in use.

    The Aero Tab

    Aero Tab.png

    The aero tab (shown in the screenshot above) is where you determine how your ship interacts with the air around it (its aerodynamic properties). This can be through altering environmental properties (the medium density), the drag properties (how moving through the air slows the ship down on each axis) or by adding wings and control surfaces. Wings simulate the effect of parts moving through the air generating lift (upwards force); their properties are controlled by changing the size and angle of attack (inclination) of the wing, as well as the stall effect (how much the effect of stalling affects the wings of the ship). Control surfaces are moving parts that change the aerodynamic properties of the ship in order to let the pilot control it, such as ailerons, rudders and air brakes. Control surfaces are automatically linked to the correct player inputs based on the type of control surface and where it is positioned relative to the centre of mass of the ship.

    That's it from me for now. However, if you have any questions about Sci-Fi Ship Controller feel free to ask them in the forum (or in the Discord channel linked in the first post!).
    sstrong, Mark_01 and alexanderameye like this.
  5. sstrong


    Oct 16, 2013

    We are now accepting registrations for the Sci-Fi Ship Controller beta. Please private message me your name and email address (don't post it directly in the forum). Shortly we'll be providing you access to the beta version.
  6. Dave_2000


    Oct 17, 2015
    Hi again!

    Today I'd like to show a bit more about how you can edit the ships of Sci-Fi Ship Controller directly from the scene view. Before I do however, I'd like to give a big thanks to everyone who has signed up for the beta so far. Your testing and feedback is really valuable to us - it's great to have you on board.

    In-Scene Editing

    Sci-Fi Ship Controller has a number of features that support in-scene editing for more intuitive development. The screenshots below will hopefully show this more clearly.

    Arcade Explorer Editor Gizmos.png

    The screenshot above shows the in-scene view for an arcade-styled exploration ship. As you can see, there are a number of coloured spheres and other indicators spaced around the craft. These can all be selected and moved/rotated/scaled (different options are available based on the context) using the standard Unity editor tools. The colours indicate what type of object or property each indicator controls. For instance, purple indicators are for thrusters while the yellow indicators are for control surfaces (in this case the yellow indicator in the screenshot represents an air brake).

    The next screenshot shows a more complicated setup, this time for a more realistic representation of a jet airliner. This craft has a lot more control surfaces, as well as two wings (shown by the cyan indicators). The wing on the right is currently selected with the move tool, which can be dragged around in the scene view to adjust the wing's position.

    Jet Airliner Editor Gizmos.png

    Here's a quick video of the editing process in action:

    In the video you can also see the aerodynamic guides in action (the dotted lines). The cyan dotted line represents the centre of lift of the ship, while the purple dotted line represents the centre of thrust of the ship. As can be seen in the video, they are updated in real time when you move ship components around in the scene. In conjunction with the centre of mass (the grey sphere) they can help you position your thruster and wing components correctly in order to get the desired flight behaviour.

    That's all for now, I'll be back soon with some more forum posts with more information on the current features we have available in the beta and some of the new stuff we're developing. Just a quick reminder that beta registrations are now open; just private message sstrong with your name and email address. Also, feel free to drop us a line in our Discord channel (linked in the first post).
  7. sstrong


    Oct 16, 2013
    Demo Video

  8. sstrong


    Oct 16, 2013
    Rewired Support

    We have just added Rewired support in our Player Input Module.


    If using SSC with Rewired and Xbox One controllers with Windows Standalone or UWP Store builds, you may wish to setup a Rewired Gamepad Template. This is not specific to Sci-Fi Ship Controller, but it may save you some time due to how Windows works with Xinput.

    Here is a suggested mapping with the current SSC beta. The Player Input Module works for both Axis and Button input. It has been tested with Keyboard Maps and Joystick Maps in Rewired. If you see any issues, please let us know.

    At runtime in the Unity Editor, the Player Input Module has a Debug Mode which will help you identify what input data is being set to the Ship Control Module based on your configuration.

    Mark_01 likes this.
  9. sstrong


    Oct 16, 2013
    Oculus API support

    We've added provisional support for the Oculus API. If anyone has any Oculus VR headsets and controllers and would like to help test that, please let us know.
  10. sstrong


    Oct 16, 2013
    Xbox One, UWP, Creators Program

    We have tested Sci-Fi Ship Controller on Xbox One as an Universal Windows Platform app with Rewired as the Player Input Module input source. This was done on a retail Xbox One device in dev mode.

    For more information on Xbox One, UWP and the Creators Program, see here.
  11. HeadClot88


    Jul 3, 2012
    Will this be compatible with the new input system that is coming in Unity 2019.1?
  12. Dave_2000


    Oct 17, 2015
    Yes. Currently we support direct keyboard input, the old unity input system, rewired and VR input (Oculus and Vive), but in the next few months before release we'll be adding support for the new unity input system. If it's a feature you'd get a lot of use out of, we can prioritise it as a feature and work on it sooner.