Introducing CLARK by 'Golden Tricycle'

If the title of this post makes no sense to you, that's ok. One of my friends is working on this indie Android/IOS game for the loosely affiliated group 'Golden Tricycle'.


Although on first glance the gameplay is evidently influenced by Portal 2, the game looks like its coming along pretty well and pushing the laser mechanics familiar from the Portal games in their own unique direction.

Some pretty good puzzle elements in video 2!


Derfies and the Rubix cube...

I used to work with Derfies back in the ol' days, and know him as a great guy and a fantastic tech artist. Recently he has been plugging away at writing his own editor using Python and Panda3d in his spare time.

To test his editor, he has put together a fully interactive Rubix cube which you can check out in your web browser. You will need the Panda3d runtime, but its worth the download!

Arrgh... must... solve... puzzle...

Photoshop Constants Roestta Stone

Hey peeps, if you have been using the Photoshop scripting listener to help automate your day to day tasks you would be familiar with those vague CharID's that Photoshop uses to describe each action it performs.

In an earlier post I suggested using the Photoshop SDK's terminology files, but here is something just as good and far more accessible.

John Deurbrouck put up a list of Photoshop constants back in 2005. Although he was using it for C#, this page is a fantastic resource to poke at in-case you come across any CharID types that are too ambiguous to work out. Bear in mind the list may be a little dated, but if you need a quick CharID look up its worth keeping in mind.

-Pete

Managing Photoshop Layers using Python

Just another quick example of how to make Photoshop do your bidding. This is bare bones basics so don't expect a massive revelation if you have been doing PS scripting for a while.

Running this script will give you a document with a bunch of layers and groups. Real useful, I know. But the goal is just to see how those layers and groups are made, named and accessed.

If anyone out there is using Python with Photoshop I'd be interested in hearing about how you have used it and what kind of tasks you have found it useful for!

Anyway, here we go:


##############################################################################
#
# Here is a quick code sample showing how to manage different layers and groups  
# in a photoshop document using Python. 
#
# Pete Hanshaw, 2012
# http://peterhanshawart.blogspot.com.au/
#
##############################################################################
#
# How to make a layerSet (aka, 'group') artLayer (aka 'layer'), how to make them
# active and how to move them. 
#
# These examples use the comtypes module. Grab it here:
# http://sourceforge.net/projects/comtypes/
#
##############################################################################


#Create the application reference
import comtypes.client
import pythoncom

psApp = comtypes.client.CreateObject('Photoshop.Application')

#Create a new document to play with
doc = psApp.Documents.Add(256, 256, 72, 'test_bed', 2, 1, 1)

#When scripting 'groups' are called 'layerSets'. 
new_layerSet = doc.LayerSets.Add()

#Once you create a layerSet object reference, you can access it's
#'name' attribute. The same goes for other objects you can normally
#name within Photoshop.
new_layerSet.name = "I'm a layerSet"

#regular, paintable layers are called 'ArtLayers'
new_art_layer = doc.ArtLayers.Add()

new_art_layer.name = "I'm an ArtLayer"

#To add a nested art layer into a LayerSet, use our layerSet object as a reference
nested_art_layer = new_layerSet.ArtLayers.Add()
nested_art_layer.name = "I'm a nested ArtLayer"

#The same goes for adding a nested LayerSet!
nested_layerSet = new_layerSet.LayerSets.Add()
nested_layerSet.name = "I'm a nested LayerSet"

#and so on!
deep_art = nested_layerSet.ArtLayers.Add()
deep_art.name = "Deep man, deep."

#Every time a new object is made, it will become the active layer. 
#To make other layers active, you can refer to them either by their name, or 
#their index location. 

#For example:

#Making an art layer active using the layer's name:
doc.activeLayer = (doc.artLayers["I'm an ArtLayer"])

#Making an art layer active using the layer's index location:
doc.activeLayer = (doc.artLayers[-1]) #This will select the background!

#Selecting a nested art layer is a little more difficult, as you have to
#'drill down' through the hierachy in order to select it. 
doc.activeLayer = (doc.layerSets["I'm a layerSet"].
                   layerSets["I'm a nested LayerSet"].
                   artLayers["Deep man, deep."])

#Moving a layer in the hierachy is done using the move command.
#The arguments specify which hierachy to move in, and where to put it. 

#For example, this will move the first layerSet we made just above the background
#layer.

#Make a new layer set
mobile_layerSet = doc.LayerSets.Add()
mobile_layerSet.name = "move me"

#Move the 'mobile' layerSet to just after the 'background' layer
mobile_layerSet.Move(doc, 2)


Spare time- progress

Just something I've picked up again after ignoring it for a couple of months, originally based off of a sketch I did on the train. I've ported the original model from Maya to Max as an excuse to refresh myself on the 3dsMax way of doing things again, having used Maya exclusively for almost 12 months now.

So far the scene is made up of a single tiling wall section, but I'm planning on expanding that to include enough variations to make the entire building.

These screen-shots were taken in the UDK. Still rough, but expect to see more of this in the future.