Showing posts with label education. Show all posts
Showing posts with label education. Show all posts

Monday, December 17, 2012

What I Love About My Company

The game company that I work for intends to update their employee handbook; transform it from a dreadfully dry read to something fun and engaging for our new employees and perspective candidates. A couple of us gathered and discussed what exactly we liked about our company that we should include in the handbook. Coming out of that meeting, I felt quite privileged to be working for a game company that has a great work-life balance and opportunities for growth. It's been in my mind all day and I wanted to write out my personal reasons why I like the company. Hopefully, more game companies out there are listening and taking notes. We need less EA spouses and Zynga horror stories.

I can sum up my favorite things about the company with three keywords. They just all happen to start with the letter E.

1. Education
  • I happen to be in a privileged position as a programmer in the Research and Development department. We're rapidly making prototypes about every two to three weeks, so we have many chances to dive into new technologies. Over the past year, I've dipped my toes in HTML5, XNA, Win8 and XAML, Gamemaker, Construct, and Inform7. There's so many more programming languages and game engines that I want to be playing around with in the year to come and my position in the R&D team gives me the opportunity to do so.
  • We do, however, build most of our prototypes in Flash because it's easy to get a game up and running in a short time. Also, its high penetration rate means that we can get the prototypes into the hands of playtesters in the most friction-less way possible. Within Flash itself, we learn new technologies by working with several third-party APIs including Facebook, Box2D (physics engine), and Starling (rendering engine). Starling wasn't exactly necessary for our prototypes but we decided to tinker with it anyways because we thought it'll be interesting to explore. The research definitely paid off as now we've integrated a Starling module into our proprietary Flash engine for other Flash developers in the company to take advantage of.
  • I'm not an artist by any means, but I love art and I have a strong passion to learn art. I believe learning more skills would feed back into my other talents, making me a better programmer and game designer. The art director at the company has graciously allowed me to attend the weekly artist meetings, where I've picked up a lot of techniques and tricks. I've learned about onion skinning in Flash, smart objects and layer comps in Photoshop, and even how to sculpt clay. We also spend the last five minutes of the meeting looking at inspirational artwork and I've walked out of many meetings with an innovative game idea in my head just from looking at great art.
  • I don't just love learning, I love teaching and educating others too. I started an internal university program at the company, where people of talent teach their skills of expertise to coworkers in different departments. Like I said before, learning more skills, even if they don't directly relate to your job title, would ultimately make you a better developer overall.
  • I attend almost every game-related event in the NYC area. I take super-detailed notes on pen and paper, sometimes to the point where my wrist starts cramping, and I transcribe all my notes for the company to read. Sometimes, I compose all these notes into a presentation, since I know few people actually like to read walls of text. There's a wealth of knowledge that exists outside our office doors and it's important to be taking this and disseminating it as much as possible.
