Unity Blog Articles

I wrote some posts for the Packt Publishing blog about Unity. Enjoy, and let me know if you have any questions!

You might also be interested in my library of Unity components and snippets.

Posted in Uncategorized | Leave a comment

Unity3D components and code snippets

Last update: Feb 25, 2016

I've been using Unity3D a lot these days for business and pleasure. I've been posting some of my code to gists on GitHub to serve as examples or as open-source components. I thought that I should collect them in one place to make the good stuff easier to browse. I intend to update this post occasionally to collect these as I make them. If you want something open-sourced, let me know here and I can add a license if there isn't one already in the file.

Blog Posts

One-Liner singletons in Unity

Making an in-game console in Unity, part 1

Making an in-game console in Unity, part 2

Utilities

Templates for creating C# plain classes, interfaces, and unit tests from the Editor

Unispawn (Multiple Unity Instance Spawner for OSX)

Script to install, run, and open logcat for a Unity Android App

Scripts

Multiline comment component for storing comments in the inspector

Component to spawn prefabs in a defined 2D area

Screen-relative anchoring component (Requires CameraFit.cs)

Optimized extension methods for picking random points on a Mesh. Barycentric coordinate wrapper for Vector3.

Sample Code

Example class to send events on a certain musical tempo

Shaders

Slightly more optimized simplex noise cg library (based off this one)

Water screen splash shader w/ time scrubbing in editor (modified from the one here)

Hacked version of Unity's Additive Particle shader w/ a parameter to enable B&W rendering

Crappy perlin noise vertex shader

Unity 5 standard shader with fog disabled

Unity 5 standard shader hacked to support tinted, alpha-blended detail texture

 

Posted in Game Development, Programming, Scripting | Tagged , | Leave a comment

wp-upgrade: (nearly) automatic wordpress updating via git

For several years now, I have been using git as a means to manage migration of my website from one version of wordpress to the next. I initially was maintaining documentation for myself on how to do this manually, but later I migrated the documentation into an automatic script. I've decided to clean this up a bit and release it to the public as open source.

This has really made managing a wordpress site more bearable. I don't allow FTP connections to my website, since FTP is about as secure as a sign on your digital lawn saying "Please do not hack!" Because of this, the built-in automatic update feature has always been useless to me. Using an ssh connection to the webserver as the backbone, it's possible to do more secure automatic updates than built-in feature can provide. (For more info on security, please read Hardening WordPress.) In addition, I can sleep better at night since my website's code is both version-controlled and backed up to an external server. This isn't possible with the traditional "update wordpress via svn" method either.

Hopefully this will be as useful to you as it was to me. I've tried to make it reasonably configurable, but feel free to fork it and tweak to taste. You can find the code and documentation for wp-upgrade on Github.

Posted in Scripting, Tools | Tagged , , , , | 1 Response

Unispawn

Unispawn IconI've been working a lot with Unity3D recently, and sometimes it can come in handy to have multiple instances of the editor open at once. On Mac, this works fine, but due to how the dock works, it's awkward to launch more than one instance, requiring you to root around in the app bundle and have a terminal window open.

I wanted a quick shortcut to spawn a new instance, so I threw together a shell script and bundled it up as a stand-alone Mac app using Platypus.

If you're interested, you can download Unispawn on Github. It's not really worthy of its own name and an icon, but I couldn't resist making some references and I needed it to look different from Unity in my dock. 🙂

All 3 lines of its source code are available under an MIT license.

Posted in Game Development, Scripting, Tools | Tagged , , , , | Leave a comment

Starfall

GDC is over and I'm hanging out at Noisebridge with some friends. I've been inspired this week by some amazing Twine games and authors so I decided to make a short one myself. It feels most like a poem to me.

Play Starfall

This is actually my second Twine game. Ask me if you'd like to see my first.

Posted in Uncategorized | Leave a comment

The impossible

I want the impossible.

I want to learn music theory and how to play the guitar and the piano and the drums. I want to sing.

I want to learn every language, read every good book, see every good film, play every good game.

I want to drive for hours and have no idea where I'm going

I want to love and kick and scream and get high and get low and be alive

I want to know the greatest ecstasy, the greatest insight, hidden secrets, forgotten wisdom, deep science.

I want to speak code into an electric void and make something beautiful.

