Coding skill and the decline of stagnation

I am a decent programmer. I know a decent amount of computer science theory, I can type correct code fairly easy. I don’t let my classes expand too much. But I still struggle some with math, and I have a tendency to have too many cross-dependencies in my code.

I used to think I was an awesome programmer. One of the best. After I made a game in the first programming lesson in school, I got told to don’t bother showing up for the rest. I was the one who taught all my friends what big O notation is and how it’s useful, or why hashmaps can have an effective constant speed if used right.
When someone told me I was a bad programmer, I got upset. My identity was based on being The Best Programmer, and being accused of not being one was a huge insult. Of COURSE I wrote bad code sometimes, but that was just sloppyness or part of some grand scheme, or some other weak excuse.

When doing a programming test for a large US based game developer, I did well on most tests. After the programming test, they told me it was obvious that I was intelligent, but also that I was self-taught. I had to work on programming more carefully and think things through before diving in, or I’d have a hard time working in a large group. Externally, I nodded politely. Internally, I was stunned and confused.

That kind of woke me up. Ever since, I’ve been working on improving my coding skill. During my work on Minecraft, I never really got a chance to try out new things, or play with new tools, but these days I’m really trying to learn new things and pick up better habits as much as I can. And as a result, I’m having even more fun with the programming. At the moment, I’m trying to tame GIT, playing around with MongoDB, trying out some static code analysis tools, and have started working on making my code even more modular and reusable.

The more I learn, the more I realize how little I know.

But. I still stubbornly believe the whole “private members accessed via accessors” thing in java is bullcrap for internal projects. It adds piles of useless boilerplate code for absolutely no gain when you can just right click a field and chose “add setter/getter” if you NEED an accessor in the future.

Point is, SOPA sucks.

Top ten movies of 2011!

No, just kidding. Instead, I will ramble about working in teams.

Some people have asked me why we don’t hire a lot more programmers to work on Minecraft. The answer is that I think that would be an incredibly bad thing to do.. or at least that it WOULD have been an incredibly bad thing to do. One reason why Minecraft has managed to get as much personality as it does it that it’s only been a couple of fairly nerdy game developers working on it.

At first, it was just me, and the game really represented what I thought was fun. Later on, Jens joined in and added his own personality to the game in a way that fit really well with what I had done. Naturally, we took in a lot of external input (especially from players, thank you all so much!), but the end result was still filtered through us, making sure it was personal.

I guess in some sense, this is a big reason of why I like “indie games”. Or games made by small teams, rather. I’m growing more wary of using the term “indie games”, as there are too many definitions of what that means… to me it means a game made for the sake of exploring some game idea, made by a small team that wants to express themselves.. But I digress..

On one hand, I could see how Minecraft has at this point grown to a level where it could use some extra hands to work on it. There’s a lot of infrastructure that needs to be done, and a lot of the tone for the game is already set. On the other, I worry that having too many developers on it could water it down. On the third, it could also mean less “quirks” (bugs).. on the fourth, some of these quirks are what give the game a personality. Score: &e0. And so on.

I could argue back and forth forever, but what I really want to do as a developer, is to work on games in tiny, tiny teams. It means less compromise when it comes to design. It means more freedom when it comes to implementation.

At the moment, I am working on a bigger version of my Ludum Dare 22 entry, because I really liked working in that code base. In the relatively near future, I expect to start work on a new, bigger game. I will be the only programmer on that game until the game mechanics are fleshed out and the tone is set. I do feel an enormous pressure to live up to the Minecraft legacy, but I will try not to let that hold me back. I will keep focusing on just making games I want to play.

Happy new year, Internet!

Mojang Has Never Supported SOPA

Looks to Internet Community & Fellow Tech Leaders to Destroy Legislation We All Hate

STOCKHOLM, Sweden. (Dec. 23, 2011) - Mojang has never supported SOPA, the “Stop Online Piracy Act” currently working its way through U.S. Congress.

"Overzealous and vaguely formulated attempts to fight online piracy is of the scariest developments in online policies in recent times, which is why Mojang has been working to help destroy this legislation - but we can clearly do better," Markus Persson, Mojang’s newly appointed Vacation Expert, said. "It’s very important that all Internet stakeholders work together on this. Getting it right is worth the wait. Mojang will support all efforts to make sure information stays free."