2. Expression
  • Too often I hear game developers say that they don't have a creative outlet within their studio. Luckily at our company, we generally work in small project teams where everyone gets to contribute and have their voices heard. As a programmer, I have contributed so much to design and art decisions in my previous projects. Our company culture makes you feel like you're really part of a team, rather than another gear in the machine.
  • We have a company-wide meeting every Monday, aptly named the Monday Meeting, which is hosted by a different employee each week. It's almost like an employee spotlight, giving each employee a chance to talk about their interests outside of work. Some employees take the opportunity to do crazy things like act out a murder mystery, put on a faux late night talk show, play Jeopardy or Family Feud, or read beautiful poetry.
  • We also have an open brainstorm meeting every Friday. Following a "there are no bad ideas in a brainstorm" mantra, it gives people the freedom and opportunity to contribute ideas without the social pressures. Though sometimes a lot of ideas end up being jokes and most brainstorms end up not being too helpful, the open forum environment carries on to affect the general company culture.
  • The core responsibility of the R&D team is to find great game ideas and prototype them. The engine that generates these ideas are all the people in the company. Any full-time employee can submit a game idea through our system, writing as little as one short paragraph or including a quick sketch. We wanted the idea submission process to be as friction-less as possible. The obvious incentive is to allow  anyone to get their ideas into the world, get it prototyped into a digital version, and hopefully, greenlit into a full production game. We also offer financial incentives such as a cash reward the moment the game is greenlit and profit sharing after the game is released. Some of our strongest contributors include a QA lead and a backend programmer, two non-developer job titles that if at another company, would have little opportunity to contribute to the game design process.
  • Another responsibility of the R&D team is to run an annual internal game jam. If you've ever been to a game jam, you'd understand the value that emerges from it. It's the next step above idea submission; not only do people contribute ideas, they jump right into the middle of the game development process. Everyone in the company is required to do this and quite possibly the best thing for us to see is when non-developers get into the thick of it. We saw a lot of people try their hands at different skills and surprise us with their hidden talents. Our community manager drew and animated a bunch of cute animals, a producer made pixel art and recorded a lot of hilarious voice overs, our business team Photoshopped art and made music videos. Our favorite story that emerged from the game jam this year involved a low-end .NET programmer, who discovered that she loved doing game programming, that she asked to be transferred to the HTML5 team that recently lost its lead.
  • Finally, we also have weekly department meetings. The programming, art, and game design departments in particular like to issue challenges to its members. These challenges are meant to exist outside the everyday work we are responsible for and are a great channel for personal expression. Just to go over some of these challenges, the programming team has had to make a one-button HTML5 game, a one-minute XNA game, an Inform7 text adventure, and CROBOTs to fight against each other. The art team was tasked to design characters of their own creation, environments, company logos, game jam logos, art comps for weird game ideas, objects sculpted out of clay, and most recently, contribute towards an exquisite corpse. The game design team has had to come up with games ideas based on creative real estates, random images, mashing up favorite games with another designer's favorites, random nouns and adjectives, and mashing up characters with locations. Each of these challenges let the members be creative and allow them to experiment with technology, aesthetic styles, and mechanics that don't necessarily follow our company's standard fair. Fortunately (or unfortunately), the R&D team is a cross-disciplinary team that's part of all three departments, so we have a lot of extra work to do!
3. Environment
  • Our company, by far, exhibits a family culture more so than any other company I've worked for. I've worked with actual family too, so that's saying a lot. I can't pinpoint any one reason for this but I think it's a culmination of all things said before. Our weekly Monday Meeting lets us learn more about every colleague, brainstorms and challenges show off our individual personalities and creativity, the game jam forces us to work collaboratively with coworkers we don't normally interact with, and so on.
  • We have a lot of company bonding events, mostly put together by our awesome office manager, but sometimes also happens organically. We have annual beach parties and Six Flags trips, we have board game nights, we get to leave a few hours earlier on summer Fridays, and we celebrate every employees' birthdays with a snack of their choosing.

Tuesday, October 30, 2012

NYU 9th Floor Talks: The Cutting Edge of Game Research

Ken Perlin, a Computer Science professor at NYU, presented some of his cutting edge research in procedural animation and education games.