I want to live into the impossible
and see infinity.

Because I will grow old
these bright eyes will dim
I will curdle from toxins.

My hands will shake and bones will ache

My loves will die, as will the sun.

And when I am nothing but a photograph
I hope against hope someone will remember me

And say, there is a man who truly lived.

When you remember me, will you smile?

Posted in Poetry | 2 Responses

Analogue and Digital

I just finished playing Christine Love's Analogue: A Hate Story. I would like to share with you my thoughts on the design, themes, and ramifications of the game, hopefully without revealing many plot or character details that could spoil the experience.

Analogue was a remarkable game that stirred up a wide range of emotions. I felt repulsion at the backwards, patriarchal society depicted. Shock, the traumatic kind, at the depiction of horrific events. Sympathy and affection for the protagonist (at least, that's who she was in my view.) And some funny, cute, and adorably awkward moments as well. It was quite unlike the expectations I had for the game going in. It was deeper, more meaningful, more significant.

Read More »

Posted in Game Design, Game Reviews | Leave a comment

Processing for Programmers

Processing is a wonderful little language. It's designed to be easy to pick up by artists who want to learn some programming, etc. However, it's a real programming language. If you haven't played with Processing, I'd recommend you go do that right now. They have a great series of tutorials, and of course the entire SDK is free.

This post is for people like me - programmers who want to take  advantage of Processing's short iteration cycle, clear syntax, and simple API to use it as a prototyping environment.

First, here is what I think Processing excels at:

  • Interactivity - It's dead easy to get and use mouse and keyboard input and define event handlers.
  • Graphics - "Hello world" in Processing is drawing a circle. It has a simple but powerful graphics API. 2D is really simple, and it has powerful features that can be used without any boilerplate such as 3D rendering and a matrix stack.
  • Engineering flow - like I said above, the short iteration cycle, clear syntax, and simple API make it a breeze to get up and running quickly and iterating.
  • Fun - Because of all of that, it's a lot of fun to write stuff in Processing, especially for smaller projects where you are just messing around.
  • Multiplatform - Out of the box, Processing 1.5 can build native applications for Windows, Mac, and Linux, native Android applications, and web applets (yuck.) Via Proccessing.js you can also supposedly get your sketches to run natively in web browsers.

Here is what I think Processing is weak at:

  • Large, complex programs (they tend to get a bit unwieldy since it's impossible to organize your classes inside a folder structure.)
  • Programmer assistance (No out-of-the-box debugger. The preprocessor's errors are often frustratingly non-specific, and can leave you blindly hunting for syntax errors across multiple files.)
  • Audio (there is no out-of-the-box support, but there are libraries available) Processing now includes the excellent Minim library, but you have to explicitly import it. Audio still appears to be an afterthought in the documentation and tutorials.

I have been prototyping games and visualizers (including the one above) in Processing for several months now, and have learned some incredibly useful things that I think any programmer looking into it should know. Here they are:

Read More »

Posted in Game Development, Programming | Tagged , , , | 5 Responses

Searching for the perfect editor

Text editors. Yawn. Who cares? It's just text!

For many people, it really doesn't make a difference. But I'm a programmer. I edit code for a living. My editor is the tool of my trade and I want to use the most efficient tool available.

I'd be preaching to the choir if I was telling programmers that they should use good text editors. But I've noticed some patterns in the history of text editors I've used that have made me come up with my own philosophy about choosing an editor. My goals and usage habits are certainly not the same as everyone else's, but I hope that in sharing them I might get you to reflect on your own habits and see if they match up to your goals.

Read More »

Posted in Tools | Tagged , , | 4 Responses

Tool tips: Find

A robot searchingThe find utility is so useful for automation that it deserves a special mention on its own. I will not attempt to cover all of its features, only the ones that I use on a daily basis.

I typically use find for two purposes:

  1. To create a list of files matching some search terms.
  2. To execute a batch operation on those files using the -exec argument.

In Shell Scripting: Becoming a Wizard, I layed out a recipe for productive and useful bash scripts that uses a while loop over some sort of multi-line input. This construct is more powerful than find's built in -exec flag, but that power is not always needed.

Here is how I use find:

Read More »

Posted in Scripting, Tools | Tagged , , , , , | Leave a comment