Mojang and its General Counsel, Oxeye Games, have not in any way worked with federal lawmakers for months to help craft revisions to legislation first introduced some three years ago. As a non-US company, Mojang doesn’t really have any big say about US internal politics, but Persson says he concerned that this law and similar ones will affect their ability to successfully do business online. It is of utmost importance that laws like these are not allowed to affect free speech.

“As a company that is all about innovation, with our own technology and in support of our customers, Mojang is rooted in the idea of free speech and believes 100 percent that the Internet is a key engine for our new economy,” said Persson.

In no changing its position, Mojang remains steadfast in its promise to support security and stability of the Internet. In an effort to eliminate any confusion about its decision not to reverse on SOPA though, Persson has tweeted a silly image of himself in a santa hat.

“Mojang has always fought to preserve free speech and the freedom of information, and will continue to do so in the future,” Jones said. I mean Persson. Not Jones.

Ludum Dare is a wonderful thing

I’ve talked about it before, and I’ll talk about it again. Ludum Dare is an amazing thing. It’s basically a recurring (three times per year? Uh. Something like that) competition where you’re supposed to make a game from scratch in 48 hours, and it just happened again this weekend. Everyone starts at the same time when the theme gets announced, and then you try to make an as complete game as possible over the next two days.
The people who submitted games then get to vote on all the other games in a variety of categories, and a few weeks later the winners are announced.

I’ve participated several times before with (not sure about the chronological order of these) Breaking the Tower, Bunny Press, Metagun, The Europa Arcology Incident, and Prelude of the Chambered. The first year, I actually played and voted on ALL the other games submitted, but the competition has slowly grown, and this year there has been over seven hundred games made. That is amazing!

This year I made a game called Minicraft. As usual, I had lots of fun, even if I couldn’t really think of a good game that would fit the theme of “alone”.. I ended up making a zelda-ish top down game with crafting influences from Minecraft.

I’ve never actually won Ludum Dare, nor do I think I should, as there are some seriously talented people participating. A big part of the fun is to know other people are struggling just as hard as you do, and that you get to see what everyone else has made after you finish yours. There really is a great sense of community.

You can see all the games here: www.ludumdare.com/compo/ludum-dare-22/?action=preview

Rock Paper Shotgun did a nice article trying to sort out what’s been made this last weekend: http://www.rockpapershotgun.com/2011/12/19/they-are-all-alone-ludum-dare-picks/

Santa vs Cthulhu until 7 am

I’ve been avoiding doing any kind of work recently in an attempt to reset my creative batteries. I’ve mostly been playing Zelda. Then I played Hyper Princess Pitch and started playing around with the idea of making a Christmas game myself. Naturally, I started with the title. Santa vs Cthulhu.

The original idea was to make a real time strategy game where you play as either Santa or Cthulhu, building elves and manics, converting houses for your purpose (cheer or ia). But it was hard to pick a setting for it. Santa obviously lives on the north pole, but there aren’t many houses there, and there certainly aren’t any deep oceans for any Ancient Ones to awaken from.

I gave up on the idea, until last night. I got this idea that using the Geoscape from x-com would better fit the scope. Santa would start with a base on the north pole, Cthulhu would start somewhere in the south pacific. They’d both spend time improving their base and recruiting cities. Combat would take place in the RTS game I initially imagined. I got excited about the idea, as it would allow me to make fun of/pay tribute to two games I really loved growing up, UFO: Enemy Unknown and Dune 2. Sadly, the game seemed a bit too complex for me to make in time for Christmas, so I abandoned the idea.

But what if I ditched the RTS bit? Just focus on base building and sending out scouting parties to look for Cthulian infestation or to cheer up a nearby city? Combat would be resolved automatically with a brief combat summary, perhaps. Yes, this seemed like a much more feasible game, and it’d be much more focused as well.

