Alex McGilvray

TowerJam 003 Adding the forest area

January 23rd, 2016

Did some work this morning on finishing up the base of the bridge area and adding in the forest area. Now there is a complete path from the starting point to the tower. As you move towards the core of the forest I change the tint towards a washed out greenish color.

I also took a second to step back and focus on what to do next.

  • Add attack animations and logic to the character
  • Finish the graph paper floor plan for the first floor of the tower
  • Setup the streaming level system to allow me to transition into the first floor of the tower

Here’s some screenshots of the forest and bridge areas.




TowerJam 002 Designing the tower and surrounding world

January 18th, 2016

I started by designing the world around the tower because in my head I wanted the start of the game to involve the player approaching the tower in a fashion that shows how vast the tower is. To do this I have the player start a few kilometers away from the tower with the tower in view.

The world design involves the player starting in a small mountain peak town with the tower in a distant view. This is used as a beacon much like the north star to guide the player. The world will be designed to also guide the player and blocking geometry will be used where appropriate.

Here are the first two sketches I made to get a rough outline of the world :

Quick design of the tower splitting it up into its major sections.



Topdown view of the world (tower is in the center top)




Side view approaching tower :



After drawing this I began blocking out the world in the Unreal editor to quickly establish the scale and world size. Important to get that right as early as possible to reduce the pain of fixing scale issues later. As I worked on the layout the world design began to change relative to my sketches. There’s many reasons this happens. One of the main reasons is that once I have something in 3D I can frame the world using the game camera in different ways and see issues I couldn’t see when only desgining on paper.

I will most likely go back and redraw the world overhead view again to reflect the new world. At that point I wouldn’t be surprised if the design changes again when I got back to taking a big picture view of the level. This kind of iterative and destructive design I find immensely helpful early in the project. This is the point where throwing out things that don’t work is the cheapest to correct so it’s important to make as many mistakes as possible.

Here is an in-editor screenshot of the world at the point this blog was written.



Finally I think many blog posts for this game jam will have a cliche shot of the player standing with the tower in the background :)


TowerJam 001 The beginning

January 16th, 2016

As I mentioned in the previous 2016 post I’ve been itching to do some kind of personal game development lately but have not had the time as work, life and every other excuse has been taking up a lot of my time.  I’m trying to find time to focus on personal projects because I could spend my whole life telling myself I don’t have the time to focus on my own work.

With that in mind I went to to see what the current jams were and I saw a jam called “Tower Jam” which caught my attention. I have a deep affection for games that focus on a intricate unfolding environment. Often referred to as metroidvanias. I thought the tower jam might be a chance to do so.

My scope is ridiculous for the time I have but I’m going to try anyways. I’m essentially planning to make a game that’s a love letter to these environment focused games. I’ve been doing a second run in the PS4 version of Dark Souls 2 recently so I’m sure some of that will bleed into my design.

I will be using the Unreal 4 engine as I’ve been toying with it for the past year and have been VERY impressed with it. I think it’s probably one of the cleanest, best designed engines I’ve ever used. I figure even if I fail to produce for the tower jam I’ll at least have the benefit of having more time with the Unreal engine.

I’ll post whenever I have something to show. It will be pretty off the cuff and unrefined because I want to spend most of my time working on the game rather than blogging. I’m actually only writing this post because I’m waiting for unreal to update and I’ve already read the necessary docs I need to get started.

Here’s a screenshot of the default unreal character standing in front of a block tower without much implemented :)


2016 Q1 Plan

January 14th, 2016

Usually when a new year hits I write a list of all the projects and goals I’d like to achieve for the year. It’s always way too much but I’m doing that consciously. I just want to get everything down that I would like to do on paper. From that point I would then select what I like and make a rough timeline over the year planning out projects schedules.

I’ve found this method has one major flaw. It looks too far into the future. In 9 months my life could change in a way where the projects I had initially planned dont make as much sense. To counter this my plan is to treat my year list of goals as a backlog. From that point each quarter I select the tasks I want to accomplish and plan them out so I never plan more than 3 months ahead of time. I’m hoping this will yield better results than planning the whole year at once.

So without further ado here is my goals for Jan-Mar inclusive.

Reach 235lb

I’m currently 250lb. The result of working a desk job and having a poor life balance as well as a bad diet. Even at my worst I still got about 1-2 hours of walking exercise a day but still gained weight.

