Stealth Action Game Kit, A Tool for making awesome stealth games in minutes.

Stealth Action Game Kit

[ Asset Store Link ] [ Youtube Video ] [ Web Player Demo ] [ Support ]

Stealth Action Game Kit is a complete framework for developing stealth games for many platforms. It introduces many different objects [Detectors] such as:

• Closed Circuit Cameras
• Static Lasers
• Moving Lasers
• Rotary lasers
• Locked doors with Keys
• Noise detectors
• Machine guns
• Press machines
• Polices (Sleep, Awake, Static, Dynamic)
• And many more to come as updates.

You can easily test and use these prefabs to form your own levels, and you can also fully inspect each element to see how it works, thanks to clear and easy to understand code.

This kit also comes with 12 example scenes for each detector, and three carefully designed live example levels to show the true potential of the project. This kit accepts both touch and mouse inputs, and thus, can be tested on Android, iOS, WebPlayer and Stand-Alone platforms.

Please kindly share your ideas and comments about this kit :slight_smile:

Hi,

is it for 2D or 3D ?

also your WebPlayer Demo don’t work.

Both :slight_smile:
The kit uses flat cubes to simulate a 2D interface with sprites and atlas animations, but you are free to use any 3d models and objects inside the game. You can also change camera’s perspective and projection type to make the kit completely 3D.

Look at this sample:
2053544--133582--2d-3d.jpg

Please kindly try this link:
http://www.finalbossgame.com/stealth-action-game-kit/
or
https://www.dropbox.com/sh/kfr3db8nz52eawm/AABu3dR2gQ8X-QN8mDZUvKS4a?dl=0

Hi,
if your plugin use physics 2D ?
with the WebDemo , i have this :

No, It uses the standard 3d physics. All static objects use boxCollider and all dynamic objects use Rays for collision detection.

For the webdemo, please download both html and unity files, then run the demo (html file) on your local browser. I try to upload the webplayer demo on a dedicated server to avoid these problems. Thanks for letting me know.

Really like the kit. Quick question, how flexible are the objects. I’d like to write some code so that the police chase you instead of the player being instantly caught (ie have a chance to hide and escape).

@ Kalmak:

Thanks for the kind words. The objects (Detectors) are designed as distinct as possible. They all has their own classes and parameters, and by this, you can easily modify, extend and re-code their behavior, without worrying about possible interference with other objects/detectors.

For the police objects that you mentioned, they use 2 ways to detect the player:

  1. The obvious way is a normal contact. If two object (Player & Police) collide with each other, it activates the alarm.
  2. Flashlight of the police casts some rays to see what’s ahead. If any of these rays hit the player, the alarm is triggered.

To extend this behavior, you have to define a third way like this:
3-1. Police object has a proximity range that can hear player’s noise. (exactly like noise detectors)
3-2. If police detected a noise, It will exit the “Path Follow” co-routine and activates your desired behavior. It can vary from doubling the speed, finding the noise position, searching for player (intruder) with a custom algorithm, or following the player with a custom path finding algorithm.
3-3. If the player was able to flee, police will exit the new co-routine, find the nearest waypoint and continue the “Path Follow” routine.

I just tried to simply describe the steps required to add a new behavior to police objects. If you want more details on a live project, I’m happy to help you with that :slight_smile:

New link to test the webplayer demo:
http://www.finalbossgame.com/stealth-action-game-kit/

Stealth Action game kit” is now fully compatible with Unity 5 (free & pro) :slight_smile:

Hi @FinalbossGame , I realy like this assets.
I want to buy but really what prevents me from doing is this asset dont work with 2D Physics

same for me. :wink:

Can you kindly let me know why do you need 2D physics for this kit? I can easily redesign the kit in the next update to completely support the 2D physics (it’s just a matter of rotating the whole project by 90 CCW and replacing all the BoxCollider with 2D Edge Collider) , but I’m wondering why you would need a 2D collider when you might want to use a 3DModel/collider/Ray somewhere in your project.

Thanks :slight_smile:

Hi! @FinalbossGame , in my case is because i have all my projects with 2D physics, for me it would be really cool to integrate your asset to my projects.
I know is easy to make the change(3d physics to 2d physics) but really if I buy it I would not like to make the change myself =/.

