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.
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.
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”.
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]);
}
}
}
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!
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.
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!
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.
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.