It’s quite obvious what I need to do to achieve this goal. I need to have a better diet, improve my life balance and supplement my exercise routine with higher intensity exercise. My diet habits are quite terrible right now. I tend to eat the most late at night when I get home before bed. I’ve already begun to cut this back significantly and while I haven’t lost a lot of weight I FEEL a lot better in the morning. I have more energy. I’ve heard that this can occur because going to sleep on a full stomach gives you a less effective sleep. Whether or not this is true is irrelevant because the end result is I feel better and have more energy in the morning.


I’ve been studying Japanese the last year or so very infrequently. I want to make studying a daily habit this year. Even 30-60 minutes a day would be a profound improvement. I use a spaced repetition program called WaniKani for learning how to read Japanese and it’s very effective when used consistently. I can understand about 200 kanji right now and maybe 500 words. This is without a consistent study schedule.

WaniKani uses a level up system to track progress. You can reach up to level 50 at which point you would know approximately 2000 kanji and 5000 words (if I recall correctly). I’m currently at level 10 and my goal is to reach level 14 by the end of this quarter.

Besides that I’m also studying speaking by having weekly sessions with my partner,  taking night classes and playing Monster Hunter X on a Japanese 3ds.

Functional programming and F#

Over the last couple years I’ve heard more and more about the benefits of functional languages for certain types of programming projects. Recently I’ve decided to dive in and begin learning F#. I initially started with Racket lisp but I found I like the ML style of lisp with strong typing better. Coupled with the fact F# runs on the .NET runtime and allows some imperative programming features when needed I decided it was the ideal functional language for me to start working with.

So the plan is to do a small project as well as some reading. My reading list is the following :

  • Functional Programming Using F# – This is an introductory book by Michael R. Hansen and Hans Rischel that goes over all the basic language features along with some very basic examples
  • F# Deep dives – This is a more advanced book with more real world and practical examples written by Tomas Petricek and Phillip Trelford with contributions by many people in the F# community. I’ve visited Tomas’ page farily often which is how I found out about this book. The chapter titled “Parsing text-based languages” is what initially caught my eye. Other chapters such as making games in XNA with F# also were appealing. I’m not sure I agree that a functional language is good for writing games but I won’t really know until I try!
  • Functional Data Structures – This is a pretty popular book by Chris Okasaki which I hear about frequently on various programming forums and websites. I’ve read a bit already and it’s really helped explain how immutable data structures can still be efficient when constantly manipulated and returned from various functions. I can see why this book has recieved a lot of praise.

Of course a reading list is not very useful without a project to go with it. For that I have a small project for writing game documentation. Ultimately it’s a text transformation program that converts markdown to various output formats such as websites or pdf documents. The idea that the documentation is written in readable text but can be output in more executive friendly formats. I have a github repository for the project here


Game jams have always been there to help me remember why I love game programming. Small projects that I can throw away give me a huge amount of mental freedom. Working on jams is stress free and fun for the most part. It also allows me to experiment and try things I can’t risk in a work setting.

The tower jam is exactly what it sounds like. It’s a game jam with the theme of a tower. I won’t get too much into what I have planned because I will be blogging about it. I can however say it will be more of an art project than a programming project.

Developing a card game

Fellow game developer Josheph Burchett suggested I branch out and try some game design without using a computer. Among the suggestions was designing a card game. The idea immidiately hit a chord with me as I love playing card games and actively play quite a few already such as Ascension, Dominion, Hearthstone, Magic, Yomi and Uno. Designing a card game would be a great experience. I plan to do this for the second part of the quarter after the tower jam is complete but I’m already thinking of ideas. I’m tossing the idea of making a game designed around cooking.

NekoRush +

This one is a bit of a stretch goal. My partner and I made a game for the Sony Vita a couple years ago and it turns out she really enjoyed the process. Enough to want to make another game. For this we won’t try anything too crazy. It’s more about doing a project together.

Our plan is to redo the game in HaxeFlixel so we can spend more time on the gameplay and game itself rather than struggling with frameworks. HaxeFlixel has always been great and allowed me to focus on pure gameplay code.

2016 – Time to wake up

January 4th, 2016

Recently I’ve experienced a yearning to create. This year has been especially light for me to create new personal software projects. That’s not to say I didn’t start many but this has been a pretty bad year for finishing stuff. Motivation has been a little low. I’d like to change that this year.

