I’m a gamer, are you?

Let’s throw it out there Are you a gamer?

I have seen confusion and way to much anger over this issue lately and like plenty of other people I will weigh in briefly.

I want the focus of this to simply be – “what is a gamer”, in the context of computer games.

Lets make this as simple as possible, a gamer is any one who plays games.

A gamer is not limited to:

  • Gender
  • Race
  • Location
  • Age
  • Anything else you can come up with, don’t do it

Sure, some people love first person shooters, others love angry birds. Yes they are both “gamers”.

This is like people watching comedies or action movies, we are all watching films the only thing that is changing is the genre

There really isn’t any more to this, children, men and women all play games. The real issue is that we can’t seem to play them together.

When good gamers go bad

From where I stand (and it’s lonely up here) the issue can start when a group identifies with being a gamer.

They play a certain genre of game and they play it a lot. So do their friends and they create and join the same social groups, so if I’m a gamer and I put all this time and effort into this single genre that must make me a real gamer. If i’m a real gamer that must mean that you aren’t.

And if my immediate circle is male, then that must mean that females aren’t gamers. If they aren’t gamers that must mean they can’t play games.

Not only is all of this wrong, it’s a damaging mindset to be in.

At least 40% of all gamers are female, you can check the stats here (US) or here (AUS). This doesn’t mean 40% in a given genre though.

image from: http://www.esrb.org/about/video-game-industry-statistics.jsp

So where do we land on “are you a gamer”?

If you want to be sure, join us! games are a unique medium and should be shared and celebrated.

 

Hello little platform 0.03 (Angular pt1)

Initially I had wanted to run with ASP.NET web forms for the first stage. I don’t have vs 2013 though and downloading will take hours. Where is my NBN i’m in inner Melbourne… anyways.

So Angular lets go for a spin. Let’s watch some tuts to see what we are working with.

The Flatlanders need a store...

The Flatlanders need a store…

With Bootstrap (I haven’t used bootstrap before, it is proving to be a pleasure) and angular downloaded lets start making things happen, I’ll skim through the tutorials gleaning whats needed for this project as I get my head into angular.

Progress is solid

Angular tidbits for future use:

  • orderBy filter (can be used in ng-repeat)
  • limitTo:NUM filter (lets limit high score length for lovely formatting)
  • use ng-src when loading images from an Angular variable
progress!

progress!

2015-06-14 19_43_14-index.html

Looking the business

I’ll leave Angular their for the moment, next up is getting the forms working and plugging it into a database.

I can see why Angular is popular, it is straight forward to work with and gives nice results and plenty of control. BootStrap is ensuring those results look good!

Nothing is live yet, but it’s all committed at Git hub commit: number 8

Hello little platform 0.02 (Database selection)

With the database being a common point between every platform some research should be done to ensure minimal issues down the line.

So, lets recap on what we want to use

  • ASP.net
    • Web forms
    • MVC
  • CSS/CSS3
  • HTML/HTML5
  • Javascript
    • Ext.js
    • Jquery
    • Angular.js
  • C# (possibly C++ if time permits)
  • PHP
  • SQL or MySQL

We are pretty much exclusively dealing with server side technologies so i’ll just check the ones I am unsure off.

A quick check to ensure ASP.NET plays nice with MySql and we can take a closer look at C#.

Cheers google!

Cheers google!

A few clicks later and it looks like C# is going to do what we want, I can see plenty of people using it on stack overflow and a nice looking tutorial on zetcode.com

Stack overflow

zetcode tutorial

Looks like MySQL will be a fine choice for our database, let’s move on.

 

Hello little platform 0.01 (Overview)

Part 1

With Git up and running it is time to make something happen.

But what (you thunder) am I making?

Ideas hashes out

Ideas hashes out

In the initial post I listed a bunch of technologies. The idea is not to have them all interact directly but rather indirectly through a central database.

The goal is that they will all validate logins and allow the editing of a high score board. Pretty simple stuff. Perfect for testing out various platforms and new tools.

Each language will be developed independently and locally with GitHub being kept up to date as things develop.

Once each section is complete i’ll upload them to a web host for live testing(look for the link in later articles)

I might use C# to control the populating and re-building of the database as a nice little extra.

GitHub repo can be found here

Hello little platform 0.00

I’m going to build a little web platform. This will be a fun little task and allow me to approach several technologies I haven’t had a chance to get into.

I’ve based the technology choice of a job search for front end developers to ensure I’m using what the cool kids are into.