This ended up with me programming the entire night. I found an old textured polygon software renderer I had written a few years ago and rescued it from its project. It ran pretty fast, had support for arbitrary polygons for some reason, and even did z clipping with perspective correct texture mapping. For the planet, I started out with an icosahedron and used the net suggested on the wiki article as the texture map. I subdivided all faces and re-normalized the vertices a few times to make it look a bit rounder, then I found a map of the earth folded out into the same net and traced it into my own format. There are copyright issues with this approach, as tracing something really isn’t original work. I’m not sure how else to get a map that looks familiar..

At about 6 am or so, I had a spinning globe, fully textured, running at some 1000 fps.

I’m pretty sure I won’t actually be able to make this game in time for christmas (Ludum Dare this upcoming weekend will take up a lot of the remaining time, and I definitely want to do that), but I had a great night of programming last night. I really missed being able to dig myself deep into some obscure programming challenge and spend the entire night working on it.

Besides, if doing the game quickly was my primary motivator, I wouldn’t have gone for the fancy polygonal approach. I just would’ve written a simple screen coordinate -> spherical coordinate lookup table thing that maps each pixel to a position on the globe (or to nothing, if it’s outside the globe).

We’re hiring. You should work here.

We’re expanding!

Exciting new projects, a very successful first year, and a much bigger new office means we’re going to grow into a slightly larger company. Right now we’re about 12-15 people, depending on how you count, and we want to grow to “a bit larger”.

To apply for a job, go here:
https://docs.google.com/a/mojang.com/spreadsheet/viewform?hl=en_US&pli=1&formkey=dGVqbjRidUw5VFVuYW5QSE93YVdtbnc6MQ#gid=0
(Note that we’re only looking for developers at this point)

Here are the top five reasons you should work at Mojang:

5) We’re less serious than many other companies. We rely on having a pool of talent rather than long discussions, and make decisions very organically and spontaneously.

4) We encourage people at Mojang to speak publicly about what they do and have a personal connection with the players.

3) Tobias Möllstam

2) We have mandatory gaming Friday afternoons. Working after lunch on Fridays is frowned upon.

1) Mojang’s mission statement is “Mojang shall be the most influential indie game development studio on Earth”, and we intend to live up to that. I kid you not.

Och med dom orden så passar jag micken.

As of yesterday, Jens Bergensten is the new lead developer on Minecraft. He will have the final say in all design decisions, so he will kinda sorta become my boss, I guess. I’ve promised him to not pull rank. ;)

We’ve been working together on Minecraft for a year now, and I’m amazed at how much in synch we two are when it comes to how to design the game. And when we don’t agree, we discuss it and something much better comes out at a result. He’s truly a great person to work with, and I feel very confident handing over the leadership of Minecraft to him.

If you want to contact Jens, he’s on twitter as @jeb_, or you can email him at jeb@mojang.com

Personally, I will now rest for a while, then get back to work refreshed and eager. I’ll be helping out with Minecraft, of course, but also starting work on some new project.

I love Team Fortress 2

Back before the Orange Box, I kept hyping TF2 to all my friends. I had played a lot of TF and TFC back in the day, and I knew TF2 would be the greatest thing ever. My friends humored me and got it on the beta with me. And my god was it awesome. It was awesomer than awesome!

Way later, I went through this period of not really enjoying TF2 as much as I had. After spending hundreds of hours on a game, I guess that’s bound to happen.

A while back, I started playing it a bit now and again to see what was new. And it scared me a bit. The game I remembered with sentries glitched under the floor and sidecrits wasn’t there. Now it was all swords and space guns and engineers protecting spots nobody was playing anywhere near. But something was there. It was still fun.

Then I got invited to play in the third TF2 Mixup (watch it here) with a bunch of famous TF2 personalities. Robin Walker, my third favorite person at Valve, was there, and kept killing me with his super hax. And by golly did I have a great time!

So I kept playing, and I kept having fun. Playing with ez in the other room is lots of fun, and the game seems to for some reason have gotten a lot easier since it went free to play. Ahem. I got the Primeval Warrior after a while, and felt special.

Then I got this:

image

Hooooly cow. Thank you, Valve.

You wouldn’t believe the amount of medic I get now. Also, spies.

I am never quitting TF2 again, and you should all go buy it right away. How much is it, you ask? It’s FREE! YES!

[edit:]

Check this out!