Frederick Heads Home

June 25th, 2012 by Frederick Jansen

Frederick Heads Home – by Frederick Jansen

All good things must come to an end, I guess. The end of my three month internship at Infrared5, the culmination of many more months of preparation and a whole lot of red tape. Three months being away from home, friends and family. Three months of soaking up the American culture, working for a great company and generally enjoying life to the absolute fullest. Time passes quickly when you’re having fun, I wouldn’t have minded everything to last just a bit longer.

The entire journey went really well. I made some great new friends, both in and out of work and got to experience some of the things only America has to offer. Boston certainly did not disappoint me. The weather was great with a virtually non-existent winter and plenty of sun. The city is rich in history yet provides plenty of opportunities to go out for an evening of fun. Whether it’s the local bands and tasteful food or simply spending time in some of its beautiful parks, there is always something to enjoy.

They say it takes three things to be successful in life. Dedication, talent and knowing the right people. Only one of those three is under your direct control, the rest is mostly left to luck. I consider myself very lucky to have been at FITC Amsterdam when Chris was there as well, that we started talking and managed to stay in touch afterwards. It took me awhile to make this internship happen and at times it appeared as though nothing would come of it. Being persistent paid off and I’m glad it worked out so well. Things could have turned out completely different.

Infrared5 is an extraordinary company, in more than one way. Take a group of highly talented developers, mixed with awesome project managers (not unimportant!) in a culture that is both engaging and rewarding. This may seem like an obvious combination, but it’s one that’s easy to get wrong. The website states “we engineer solutions” and that is no lie. Projects are challenging, even more so with the limited experience I have. As an intern, I was given the opportunity to prove my worth and feel like I made the most of that. Yes, work can be and will be hard. But part of the culture is making sure that developers are able to do what they do best. Unlike getting to the US, there’s no red tape here.

Although it’s only been three months, I feel like I learned a lot being here. Not just about programming, but also about working on real life projects for real life clients and what it’s like to function as part of a team. I sincerely wish that this wasn’t the last of my experience working with Infrared5 and hope to be back in the US, more permanently, in the near future.

Boid Flocking and Pathfinding in Unity

June 20th, 2012 by Anthony Capobianchi

The quest for creating believable, seemingly intelligent movement among groups of characters is a challenge many game developers encounter. A while back, I had an idea for an app that required units of moveable objects to be able to coordinate and get from point ‘A’ to point ‘B’., I’ve never built anything like an RTS before, so this concept was something new to me. I searched forums and articles looking for the answers on how people achieve this sort of behavior. The majority of the help I could find was in a system referred to as “Boid” or “Flocking”, A Boid system can be set to simulate flocks or herds, allowing moving units to animate independently, giving the illusion of artificial intelligence. Over the next three blog posts, I will outline solutions to the following problems:

  1. Boid System – Creating a system to keep objects together in a coherent way.
  2. Radar Class – Creating a class that will detect if any Boids are within a certain distance from another Boid.
  3. Path and Obstacle Avoidance – Getting an object to follow a path as well as avoid obstacles that keep them from getting to their destination.
  4. Ray Caster – Setting up a ray caster that will be used to place a destination object in the scene for the Boids.
  5. Destination Points – Organizing a number of different destination points for the Boids that will prevent   them from piling on top of each other.

BOID SYSTEM

Normally, I would split up the functions into different scripts depending on their function, for instance, a script for calculating the Boid behavior force, a script for the radar, and a script for  path calculating. However, to keep the count down and to avoid possible confusion of not always knowing which script a function goes into, I consolidated it into only a few scripts -

I.    Boid.cs
II.    Destination.cs
III.    DestinationManager.cs

NOTE: All properties and variables should go at the top of your classes, in my code examples I am putting the properties above the methods to show you which properties you need in your script and why.

•    Boids

The Boid system is accomplished by creating a script (Which was named Boid.cs) that controls the behaviors of their basic movement. This included coherency, which is the will to stick together, and also separation, which is the will to keep apart. If you are unfamiliar with the concept of Boids or flocking, a great article about it can be found at http://www.vergenet.net/~conrad/boids/pseudocode.html and a C# Unity example can be found here: http://virtualmore.org/wiki/index.php?title=SimpleBoids

To set up my Boid.cs script, I set up these properties:

My Boid behaviors are set up like this:

• RADAR CLASS