Technologies in mind:

  • ASP.net
    • Web forms
    • MVC
  • CSS/CSS3
  • HTML/HTML5
  • Javascript
    • Ext.js
    • Jquery
    • Angular.js
  • C# (possibly C++ if time permits)
  • PHP
  • SQL or MySQL

The goal? lets save talking about that in part two and get right into it! rest assured though the goal isn’t to throw all these things into a giant mixing bowl together.

Step one – Git and GitHub:

Up till now I’ve only had a chance to use perforce and Tortoise SVN, this seems like a good time to try out the popular Git.

Let’s begin in a logical place, the home of Git.

Git_homePage

Learn in my browser, sweet!

I have a fair idea how Git operates. Foundations are great though, so I’ve worked through the intro tutorials online.

The aim isn’t to master any one thing, just enough to do what I need for now. Branching/merging branches and all that good stuff.

These nifty online courses are run through Code School this is the first “Git Real” video

2015-06-13 20_44_44-Git - Code School

 

Once done a simple download and install of the git client and we are good to go:

With a repository created next up is connecting to GitHub, i’m running with Git Bash. I tested an SSH key, but that was more pain than it was worth. HTTPS all the way.

While GitHub GUI is an option it is out of bounds for this little project.

More effort than the GUI - more control?

More effort than the GUI, maybe but lets enjoy more control! either way the SSH didn’t pan out. Going with HTTPS

It was around this time a realised I could not create a repo locally and then push it to GitHub, it had to be created on their first, so I did that.

I find Absorbing the terminology with anything new is an annoying hurdle, often I know what I want to do but I’m hitting the wrong pages for a bit. This time it was trying to “commit” to GitHub when Github should be “pushed” to as a remote repository… It’s all clear now.

I’m going to fork this a few times through development in a few logical places, to prepare for that I will make sure I can fork and merge at will, what fun.

Lets wrap this first installment up, so far the following is working from the Git Bash client:

  • Cloning/creating repositories (locally and on GitHub)
  • Forking/merging repositories
  • Adding/Removing files
  • Working with Git Bash client and GitHub in general

Git cheat sheet:

  • git commit -m “message”
  • git status
  • git log
  • git add –all
  • ESC then :quit to exit when in the adding comment menu (if you forget to add a comment, lord help you why was that so hard to find…) – save a hassle and -m “message” on commits
  • :w if your file is unsaved while in the comment menu
  • managing remotes
  • git branch
  • git checkout branchname
  • git rm ‘fileName’ (remove)
  • git merge branchName
  • git branch -d branchName
  • git docs
  • git branch BranchName origin/branchName (pull remote branch down to local branch)

 

Practical Programming

I used to do IT work, I printed some flyers and would fix computers. Fixing computers for the average home user isn’t so hard when you have the know how.

Knowing this it annoys me when I see people’s lives made difficult by what should be a service that supports and informs. When  asked to restore a backup from an external drive to a new laptop for an older friend I thought “sure this will take ten minutes”…. you see where this is going.

The IT technician had used the default backup software that comes with the hard drive. I have a dislike of these packaged software as I often think of them as “bloatware”, if I want something on a hard drive i’ll put it there. Putting that aside though I installed the software and went to the recovery options, uh oh… no backups detected.

I tried all the standard things, updating software and praying to various deities. No luck, it looked like the backup wasn’t being read due a windows permission error, or something. The software has a single task and failed I wasn’t wasting more time working out why it didn’t do the thing it was meant to.

Time to get our hands dirty and do some practical programming.

The backup files where stored in a simple .zip thats a plus. They where also in hundreds of individual .zips, that’s a minus.

With the files sitting there in zips I decided a two pronged approach could rebuild the backup.

Batch unzip

Firstly the zips needed to be taken care of, with so many zipped files a batch file was in order. I found a suitable one through the google machine:

http://serverfault.com/questions/8092/how-do-i-extract-all-archives-in-the-subdirectories-of-this-folder

FOR /D /r %%F in ("*") DO (
    pushd %CD%
    cd %%F
        FOR %%X in (*.rar *.zip) DO (
            "C:\Program Files (x86)\7-Zip\7z.exe" x "%%X"
        )
    popd
)

This gem unzips everything below the directory it runs in.

Python folder structure rebuild

With the folder unzipped the last thing was to rebuild the original folder structure.

I try not to do anything destructive in any workflow, so the goal was to rebuild the structure and copy the files into it.

