Search Unity

  1. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

3D [WIP] Galleon-style Sailship

Discussion in 'Art Assets In Progress' started by Derlix, Feb 23, 2021.

  1. Derlix


    Jan 6, 2019
    Hi Folks,

    I'm currently working on a sailship asset for the Asset Store.
    Because i want it to fit the needs of customers as best as possible, i'm posting it here to ask for some feedback. Would you buy it? What feature does it have or is missing that would make you not buy it?

    Here is a quick summary of the ship:
    It's made for people, who want a ship for their maritime projects and don't want to deal with animations, but rather focus on gameplay mechanics. So they only have to load it into their scene and communicate with the included Controllers.
    Simple commands like SetSail(int index,bool set) folds out or in a sail, smoothed by the underlying scripts. FireCannon(int index) fires a cannon and takes care of the animations, particles and (optionally) spawning of projectiles, all by itself.
    The scripts make heavy usage of OnValidate(). They are not constantly executed in Editor Mode, but everytime a value is changed in the inspector by the user. So it's possible to load it in, move a few sliders, and see the results immediately in the editor, and the ship is exactly in the state you want it to be when hitting Play Mode without having to write a single line of code.

    Current features:
    • Compatible with 2018.4.32f1(LTS) +
    • 3 LODs, Polycounts (ship fully equipped with cannons):
    1. 101.525 Triangles
    2. 42.395 Triangles
    3. 6.897 Triangles
    • No Interior. Cannons, that are not fully visible, are reduced to the barrels.
    • 13 Materials
      • current size of the Texture Folder: 217MB
      • PBR: Albedo, Metallic Smoothness, Normal and Occlusion Map. (P.S. some parts dont have all the 4 maps, like ropes and sails have no Occlusion)
      • the biggest textures are 4 Materials with 4k Resolution, representing the hull, onboard planks, details like the wheel or blocks, and the sails.
      • textures are mostly mirrored to reduce UV space. This intenionally excludes the sails, because i imagined some people might want to paint their own asymetrical logos or patterns on the sails.
      • Textures of windows and lamps also have an emission map to let them glow.
      • Flags also include a white albedo in the folder, so you can paint your own logo onto it.
    • Props
      • Barrel, 2 LODs
      • Rolled Rope, 2 LODs
      • Rowboat, 3 LODs
    • 32 cannons
      • 12 Cannon models with 3 LODs
      • 16 Cannon mock-ups with 3 LODs
      • Cannons have readying and recoil animation
      • when fired, the cannon spawns a particle effect, a sound and optionally a Rigidbody projectile with adjustable force.
      • The cannons can be operated either with their own controllers (like when your character walks to it to interact with the cannon) or with the ShipCannonsController and the cannon's index.
    • Sails and Flags
      • All Sails and Flags have 3 LODs
      • All Sails have 2 Blendshapes: Filled with wind and Folded.
      • All Sails have dynamic ropes, that follow the sail when the blendshapes are affecting the sails and scale their UV's accordingly to never look stretched.
      • Flags have a Cloth Component on LOD0.
    • Controllers
      • ShipBasicController
        • Rotates the wheel and the rudder, depending on a value between -1 and 1, with adjustable corresponding maximum angles
        • Lets the glasses glow, depending on a value between 0 and 1.
        • Anchors can switch between Thrown and Being Hauled In, depending on a bool. There is currently no transition, the meshes are simply turned off and on.
        • Capstan can be turned by an unlimited float value.
        • The capstan handles can be removed with a bool.
      • ShipCannonsController
        • Has bools that let you ready the cannons individually
        • Mostly responds to script commands
          • Can fire a cannon immediatley
          • Can fire the cannon with a delay. With this, you can fire cannons more realistic looking when adding a short indiviual random delay.
          • Comes with the Commands FireRollingBroadsideLeft() and FireRollingBroadsideRight(), that fires a Rolling Broadside (all cannons on one side one after another, from the front to the back), with adjustable speed and random deviation that prevents the machine gun sound.
      • ShipSailsController
        • Has bools that let you set or fold the sails individually
        • There are wind values you can adjust. For the sails, the windForce fills the sails with the help of a blendshape.
        • Flags have a Cloth Component on their LOD0. The WindAngle determinates the direction of the flags are flying.

    The sailship with folded sails, glowing lights, cloth flags, thrown anchors, firing a "Rolling Broadside".

    What the ship don't have/cannot do:
    • Sails and flags need a double-sided Shader, which is not included.
    • Colliders. I'm not sure how detailed the colliders need to be. Would it be enough to craft a Mesh Collider from LOD2, or would there be people who want every ledge defined?
    • The ship is not able to move, and no water is provided. Depending on how you create the water in your scene, you need to write your own movement script.
    • No interior. Captain's quarters and lower decks are not accessible.
    • Yards and sails can not rotate.
    • No Cloth Simulation for the sails. Cloth in Unity has some significant issues, like no LOD implemenation. Also, Cloth breaks when the asset is not 1,1,1 scaled and a Blendshape takes effect. I'm thinking about still adding a variant with cloth sails to the project, with some instructions to work around this bugs. You can help me getting the this bug fixed with voting up here:
    • The ship has some exposed values and updates, if they are changed in the inspector. Since this happens in OnValidate(), changing this variables directly by another script takes no effect. Instead, Get/Set Functions should be used, as these are made to call the Update routine, like OnValidate() does. Do you guys think this is reasonable?
    I aim for a selling price of 15 Euro (18,23$).

    Feedback, especially constructive criticism, is highly appreciated.
    Last edited: Feb 24, 2021
    Teila and iggamemaker like this.
  2. iggamemaker


    Dec 27, 2013
    I like, how it looks, great job! I always wanted to make a game about pirates and I will consider buying it if I'll make one. Best wishes to you!
    Derlix likes this.
  3. Derlix


    Jan 6, 2019
    Thank you very much!
    iggamemaker likes this.
  4. RBLUO


    Feb 3, 2020
    Looks Amazing! were you able to complete the project?