If you upgrade this asset I definitely will buy it…

Regards,

1 Like

It’s a cool looking kit though I have to ask if there’s any chance of different control schemes (as of now its just click to move) maybe allowing people to use WASD would be cool

Ok, my hands are up :slight_smile:
I’ll redesign the project to support 2D physics, in the next update.

I also have in plan to add the keyboard (WASD) and on Virtual Joystick (on-screen buttons) control system to the kit. They will be available in the next update.

Thanks :slight_smile:

Update road-map for V1.1:
The “Stealth Action Kit” will support Mouse, Touch, Keyboard (WASD and Arrow Keys) and Virtual joystick controls.
You can expect the new update to be available in two weeks.

Please kindly share your bright ideas about the kit, and how can I extend it to meet your needs :wink:

Cool. I’m interested. :wink:

Update v1.1 is now live at Unity AssetStore : “Stealth Action game kit

Change Log:

  • Added keyboard control
  • Added Virtual Joystick control

Next update hopefully covers 2D UI and physics.

great @FinalbossGame !!! i realy want the 2d physics

1 Like

Quick fix for update V1.1, in which noise detectors won’t work when control type is set to Keyboard or Joystick.

In “PlayerManager” class, completely replace keyboardInputManager() function with:

function keyboardInputManager() {
    //Rotation
    if(Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D)) {
        transform.Rotate(0, turnSpeed * Time.deltaTime, 0);
        GetComponent(AnimatedAtlas).enabled = true;
        playerIsSilent = false;
    } else if(Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A)) {
        transform.Rotate(0, turnSpeed * Time.deltaTime * -1, 0);
        GetComponent(AnimatedAtlas).enabled = true;
        playerIsSilent = false;
    }
   
    //Movement
    if(Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W)) {
        transform.Translate(Vector3.fwd * moveSpeed * Time.deltaTime);
        GetComponent(AnimatedAtlas).enabled = true;
        playerIsSilent = false;
    } else if(Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S)) {
        transform.Translate(Vector3.back * moveSpeed * Time.deltaTime);
        GetComponent(AnimatedAtlas).enabled = true;
        playerIsSilent = false;
    }
   
    if(!Input.anyKey) {
        GetComponent(AnimatedAtlas).enabled = false;
        playerIsSilent = true;
    }
}

Then completely replace the followJoystickTarget() function with the following code:

function followJoystickTarget() {
    if(Input.touches.Length > 0 || Input.GetMouseButton(0)) {
        inputPos = joystickTarget.transform.position;
        inputPos.y = 0.5;
        if((transform.position - inputPos).sqrMagnitude > 0.05) {
            lookAtTarget();
            followTarget();
            GetComponent(AnimatedAtlas).enabled = true;
            playerIsSilent = false;
        } else {
            //********* Smooth start/stop movement ************//
            speedModifier -= Time.deltaTime * 6.0;
            if(speedModifier < 0.0) speedModifier = 0.0;
            transform.Translate(Vector3.forward * Time.deltaTime * speed * speedModifier);
            //********* Smooth start/stop movement ************//
            GetComponent(AnimatedAtlas).enabled = false;
            playerIsSilent = true;
            renderer.material.mainTextureOffset = Vector2(0, 0);
        }
    }else {
        //print("NO touch");
        //********* Smooth start/stop movement ************//
        speedModifier -= Time.deltaTime * 6.0;
        if(speedModifier < 0.0) speedModifier = 0.0;
        transform.Translate(Vector3.forward * Time.deltaTime * speed * speedModifier);
        //********* Smooth start/stop movement ************//
        inputPos = lastPos;
        GetComponent(AnimatedAtlas).enabled = false;
        playerIsSilent = true;
        renderer.material.mainTextureOffset = Vector2(0, 0);
       
        //move target to player position, so the next movement starts as a normal
        joystickTarget.transform.position = transform.position;
    }
    //always face direct to camera
    transform.eulerAngles.x = 0.0;
    transform.eulerAngles.z = 0.0;
    transform.position.y = 0.5;
   
}

It will be patched with the next update.
Thanks

1 Like