For this I used python, this is a single use high end script making other options overkill.

I ran into some issues with os.listdir() throwing errors, since this is a once shot use I just threw it all into a try/catch and left it alone. It was only the odd uneeded system file that this happened for.

Throw in some recursive goodness and we have a functioning script!

import os
import shutil

dest = "D:/restore";

pathToMerge = "D:/folder/moreFolder/Backup Set yyy-mm-dd timetime";

"""
fileFinder recursively digs down to each file within a directory, building and
copying to the new one as it goes
"""
def fileFinder(path):
    if(os.path.exists(path)):
        try:
            dirList = os.listdir(path) #due to system files this can fail

            for x in range(0, len(dirList)):
                oldPath = os.path.join(path, dirList[x])
                if(os.path.isdir(oldPath)):
                    fileFinder(oldPath) #if we find a folder drill down recursively
                else:
                    #split the drive path at the correct junction
                    splObj = oldPath.split("\\C\\")

                    #create restored file path
                    newObj = os.path.join(dest, splObj[1])

                    #create folder path to allow os.makedirs()
                    subpath = path.split("\\C\\")
                    newFolder = os.path.join(dest, subpath[1])

                    #create folder if needed
                    if not os.path.exists(newFolder):
                        os.makedirs(newFolder)

                    #notify the user and copy the folder
                    #note that so many print statements can slow things down, but I link the feedback
                    print("copying file: " + newObj)
                    shutil.copy2(oldPath, newObj)

        except:
            pass
            #print("found an error, ignoring that sucka: " + path)

    else:
        print("path does not exist")

"""
drill down to the top level backup within each folder and call the file finder
"""
for basePath in os.listdir(pathToMerge):
    newPath = os.path.join(pathToMerge, basePath )
    for copyPath in os.listdir(newPath):
        if(copyPath == "C"):
            src = os.path.join(newPath, copyPath)
            #print(src)
            fileFinder(src)

And boom, rebuilt structure.

Practical programming

Being able to create these little scripts is a fantastic ability that any computer user would benefit from.

For a lot of people though this just isn’t a practical option. The importance of  decent IT technicians cannot be overstated!

Game AI – C++ Graphs and Pathfinding

This was an assignment I had been looking forward to, It was time to learn about AI! Unfortunately it was less like the matrix and more like complex Ideas and plenty of looping through lists.

You can download and view the final here

New concepts included:

  • Graphs
  • Nodes
  • Path finding algorithms and their implementation

Learning about these path finding algorithms was fascinating, how they differ and how they can be implemented for game mechanics.

Alongside the implementation of these algorithms was the structure of the program itself, I learnt a lot about modular design in the way classes are structured.

Presentation is key

Agents finding a path between selected nodes

Writing on the wall

I wanted a nice UI to give information to the user, this required a font library to be installed. While I respect the power of C++ having to spend a chunk of time to do something as simple as display text is never going to be fun.

Drawing the line

Another feature that I often take for granted is drawing lines… if you want anything above a single pixel line. Say a nice thick line with a subtle fall of gradient,  you have to go and create that yourself, enjoy!

Math Library

This project used my own math library from previous projects, after using almost every over a few projects it’s pretty solid. (Building my own allowed me to approach Monogames matrice library with confidence in a later project)

Debug lines

For both this and the previous projects I have learnt that debug lines and debug images are so very helpful, I had debug circles around every agent, and lines showing there intended direction. This kind of visual debugging allowed me to hone in obviously bad behavior.

As with all my learning projects A big thank you to all my Mentors, you know who you are.

Mouse Hunter – C++ Console Game

Woah now, what did mice ever do to us? and why make a game about hunting them?

Depending on their fighting ability

Depends on their fighting ability image from: http://www.darkswordminiatures.com/shop/index.php/mouse-warrior.html

I’m happy to say that learning c++ is coming along nicely and will continue to. It’s no small thing for someone to say “I know all of c++”.

Pointers, references, lists and iterators, I’ve had the pleasure of using them all and more so far.

I am getting what I want from learning c++. A deeper understanding of programming for creating full blown applications and games and knowing how to approach the structure of these applications, classes and headers… Lots of them.

Base game play (straight from the tutorial)

The player can shoot fireballs at “evil monkeys”, these evil monkeys hunt the player relentlessly. This tutorial from 3D buzz was recommended to my by a colleague and mentor.

After working through it I can see why. It’s solid learning material.

New game play (It’s mouse hunting time)