I think to do that I need to be a bit stronger about maintaining a routine rather than working in bursts followed by recovery periods. There was an article I read about Jerry Seinfeld regarding how he attributes a lot of his success to forcing himself to spend time every day on his craft regardless of whether or not he felt like doing it. That concept has always resonated with me and I think I’m going to make a more concerted effort to work on something personal every day. It doesn’t have to be a long time, I’m aiming for 60 mins. The important thing is that I sit down and spend some time on it. It could be a drawing, a game, some music, programming theory or creative writing. As long as it has a creative aspect.

Besides that I’m planning to work more on my health. I walk to and from work every day which is slightly over 2 hours of walking but my weight did not reduce. I think there’s 2 reasons for this. First is my diet is not great. I’m going to work on that. Second is 2 hours of walking a day is not adequate when you work on a computer all day. I need to do some extra exercise to contrast the low intensity walking.

Finally I need to allow myself to play more games, read more books and watch more movies rather than feel guilty all the time that I have a million other things to do :)

Screenshot from my current Unreal 4 project

October 17th, 2015

This is a screenshot from my current project with the unreal engine. This isn’t exactly intentional but I do like it and might try to find a way to keep it :)




What I’ve been playing #004

September 9th, 2015


I recently got up very early in the morning so I could finally beat Bloodborne. As I suspected there is plenty of reason to go back and continue playing from New Game +. So if I can find the time then I’m certainly not done with this game yet.

I’m a really big fan of the Demon/Dark souls series so I expected to really enjoy this game and I did. The world is interesting, the art/graphics are very well done with a more consistent theme than usual. The game continues the tradition of telling a lot of the story and world lore by subtle events and environment in which the user must be observant to take it all in. I’ve always liked this way of presenting the world and lore rather than being to direct with explanatory dialogue or non-interactive cut scenes.

In the tradition of the series, gameplay rules are changed considerably from the other games. Shields are no longer a common item and changes in combat mechanics make overly defensive play the least viable strategy of all the souls games. I really like this and feel this is one of my favorite changes to the souls gameplay. Fighting feels much more exciting now. Especially PVP.

Here’s some footage of me playing a very early part of the game so you don’t have to worry about spoilers.

Here’s some footage showing why you want to make sure you don’t play in bright lighting conditions and accidentally walk into a hole.


New website look

July 27th, 2015

You may have noticed that my site now looks different. It’s a new custom wordpress theme I made for my website.

I’ve spent the last 3 weeks working on the site with approximately 30 hours of development time. The reason I decided to make my own theme is the following :

  • This site has a lot of static content that’s not necessarily easy to organize without using a ton of WP plugins. Even with the plugins it’s hard to manage.
  • I wanted a chance to practice some web and graphic design. I do a lot of programming and technical work these days. Practicing visual design helps keep me mentally balanced.
  • The existing wordpress themes I’ve used are never quite what I want and modifying them is always a hacky mess.
  • I wanted my site to look unique.

I will be writing up a small post-mortem this week going over exactly how I setup this theme, what went right and what went wrong.

Overall I’m personally quite happy with how everything went.

What I’ve been playing #003

June 30th, 2015

Dont Starve – PS4

I wasn’t sure I would be interested in playing this game for a couple reasons. First I felt I might be getting a bit bored of survival games. Second, relative to the games in my backlog it just wasn’t a priority.

Despite this, one Friday night before falling asleep with my partner I put the game on for a quick try and did and survived a couple nights before dying. My partner seemed mildly interested. Or so I thought…

The next day she picked up the game and started playing around a little bit. What I initially thought might be a half hour play session on Saturday morning ended up turning into a 7 hour Don’t Starve binge session. I kept coming upstairs to check on her only to get the response “I’m almost done playing, I’ll be down soon”. I remember how good it feels to get so immersed in a game like this that I felt happy for her to have found a game experience she likes this much. I was jealous too!

When she was ready to take a break at about 7 hours I started playing with her as my passenger seat driver. I’ve managed to make it about 11 days now. I think I’m at the point where I can see what I need to do to trigger the win condition which is make a rod item that allows me to escape the island I’m stuck on. It’s only a hunch at this point though since we are not using faq’s or guides at this point in time.

