Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Controller [Released] Sci-Fi Ship Controller - A versatile physics-based controller with playable demos, AI...

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

  1. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    ssc_promo02.png

    Discord Channel | Website | Asset Store

    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 three main modules: The Ship Control Module, the Player Input Module, and the Ship AI 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).

    Sci-Fi Ship Controller includes an extensive, documented, runtime API with many C# examples.

    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. The Combat system supports DOTS (Entities, Jobs, Burst Compiler in Unity 2019.1).

    Beta Program
    Get early access to all new great features that we're developing. Also influence what features we are adding in the next release. Open to all who have purchased Sci-Fi Ship Controller. Private message me with your name, Unity invoice number(s), and email address to sign-up.



    Playable Tech Demos

    AG SSC Racer
    SSC Tech2
     
    Last edited: Jul 11, 2023
  2. Dave_2000

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    Currently implemented features (available as of version 1.1.0):

    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
    - Support for new Unity input system
    - Support for VR input systems (Oculus and Vive)
    - Rewired integration

    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

    Weapons system
    - Ability to add any number of configurable weapon components to a ship
    - Configurable inputs for weapons (i.e. primary and secondary fire)
    - Pooling system for projectiles
    - Option to use DOTS (a.k.a. ECS) for projectiles
    - Turrets that can track a specified target

    Damage system
    - Simple damage model - take damage up until a point then respawn
    - Progressive damage - damage can affect performance of ship parts such as thrusters and weapons
    - Localised damage - depending on where the ship takes damage, different parts are affected
    - Global / localised shields for ships - can absorb damage before ship/part health is affected
    - Ability to spawn explosion prefabs etc. when ships are destroyed or projectiles collide with objects

    AI system
    - Flexible state-based system for AI control of ships
    - Default states: Idle, Move To and Dogfight
    - A variety of default behaviours that can be used in states such as pursuit, evasion, obstacle avoidance and path following
    - Location and path system to allow loose or fine control of your ships’ movement
    - Simple API for initiating state transitions and setting state parameters
    - Ability to write custom states and behaviours to suit the specific needs of your game

    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
    - In-depth documentation of all features

    Other
    - Scripting API for scripted inputs, modification of values at runtime and runtime creation of ships
    - Tutorial videos
    - Demo ships/scenes with example setup and gameplay

    Features targeted for future releases:

    AI improvements
    - Radar system for tracking allies and enemies
    - More default states and behaviours (let us know what you want!)
    - Individual AI characteristics (speed, skill, etc.)

    Weapons
    - Allow projectiles to collide with DOTS physics colliders (NOTE: coming in version 1.1.1)
     
    Last edited: Jan 14, 2020
    julianr likes this.
  3. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
  4. Dave_2000

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    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

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    BETA REGISTRATION NOW OPEN

    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

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    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

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Demo Video

     
    JFI66 likes this.
  8. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Rewired Support

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

    upload_2018-12-31_8-39-50.png

    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.

    upload_2019-4-25_16-3-36.png
     
    Last edited: Apr 25, 2019
    Mark_01 likes this.
  9. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    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

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    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

    HeadClot88

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

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    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.
     
  13. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Primary and Secondary Weapon Fire inputs for Keyboard, VIVE, Oculus, and Rewired

    We've recently added support for primary and secondary (weapon) fire buttons.

    In VIVE VR, we've also added support for body actions. So, for example, the space ship could pitch up by looking up or down.

    upload_2019-4-13_13-52-29.png upload_2019-4-13_13-52-57.png upload_2019-4-13_13-53-30.png upload_2019-4-13_13-54-1.png
     
  14. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Beta 0.2.0 is available

    There is a lot of new content which we'll provide more details in future posts.
    • Unity 2019.1 support (also supports 2017.2+)
    • Damage system: Simple damage model
    • API calls to cause damage
    • Collision damage
    • Ship respawning system
    • Weapon inputs - keyboard, VR (Vive + Occulus API), Rewired
    • Projectile system - Non-pooled, pooling system, or DOTS [Entities, Jobs, Burst compiler]
    • Weapons components
    • Editor improvements
    • Support for HDRP and LWRP (requires 2019.1)
     
  15. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    [HOW TO] Setup Projectiles for use with the Combat System
    1. Create a prefab for the projectile (to get started you could use a small sphere)
    2. Add the Projectile Module script to the prefab
    3. On you space craft, in the Ship Control Module, go to the Combat tab
    4. Add at least one Weapon
    5. Add the Projectile prefab to the weapon
    6. Set the Firing Button (this must also be setup in the Player Input Module)
     
  16. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    [HOW TO] Setup Projectiles to use DOTS/ECS

    1. In Unity 2019.1.0f2 or newer open Package Manager
    2. Install the following packages (or newer)
    • Collections 0.0.9 preview 17
    • Mathematics 1.0.0 preview 1
    • Jobs 0.0.7 preview 10
    • Entities 0.0.12 preview 30
    • Hybrid Renderer 0.0.1-preview.10
    • Burst 1.0.0-preview.12
    3. On the projectile prefab, enable DOTS
     
  17. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    We found a small issue with the Anti-gravity Racer Demo so have uploaded a new version (0.2.1 Beta 1a).
     
  18. Dave_2000

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    Progressive Ship Component Damage

    For the next beta (0.3.0), we're adding support for progressive and/or localised damage of components on the ship (thrusters, wings, control surfaces and weapons). So when the ship gets damaged, the performance of the parts on the ship also decreases to reflect that damage.

    Screenshot (141).png

    In the coming beta, you'll be able to select the "progressive" damage model, allowing you to selectively mark components of your ship to "use progressive damage" (see the screenshot above for two thrusters). From there you can choose the minimum performance level (how badly the parts can be damaged) and their starting "health" value (how easily they can be damaged).
     
    Last edited: Apr 22, 2019
    HeadClot88 likes this.
  19. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Coming in v0.3.0
    • Fixed Projectile spawning rotation with DOTS (ECS, Jobs, Burst Compiler)
    • Effects for Projectile collisions (Pooled, Non-Pooled, DOTS)
    • Ship components or parts can have a progressive damage
    • Ships can have shielding (see Combat tab on the Ship Control Module)
    • When ships are destroyed you can add an optional effect (e.g. explosion FX)
    • Weapons and Wings can have custom names
     
  20. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Using Sony Dual Shock 4 with SSC

    If you don't have an Xbox One controller, but have a Sony Dual Shock 4, you are all set. You can use the legacy Unity Input method or, if you have the excellent Rewired asset, then the Sony controller will work with the suggestion config here.

    To connect your Sony controller to a Windows 10 PC, follow these steps:

    Wired

    Use a micro-USB to USB cable, plug the small end into the controller and the regular USB into your PC. Your controller is now ready! How easy is that?!

    Wireless
    1. Make sure the Sony Dual Shock 4 controller is fully charged
    2. Turn the controller off
    3. On the Windows 10 PC make sure Bluetooth is enabled
    4. On Windows 10 PC type "Bluetooth and other device settings" in search bar (bottom left of screen)
    5. Click "Add Bluetooth or other device"
    6. Click "Bluetooth"
    7. On Sony controller, press the "Playstation" button (button between joysticks) and the "Share" button (just to the right of left arrow pad on the top left of the controller).
    8. The light bar on the front of the controller should start flashing.
    9. When "Wireless Controller" or "Input" appears, click on it. Windows 10 will then automatically pair the controller with the PC.
    10. Now, you're good to go!
     
  21. Deleted User

    Deleted User

    Guest

    you may garner more interest, if you use a camera that highlights the vehicles flight characteristics, also, a cockpit view is pretty important, in this genre.
    p-
     
    HeadClot88 likes this.
  22. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    In version 0.3.0 Beta 4a+ there is a fix for a DOTS (Data-Orientated Tech Stack) timing issue when firing projectiles from any of the weapons.

    This issue occurs in Unity 2019.1 when you select DOTS in one or more projectile prefab Projectile Module scripts. It is noticeable if you have a low projectile speed.

    Unless you use projectiles with custom scripts attached, we'd highly recommend enabling DOTS. In the background, we convert regular gameobjects into Entities and use the C# Job System and Burst Compiler to get massive performance gains. You can still use special effects like explosions with your projectiles or missiles by added them to the projectile prefab module scripts in the Unity inspector.

    Don't forget to remove any colliders from your projectile prefabs as these aren't required with Sci-Fi Ship Controller.

    upload_2019-5-4_12-46-10.png

    Here I use a 3rd party missile model with SSC and the weapon system. Sample Effects Objects are included with SSC.
     
  23. Dave_2000

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    Performance

    As of late we've been testing the performance of Sci-Fi Ship Controller. Our intention with Sci-Fi Ship Controller was always to deliver an extremely lightweight (performance-wise) ship control asset, which is particularly key when you want to create really big space battles.

    Here is a screenshot of a demo scene we're using at the moment to benchmark our performance:

    SSC 0-3-0 Beta 7d Benchmarking.png
    In this demo scene, there are 125 (!) AI-controlled ships (using some prototype AI code we're developing) flying around, all targeting a specific other ship and continuously firing at it with two rapid-fire weapons. The projectiles are using simple pooling (not DOTS) with a maximum pool size of 1000 projectiles, and the Unity version is 2017.2. The demo easily runs above 60 FPS on my i5-powered Windows surface laptop (not exactly gaming spec!). Here are some performance numbers:

    Fixed update:

    Ship Control Module: 1.10 ms for 126 calls = 0.0087 ms per ship
    Projectile Module: 3.15 ms for 994 calls = 0.0032 ms per projectile

    Update:

    Ship Control Module: 1-2 ms for 126 calls = 0.008-0.016 ms per ship

    Total (assuming 50 FPS, fixed update in sync with update):

    Ship Control Module: 2-3 ms for 126 calls = 0.016-0.023 ms per ship

    Keep in mind that all these numbers come from code that is still a work in progress. We're still looking to improve performance as development continues. This data was also gathered using the profiler inside Unity, so there is some overhead from that. It is also important to note that performance will vary slightly depending on what features you have enabled for each ship (some such as aerodynamic effects will increase performance cost). However, the performance cost will likely not be hugely higher than what is seen here.

    We also conducted a similar test with a more powerful machine (probably about a medium-spec gaming computer). The specs are as follows:
    - Intel i7-8700
    -16GB RAM
    - GeForce GTX 1070
    - video 8GB

    In this test, we had 1000 ships - 8 times as many as in the previous test. This time the data was gathered using a development build with the Autoconnect profiler. The Unity version is 2019.1. Here are the performance numbers:

    Fixed update:

    Ship Control Module: 3.7 ms for 1000 calls = 0.0037 ms per ship
    Projectile Module (using pooling, max pool size of 1000): 0.8 ms for 1000 calls = 0.0008 ms per projectile
    Projectile Module (using DOTS, no limit on projectiles): 1.1-1.3 ms for 4000 projectiles = 0.000275-0.000325 ms per projectile

    Update:

    Ship Control Module: 1.4 ms for 1000 calls = 0.0014 ms per ship

    Total:

    Ship Control Module: 0.0051 ms per ship

    If you haven't tried the beta yet, you can get it by private messaging sstrong with your name and email address. We'd really like to hear your feedback on it, so that we can develop the best ship control asset possible!
     
    Last edited: Jun 24, 2019
    HeadClot88 likes this.
  24. Dave_2000

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    Beta 0.3.0 Release

    Beta 0.3.0 is now available if you're part of the beta program. If you're not part of the beta program, it's still not too late to join! Just private message sstrong with your name and email address to join. Any feedback you can give is really valuable to us.

    Here's what we've added since 0.2.0:
    • Progressive damage model: New damage model that allows the performance of certain ship parts (i.e. thrusters, wings, weapons) to decrease as the ship takes damage
    • Localised damage model: New damage model that allows different "regions" of the ship to be damaged independently of each other. Similar to the progressive damage model, the performance of ship parts specified for that region can be set to decrease as the region takes damage
    • Shielding: New feature that allows the ship/region to "absorb" damage (up to a specified point) without it affecting the performance of ship parts / being registered as damage to the ship/region
    • Effects objects: Similar system to projectiles for spawning (and optionally pooling) objects to be used for effects i.e. explosions
    • Ship destruction effects: Once ship is destroyed, a "destruction" effects object can be spawned in its place i.e. an explosion particle system
    • Projectile destruction effects: Once projectile collides with something, an effects object can be spawned in its place i.e. some sparks particles
    • Arcade-mode brakes: New brake component added for arcade mode to replace more complicated control surface air brakes. Arcade brakes can ignore the medium density (so they work in space) and have a min acceleration value to make stopping completely easier / more intuitive
    • Ship collision damage: Damage given to the ship during collisions is now much more physically accurate (and as a result also more predictable)
    • Projectile gravity: Projectiles can now be optionally affected by gravity
    • Various performance improvements and bug fixes
     
    Last edited: May 24, 2019
    HeadClot88 likes this.
  25. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Slow Moving Large Spaceships

    For large, slow-moving ships, like battle cruisers or command ships, it can be useful to restrict the rate they can turn in 3 dimensions. This gives them a more natural feel.

    In the Ship Control Module editor, on the "Physics" tab, when the Physics Mode is set to "Arcade", adjust the Pitch, Roll, and/or Yaw acceleration rates. Small numbers will give the user the impression they are piloting a large, heavy space ship. Default values around 100 are more suited to fighter-style craft.

    upload_2019-6-1_17-23-11.png
     
    HeadClot88 likes this.
  26. Dave_2000

    Dave_2000

    Joined:
    Oct 17, 2015
    Posts:
    52
    Ship Camera Module (new for 0.4.0)

    For Beta 0.4.0 we're introducing a new module to provide basic camera control (called the Ship Camera Module). So instead of the fixed camera position we've had up until now, we'll be able to deliver smooth camera movement out of the box at release.

    Below is a screenshot of the component editor:

    ShipCameraModuleEditor.png

    The camera module can be configured to follow a given ship, targeting a given position relative to that ship (so it could be configured to follow a point behind the ship for a third-person camera or a point inside a ship for a first-person camera). Rotation-wise, it supports three different modes:
    • Follow target rotation: The camera tries to face the direction the ship is facing
    • Follow target velocity: The camera tries to face the direction the ship is moving in. If the ship velocity is below a certain speed, it defaults back to the follow target rotation behaviour
    • Aim at target: The camera tries to face towards the ship itself
    There is also an option for the camera to "orient upwards" so that for instance it doesn't tilt when the ship rolls left or right.

    There are separate configurable move and turn speeds (for how quickly the camera moves and rotates to match the target position and rotation respectively). You can also set the camera to lock to the target position or rotation (emulating the previous fixed camera behaviour).

    Below is a screenshot of the new camera module in action:

    ShipCameraModuleGame.png

    This screenshot was taken while the ship was turning sharply. You can see that the camera doesn't instantly move to the new target position. This makes camera movement feel a lot more natural and also gives a sense of movement and speed to the player during turns and accelerations.

    When Beta 0.4.0 releases, you'll be able to use the new camera module by simply attaching it to a camera and setting the target ship to follow. Note that you don't necessarily have to use our camera module - if you have one of your own you'd like to use you can keep on using it, as the ship doesn't have any dependencies on using our camera module.
     
    docsavage likes this.
  27. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Beta 0.4.0 will include a basic 3D starry sky option. Drop the prefab into the scene and hook up the camera.

    upload_2019-6-21_12-11-18.png

    upload_2019-6-21_12-11-56.png
     
  28. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Changing Variables at Runtime

    Many public variables are modifiable at runtime from within your own code. Variables are commented so that (a) you know what they do, and (b) you can see if they require a method to be called after changing at runtime. For example, if you change ship.groundMatchResponsiveness or maxGroundMatchAccelerationFactor at runtime, you also need to call ship.ReinitialiseGroundMatchVariables().

    Code (CSharp):
    1. /// <summary>
    2. /// The distance from the ground the ship will attempt to maintain. Only relevant when stickToGroundSurface is set to true.
    3. /// </summary>
    4. public float targetGroundDistance;
    5. /// <summary>
    6. /// The maximum distance to check for the ground from the bottom of the ship via raycast.
    7. /// Only relevant when stickToGroundSurface is set to true.
    8. /// </summary>
    9. [Range(0f, 100f)] public float maxGroundCheckDistance;
    10. /// <summary>
    11. /// How responsive the ship is to sudden changes in the distance to the ground.
    12. /// Increasing this value will allow the ship to match the Target Distance more closely but may lead to a juddering effect if increased too much.
    13. /// If you modify this, call ReinitialiseGroundMatchVariables().
    14. /// </summary>
    15. [Range(1f, 100f)] public float groundMatchResponsiveness;
    16. /// <summary>
    17. /// The limit to how quickly the ship can accelerate to maintain the Target Distance to the ground.
    18. /// Increasing this value will allow the ship to match the Target Distance more closely but may look less natural.
    19. /// If you modify this, call ReinitialiseGroundMatchVariables().
    20. /// </summary>
    21. [Range(1f, 4f)] public float maxGroundMatchAccelerationFactor;
    22. /// <summary>
    23. /// How the normal direction (orientation) is determined.
    24. /// When Single Normal is selected, the single normal of each face of the ground geometry is used.
    25. /// When Smoothed Normal is selected, the normals on each vertex of the face of the ground geometry are blended together to give a smoothed normal, which is used instead.
    26. /// Smoothed Normal is more computationally expensive.
    27. /// </summary>
    28. public GroundNormalCalculationMode groundNormalCalculationMode;
     
  29. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Soon we'll be releasing Sci-Fi Ship Controller.

    It will work on 2017.2+, 2018.x, 2019.1, and 2019.2. Note: To use DOTS for weapons you'll need at least 2019.1.

    Today we'll issue the last beta before the release. There is still a little time if you want to join the free open beta.

    Just send me you name and email address and we'll add you in.
     
  30. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Anti-Gravity Racer Demo

    This is our latest demo scene in Sci-Fi Ship Controller. It doesn't always need to be about epic space battles, our controller is versatile enough to adapt to multiple "flight" behaviours. Enjoy!



    Look out for more demo's coming in the release.
     
  31. docsavage

    docsavage

    Joined:
    Jun 20, 2014
    Posts:
    1,020

    Brilliant! This means a ton more possibliities and uses for this asset. The fact you are getting all the physics sorted as well means switching between simulator and arcade feel controls will be pretty easy.

    This pack is going to be a good one.

    Any ideas of cost or release date?
     
    sstrong likes this.
  32. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Beta 0.4.0 is now available.

    What did we change since Beta 0.3.0?
    1. Performance optimisations
    2. Runtime scripting enhancements
    3. New Ship Camera Module
    4. Weapons can have multiple cannons/barrels
    5. Weapons can be turrets
    6. Demo script to assign targets to turrets
    7. We have added a manual
    8. Thrusters can have sound fx
    9. Enhanced anti-gravity race demo scene
    10. Local damage regions can now have an effect
    11. Improved in-scene Ship Control Module editing
    12. Lots of bug fixes
     
    docsavage likes this.
  33. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    We're thinking around US$39.

    Don't have an exact date yet but is should be very soon. We still have a few demo scenes to complete and probably a tutorial or two. However, we think the core engine is pretty solid now. Anyone planning a game could certainly start integrating it with the v0.4.0 beta. We don't expect any breaking changes before release.
     
  34. docsavage

    docsavage

    Joined:
    Jun 20, 2014
    Posts:
    1,020
    $39 is a bargain.
     
  35. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    Can this asset be used for procedural / user made ships, at least add thrusters at runtime ?
     
  36. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Yes, it should be entirely configurable at runtime. The ship models we include are just for demo purposes and as placeholders to get you started.

    We're happy to answer any questions around runtime use.
     
  37. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    A nice runtime api, for example one static (facade) class that hides all the internal details, with some methods like AddThruster(Thruster t)
    UpdateThruster(Thruster t)
    AddShield
    UpdateShield
    AddWing
    UpdateWing
    ReBuildShip

    Maybe ensure your Initialize methods can be invoked again to re-initialize the ship at runtime .


    I tried the 0.4.0 (all scenes) but I get pink materials and nothing happening on play, with some warnings about the Occulus / VR sdk not being present ( I dont have any VR equipment, unity 2019.1.8f1)
     
  38. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Yes, you can reinitialise ship at runtime. Ship.initialiseOnAwake should be false. Then you call shipControlModule.InitialiseShip() after instantiating your ship prefab.

    Did you create the project with LWRP or HDRP rather than 3D? If so, there is a readme file in the SRP folder which explains how to install the SRP packages for Sci-Fi Ship Controller (just a few simple steps).
     
  39. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    By default the Player Input Module, attached to the ship in the demo scenes (e.g. Explorer Ship (Physics) in the same named demo scene), by default has an "Input Mode" of "Direct Keyboard". If this is set to Oculus API you might see this warning.
    I'd be interested to know if anyone else sees this warning in a new project with SSC installed. We've not been able to reproduce it in-house.
     
  40. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Ship Spawning and Ship AI

    We're also working on a runtime ship spawning system. This can be used with or without Ship AI. This feature is currently in development and will be available some time after the initial release.

    You can already use your own Ship AI system to control ships in Sci-Fi Ship Controller. This can done by calling the following in your update method.

    Code (CSharp):
    1. shipControlModule.SendInput(shipInput);
     
    docsavage likes this.
  41. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Setting up weapons in Sci-Fi Ship Controller

     
  42. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Sci-Fi Ship Controller is very versatile and can be used in many different scenarios. It also supports LWRP and HDRP. Here is an example of SSC being used with the Unity Megacity demo.



    Unity Mega City assets are not included with Sci-Fi Ship Controller. This Tech Demo is only to show that SSC can be integrated with other systems.
     
    Last edited: Aug 14, 2019
    Antypodish likes this.
  43. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Sci-Fi Ship Controller Setup Basics Tutorial

     
  44. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Sci-Fi Ship Controller Control Tab tutorial

     
  45. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Sci-Fi Ship Controller Damage Tutorial

     
  46. exiguous

    exiguous

    Joined:
    Nov 21, 2010
    Posts:
    1,749
    I'm definitely interested in this Asset. I guess it is possible to create a Freelancer / Everspace / Star Conflict type 3rd person control scheme. You don't need to elaborate on the details. I figure it out once it is released. Speaking of: do you have a release date you aim for? And will this be the full release or still "early access"? Looking foward to play with it (I'm not interested in beta testing though).
     
    sstrong likes this.
  47. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Yes, you could use our controller in this style of game. We're aiming for a version 1.0 release Real Soon Now (which is why you now see some tutorials coming through). After the initial release of the core components we'll follow up with our Ship AI system (which is currently undergoing in-house testing and enhancements). This will be free upgrade.
     
    exiguous likes this.
  48. TechnicianStudios

    TechnicianStudios

    Joined:
    Aug 6, 2012
    Posts:
    60
    wow, I'm blown away with your asset. I figure we can use this to make a game similar to Star War Rouge Squadron controls? I'm actually in the middle of making a sci fi flight game, and if this asset grows I'll for sure switch to your asset vs the one I am using now
     
    sstrong likes this.
  49. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    Sci-Fi Ship Controller Physics-based Tutorial

     
  50. sstrong

    sstrong

    Joined:
    Oct 16, 2013
    Posts:
    2,229
    A couple of screen shots while stress testing the combat system for the release...

    SSC_BattleOverCity3.png

    SSC_BattleOverCity5.png