Doing tutorials are great, Do them, do lots of them. But don’t’ “just” do them. Take the knowledge you have gained doing a tutorial and apply that to create something new and your own.

My own version has the following additions to the game you have on completing the tutorial:

  1. Game states (splash, win, lose, game)
  2. Mice
  3. Leader board that loads from disk
  4. modified player
  5. Game mode
Mouse hunter splash screen

Mouse hunter splash screen

The gameplay is based around either defeating the mice or collecting the cheese before they do. Once a mouse has cheese they cannot be hurt.

The player loses lives every time a mouse gets cheese, pretty simple!

Hunt mice, collect cheese!

Hunt mice, collect cheese!

And you can play this cheese eating, mouse hunting fun here

If you happen to play it and find any bugs or feedback i’d love to hear it, although it definitely has some balance issues.

Learning resources

3Dbuzz tutorial – This tutorial stands the test of time, it’s still a fantastic intro to programming in 2014 and I recommend it to anyone wanting a friendly introduction to c++ with a focus on games development.

The Academy of Interactive Entertainment – As staff at AIE I have access to the programming curriculum, all the lectures etc. This has been great to see how an introduction to programming has been structured.

Mentors

9-dog-professor

image from: https://www.pinterest.com/pin/2111131050743242/

I’m in a pretty lucky position, I’ve got three mentors available who love it when I corner them with coding roadblocks. I find I am able to move quickly when I bring my roadblocks  to a mentor, whether in person or online.

The main thing you get from a mentor is feedback and the mind expanding experience of approaching a problem from a different angle. Pen and paper often comes into play as we work our way through each new obstacle.

It also good to have people with experience guiding you through program construction, why things are done a certain way and what the repercussions might be if that certain way isn’t followed.

Everybody should seek feedback from their peers and people with experience who can provide constructive feedback.

Extending the game play (resources)

sqlite370_banner

The only additional resource needed to create my version of the game was SQLite to allow database use. I’ve done plenty of web dev but this was my first c++ Library I installed purely from the documentation.

SQLite database

Working with a c++ library for the first time was an experience in itself, it assumes you know your way around Visual studio and know how to get a library going… I did not.

After stumbling around with code implementations I can safely say that the “five minutes or less” introduction tutorial took me significantly longer. As soon as the database was up and running though, awesome! I got it working all by myself, taking a few baby steps out from under my mentors wings.

 

Intensive Unreal cert III training at AIE

This week I’ve had the pleasure of running an intensive cert III and VCE VET IDM training for our Vet in Schools teachers at AIE’s Melbourne Campus; we are moving from the Unity3D engine to Unreal Engine 4.

Witness the learning taking place below, You can see the link on AIE’s page here

I don't even remember this being taken!

I don’t even remember this being taken! That’s me showcasing the AIE logo.

The biggest thing I found during this week was the amazing array of character Ideas the teachers had; I’ll be taking a second look at how the curriculum is structured around the character importing process to make it more flexible.

This is the first time I’ve had a chance to sit down with a large group and teach the brand new curriculum I have been developing over the last 6 months or so.

The class numbered around 20 odd with various experience levels, everything from never having touched a 3D package (Maya) or a game engine to having used Maya and Unity for a couple of years; balancing this experience range proved to be a challenge in itself.

The course design and content was received as well as I could hoped for. With everyone enjoying themselves, I’ve got some solid notes on tweaks for specific areas of the course.

In addition to the valuable feedback about the course I’ve added some notes to my own teaching style for dealing with bigger classes.

 

Errors, simple not complex – Part One

Programming, it’s a complex beast. While I haven’t talked much about my current studies in C++ you can safely assume I’m knew to the language and it’s intricacies.

The current assessment i’m working on requires an SQL database. All well and good I think to myself. I’ve done plenty of PHP and MySQL web dev.This will be a breeze.

That's pretty breezy

That’s pretty breezy image from: https://www.pinterest.com/vivamune/windy-dogs/

I knew I needed to use SQLite as defined by the assessment. So I need a library or something? Heading over to SQLite.org has everything you need to get going.

So, I added the .h and .c files through the right click “Add existing item” menu. Then i’m presented with the below error.

Cannot open source file

Cannot open include file

Looks can be scary

Looks can be scary

What is going on? I start looking deeper, maybe there is more involved to getting this going than I first thought.

I spent hours over two days looking for a solution, I tried building libraries including everything and altering so many settings of the project. Pro tip: do not alter settings because you feel like a good tweaking can fix everything, it doesn’t.