Presentation
  • Ken is the founding director of NYU's Media Research Lab and the Director of the Games for Learning Institute. He is a mathematician who has won an Academy Award for his noise and procedural texturing techniques that have been used in film and television.
  • Ken started his career in computer graphics. Being in the industry for so long, he has experienced the power of Moore's law, seeing computers get twice as faster every two years.
  • He has developed several hundred Java applets. Some of his work can be found on his NYU homepage (http://mrl.nyu.edu/~perlin/).
  • When researching something, you have to boil it down to the simple possible version.
  • One of Ken's biggest research interests has been conveying emotions through artificial characters.
  • In Polly's World (http://mrl.nyu.edu/~perlin/experiments/polly/track.html), Ken tries to convey emotions with the least possible number of vertices and polygons. The procedurally animated character is made up of only 6 vertices, but displays a wide range of emotions through its movements. Our brain maps simple animations to emotions.
  • Why do we care about animated characters? Ken researches the human body as an instrument to understand psychological emotions.
  • In Responsive Face (http://mrl.nyu.edu/~perlin/experiments/facedemo/), Ken researches what's the simplest emotive face possible. At the very least, an emotive face requires movements of the eyebrows, lid, gaze, head, and mouth. A person has n-points in the face like a keyboard has a number of notes and facial expressions are like chords.
  • Micro noise movements and procedural variations makes the emotions more realistic. Without these micro movements, the face is just a lifeless still picture.
  • Autistic children have trouble looking at other human's faces and thus grow up not knowing how to read emotions. However, they don't have that problem with artificial, computer-generated faces. Many autistic children used Responsive Face to learn human emotions.
  • Plan 9 From Outer Space, often regarded as the worst movie ever made, is almost unwatchable because the acting is so bad. The actors' faces are so emotionless that it's impossible to identify with the characters.
  • In an attempt to create an "interactive Pride and Prejudice," Ken developed an applet with five birds with disembodied feet. The birds showcase procedural walking animation, which is tons better than canned animations.
  • We should think of avatars the same way a director thinks about actors in a live play. We shouldn't communicate actions to the avatar (ie. "jump here", "punch that", "open this door"), but communicate emotions (ie. "you love her"). Likewise, actors shouldn't indicate (ie. "I am feeling happy!", "I feel very sad."), but actually emote.
  • With Fish Tales (http://cims.nyu.edu/~perlin/fishtales2/), players can record a one-minute story using Bob the fish and two bouncing balls.
  • In Candy Circle (http://mrl.nyu.edu/~perlin/candycircle/), players make procedural music using a spinning wheel filled with candy. It researches the rule of the fifths; when the further away the chords are, the more dissonant the sounds are.
  • Ken also experimented with spiral escalators (http://mrl.nyu.edu/~perlin/escalator/). Spiral staircases always go right going upwards because they were designed solely for battle. Since most knights were right-handed, it would give the advantage to the person who's above.
  • The barrier of entry to making games is so high. Ken would like to have more people coming into the arts that are enabled by programming.
  • There are "fake languages" such as Code Do It and Scratch that enable people to jump into programming. Ken is researching how to make programming more integral to education.
  • Ken's New Line Fractals (http://mrl.nyu.edu/~perlin/newlinefractal/) show mathematical visual examples of fractals. Students can move vertices around to experiment with creating their own fractals.
  • Using a real-time interpretive version of Java, Ken created Flower, in which students can directly edit the code and immediately affect the flower. In Musical Rubber Ducky, students can affect the ducky but also the music too using live code. Can we invite them to the narrative as well?
  • Ken developed a Pride and Prejudice reader. Before the invention of books, literature used to be written on scrolls. Someone later introduced the concept of pages, a fixed length record that changes per edition. But writers wrote and thought in terms of sentences and paragraphs, not in pages.
  • In this interactive map of Pride and Prejudice, you can see the entire book's topology. You can easily identify the key chapters of the book using filters and highlights.
  • Asteroid is a game that topologically and mathematically exists on a torus or a doughnut.
  • The second book to use the interactive map is Winnie the Pooh. This version also includes a procedurally animated bear that users can play around with using live coding. The code editor includes tools that enable learning programming easier. When you insert a 2D array, a map will appear that lets you set dots and automatically generate the points in the array for you.
  • Everyone should be able to program. It should be as accessible as painting, filming, and writing. People need immediate feedback to instigate learning.
  • Ken is really interested in how to power up this maker culture.
Question and Answer
  • Learning tools should be like Google Docs in that they are collaborative, shared documents. People should have conversations with each other about creation. Learning is a performative activity.
  • Just like how jazz is to music composition and improvisation is to acting, we need live perfomative structures for coding to learn programming.
  • What's the difference between games and simulation? Games have goals.
  • We need to increase programming literacy and convey programming as a liberal art. Kids need to look at code in their early stages.
  • Ken remembers reading a children's book when he was a child and at the end were the advanced notes for the teacher to read. Although Ken couldn't read the notes as a child, he understood that that's what he was learning and that he'll eventually be able to read the advanced text. Kids shouldn't be using a fake language, but rather be looking at what the grown ups are using. They should be exposed to C++ or Java-like languages.
  • Kids are learning reading through other subjects such a history and science. We should teach coding gradually in the same way.
  • Many people are reluctant to learn coding, but that's okay. We should focus on teaching the kids. We don't currently live in a society that requires that level of technical knowledge, but this might change ten years in the future.
  • Excel is a programming environment that many people use, despite not being programmers. Max/MSP is a programming language that non-programmers such as visual and sound artists use. Both of these programs are always running live and give immediate feedback. There's no intermediate building or compiling stage.
  • People don't necessarily need to learn C++ or Java the same way that not all writers have to linguists. Guitarists don't need to learn how to make guitars.
  • Programmers have a sense of being macho. Music, on the other hand, is more inclusive. We need a real-time sharing structure and a more inclusive environment for non-programmers.
  • Will books become non-linear in the future? This may very well happen, but it won't replace the books as we know them. Different media can coexist the same way that different instruments can coexist. It's not all about hacking and recombinations. Technology is the wrong word to describe media; these are instruments.
  • Will the secondary functions of the interactive reader overshadow the literary work itself? The work lives on if they're great. Beethoven lived on when the Beatles came around and the Beatles didn't go away when Lady Gaga came around.