Puppeteer's Workshop

Hello all,

I’ve been making games and scripts for the Asset Store for a long time now, and it’s getting a bit messy to keep track of individual threads for each project, so I decided to make this one big thread to post all kinds of progress videos and screen for anything new Puppeteer makes.

Right now I’m working on several different things including a 4.6 UI update for my Tower Defense game, an integration of my Lockpicking toolkit into Realistic FPS Prefab ( by Azuline ), and a couple of new game templates.

So here we go!

Here’s a WIP video from Azuline’s Realistic FPS Prefab integrated with my lockpicking toolkit. It was a fairly smooth process, though it did have some bumps on the way. For instance the weapon camera was always visible even when you didn’t want it to appear so I made sure it’s completely disabled whenever the player enters a lockpick.

LHToolkit: Unity Asset Store - The Best Assets for Game Making

RFPS: Unity Asset Store - The Best Assets for Game Making

1 Like

This is a work in progress of Astro Bouncer, a game template of the “avoid the spikes” game type. To be released on the Unity Asset Store as soon as I can.

This was actually something I decided to make on a whim, after being stuck for several days in the logic code of another game I’m making. I just said “f**k it, I must release something before the month ends”.

Hope it gets done within the next couple of days.

Here’s a piece of code I think might be useful for others. It’s a basic waypoint-follow script that I’m using for my next project.

//This script makes the object follow a set of waypoints. You can set any number of waypoints, as well as the speed of the object. At the end of the path you
//can set the object to either teleoprt to the starting point or move there normally.
#pragma strict

internal var thisTransform:Transform;
internal var initialPosition:Vector3;

//The object's movement speed
var moveSpeed:float = 10;

//A list of waypoints to follow, and the index of the current waypoint
var waypoints:Vector3[];
var currentWaypoint:int = 0;

//Should the object look at the next waypoint?
var lookAtWaypoint:boolean = true;

//Should the object be teleported to the first waypoint when it reaches the end?
var resetAtEnd:boolean = true;

function Start()
{
    thisTransform = transform;

    initialPosition = thisTransform.position;
}

function Update()
{
    //If we haven't reached the next waypoint, keep moving towards it
    if ( thisTransform.position != initialPosition + waypoints[currentWaypoint] )
    {
        thisTransform.position = Vector3.MoveTowards( thisTransform.position, initialPosition + waypoints[currentWaypoint], moveSpeed * Time.deltaTime );
    }
    else //Otherwise, set the next waypoint
    {
        //Cycle through the available waypoints
        if ( currentWaypoint < waypoints.Length - 1 )    currentWaypoint++;
        else
        {
            currentWaypoint = 0;
       
            //Reset the object to position of the first waypoint
            if ( resetAtEnd == true )    thisTransform.position = initialPosition + waypoints[0];
        }
   
        //Look at the next waypoint
        if ( lookAtWaypoint == true )    thisTransform.LookAt(initialPosition + waypoints[currentWaypoint]);
    }
}

//Draw the waypoint path in the editor
function OnDrawGizmos()
{
    for ( var index:int = 0 ; index < waypoints.Length ; index++ )
    {
        if ( Time.time > 0 )
        {
            if ( index < waypoints.Length - 1 )    Gizmos.DrawLine( initialPosition + waypoints[index], initialPosition + waypoints[index + 1]);
            else if ( resetAtEnd == false )    Gizmos.DrawLine( initialPosition + waypoints[index], initialPosition + waypoints[0]);
        }
        else
        {
            if ( index < waypoints.Length - 1 )    Gizmos.DrawLine( transform.position + waypoints[index], transform.position + waypoints[index + 1]);
            else if ( resetAtEnd == false )    Gizmos.DrawLine( transform.position + waypoints[index], transform.position + waypoints[0]);
        }
    }
}

Here’s what it looks like:

1 Like

Astro Bouncer Game Template is finally RELEASED!

LINK TO PRODUCT PAGE

I’ve been waiting for this one to be accepted since Christmas. It was probably not a good time to upload new stuff because everyone would be on holiday, but it’s finally out so that’s nice.

I just updated Astro Bouncer to 1.03, tweaking some of the gameplay elements and sounds, and reducing the package size significantly. I also made sure the start menu buttons works correctly for gamepads and keyboards.

Tip: It turns out saving Flash files over and over again can bloat the file size to monstrous dimensions. The solution is simply to use Save As when saving the file, which will remove any extra size bloating it may have. This has helped me reduce an FLA files from 30mb to 15mb. Huge difference!

Still waiting for RFPS update to hit the asset store. Really looking forward to it.

I’m working on it, I promise!
There are lots of things in the pipeline this month including updates for all packages and a couple of new games :smile:

Here’s some work in progress for a Road Crossing Game Template I’m about to finish:

There’s not much left to do, just a death line, code comments, documentation and it’s up in the store.

Usually I work on several files simultaneously, so it’s not always obvious ( for me ) which one will make it to the finish line first. This month it looks like the Road Crossing Game Template made it. Now I have some time to work on updates for existing packages.

You can try out the webplayer for the road crossing game by clicking here.

I think it turned out pretty well overall.

I’d like to share a little script which could make your game model a little more varied and interesting for the player:

//This script randomizes the scale, rotation, and color of an object
#pragma strict

//The range of the rotation for each axis
var rotationRangeX:Vector2 = Vector2(0, 360);
var rotationRangeY:Vector2 = Vector2(0, 360);
var rotationRangeZ:Vector2 = Vector2(0, 360);

//The scale of the rotation for each axis
var scaleRangeX:Vector2 = Vector2(1,1.3);
var scaleRangeY:Vector2 = Vector2(1,1.3);
var scaleRangeZ:Vector2 = Vector2(1,1.3);

//Should scaling be uniform for all axes?
var uniformScale:boolean = true;

//A list of possible colors for the object
var colorList:Color[];

function Start()
{
    //Set a random rotation for the object
    transform.localEulerAngles.x = Random.Range(rotationRangeX.x, rotationRangeX.y);
    transform.localEulerAngles.y = Random.Range(rotationRangeY.x, rotationRangeY.y);
    transform.localEulerAngles.z = Random.Range(rotationRangeZ.x, rotationRangeZ.y);
 
    //If uniform, set the scale of every axis based on the X axis
    if ( uniformScale == true )    scaleRangeY = scaleRangeZ = scaleRangeX;
 
    //Set a random scale for the object
    transform.localScale.x = Random.Range(scaleRangeX.x, scaleRangeX.y);
    transform.localScale.y = Random.Range(scaleRangeY.x, scaleRangeY.y);
    transform.localScale.z = Random.Range(scaleRangeZ.x, scaleRangeZ.y);
 
    //Choose a random color from the list
    var randomColor:int = Mathf.Floor(Random.Range(0, colorList.Length));
 
    //Set the color to all parts of the object
    for ( var part in GetComponentsInChildren(Renderer))
    {
        part.renderer.material.color = colorList[randomColor];
    }
}

And this is what it does:

It may seem like something small, but it’s all in the details, isn’t it?

Managed to submit several updates yesterday including a small update for Astro Bouncer and a total port to C# for Space Ace made by Jordan Swapp. Space Ace now contains both JS & C# versions in the same package!

did RFPS update get submitted?

Yes, I just submitted a bunch of updates including the LHToolkit to the store.

I think it should be available on the store within several, if they don’t reject it.

BTW, how is it working out for you? Did you put locks in your levels. Is there a video we can enjoy? :smile:

I decided to wait for the official update. I wanted to post some video or screenshots on RFPS forum.

I am sure do so will generate a few sales for you )

Thank you for the update.

I just wanted to check if there is something wrong in the pdf documentation.

In the RSPF intergration section it says to

“Drag WeaponCamera.cs from LHAssets > CS_Assets > CS_Scripts > Misc to the Weapon Camera in the player.”

I was unable to find any file called weaponcamera.cs or LHWeaponCamera.cs. Is this step required or is this an oversight in the documentation?

Yes, you’re right. This was in the 1.23 update which I sent before I contacted you last time.

It was accepted within a couple of hours after submission ( must be some miracle ), and then I submitted the 1.24 update which has that weapon camera script. This one seems to be taking longer. It’s been a couple of days, but it should be accepted soon. That’s why I also avoided tweeting about it yet.

It’s been sort of a saga, but I appreciate your patience with me.

BTW, I wanted to ask you if there are any specific kinds of locks/puzzles you would like to have in the package which could help you in your game?

ok great. I will wait for the 1.24 update to get on the asset store.

My suggestion for a new lock/puzzle would be for the addition of locked computer terminal. I see it in a lot of games. But the current locks and puzzles are already pretty good already.

Thanks for the update.

Update 1.18 for Road Crossing Game has been submitted for review.

  • Added a shop where you can buy and unlock new characters to play as. The coins you collect during gameplay are stored and can be used to buy new cute animals.
  • You can toggle swipe controls for mobile devices. Swipe in a direction to move the player.
  • You can toggle the random move direction for the objects on a lane.
  • You can also set the width of each lane, so you can now have lanes of various widths.
  • Locked movement of player to the grid.

Here’s a cute preview:

I’d like to share a game that was made using Road Crossing Game Template:

It’s called Loot Quest: Throne of Money and it’s Thai Bui’s first game in the App Store!

Try it out here