The solution

Copy the .h and .c files into my visual studio project.

I twigged that I might be barking up the wrong tree when I read the following.

stack overflow solution

I love you stack overflow

The solution explorer doesn’t show if stuff is usable! how helpful, knowing that I brought the files into the project and re-added them. Including the header no longer broke stuff. Progress!

Take it from me

So many times I have been caught out by this. The error is not cryptic at all, Visual Studio has no idea that i’m not going to link to the assets through one of the many methods it has for this.

So it told me it has no idea where to actually open the files, only that it knows I want them open. I feel you Visual studio and i’m sorry I didn’t understand.

Let’s not assume

I’m used to using 3D applications, for the most part these applications allow you to drag and drop assets into a content/project manager where they will either:

  • Import the asset into the project

Easy for asset management, common in game engines

  • Create a link/reference to the assets location and load it from there

Forces you to manage your assets wisely or rue the day you laughed as you linked assets from several different hard drives.

I assumed that by showing the files in the project solution VS could use them, this turns out to not be the case.

No I do not want to add includes to the project to work around this or setup a central place to include from. That’s for future me.

As with all lessons it’s well learned, learning them faster would be nice though.

Talks given – Digital Learning and Teaching Victoria

This past weekend I had the pleasure of giving three talks at the Digital Learning and Teaching Victoria (DLTV) conference on behalf of The Academy of Interactive Entertainment.

Conference Program Overview _ Digital Learning and Teaching Victoria

The conference theme was”Creating new connections”.

The talks were fun. Both to put together and take part in.

I prepared three distinct talks, below is a brief overview.

A fresh look at VCE VET IDM

This was an in depth look at a curriculum currently in the works for the Victorian scored assessed VCE VET IDM course.

With a focus on:

  • My process for developing a course
  • Meeting the goals of both secondary schools, students and AIE
  • How the coursework is designed to engage students in new ways
  • Christina covered UOC integration

Fresh look at vce vet idm

Interactive presentation for students:

Shawn Marinakis, Christina Lee and myself gave two interactive game presentations to high school and primary school aged students.

I put together the interactive tower defense game using the Unreal Engine 4. Assets/level’s are from Epic Games combined with my Blueprint Scripting assets to create the interactive portion of the presentation.

This was fun to create, we had the goal in mind that students could come up and play with the settings, which worked out well.

Starting with an imbalanced tower clearly shows game imbalance

Starting with an imbalanced tower clearly shows game imbalance

Custom Tower defense interactive game

This level from the UE4 market place was a fantastic example of a finished level

UE4 tower settings

Example of settings students could change

 

DLTV Conference - crowd snapshot

Creating 3D content is for everyone!

 Interactive presentation for teachers:

Stepping away from the fun side of tweaking pre-made settings Christina and I were able to dig a little deeper into how the unreal engine and other industry standard technology can engage students to excel in so much more than just making games.

Exploring this technology with a range of secondary teachers was a fantastic chance to see how other people perceive technology how may not be aware or used to it. This is a topic i’d like to explore at a later time.

Students that have a chance to work with this technology are exposed to the requirement to develop key skills such as:

  • Problem solving
  • Design
  • Critical thinking
  • Planning

By implementing these skills students get to create a fully playable game, it’s pretty cool and beneficial to the students in all walks of life.

Class blueprints for the tower defense game

Class blueprints for the tower defense game

Thank you to all the organisers of the event and I look forward to the next one!

Shawn Marinakis the Communications Coordinator for AIE Melbourne.

Christina Lee is the VETiS coordinator for AIE Melbourne.

Custom timeline control – Pyside – Maya 2014+

Recently a work colleague approached me with a request for a custom feature in Maya.

The request was for a custom tool that replicated the Maya timeline and it’s tools in a torn off window.

The colleague has a thing for large windows when animating, they enjoy a very custom setup.

So useful

If it’s useful to one person others may find it helpful as well

Tools that are going to be used are the best kind to make.

This is written entirely for Pyside, using a method for controlling Maya elements using pointers shown to me by Malcom.

As it’s written for pyside/Maya 2014+ you need not install anything to use it.

The timeline

As I looked a little deeper into this I came across this with the timeline:

From the Maya docs here

Note: only one timeControl may be created. The one Maya creates on startup can be accessed from the global string variable $gPlayBackSlider. Also, it is not a good idea to delete it.

So there can be only one, and yes I deleted it a few times. You do not want that, it does not come back.

