Engine Options for Launcher Tool

My launcher can now launch an engine project along with max!
This one was much simpler – rather than looking to set a folder to save in, I’m just opening a project file.

The tricky part with this was knowing which project was associated with which profile. (The tool has multiple “profiles” for switching between different projects) I had made some real nasty non-scale-able code, using the same name for various entries in the json to iterate over them. This seemed good at the time, but is useless when I need to read multiple entries! I’ve done another hacky tack on to fix it (no doubt I’m going to kick myself for it later) by adding a list with every profile in it that is populated from the json file. The index of these is then used to look up a specific file name in the json. (Writing it down makes me realize how badly planned this whole script was…ugh.)

Oh well! Onwards to more hacky nonsence! Got some fixes to the edit feature to do, bit of clean up with error messages and then onto photoshop support I guess!



PET Scene Post Mortem

I’ve decided to do a wee post mortem on the PET scene, as there were a lot of issues in it and I’d like to learn from them! This was essentially an exercise in “doing things I ask people not to do”.


I am not good at planning. In uni all my projects were totally overscoped and at work I tend to jump head first into solving problems instead of taking a step back. Its something I’m working on.

To help projects get finished, I need:

  • Have a clear idea of what the project actually is and what the finished product will look like
  • Have a list of assets or tasks
  • Stick to one part at a time


A major blocker to finishing this was bad organisation. Files were not in one location, were not named well and were not easy to find. Due to this, I’ve rearranged my project folders into a much nicer format, with separated work and final folders.

Next project I need to:

  • Use the new folder structure on my pc
  • Use a sensible naming convention that ensures uniqueness across all resources
  • Use a sensible folder structure in unreal

Asset Creation

The models in the scene were definetley worse than I can normally make. I didn’t spend enough time on them as I was anxious to finish. I skipped some steps which I shouldn’t have!

  • UV AS YOU GO (been telling myself this for years, yet I always forget!)
  • Bake AO as you go
  • Create full maps for everything
  • Don’t guess PBR values (c’mon…)
  • Use an export tool (I have a maya one, but haven’t made/downloaded a max one yet)

Shader/Texture Authoring and Organisation

The amount of materials in the scene was disgusting…instancing exists for a reason!!!

  • Use generic “ubershaders” as much as possible
  • Anticipate needs  beforehand then adapt to the project, don’t make them up as you go
  • Have a limit on number of shaders (“I do optimization at work, so fuck it” is not a good attitude…)
  • Be smart with channels and compression – lots of things could have been packed into channels of one file or used certain compression types to ditch/favor certain channels

Linear Algebra Part 1

Had a go at learning some linear algebra through a great Khan Academy course today. Vectors seem to turn up in my work constantly and its something I’ve kind of gotten used to through exposure, but I don’t really have a solid grasp on the maths. Hopefully after this course I will!

All images are from the course, which can be found here.

What is a Vector?

A vector is a list of numbers that represents a direction and length in  2D or 3D space.


Vector Addition

Adding two vectors together is like placing the second vector at the end of the first, and then drawing a line between the origin and the end of the second vector.


Scalar Multiplication

When we multiply a vector by a single number, we essentially stretch it out by that amount, or scale it. Therefore in linear algebra numbers tend to be called scalars.



Bases Vectors 

The base vectors are the vectors that all others in our coordinate system are derived from. For example, the most common base vectors are î and ^ j (known as unit vectors) which are 1 in the x and y direction.

Any time we have a vector, it is basically a scaled version of the base vector.


Linear Combination and Span

The linear combination of two vectors is anytime a vector is scaled and added. The span of a set of vectors is all of the possible vectors that can be made using the linear combination. For example, with î and ^ j, the linear combination is made up of all possible 2D vectors, but if we were to use the vectors [1, 0] and [3,0] the linear combination would be all possible vectors on one line. If the vectors were both 0, the only linear combination would be 0.