I think this game will continue to get quite a bit of play time over the next couple weeks so I will return with some more thoughts in the next article.

Here’s some gameplay from a playthrough the other night with my partner.

Marvel Vs Capcom 3 – Sony Vita

I have both a Sony Vita and Nintendo 3DS which I both love but statistically my Vita gets far more play time than my 3DS. There are a few reasons for this but the biggest reason by far is Marvel Vs Capcom 3.

The MvC3 port for Vita is amazing and fits the device so well.

MvC3 has 4 main buttons which fits the Vita’s responsive, well made buttons perfectly. The team tag buttons map to the Vita’s triggers which is fine for a game like this considering they aren’t really needed in any complicated, timing-heavy combo’s or inputs.

The very well implemented suspend feature works incredibly well with this game. What I mostly do is setup a training mode with my team and CPU at medium limited health and the rest of the standard arcade mode options. When the game is setup like this, immediately after a round ends the same match starts up again. It almost completely eliminates the wait and tedium or restarting a new match after the current one is open. In fact I don’t have any break from the action at all unless I want to change my team.

The end result of this setup is wherever I go. If I have to wait 2 mins or more I can just take out my Vita, hit the power button and have a match of MvC3 ready to go. No time wasting menus, no inter-fight animations or waiting. Just pure game.

There is an argument these days that games have too much non-game stuff you have to do to play them such as wade through menus, tutorials and even publisher splash screens. The setup I have going with MvC3 on my Vita is the antithesis of this problem.

Here’s a video of some high level tournament play :

Unreal Lightmass Study

June 22nd, 2015

So I recently took a vacation and during that time I thought I’d sit down and play with the Lightmass rendering system in the Unreal 4 engine and see how it compares to a high end renderer like mental ray. It turned out quite well although there were a few visual issues that came up.

Here is the series of images that shows my progress towards my scene match.


In this first pass I learned the lesson that when you have multiple monitors, make sure they are calibrated correctly. I had the reference image on one monitor and was doing the work in the other monitor.

They were the same monitor but one was hooked up using DVI while the other used HDMI. For whatever reason this caused them to have different color and temperature profiles.

Once I looked at them on the same monitor I began to see how different the two shots were.

The camera in my scene was also not setup very well. It didn’t match the shot and seemed to be a little rotated.


This second show shows some of the progress I made setting up the camera and getting the color profiles to match. I did this by checking the reference image and working in the same monitor.

Unfortunately there’s also some steps backwards here. The shadow on the floor is too sharp, there are bright light artifacts on the top of the screen. The floor texture is too dark and non-reflective. Finally the wall in the back of the scene had the floor texture applied to it!

The texture error seemed to be due to some funky stuff going on when exporting my model from Maya to Unreal. Resetting the materials and then re-applying materials per-face eventually fixed the issue. The materials always seemed correct in Maya though. It’s possible it was a exporter bug. It’s also possible it was a human error on my part.


This next pass cleans up the texture errors and attempts to make the floor texture better but still suffers from the over-bright corners in the top of the scene and the odd shadow on the floor on the bottom of the scene.

The floor shadow is also still too sharp.


In this pass a lot of the errors are starting to get cleaned up. I also modled in the small piece of trim along the bottom part of the wall.

The over bright corners at the top have been fixed up. This seems to have been a result of me dropping the global illumination contribution of my main light as well as disabling screen space ambient occlusion (I still use AO for the global illumination pass though).

The floor shadow is now also softer and the floor is more reflective.

Also starting here I broke my main light into 2 lights. One with a low GI contribution and very soft shadows to sort of act as a advanced ambient contribution light. The other light had sharper shadows and significantly less contribution to the global illumination calculations.


This final pass is where I told myself I just need to walk away from this project as it had now began to consume a decent amount of time. I was attempting to get some of the details that were blown out in the previous render visible again.

Unfortunately I deviated too much with my lighting color and took a bit of a step backwards from the previous render. There is also a slight artifact on the bottom trim where the wall changes angle.


This was a fun 2 hour quick project that ended up becoming a 6-8 hour study about how Unreal 4’s lighting and material system works. The lessons I learned from tweaking various material, light and render values helped me understand Unreal 4’s rendering process immensely but towards the end of the project the gains were becoming less and less profound so I cut myself off and considered this project complete.

I learned a lot and will be applying what I’ve learned here to all my future unreal projects.