So this tool rips the timeline from Maya and re parents it into the QT window, Holding a reference to the location it came from.

It then puts the timeline back on the close event of the QT window.

Range control

Creating the range control is straight forward as there can be more than one of these see here.

Other features

The tool will store the position and size of the window when the window is closed. It will then restore to this location/dimensions on next use.

There other elements are all QT.

Download

The script can be downloaded here

Installation and use

  1. Unzip and copy the to “timelineCtrl” folder to maya script folder for example:
  2. C:\Users\YourName\Documents\maya\scripts
  3. run Maya, open script editor (Python window) and type in:
  4. import timelineCtrl
  5. timelineCtrl.run()

The import and timeline control lines can also be saved off to the shelf for easy use.

And boom, tool is good to go.

Alternate use method

If you have a thing for not installing scripts you can do the following:

  1. Copy the contents of “BigTimelineWindow.py”
  2. Paste this into a python script editor window
  3. Run the code

Note: The refreshing of the states in the torn of window currently do not update as well as they could.

Tested on windows only, will note work with pre-Maya 2014 as Pyside is not part of the standard install.

Minecrafting the Dome

During 2013 the State Library of Victoria was celebrating the 100th Centenary of it’s famous Dome building.

While the library had plenty of different celebrations of the historic event Hamish Curry then of the State Library was after a way to do something fun and engaging involving both a younger audience and technology.

Previously Hamish and I had run Minecraft based holiday courses at the State Library that were pretty popular, often filling up within a day of becoming available.

2012-04-13_14.05.19

Everything looks so peaceful

2012-04-13_14.30.12

Welcome to hell

With the knowledge the success of these holiday courses Hamish knew how popular Minecraft was and how perfectly recreating the Dome inside Minecraft would engage a young audience.

Organising the event was a collaboration between three parties headed by myself. The third party was Vitta – Victorian Information Technology Teachers Association (now DLTV). Vitta helped us to spread the word of the event to schools across Victoria.

Mincrafting the dome – Application

Custom server – we needed to build a specific machine to run the server and bring that to the library, for this Peter Smee (Then Sys admin at AIE Melbourne campus) was invaluable

So what did we actually do?

We all learnt about the dome:

Hamish instills knowledge

Hamish instills knowledge

We posed in the dome:

IMG_5795 IMG_5799

And we made the Dome in Minecraft:

IMG_5851 2013-08-10_15.14.29

 

 

We sang:

And finally we finished with an amazing result:

 

While i’m pretty Minecrafted out, running these kind of events is always fun.

after all the hard work

Working with these guys was fantastic, they got so much done and the final result is amazing.

I mean I’ve spent some solid hours teaching a holiday course on how to make awesome stuff, such as how to make Batmobiles and race them, who doesn’t love Batmobiles?

Bot mobiles rock

Bot mobiles rock, the teapot less so

Lets get Unreal – Engine 4 announcement

This year heralded the release of Unreal engine 4, made by Epic Games.

Unreal Engine 4 logo

If you are just getting into the games industry this may not seem like a big deal, Take Autodesk for example they update every year (this is a discussion in itself) and wasn’t there Unreal Engine 3 and Unreal Development Kit just before this?

Unreal_Development_Kit_UDK_Logo Unreal_Engine_White_Logo

Well yes, yes there was. But let’s cast our minds eye to the past and take on board a few things. Things are always worth knowing.

A little history:
UE3 – Came out in 2004 and while it has been updated throughout this ten year period these have all been under the UE3 badge.

Note: If you are unfamiliar with software development of any type it’s a standard practice to release a major version and update it while the next major release is being developed. Much in the same way a games console will stay in it’s current generation for 4-10 years or so but may undergo minor updates while the next console is being planned.

Xbox 360 versions

Prominence in the gaming world

From unreal versions 1-3 Epic games has enjoyed being at the forefront of AAA game development. With popular games on most consoles and PC the unreal splash screen became a familiar site for many.

powered by unreal engine

UE3 licensing

Licensing for these previous versions where limited to high end studios with triple A budgets. I don’t have exact figures on UE3 licensing but you can assume an indie studio would not be able to afford access.

The thing to understand though is that pre-2007 there was no need for Epic Games to even consider another licensing  model. Consider that if Epic had opened it’s doors in the early 2000’s who would have used it? sure there have always been indies and occasionally there was a hit game but it’s only in the last 7 years that indie studios have been viable on a large scale.