We need a way for every Boid to know if there are other Boid objects surrounding it within a certain radius. In order to create this effect, we will create functions that will handle radar scans and what the scanner is looking for. The radar will be called to scan a few times every second. It is not using the Update function to get called. If it was, every frame would be making a collision check using Physics.OverlapSphere. This could cause frame rates to drop, especially if you have a lot of Boids in the scene.

In my Boid.cs script my Radar functions are set up like this:

In my next post, I will explain how I solved the problem of getting an object to follow a path while avoiding obstacles.In addition, I will explain what will be needed to apply the forces that are calculated by the Boid and pathfinding systems to get our characters moving.
Anthony Capobianchi

, , , ,

It’s a Bird…It’s a Plane…It’s Steff Kelsey

June 8th, 2012 by Elliott Mitchell

Steff Kelsey

Today I’d like to introduce you all Steff Kelsey, Infrared5′s most recent full time employee. Steff has worked for Infrared5 as a contractor the past few months and this week leveled-up to an All-Star team member! I have personally worked with Steff on a particularly challenging project recently and have been very impressed by his skills, attitude and beard. I had the pleasure to interview Steff this week with the goal of uncovering some more details about his background, goals and ambitions.

1) How did you first learn of Infrared5?

I had worked on a few projects that used the Red5 streaming server in 2008, so I guess I knew about the group from that.  For whatever reason, I did not realize that Infrared was in the Boston area until I met Michael Oldham performing a demo for the ad agency I was working at last April or May.  After meeting Michael, I took a closer look at who was in the group and the kind of work they were doing.  I really wanted to be a part of it.

2) What is your professional skill set?

I have a BS in Mechanical Engineering and that brings a lot of math with it.  I started off doing animation for broadcast, so my first pipeline centered around After Effects, Illustrator, and Photoshop.  I had experience coding in High School and college, so it didn’t take long for me to start scripting animation in AE and 3ds Max (rather than keyframing everything) and also get into developing software for kiosk and the web.  Then I read my first design patterns book and I was hooked.  Now, most of my time on the job is spent writing code.

3) Do you have a favorite programming language and why?

I think its important for developers to get exposed to as many different languages as they can.  As far as favorites go, I prefer languages that are strongly typed.  I like getting quick feedback when I code.  When working with strong typing, your IDE lets you know right away if you have done something wrong.  If you’re working with a compiled language, compiler errors and warnings are you’re next layer of feedback.  And unit tests are the next round.  In an uncompiled language without strong typing, unit tests can be your first feedback loop from the system, rather than giving an error right in the IDE.  I like tools that help you, so I guess my language preferences are really about the toolset.

Steff Kelsey Pugs

4) What is your favorite 3D tool and why?

I have spent the most time in 3ds Max and once you get comfortable in a package it can be hard to switch.  I really like rigging with CAT and I got  very familiar with their particle system and with RenderMan.  At this point, I just feel good about the pipeline.

5) Are there any development platforms or languages you’d like to work with more?

I am getting into Unity3D and am very excited about it.  It’s a great end point for someone who is into motion math, creating 3d assets, and creating simulations.  I also got exposed to GPU programming on my last project and want to explore that more.  I really want to harness the GPU as an implicit solver of systems of linear equations.  Once you get a framework in place, you can simulate a variety of things from more complex realtime physics to fluids and also geometry processing and image filtering.  I am also interested in using Python to write plugins/scripts for Maya, but would have to break my bias toward 3ds Max to do so.

6) What are a few of your hobbies?

I run, draw, and have recently been getting into

woodworking (mocking everything up in 3ds Max before cutting any wood).  I have a piano I used to bang on that I need to get back to.  Honestly, most of my spare time is spent trying to keep up with things in the field.  Everything changes so fast in the tech world and there is always so much to learn.  It is both awesome and terrifying!

7) What super hero do you most identify with and why?

I have a Batman keychain, but who doesn’t want to be Superman?

8) What one nugget of advice would you give an individual thinking of getting into either game or web development?
Work hard.  Work hard.  Work hard.  And never stop learning.  Being able to teach yourself new things is an invaluable skill.  And don’t worry if you’re not a rock star right away.  Just keep churning out work and the quality will come with experience.  Take time after each project to review what went well and what didn’t.  Make a lot of mistakes and then recognize them and learn how to not fall into the same traps on your next sprint.

,