Here we have one of those multi-talented programmers I keep talking about. The same programmer did the code, high-quality sprite illustration, and even the music to the youtube video (which was pretty good, and matched the nature of the time lapse video).
I am inspired by this. I'm going to do this the next time I work on a game. Has anyone used time-lapse screencap software they can suggest?
Fascinating, it's amazing what people can do under severe constraints.
I just finished my second JS10K entry (also a game, but much simpler) in about the same total time (though spread over more days).
I found the hardest part was to balance playability of the game. I played it so many times while developing it that what was easy for me turned out to be very difficult for others.
I was impressed by that too, although I did see a quick twitter check in there at least once.
I'm sure I would do my best to appear attentive when working on something like this, limiting my twitter/facebook/hn browsing to my iPhone/iPod/laptop.
In the reddit thread about this, someone mentioned that he had multiple monitors set up, so maybe there was a bit of straying we didn't see :) Nonetheless, I found it very impressive.
This is a great portfolio idea, actually! The guy doing this is a pro, but this is within reach of people just starting in the business. Someone straight out of college applying as junior programmer with a video like this would move to the top of my pile (were I hiring, which I'm not).
This video shows off a sense of initiative, a love of games, talent, and a knack for getting things done under time pressure. Nice!
I just wanted to present a warning about Minecraft: That game is distilled binary crack. I have lost a couple of entire days to the damned thing, and I only purchased it a couple of weeks ago.
Off topic, but I also purchased it and just don't get it. Or is that part of the appeal? I can't decide since I do spend time with it but more trying to work out wtf I'm meant to do :-)
If you're not meeting any monsters, check in the options and change from "Peaceful" to another mode.
Beyond that - there aren't really any goals. It's a huge sandbox. However, there may be some depth you're missing:
- There are some 'toys' to play with - minetrains, for one. You can build tracks and minecarts - unpowered and powered.
- If you dig deep enough, you can get redstone, which can be used to simulate electrical circuits. There's a whole thread on the Minecraft forum with basic constructs like OR / AND / XOR / etc - people have built things as complex as a twelve-hour clock (although it doesn't keep time accurately because there's no way to synch time - but it is as close as could be made and does function in the sense that it accurately counts 60 seconds, 60 minutes, twelve hours...) - I also saw a turing machine being worked on, as well as a few other similar devices. VERY complex stuff, considering.
- People have developed cannons
The more basic activities include finding caves and exploring them...
But there's some great silly stuff - like you can make a saddle and go ride pigs.
Is any of that stuff you've missed that sounds interesting? I hope so.
I suppose it's a game that might appeal more to younger folks - but as a 35-year-old, I love it. But I always loved SimCity, Simutrans (a freeware transportation simulator. Disclaimer: I'm the "Benevolent Dictator" of the International forum, and provide much of the hosting)... I also played GTA:SA, but not really the official missions - I just drove around and made it my own sandbox... Flight simulators...
All in all, I don't so much like games as I do simulated environments... so Minecraft is right up my alley.
New to me (but probably standard to game writers) is: using a png to represent all the maps combined (like 10x10 maps), with each pixel's color representing a game tile type (eg. yellow for oil drum, purple for portal cube, red for spikes, green for signs etc). This representation is really cool, because it looks like what it represents (an isomorphism): you can "see" the level in a png editor, even though what you're seeing is not the actual level.
Another aspect of how the data representation drives the game, is that there are no explicit arcs between game screens - instead, the screen design allows your character to walk off-screen, then that point enables you to transition to the next screen. I guess it's the most obvious way to do it: it's as if you are zoomed into a particular section of the 10x10 maps, and then you can move to adjacent maps. Maybe it's just that I've spent too much time with nodes and arcs recently :-), expecting logical concepts to be explicitly specified, instead of implied by the design. Anyway, there is no sequential index to get to a particular screen; you have to follow the path. Or you can look at that png. eg, the final boss screen is at xLevel=3, yLevel=10 (you can initialize those values in GameScreen.java; and you need to change the player start location too, because now it's not derived from the previous screen: change the last two args in the following new Level line, from 0,0 to 10,10).
I've seen the bitmap to level trick used before, but most "normal" (not developed under severe time constraints) games would eventually have a level editor implemented alongside the game. Personally, I'd be more likely in this situation to implement it as a text file and edit it with emacs picture-mode.
I've also heard of some bitmap-as-data atrocities. A colleague who worked with an engine from a certain well known single player RPG described how bitmaps were used in that engine to control animation states. Like, if walking and getting hit, which animation takes priority. There are as many ways to implement that system as there are game developers. For some reason this developer elected to store those matrices as BMP files, and edit them using a paint program.
The bitmap as level trick is a great shortcut for prototyping and rapid development, perfect for this contest. But I can't imagine the thought process that led to using one for animation data.
emacs picture-mode would be handy, otherwise it's difficult to maintain fixed-width. In practice, I have a lot of trouble with it. I think huge maps (those 10x10 ones) could be a problem, simply due to size; paint programs have zoom as standard, and of course the natural size for a pixel is pixel-size. Though I'm certain emacs has arbitrary zoom-mode.
At least he was using a data-driven approach. There's a lot to be said for that (as opposed to coding it), provided you can find a good representation. As Brooks ~ said "show me your flowcharts and I will continue to be mystified; but show me your tables and all will be clear." He's talking about communicating it to another, but a (appropriate...) data-driven approach is also more flexible, simpler and easier to reason about, because it embodies an abstraction and isomorphism of the solution space. Of course, if it turns out insufficiently rich, you'll wish it was code (or at least that it can be supplemented with code.)
A year ago, when I was developing a retro Pacman for cellphones (J2ME) as a university project, I decided to use a text file to store maps. It was before I knew about emacs picture-mode, and I was working on Windows, so I actually used MS Excel for the job.
You resize the cells to make them square, insert a formula that will rewrite all cells from a given row into a single string (so you could then just copy a column with those strings and paste directly into Notepad, or something), and then you can use convenient navigation with arrows, tab and ENTER to create the map (also filling entire row or column by one mouse drag was handy). Moreover, if you add "conditional formatting", you can make all different tiles appear with different colors and font styles (like walls with dark background or pickups colored in gold, green, etc.). It's a 2-minutes-to-do, poor's man map editor for tileset-based games :).
Can anyone discern what tools he was using? I know the IDE was Eclipse. And Paint.net for the artowrk. He had something really cool for the sound effects, but I couldn't tell what it was. It's a fun little game with some neat ideas: http://www.mojang.com/compo/metagun/
He really did that all without a search engine or looking at any API docs?? Maybe it's just cause I'm not a games programmer, but that's insane. How does he know what he's programming to?
Experience. Code with an API long enough and you're pretty aware of the tools at your disposal. At this point you're not learning new stuff. Finally, this likely pales in comparison to what he is typically used to doing.
Autocomplete is there. Also you have the ability to create your own micros that you can use to build skeletons (like a function, or a loop). I'm not sure about itegrated docs. You'll probably get a brief pop-up (hit-or-miss), but nothing like XCode's inline docs.
FYI: Docs are fully integrated and appear for example together when moving through the list of autocomplete suggestions. Very similar to XCode's inline docs. Alternatively, you can press Ctrl and every function call, class definition and so on becomes a link to the source code defintion of that function or class, respectively. Such are manifold possibilies for tool support in statically typed languages.
As someone else pointed out, the programmer is Notch, the guy behind Minecraft, which is also written in Java, so I assume he has been neck-deep in the Java graphics APIs long enough to have enough of it memorized.
I seem to miss such contests most of the time and only hear about them when they ended. I would love to attend to some, just for the fun (because I don't know if I would have any chance to actually win).
Where would be a good source for such competitions?
Another fun competition I read about was the Super Mario AI competition in 2009 where the winner has succeeded with an A* algorithm which he presented in a nice video: http://www.youtube.com/watch?v=DlkMs4ZHHr8
The 2010 Mario AI championship also seems to be over already.
Another fun competition I have heard about is the International Obfuscated C Code Contest. However, while reading this is very interesting and quite fun, I am not sure if I would have fun to do this myself. (Somehow I am more focused on the output/result of the code and I like to have clean, elegant and intelligent code, as less obfuscated as possible. :))
There is a gamecomp mailing list that sends out announcements of the LD contests. It is extremely low-traffic, basically only compo announcements (thrice yearly):
As a sidenote, this difference of experience highlights a big problem with rich web applications.
You get so high variance in performance depending on a particular combination of hardware, OS and browser that you are virtually predestined to fail hard for some non-negligible part of your userbase (unless your application is so trivial that even on the worst possible platform it would still work ok).
I know, this problem existed with classical games all the time. But there, gamers pretty much came to terms with "hardware requirements" (needed to play the game at all).
With web, expectations are for some reason different. It used to be quite expected and acceptable to buy new GPU/CPU/RAM to play a particular desktop game, yet it seems like too much work just to fire a different browser and copy & paste URL. I know I'm guilty of this myself, despite being developer and regularly working simultaneously with multiple browsers.
And it's just going to get worse as performance spread will widen, both on low-end (more people accessing web through mobile devices) and on high-end (as HW acceleration slowly comes to new generation of browsers).
Even more so then. No matter which solution you pick for "rich web" experience (Java, Flash, HTML5, Unity), somebody is going to get subpar performance.
This has inspired me to do screen lapses of myself working at home. Get some feedback on my own working style and get data on my methods and goofing off.
I really admire this achievement in such a short time.
I should study the source code and learn from this.
Soon I will resign from work to start bootstrapping my business and will take a look at the source code.
I am inspired by this. I'm going to do this the next time I work on a game. Has anyone used time-lapse screencap software they can suggest?