"Another World" (game) Code Review
fabiensanglard.net
fabiensanglard.net
http://www.gdcvault.com/play/1014630/Classic-Game-Postmortem...
If you're unfamiliar with the game, there's an essay/review of it here:
http://www.actionbutton.net/?p=431
(press the "fist" button at the top-right of the page to cycle through a variety of ironically ugly colour schemes until you find one you like)
From the second link I found a link to the author's homepage where he talks about the history of the game in depth. I was really impressed to find out this game was a one-man creation. The screenshots of his character editor shows the depth of his genius.
http://www.anotherworld.fr/anotherworld_uk/another_world.htm
Such a great read. Some highlights include (spoilers!):
- he used rotoscoping of filmed footage for the car animation and a few others.
- he set up an infinite fax loop during negotiations with interplay regarding changing the music of one of the ports.
- when he wanted to clean up some of the animation scripting during a port to a mobile phone, he booted up his amiga and did the editing on it in the BASIC scripting editor!
If anyone is interested, here is some gameplay footage... http://www.youtube.com/watch?v=Zgkf6wooDmw
There are a few huge base64 encoded data files, and the rest is just the bytecode, and converting the drawing functions to canvas.
I was surprised that "back in the day" you could take the hit of a vm - I always thought you had to get as close to the metal as possible!
So while the 8-bit games generally needed micro-optimizations and completely unportable techniques just to do basic 2d rendering in real-time, the 16-bit generation and on often had some "room to waste" for those kinds of games.
When looking at the level of optimization needed, it's not really what the platform can do so much as combination of the platform + the desired kinds of processing. So Infocom was able to do a VM right from the start because their games were text-only(and later a few static pictures) while today's AAA games still have to do near-metal optimization because they set the explicit goal of pushing the hardware near to its limits, and even so they still manage to waste a lot since the overall project scope is larger.
Working in Flash in 2011, I am able to support a complete in-game editing toolset, via a popup console that contains a Lisp-like repl. The resources are there to do such things, and the amount of code needed to implement them is small, while the benefits are massive. It's a very different ball game.
Difference is that Link386 rendering was not exactly in real time. You'd have to way for the scene to render before you made your shot. Painful back in the day.
http://web.archive.org/web/20070124142934/cyxdown.free.fr/ra...
Eventually another project cropped up called New Raw, which as far as I can gather was a fork of the then deceased RAW, but it didn't go anywhere. You can still download the source, however:
http://newraw.svn.sourceforge.net
I remember dusting off my floppy copy of Another World years back and running it through RAW on Linux, it ran the game pretty flawlessly, with a bunch of added features like high resolution (the game is all vectors).
edit: corrected a link
Truly humbling - a 3 minute intro in 56kb.
Anyone know if this was done for effect or if it actually was as fast as it could be?