UE4 was always going to be developed. But it most likely was not always going to be for general use.

so what changed?

Rise of the indie market.

In 2007 the Iphone was released and with it the app store.

So many apps

IOS was the driving force in bringing mobile gaming into our daily lives, what ever else we may think of Apple they are game changers.

The boom of mobile gaming saw the rise of the Indies (I love that line, so do these guys). This is a continuing trend that currently shows no signs of slowing down.

For many this was the chance they had been waiting for. A chance to make games they wanted to, either to share there vision or to simply be able to form their own studio.

This is a great thing to be able to do on both counts.

Response from Epic games.

Epic games observed this emerging market of amazing game developers producing hit after hit, at the time they where unwilling to de-value and risk there current licensing deals so what could they do?

In 2009 Epic games released the Unreal Development Kit (UDK)

So Unreal, much Kit

So Unreal, much Kit

While perfectly functional the UDK interface is aging

While perfectly functional the UDK interface is aging

UDK was and is free (although it is currently being phased out) for development use for anybody, with royalties being due if/when a game made a certain amount.

UDK had plenty of power for developing. It also had some imposed limitations, lets summarize a few points:

  • No source access.
  • Has “Kismet”, a basic (when compared to UE4 or playmaker for Unity) visual scripting implementation.
  • Scripting must be done through UDK’s unique “unrealScript”.
  • Some heavy features such as multithreading were limited.
  • Wicked networking ability
  • Unreal Tournament was the base for everything
  • Node based material editor

UDK was a great way for Epic to gauge the game dev communities interest in their engine. The interest was there but it just didn’t feel quite right, the community wanted/needed different licensing and an open communication with the Epic development team.

Keep in mind UDK is not UE3, UE3 did not have these limitations. Although i’m pretty sure it also didn’t have Kismet.

 Wow ok enough history – Unreal engine 4 release

I remember reading the news, sitting in a coffee shop waiting to visit a high school to take a workshop in Unity, ah Unity… that is a talk for another time.

Opened up the laptop and boom:

I didn’t believe it at first

So Unreal Engine 4 had no release date, none at all. We knew it was being developed but had no idea when it might come out.

The guys at Space Dust Studios have a great write up here of the UE4 announcement at GDC (as well as a comparison to Unity).

What is working with UE4 like and how does it differ to UDK?

Blows it away in every respect, but then you would hope that’s the case.

  • Source access – full access to the the c++ source
  • Blueprints – Fully functional visual scripting system, so good
  • Support, both from the devs and the community
  • Openness of the devs, check out the UE4 road map here and the blog post about it here
  • Market place – sleek interface that will allow 3rd party content to be sold to developers (currently not active for 3rd parties but is in use by Epic to share example projects).
  • Templates – these are great, want to start in a flying space ship using only Blueprints? sure thing!
  • Example projects – these are often fully fleshed out game worlds
  • Content example project – this one is worth pulling aside from the standard example projects as it’s an amazing resource in itself
Mmmm dark interface

Mmmm dark interface

What blew me away is that this is all part of very reasonable license agreement, this looked so good that I had to did some thorough checking before getting carried away, and then I get really excited.

Multi-platform goodnes

Multi-platform goodness

The licensing was all of a sudden friendly to indies and also educational institutes.

For example:

  • An indie studio can pay $20 per per seat. At this time they can cancel the subscription and continue to use the engine, opting back in at any time is fine.
  • An academic institute will only have to pay $20 a month or a year using the above method for the entire campus. This is fantastic for all institutes and is a good sign Epic is keen on students getting familiar with the engine.

For more about the licensing please visit the source here.

UE4 is a fantastic engine and I’m enjoying working with it.

This post is getting pretty big, I’ll leave it here and post in the future with a more in depth break down of UE4 on it’s own. May even do a tutorial or two on using the engine.

While I do want to talk about comparisons of game engines as well i’ll leave the fun for another post.

Disclaimer: Any references to decision making by any party is pure speculation on my part, informed though it is.

 

Mind the gap Feb 2013 – June 2014

Image by Robert Shea

Art by Robert Shea

Oh no… I last posted in Feb 2013. What happened?

In short:

  • Full time work, what a time sink. I’m currently at The Academy of Interactive Entertainment. Developing, Teaching and various in house projects.
  • Creating Nuke tutorials (I’d love to do more, time willing), often based on Andrew Kramers amazing After Effects work, for example:

Zombie supermarket on xbox controllers, hell yes.

Zombie supermarket on xbox controllers, hell yes.

