I'm Matt, I code stuff
Come share my experience as a Software Developer. This is part portfolio, part resource and part rambling. Hopefully my occasional levity will prove to you humans that I'm not just another Matt-Bot.
Note: Wrote this about five years ago but still agree with the general conclusion.
At some point every developer has to make this decision: Write my own engine or use Unity/UE4/Insert Favourite Engine Here. The decision always depends on your past experience.
Her death is a powerful moment for many players, but why? I personally didn’t care when it happened because she felt very one dimensional and I wasn’t invested in her character. However I can understand why other players would care.
The buzz around Rayman Origins at release was huge. People described it as an excellent platformer, whimsical, fun, important. With the release of Legends I realized I had a copy of Origins on the Wii, that had gone unplayed. This morning felt like the perfect time to try it out. Now about 3 hours later, the first ice level is finished and so am I.
This question came up in conversation the other day, and got me searching for the answer. It may not seem relevant to games at first. Bear with me and we’ll bring it back around.
Otherwise known as the best Need for Speed game ever made, and my favourite racing game. I’m writing this while gettin’ fired up to some sick 2005 beats. Let’s look back at what made it special.
This industry is bad for relationships. It’s hard to maintain friendships outside the industry for certain reasons but romantic relationships are especially difficult. Here are some contributing quirks that I’ve noticed over the years.
I’ve been working 10 hour days for two weeks including weekends, so bare with the line of thought that puts me on. I listened to a podcast episode about gambling and have heard various people go on about the skinner box. To understand what is going on in the mind of a gambler is to understand something about the mind in general.
Mass Effect 3 has a key problem, one that faces much of the industry. The game is too long. Not because its loaded with interesting content but because its bogged down with fetch quests and aimless wandering.
Assassins Creed 3 was shaping up to be one of the greatest games of the console generation. It was a fresh face on a well loved franchise. It boasted established mechanics that sucked people in and a complex double narrative that promised an end game of modern day assassin adventures. Yet by many accounts, my own included, it was a fumble. I’d like to propose a component of why it failed to live up to expectations.
You’re mind is like a computer in the sense that we have limited cognitive resources available. In order to optimize the way we operate the best course of action is to try to reduce wasting that load on unimportant tasks and move it to something useful. As a programmer we know ways to reduce work from algorithms class. We even have notation. Can we apply what we do in the programming world to our own minds?
I recently saw Triple Town on Steam for a few bucks and decided to pick it up. With no forehand knowledge, I settled in and had an a fun time for awhile. Then I noticed that it wasn’t really going anywhere, got boring, and asked some friends what they thought of it. At this point I was told it was free to play originally and it all made sense.
The iTunes store is flooded with thousands of broken, uninteresting, useless apps. Help Apple. Do something, anything, have some standards. Thousands of free or $1 apps have destroyed all concept of value. A bunch of fresh faced grads and even large companies have no idea how to stand up for the worth of their product, Especially when faced against the steaming tidal wave of junk flooding the store.
After reading about the recent blow up over Code Hero, I decided to do a bit of math and lay out why this guy vastly underestimated his costs.
A look at the positive and negative aspects of working for an established game studio, as opposed to going indie or leaving the industry.
AAA is dying… I said it, there, you happy, cause I sure ain’t. Well I’m a bit nervous and a larger bit ambivalent. A month or so ago Polygon released a series of articles about the state of the games industry. In it the numbers paint a grim picture of publishers struggling to make decent margin off multi-million unit sellers. They also tell of rising indie, PC and mobile sectors. I figured I’d weigh in because I like the sound of my own typing, so here’s where I think we’re headed as an industry.
This morning I woke up at 3 am from post surgical pain and played through a very special game that made up for recent sequel fatigue. That game was 50 Cent: Blood on the Sand. It reminded me what games can be when they suck in a good way.
Though a fan of sleep, this article is actually about a programming architecture that’s come up often recently. REST (REpresentational State Transfer) is said to be used by many websites and services, but not completely according to many. After researching this for the last week or so I think I’ve stumbled into some reasons why it isn’t fully understood, and can relate some potential uses that will clarify things a little.
Darksiders inspired many to proclaim that the mature Zelda has finally arrived. Certainly the game was absolutely amazing. I bought the sequel without hearing a thing about it. That said, I think a case can be made that the From Software games, Demons Souls and Dark Souls, better fit that lofty title of adult Zelda game.
“What programming languages do you know?”
I started writing this quite a few weeks ago when the announcement was made that Adobe will no longer support the mobile Flash player. Since Flash is something I use on a regular basis I wanted to weigh in on this development, but bear in mind this has been mostly picked apart by analysts with similar conclusions.
No this isn’t an article about determinism. I recently did some digging through YouTube for advice on writing because I feel it’s a worthwhile skill for a game developer to have. A certain point made by Christopher Hitchens during an interview stuck with me and prompted me to apply it to game development. He basically said that if you have to write, that it never occurred to you that you can exist without it, then you’ll be fine because it’s what you’re meant to be doing. I would say the same about game development, or any pursuit in life.
There are plenty of people who like the Kinect judging from sales data. I’m a bit ambivalent but I think there are great experiences to be had with the device. The one thing that does get me going however are Kinect menu systems. I think we’d all be better off if people could only pick up the controller and use voice commands. The developers are not to blame for this by the way, they do what they can.
Elements of Computing Systems is a course developed by two professors that felt computer science students weren’t being given a practical understanding of how computers work as a whole. Many topics in this course tend to be glossed over in the current university and college curricula. Having been through college, I can fairly say we were taught practically none of this material. I decided to take this on in my down time, and can say that it’s fascinating. It fills in many gaps that I had in understanding the ultimately simple construction of these systems.
After a long hiatus I’m back to cover another game. This time it’s The Elder Scrolls V: Skyrim. I played on the PC version both with and without a controller. If you haven’t read the previous article on Final Fantasy XIII, let me explain what I do here.
I’ve been writing more seriously for the last few months. For the first time in years, I want to not just write, but improve my writing. My work is markedly better now than the first post, longer and more structured.
Note: I’d normally not swear but that’s the name of the language; no point sugar coating it.
I’ve been reading several articles on altdevblogaday about code reviews. We’ve been doing code reviews at work since I started, at first doing over the shoulder reviews and then automated reviews. I prefer over the shoulder because the other person gets a better feel for why you’re making your changes. Those can tend to have draw backs at a large scale so, after combing these articles, here is my ideal code review set up.
I was talking to a co-worker who recently read some of the site. As an aside, thanks so much to anyone who reads this. As to the co-worker, I can’t thank you enough for giving solid feedback, it means a lot. What came from that conversation, was the implication that it’s hard to browse the blog content.
Catherine is a Puzzle/Adventure game published by Atlus. It was developed by the same team that did the recent Persona games. For those who haven’t played them they were turn based RPG’s based on high-school relationships, and would often go into serious issues. For example, they were featured on an episode of Extra Creditz for diving into issues around sexuality.
In video games and much of modern design, User Interaction is simultaneously the most and least important feature. At best it’s the least noticed component. At worst it will prevent anyone from using the product.
While investigating XNA lately, I’ve gotten stuck learning about the content pipeline a few times. This is a short post to share some good links that I’ve found in trying to make sense of it, and also explain it in a less jargon filled way than the Microsoft docs. The system was a bit confusing at first because it’s terminology isn’t what I’ve heard making games before.
Welcome to the first in what is hopefully a long running series of articles about user interface in video games. This maiden voyage will be to the world of Final Fantasy 13 or FFXIII. I spent a couple hours going through every screen in the game on top of the 90+ hours I’d spent playing it for fun. I’ll share what I found good and bad, why what’s good is good, and why I think what’s bad is there.
Long lasting involvement with an entertainment medium conveys a certain amount of inherent knowledge. You gain a familiarity with the common progression of story, typical aesthetic choices, music cues, and other common practices of the given medium. Games are no different.
Every game I still own is either new and unplayed, or connected to a memory. They all have a representational meaning to me and reflect parts of my life that I want to hold onto. Either that or they’ve taught me something important that has informed my life. Any time I’m prompted to trade in these games for new ones I think about that and refuse. I realized at some point that the games, movies, and photos I have are inseparable from me. They are physical representations of my life, and portals into the past. They are me.
I decided that I was tired of not having an easy to access list of tasks. I looked online and it’s mostly pay us 45 dollars for this complicated thing, or it’s intricately tied into a calendar program. There are way too many of these apps to begin to choose from so I just made my own in a day or two of work. It’s available in the Utilities section if you want to try it out.
I was recently introduced to Minecraft by a colleague and decided to try it out. Now I’ve invested hours that I’ll never get back into building large elaborate structures. It caused me to miss last weeks post. I’ll be damned if it wasn’t worth it because the game scratches every itch I have for making elaborate models in real life.
Perl is an extremely useful and flexible language. It’s almost like a programming Play-doh. At the same time it can be stable and used to hook programs together. In that sense it’s like glue. I’ve gotten to work in the language for the last 5-6 months and I have really come to appreciate it. So, I’ll go into specifics of why I like it and when it’s been useful.
This week I wasn’t able to get anything done at home because I was working a fair amount of overtime, so I figured why not write about it. Overtime is something that most of the game industry tries to avoid, and all too often can’t help. Every project I’ve been on has had some amount of it, be it a few nights or a few nights every month. Some projects at the studio have had an almost constant crunch, but I was fortunate enough to either come after them or not be chosen for them.
Learning algorithms for quickly finding primes and testing whether a number is prime will greatly enhance your ability to solve project Euler problems. Since it’s key to so many problems I’ll link to some resources I used, and try to paraphrase what I’ve learned, linking to each concept. The links are necessary since you’ll get a pretty incomplete picture from me, but it’s a place to start.
Continuing my kick on optimization I found a piece of code that was responsible for second long delays. It seemed simple at first. So I profiled and found one part of a loop was slow. Dug further and found the next was slow then the next, until I hit the bottom and found a binary search algorithm. It was implemented as a recursive call and so I thought I may gain by removing the recursion.
I had been reading recently about an optimization that I wanted to try, eliminating branches. This seemed counter-intuitive to me at first. Branching seemed like it would eliminate useless code and save time, but as it turns out it can actually be detrimental. The CPU preloads instructions, but when its going to branch it can’t know what to grab. So instead of stopping it makes a guess as to the result of the branch based on a branch history table and grabs those instructions. When this guess is wrong the CPU has to unload the instructions it had guessed it needed and grab the ones it actually needs. This slows things down. There are tools to detect this, including ones from Intel and assembly instructions to get CPU stats.
While looking through our code base’s actionscript interpreter for a bug, I realized there were several language features not in use, and optimizations I could make to my scripts. As I got side tracked from the bug and started looking more at the surrounding code, it started to all make sense. I was getting a better vibe for the paradigms and structure that the interpreter would flow best through. Better understanding what the language was all about.
I’ve started reading Code Complete and have realized that the part about using a top down approach and bottom up approach together to architect a system is perfectly right. I noticed this is how I finally managed to come up with a solution to a personal project problem.
In light of hard times in the industry and having to say goodbye to large groups I’m contemplating the fluidity in the game industry. Does it still exist? How reduced has it become? I remember hearing stories about people jumping around studios like they were looking for the perfect pair of shoes, now people are on edge. The firings have slowed in the news but companies are still tightening belts, still solidifying their core teams and products. The ones that will make them the money to become adventurous again. At the same time there are so many small companies that I read about. Sub five person teams turning out gold. Not sure if its fool’s gold or not as I don’t know if they make money.
So after looking at thoughts on Demon’s Souls I started thinking about difficulty in gaming. The majority of people who play it say it’s hard but still really good. The people who haven’t played it take that as a negative thing. The assumption has become that a game that is described as hard, is so because it’s frustrating and thus can’t be fun. That’s simply not the case with a well designed game. To see why we need to analyze what makes a game fun.
Message from 3 years in the future. This is being posted retroactively and pulled over from my old Blogger account. I thought it was still interesting, so enjoy.
subscribe via RSS