You can only imagine the sounds Dylan created for this

You can only imagine the sounds Dylan created for this

Pyrrha goes hi poly bananas - do not ask her why.

Pyrrha goes hi poly bananas – do not ask her why.

  • One of my development websites became helpfully corrupted taking down my own with it, rebuilding was always a problem for future me.
  • I coordinated a team along side the esteemed Hamish Curry comprised of several high school students to build the Victorian state library in Minecraft, this was an official event.
State library made in Minecraft

So many blocks

  • CG society masterclass by the esteemed Malcolm Thomas-Gustave covering PyQt for Maya – this was extremely informative, Malcolm knows his business and I look forward to basking in his knowledge again.
  • I took part in a MOOC focusing on the interesting subject of Gamification, MOOC’s are pretty cool.
  • Training and Assessment cert IV (TAE), you can now officially listen to me, whether you do or not is up to you.
  • Cert II in programming (IDMT) using c# and XnA.
  • Accepted that I need more sleep than i’d like.
  • Everyone needs a social life, don’t pretend otherwise.
  • That’s the last year and a half…

So whats next?

i-have-no-idea-what-im-doing-dog-300x190

Always true to an extent

I will definitely post more, promise. I’ll even try to make it interesting.

At the beginning of last year I had different goals in mind for my website, With new goals comes changed content and overall feel.

Less formal and selling stuff, more bloggy and focused on “development”.

To me this term is something everybody should strive for. You don’t need to be the best, you just need to be better tomorrow than you are today.

I’ll post “posts” in the vein of:

  • Interesting and relevant articles.
  • Ongoing Development in 3D related areas, Unreal engine 4, what an engine.
  • I’m starting down the path of learning C++, I’ll document this process.
  • Hell I might even try and do some interviews.
  • Anything I feel like, it’s my blog!

Does anybody read these? well that’s not really the point is it…

Stargate Kawoosh – Draft one

Back in the helm, so this is the Kawoosh effect from Stargate.

I might be a little late on the bandwagon for this but who doesn’t love the kawoosh?

There are a few ways to go about this one, by far the easiest to start with is this short and sweet method in 3DS max, link here

huh seems the original video has been taken down over a year later… well it was great trust me. Maybe I’ll re-create it.

 

First draft here

Time willing I’ll finish this one of with some live action.

 

Other methods worth looking into are

  • Particles (headache)
  • Blendsapes in Mudbox and maya – would work nicely

I’m looking to do a new shot each week, time is of the essence though so

Enjoy!

 

Bugs are fun – windows permission error

Recently I rebuilt my computer with an SSD – do it they are fantastic.

Everything was bliss until it came time to render a project out of Nuke, It kept failing a few frames in.

“ok” I thought, it’s most likely a bug with the spanking new nuke 7 – downloaded and installed the latest build – no love.

I actually put this issue aside for a few weeks, but upon installing Unity 4 I hit the very same error when setting up a project.

No way I thought, this error is something else.

Solution: windows security can sometimes be abit vigorous.

For every drive:

Go to Computer select drive>properties>security tab

check under system and admin (maybe users) – if it doesn’t have it assign “full control” to that account – apply and restart.

Note: be careful in here, as with all things system related.

Fixed it for me, good luck!

Out of the shell – Begin 2013

Ok… time to start posting again.

 

I had an amazing break over the xmas period, I got away from the computer and I swam/slept/read/traveled a very small bit

 

Chocolate! hand made perfection.

 

The last week or two was job hunting season. I’m very pleased to say I have started work at the Academy of Interactive entertainment!

This fills my year with much excitement, I will also be working on my own material along side my teaching. I am pretty excited by Nuke 7 – the new point cloud features look amazing.

 

So, out of the shell I come – bring on the year!

 

-Callan

Graduation Academy of Interactive Entertainment 2012

This week I graduated, I’ve had a blast these last two years at the Academy of Interactive Entertainment.

I would like to thank everybody at AIE you’ll all fantastic people not just to learn from but to be around.

I’ve also had a blast writing and delivering some of the AIE’s holiday courses, I’m happy to say feedback from these classes has been very positive and I had a great time with them.

 

I did start to write quite a long list of thank you’s to all the AIE staff. I think I will leave it with just saying,

Thank you!

What’s next? I’m very excited about 2013 both for myself and for my peers. I’ve got some things in the works for myself but for now, I’m just happy to have had such a good experience these last two years.

 

A few pictures from graduation.